Wyznacz, co migruje, a co musi poczekać
Ten przewodnik jest skierowany do osoby koordynującej obliczenia, dane i eksploatację. Partia oznacza tutaj zidentyfikowany pakiet pracy, odrębny od partii kart GPU z katalogu. Metoda sprawdza się przede wszystkim w przypadku wyników, które można skontrolować przed akceptacją. W przypadku usługi przyjmującej żądania bez przerwy zaplanuj, gdzie będą czekać nowe wejścia, jak długo to oczekiwanie jest akceptowalne i jak dołączą do celu. Skopiowana teczka sama w sobie nie definiuje tej polityki dopuszczania.
Proponowane ćwiczenie działa na zamkniętym zbiorze ośmiu syntetycznych partii. Nie wysyła żadnego żądania sieciowego i nie korzysta ani z GPU, ani z konta Capordia. Uczy logiki wznowienia na jednym komputerze i jednym procesie roboczym. Nie waliduje kolejki rozproszonej, ciągłości usługi wystawionej na działanie ani przenoszenia obliczeń w czasie działania. Przed rzeczywistą migracją Twój zespół musi zweryfikować te elementy z wybraną aplikacją i sprzętem.
Sporządź inwentarz pozwalający na odtworzenie
Zbierz kod wraz z jego wersją, zależności, parametry, modele, dane wejściowe, zadania zaplanowane i miejsca docelowe wyników. Dla każdego wskaż właściciela, metodę odtworzenia i oczekiwaną kontrolę na celu. Zapisz nazwy sekretów i sposób ich dostarczania, bez umieszczania ich wartości we wspólnym rejestrze. Ręczna instalacja lub zadanie uruchamiane przy starcie może zostać pominięte w zwykłej kopii katalogu projektu.
Oddziel pliki wejściowe, zaakceptowane wyniki i stan niezbędny do ponownego uruchomienia. W przypadku trenowania ten stan może wykraczać poza wagi modelu: samouczek PyTorch dotyczący ogólnego zapisu checkpointu obejmuje między innymi stan optymalizatora i postęp. Wymagana zawartość zależy od Twojego kodu. Przywróć go w nowym procesie, a następnie porównaj wyniki według tolerancji ustalonej przed próbą; nie wyciągaj wniosku o uniwersalnej numerycznej tożsamości z jednego udanego restartu.
Przypisywanie decyzji, przełączenia i odbioru
Wyznacz role, zanim ustalisz okno. W małym zespole jedna osoba może pełnić kilka z nich, ale decyzje pozostają rozdzielone. Osoba odpowiedzialna za przełączenie potwierdza zatrzymanie starego producenta i autoryzuje uruchomienie celu. Osoba odpowiedzialna za dane kontroluje inwentarz, sumy kontrolne i wyniki. Właściciel przetwarzania ocenia jakość funkcjonalną. Dział operacyjny prowadzi dziennik zmian i przygotowuje przekazanie.
Karta przełączenia musi odpowiadać na cztery konkretne pytania: kto może zatrzymać wejścia, kto stwierdza, że stare przetwarzanie przestało publikować, kto odbiera pierwsze wyniki i kto decyduje o powrocie. Zapisz także godzinęgraniczną decyzji oraz sposoby kontaktu z tymi osobami. „Wrócić w razie potrzeby” nie wystarcza, gdy cel zdążył już wytworzyć wyniki, których stary rejestr nie zna.
Prowadzenie rejestru odróżniającego rozpoczęte od odebranych
Nadaj każdemu zadaniu stały identyfikator i powiąż go z konkretną wersją danych. Przechowuj jego stan, liczbę prób, lokalizację wyniku oraz kontrolę, która dopuszcza jego odbiór. Zadanie w toku nie jest ukończone tylko dlatego, że istnieje plik wyjściowy: ten plik może być częściowy lub pochodzić z poprzedniej próby. Procedura musi jasno określać, co zostanie zachowane, co zostanie przeliczone, a co pozostanie w kwarantannie do przeglądu.
W ćwiczeniu lokalny rejestr SQLite przechowuje razem stan i odbiór wyniku w jednej transakcji. Jego stany to termine, en_cours i a_reprendre; ten ostatni obejmuje również zadanie, które jeszcze się nie rozpoczęło. Cel wznawia niezatwierdzone zadania, zamiast bez rozróżnienia uruchamiać ponownie osiem wejść. Eksporty JSON i CSV czynią śledzenie czytelnym. Pusty plik CSV towarzyszy twojemu przygotowaniu i przeglądowi ręcznemu; nie zastępuje mechanizmu koordynacji rzeczywistej aplikacji.
| Zadania | Stan na granicy | Decyzja przed wznowieniem |
|---|---|---|
| LOT-001 do LOT-003 | termine | Zachować wyniki i zweryfikować ich integralność |
| LOT-004 | en_cours, wynik nieodebrany | Wyraźnie przygotować nową próbę |
| LOT-005 do LOT-008 | a_reprendre, brak próby | Uruchomić na celu po autoryzacji |
Pobierz i uruchom ćwiczenie przerwania i wznowienia
Przygotuj Python 3.10 lub nowszy z modułem sqlite3 oraz lokalny katalog z prawem zapisu. Pobierz całe archiwum i rozpakuj je, zachowując razem skrypt, katalog danych i manifest. Plik README opisuje dostępne polecenia. Nie trzeba instalować żadnego sterownika, pakietu obliczeniowego ani modelu. Przeczytaj skrypt przed uruchomieniem, a następnie użyj nowego katalogu wyjściowego, aby dowody z kilku prób się nie pomieszały.
Z katalogu zawierającego exercice.py poniższe polecenie tworzy ciągły wzorzec, przerwane przetwarzanie, kopię przełączenia i wznowienie porównane z wzorcem. Osiem plików CSV zawiera 48 fikcyjnych pomiarów wymiarowych próbek, wyrażonych w całkowitych mikrometrach i utworzonych na potrzeby tego dossier. Nie jest reprezentowana żadna rzeczywista kontrola przemysłowa. Obliczenia na CPU służą do zbadania zarządzania zadaniami, a nie do oszacowania przepustowości GPU czy czasu migracji twoich danych.
python exercice.py demonstration --dossier essai-capordiaPrzeczytaj dowody wznowienia, zadanie po zadaniu
Przykład Capordia: zespół przygotowuje osiem pakietów plików do przetworzenia. Wzorzec przetwarza je bez przerwania. Na drugiej ścieżce zatrzymanie pozostawia trzy ukończone zadania, LOT-004 w toku oraz cztery zadania do wznowienia bez próby. Osoba odpowiedzialna za przełączenie nie mówi „wznów od połowy”: wskazuje LOT-004. Przygotowanie wznowienia przywraca je do stanu a_reprendre: trzy zadania są wtedy ukończone, a pięć ma zostać wykonanych. Zadania już odebrane nie mogą być przeliczane.
Sprawdź etat.json pod kątem identyfikatorów, stanów i prób, registre-lots.csv pod kątem przeglądu, resultats.json pod kątem wyników, a następnie rapport-verification.json pod kątem kontroli. Podczas lokalnego uruchomienia 24 września 2026 w systemie Windows AMD64, Python 3.14.6 i SQLite 3.50.4 wszystkie 16 kontroli z 37 uruchomień skryptu zakończyło się powodzeniem: osiem uwzględnionych wyników odpowiada wartościom referencyjnym, zakończone partie nie są przeliczane, a ponowna akceptacja tej samej partii jest odrzucana. Zmienione dane wejściowe, zduplikowane identyfikatory i uszkodzone wyniki również są wykrywane.
Skopiuj spójny stan i sprawdź jego integralność
W rzeczywistym przełączeniu wstrzymaj przyjmowanie lub umieść nowe dane wejściowe w jawnie przewidzianej kolejce. Poczekaj na zakończenie bieżącej pracy albo zapisz przerwane partie zgodnie z twoją zasadą wznowienia. Następnie potwierdź, że stara instancja nie może już publikować. Zabezpieczenie źródła w tym ćwiczeniu uniemożliwia skryptowi ponowne użycie go jako producenta. To pozostaje lokalnym zabezpieczeniem scenariusza, a nie wzajemnym wykluczeniem między wieloma maszynami, z których każda miałaby kopię stanu.
Aby skopiować bazę SQLite używaną przez aplikację, jej dokumentacja proponuje API kopii zapasowej, które tworzy spójny snapshot. Zwykłe skopiowanie pliku bazy w trakcie zapisu nie jest więc procedurą, którą można improwizować. Sprawdź także manifest przeniesionych plików. Skróty SHA-256, dostępne w hashlib, pomagają tutaj wykryć różnicę w zawartości; nie mówią jednak, czy wynik jest poprawny dla twojej działalności ani czy referencyjny manifest jest godny zaufania.
Zdecyduj, kiedy wznowić, a kiedy się wycofać
Zezwól na działanie celu dopiero wtedy, gdy dane wejściowe, rejestr i zachowane wyniki są zgodne, stary producent jest zatrzymany, a wymagania programowe spełnione. Najpierw uruchom zakres, którego wyniki można zweryfikować. Właściciel przetwarzania akceptuje jakość; osoba odpowiedzialna za dane sprawdza identyfikatory, braki i duplikaty. Uruchomienie bez błędów nie wystarcza, jeśli użyteczny wynik jest niekompletny.
Jeśli defekt pojawi się przed jakąkolwiek nową publikacją, utrzymaj cel w stanie zatrzymania i wyjdź od skontrolowanego stanu źródłowego zgodnie z przewidzianą procedurą. Po publikacji najpierw zabezpiecz wyniki i rejestr celu. Porównaj partie, które zakończył, z partiami źródła, a następnie wybierz jedno dozwolone wznowienie. Ponowne włączenie obu stron, by zaoszczędzić czas, może właśnie stworzyć duplikaty, których migracja miała uniknąć.
| Obserwacja | Decyzja natychmiastowa | Warunek kontynuacji |
|---|---|---|
| Brak wpisu lub inny skrót | Wstrzymaj transfer i odizoluj kopię | Pobierz wpis zgodny z manifestem referencyjnym |
| Zduplikowany identyfikator lub nieoczekiwany wynik | Nie publikuj danej partii | Zrozum konflikt i zachowaj tylko jedną zaakceptowaną wersję |
| Stan wznowienia nieużywalny | Zatrzymaj cel i zachowaj dowody | Przywróć znany stan lub zastosuj przygotowany powrót |
| Wynik poza kryterium biznesowym | Wstrzymaj rozszerzanie wznowienia | Popraw, a następnie ponów walidację funkcjonalną |
| Osiągnięto graniczną godzinę decyzji | Uruchom decyzję o powrocie lub przełożeniu | Wyraźna zgoda osoby odpowiedzialnej i możliwość dokończenia eksportu |
Zmierz całe okno i przygotuj przekazanie
Powtórz instalację, kopiowanie, weryfikację, wznowienie i eksport w ich rzeczywistej kolejności. Zapisz czas każdej fazy i interwencje człowieka, na próbce, dla której transfer jest dozwolony. Aby oszacować swoje okno, uwzględnij nowe dane wejściowe, które będą czekać, oraz zdolność do nadrobienia tego opóźnienia. Najlepszy zaobserwowany czas na małym katalogu nie jest zobowiązaniem dla większego wolumenu.
Wybrany okres musi obejmować przygotowanie, powtórzenie, przełączenie, obserwację i odbiór wyników. Pakiety Capordia na 3, 7 lub 30 dni pozostają okresami do zaplanowania; ten przewodnik nie wywodzi z nich żadnego czasu obliczeń. Przed zamknięciem druga osoba musi odnaleźć rejestr, otworzyć wyniki z ich miejsca docelowego i umieć ponownie uruchomić przetwarzanie. Zarchiwizuj decyzję o zakończeniu wycofania, zaakceptowane odchylenia i pozostałe działania, zanim odbierzesz niepotrzebne już dostępy.
Co weryfikuje to ćwiczenie i co pozostaje do doprecyzowania
Wartością tego dossier jest czytelna procedura i powtarzalne doświadczenie wznowienia na plikach syntetycznych. Ten sam zestaw musi być identyfikowalny przed zatrzymaniem, podczas przełączenia i po wznowieniu. Rejestr, porównanie z wartością odniesienia i wywołane odrzucenia czynią tę regułę obserwowalną. Przerwanie jest wywoływane przez kontrolowany wyjątek w skrypcie: nie przeprowadzono żadnej próby awarii zasilania. Cytowana dokumentacja techniczna wyjaśnia zastosowane mechanizmy; nie certyfikuje ona Twojego przyszłego środowiska produkcyjnego.
W scenariuszu pracuje jednocześnie tylko jeden proces. Lokalne opieczętowanie nie jest zamkiem rozproszonym; skrót nie jest testem jakości; wynik CPU nie jest kwalifikacją CUDA, ROCm ani multi-GPU. Aplikacja, która zapisuje również do zewnętrznej bazy, współdzielonego magazynu lub kolejki, wymaga spójnej reguły obejmującej wszystkie te miejsca docelowe. Zleć zatwierdzenie tej reguły i swojego planu powrotu, zanim zmigrujesz rzeczywiste przetwarzanie.
Aby przygotować dalsze kroki
Kopia zapasowa musi umożliwiać wznowienie pracy.
Przywróć w izolowanym celu i sprawdź, czy kopia rzeczywiście pozwala wznowić pracę.
Przekaż dalej pracę ze stanem, działaniem i osobą odpowiedzialną.
Przekaż działania, ograniczenia i obowiązki innej osobie.