GPU do Twoich projektów · płatność krypto bez KYC Jak wynająć
Polski
Otwórz konsolę
Przewodnik praktyczny / KERNODECK

Zakończony proces to jeszcze nie zaakceptowany wynik.

Przed długim przetwarzaniem ustal jego dane wejściowe, miejsce docelowe, zdarzenia postępu i kryterium sukcesu. Jeśli masz zdalny shell, oddziel sesję połączenia od procesu obliczeniowego. Na końcu sprawdź kod powrotu, a następnie same wyniki: polecenie bez błędu nie dowodzi ani tego, że wszystkie dane zostały przetworzone, ani tego, że wyniki są użyteczne.

7 min czytania · Przewodnik dla programistów

1. Rozróżnij cztery stany, które ekran miesza

Otwarte połączenie dowodzi tylko tego, że wciąż możesz komunikować się z maszyną. Widoczny terminal może obsługiwać shell, którego obliczenia już się zakończyły. Odwrotnie, utrata połączenia nie pozwala wnioskować, że proces się zatrzymał. Zacznij więc od nadania nazwy uruchomieniu i miejscu, w którym znajdziesz jego ślady.

Śledź osobno istnienie procesu, jego postęp biznesowy i akceptację wyniku. Liczba wierszy w dzienniku nie jest licznikiem udanych danych: program może powtarzać to samo ostrzeżenie. Częściowy wynik może być czytelny, a jednocześnie niekompletny.

Ta metoda zakłada, że otrzymałeś i zweryfikowałeś niezbędne środki dostępu. Nie obiecuje ani konkretnego protokołu dostępu, ani automatycznego przechowywania plików. Dostępne narzędzia i miejsca docelowe należy sprawdzić w środowisku, które faktycznie otrzymałeś.

Przewiń tabelę, aby zobaczyć wszystkie kolumny.
Każda obserwacja odpowiada na inne pytanie.
ObserwacjaCo wskazujeCzego nie dowodzi
Aktywne połączenieKanał odpowiada.Obliczenia postępują.
Proces obecnyUruchomienie wciąż istnieje.Przetwarza właściwe elementy.
Zatwierdzony licznik rośnieZaplanowane jednostki są zakończone.Cały korpus jest zakończony.
Kod powrotu równy zeroProgram zgłasza normalne zakończenie.Wynik spełnia twoją umowę.
Wyniki skontrolowane i odzyskaneWybrane kryteria zostały zweryfikowane.Jakość wykraczająca poza te kryteria.

2. Przygotuj rozpoznawalne uruchomienie, zanim je odłączysz

Sprawdź dane, efektywną konfigurację i krótki pierwszy przebieg aplikacji. Diagnostyka GPU odpowiada na inne pytanie: czy backend potrafi wykonać obliczenia? Nie potwierdza pełnego wczytania korpusu ani logiki twojego programu. Wykonaj te sprawdzenia przed uruchomieniem na długi czas.

Wybierz identyfikator uruchomienia i nowy folder. Zachowaj polecenie bez sekretów, wersję kodu, tożsamość danych wejściowych i oczekiwany wynik. Zaplanuj, gdzie zapisywać dzienniki i skąd odzyskiwać pliki. Dwa uruchomienia nie mogą jednocześnie zapisywać w tym samym folderze.

W przypadku pracy podzielonej na niezależne partycje zdecyduj, kiedy partycja staje się zakończona: obliczenia ukończone, plik zamknięty, zawartość skontrolowana i stan zapisany. Plik w trakcie zapisu nie może mieć tego samego znaczenia co zaakceptowany wynik. Sprawdź również faktycznie dostępną przestrzeń przed startem.

3. Utrzymuj terminal możliwy do odnalezienia, gdy kontekst na to pozwala

Jeśli środowisko udostępnia powłokę Unix i tmux, ten multiplekser pozwala odłączyć terminal i odnaleźć go po ponownym połączeniu. Chroni ten przebieg przed utratą klienta połączenia; nie jest to mechanizm wznowienia po restarcie maszyny ani zniszczeniu procesu.

Poniższe polecenia mają charakter poglądowy i nie są wykonywane. Zakładają Bash, tmux oraz własny program traitement.py z pokazanymi opcjami; ten plik nie jest dostarczonym zasobem. Najpierw sprawdź jego krótkie polecenie i użyj odrębnej nazwy sesji, aby nie pomylić dwóch obliczeń.

Utwórz sesję, a następnie uruchom w niej drugi blok. Utworzenie katalogu nie powiedzie się, jeśli już istnieje, co zapobiega cichego ponownego użycia jego dzienników. Kod powrotu jest zachowywany, jeśli powłoka dotrze do etapu zapisu; nagłe zatrzymanie może uniemożliwić utworzenie tego pliku. Brak kodu nie jest więc domyślnym sukcesem.

Przy domyślnych skrótach odłącz się za pomocą Ctrl-b, a następnie d. Po ponownym połączeniu wylistuj sesje, a potem podłącz właściwą. Powłoka może pozostać widoczna, mimo że program zakończył działanie: sprawdź dziennik i zapisany kod. Nie uruchamiaj od razu drugiej kopii tylko dlatego, że zniknął Twój stary terminal.

Utwórz sesję — polecenia poglądowe
tmux new -s campagne-a
W sesji — przykład do dostosowania, niewykonany
mkdir -p runs
mkdir runs/campagne-a && (
  code_retour=0
  python -u traitement.py --config config.toml --output runs/campagne-a \
    > runs/campagne-a/execution.log 2>&1 || code_retour=$?
  printf '%s\n' "$code_retour" > runs/campagne-a/exit-code.txt
  exit "$code_retour"
)
Po ponownym połączeniu — odnajdź sesję
tmux ls
tmux attach -t campagne-a

4. Licz zaakceptowaną pracę, a nie tylko aktywność

Opcja Pythona -u usuwa buforowanie jego wyjścia standardowego i błędów. Pomaga zobaczyć wysyłane komunikaty, ale nie tworzy zdarzeń postępu w aplikacji. Biblioteka lub cichy etap może nadal wymagać własnej obserwacji.

Zdefiniuj zrozumiałe fazy: odczyt, przygotowanie, obliczenia, zapis, weryfikacja. Dodaj licznik o stałej jednostce oraz sumę, gdy jest znana. Jeśli liczysz zaakceptowane partycje, nie przechodź na licznik odczytanych wierszy w środku dziennika bez zmiany jego nazwy.

Poniższy przykład poglądowy dotyczy ośmiu partycji po pięćset elementów, czyli czterech tysięcy elementów. W przedstawionej chwili zaakceptowanych jest tylko pięć partycji. Szósta jest częściowa i nie powinna zawyżać sumy. Liczby pokazują regułę zliczania; nie opisują żadnego wykonania Kernodeck.

Przewiń tabelę, aby zobaczyć wszystkie kolumny.
Niewykonany zrzut poglądowy: pięć zaakceptowanych partycji z ośmiu.
PartycjeStanElementy policzone jako zaakceptowaneDecyzja
1 do 5Zweryfikowane2 500Zachować ich tożsamości i wyniki.
6Zapis częściowy0Nie ogłaszać tej partycji zakończonej.
7 i 8Do przetworzenia0Pozostać na liście zadań.
CałośćNiekompletna2 500 z 4 000Nie akceptować końcowego katalogu.

5. Zbadaj ciszę lub przerwanie bez tworzenia duplikatu

Gdy żaden licznik się nie porusza, ustal ostatnią znaną fazę i jej ostatnią ukończoną jednostkę. Sprawdź, czy proces istnieje, czy pojawił się komunikat błędu i czy miejsce docelowe pozostaje użyteczne. Wolne uruchamianie modelu i zablokowana pętla mogą dawać ten sam nieruchomy ekran; kontekst decyduje o następnej kontroli.

Przygotuj w swojej aplikacji dobrowolne zatrzymanie: żądanie zatrzymania, zakończenie bezpiecznej jednostki, zapis stanu, a potem wyjście. Sygnały i przerwania zależą od systemu. Python nie może przechwycić SIGKILL, a procedura obsługi w Pythonie może czekać na zakończenie długiego wywołania natywnego, zanim się wykona. Zapis przy zatrzymaniu nie zastępuje więc okresowych kopii zapasowych.

Po utracie połączenia najpierw odnajdź istniejącą sesję i wykonanie. Po potwierdzonym zatrzymaniu ustal, co jest kompletne, a co częściowe. W przypadku treningu wznowienie wymaga szczegółowych stanów modelu i optymalizacji; dedykowany przewodnik weryfikuje ten przypadek w nowym procesie.

6. Wznów tylko to, na co pozwala umowa

W naszym przykładzie wznowienie według partycji zakłada, że każda partycja jest niezależna, a dane wejściowe, kod i konfiguracja pozostają identyczne. Może zachować pięć zatwierdzonych wyników i w pełni przeliczyć szósty, zanim przejdzie do dwóch kolejnych. Jeśli te założenia nie są spełnione, takie skrócenie nie jest uzasadnione.

Nie dodawaj po prostu nowych wierszy do pliku częściowego. Ryzykujesz utworzenie duplikatów albo wymieszanie dwóch konfiguracji. Użyj oczekiwanych identyfikatorów, aby rozróżnić stan kompletny, niekompletny i brakujący. Zachowaj poprzedni stan jako element wyjaśnienia, z osobnym miejscem docelowym dla nowej próby.

Sprawdź swoją strategię na kontrolowanym przerwaniu, zanim zaczniesz na niej polegać przy dużym przetwarzaniu. Kryterium jest równoważność użytecznych wyników zgodnie z Twoim kontraktem, a nie identyczność komunikatów o postępie. Trenowanie, obliczenia z efektami zewnętrznymi i przetwarzanie rozproszone wymagają innych gwarancji niż ten przykład niezależnych partycji.

7. Zaakceptuj i odbierz wynik, zanim zakończysz pracę

Zacznij od kodu powrotu, a następnie porównaj wyniki z manifestem wejściowym. W naszym przykładzie oczekuj ośmiu partycji i czterech tysięcy przewidzianych identyfikatorów, bez braków i duplikatów. Sprawdź format, wymiary i istotne wartości; odczytanie pliku nie dowodzi, że zawiera właściwy wynik.

Odbierz zatwierdzone wyniki, autoryzowaną konfigurację, wersje i raport kontrolny. Porównaj rozmiary, a w razie potrzeby sumy kontrolne między źródłem a kopią. Identyczna suma kontrolna pomaga zweryfikować transfer bajtów; nie dowodzi ani jakości modelu, ani legalnego pochodzenia pliku.

Na koniec otwórz wynik z miejsca jego przechowywania, za pomocą narzędzia, które go wykorzysta. Zaplanuj ten krok przed końcem dostępu do mocy obliczeniowej. Praca jest zakończona, gdy sprawdzony wynik jest możliwy do odebrania i zinterpretowania, a nie gdy ostatni procent osiągnął sto.

Twoje pytania

Czy zamknięcie zdalnego połączenia zawsze zatrzymuje obliczenia?

Nie: zależy to od sposobu uruchomienia procesu. Sesja tmux pozwala odłączyć go od terminala klienta, jeśli to narzędzie jest dostępne. Po ponownym połączeniu najpierw poszukaj istniejącego uruchomienia, zanim uruchomisz kolejne.

Czy kod powrotu równy zero wystarcza do zatwierdzenia mojego wyniku?

Nie. Oznacza on, że program zgłasza normalne zakończenie. Sprawdź także kompletność identyfikatorów, format i przewidziane kryteria biznesowe. Program może zakończyć się normalnie po przetworzeniu niewłaściwego podzbioru.

Czy nieruchomy dziennik oznacza, że GPU jest zablokowany?

Niekoniecznie. Program może przygotowywać dane, czekać na zapis albo nie emitować postępu. Zidentyfikuj fazę i stan procesu, zanim zdecydujesz o zatrzymaniu. Wyraźny licznik biznesowy jest bardziej użyteczny niż sama obecność komunikatów.