1. Vier toestanden onderscheiden die het scherm door elkaar haalt
Een openstaande verbinding bewijst alleen dat je nog met de machine kunt communiceren. Een zichtbare terminal kan een shell huisvesten waarvan de berekening al is voltooid. Omgekeerd kun je uit het verliezen van de verbinding niet afleiden dat het proces is gestopt. Geef de uitvoering daarom eerst een naam en bepaal waar je de sporen ervan terugvindt.
Volg het bestaan van het proces, de voortgang van de taak en de aanvaarding van het resultaat apart. Het aantal regels in een logboek is geen teller van geslaagde gegevens: een programma kan dezelfde waarschuwing herhalen. Gedeeltelijke uitvoer kan leesbaar zijn en toch onvolledig.
Deze methode veronderstelt dat je de nodige toegangsmiddelen hebt ontvangen en gecontroleerd. Ze belooft geen specifiek toegangsprotocol en geen automatische bewaring van bestanden. De beschikbare tools en bestemmingen moeten worden gecontroleerd in de omgeving die daadwerkelijk wordt geleverd.
Scroll door de tabel om alle kolommen te lezen.| Observatie | Wat ze aangeeft | Wat ze niet bewijst |
|---|---|---|
| Actieve verbinding | Het kanaal reageert. | De berekening vordert. |
| Proces aanwezig | Er bestaat nog een uitvoering. | Ze verwerkt de juiste elementen. |
| Gevalideerde teller stijgt | Voorziene eenheden zijn voltooid. | Het volledige corpus is voltooid. |
| Returncode gelijk aan nul | Het programma meldt een normale beëindiging. | Het resultaat voldoet aan je contract. |
| Gecontroleerde en opgehaalde uitvoer | De gekozen criteria zijn gecontroleerd. | Een kwaliteit die verder gaat dan deze criteria. |
2. Een identificeerbare uitvoering voorbereiden voordat je ze loskoppelt
Controleer de gegevens, de effectieve configuratie en een eerste korte doorloop van de applicatie. De GPU-diagnose beantwoordt een andere vraag: kan de backend een berekening uitvoeren? Ze valideert niet het volledig laden van het corpus of de logica van je programma. Voer deze controles uit voordat je een lange duur start.
Kies een uitvoerings-id en een nieuwe map. Bewaar de opdracht zonder secrets, de codeversie, de identiteit van de invoer en het verwachte resultaat. Voorzie waar de logboeken worden geschreven en waar de bestanden worden opgehaald. Twee starts mogen niet tegelijkertijd in dezelfde map schrijven.
Bepaal voor werk dat in onafhankelijke partities is verdeeld wanneer een partitie voltooid is: berekening afgerond, bestand gesloten, inhoud gecontroleerd en status opgeslagen. Een bestand dat wordt geschreven mag niet dezelfde betekenis hebben als een aanvaard resultaat. Controleer vooraf ook de werkelijk beschikbare ruimte.
3. Een terminal vindbaar houden wanneer de context het toelaat
Als de omgeving een Unix-shell en tmux biedt, stelt deze multiplexer je in staat een terminal los te koppelen en na een herverbinding terug te vinden. Het beschermt dit traject tegen het verliezen van de verbindingsclient; het is geen mechanisme voor herstel na een herstart van de machine of het beëindigen van het proces.
De onderstaande commando's zijn didactisch en worden niet uitgevoerd. Ze gaan uit van Bash, tmux en je eigen programma traitement.py, met de getoonde opties; dit bestand is geen meegeleverde bron. Controleer eerst het korte commando en gebruik een aparte sessienaam om twee berekeningen niet te verwarren.
Maak de sessie aan en start vervolgens het tweede blok erin. Het aanmaken van de map mislukt als deze al bestaat, wat voorkomt dat de logboeken ervan stilzwijgend worden hergebruikt. De retourcode blijft bewaard als de shell de schrijfstap bereikt; een abrupte stop kan verhinderen dat dit bestand wordt aangemaakt. Het ontbreken van een code is dus geen impliciet succes.
Koppel met de standaardsneltoetsen los met Ctrl-b en dan d. Nadat je opnieuw verbinding hebt gemaakt, toon je de sessies en koppel je de juiste weer. De shell kan zichtbaar blijven terwijl het programma al klaar is: raadpleeg het logboek en de opgeslagen code. Start niet meteen een tweede kopie omdat je oude terminal is verdwenen.
tmux new -s campagne-amkdir -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"
)tmux ls
tmux attach -t campagne-a4. Tel geaccepteerd werk, niet alleen activiteit
De Python-optie -u schakelt de buffering van de standaarduitvoer en -fout uit. Ze helpt om verzonden berichten te zien, maar creëert geen voortgangsgebeurtenissen in de applicatie. Een bibliotheek of een stille stap kan nog steeds een eigen observatie vereisen.
Definieer begrijpelijke fasen: lezen, voorbereiden, berekenen, schrijven, verifiëren. Voeg een teller toe met een stabiele eenheid, plus een totaal wanneer dat bekend is. Als je geaccepteerde partities telt, schakel dan niet midden in het logboek over op een teller van gelezen regels zonder de naam te wijzigen.
Het volgende didactische voorbeeld gaat over acht partities van vijfhonderd elementen, dus vierduizend elementen. Op het getoonde moment zijn slechts vijf partities geaccepteerd. De zesde is gedeeltelijk en mag het totaal niet opblazen. De getallen tonen een telregel; ze beschrijven geen enkele uitvoering van Kernodeck.
Scroll door de tabel om alle kolommen te lezen.| Partities | Status | Elementen geteld als geaccepteerd | Beslissing |
|---|---|---|---|
| 1 tot 5 | Geverifieerd | 2 500 | Behoud hun identiteiten en resultaten. |
| 6 | Gedeeltelijk geschreven | 0 | Meld deze partitie niet als voltooid. |
| 7 en 8 | Te verwerken | 0 | Blijf in de werklijst. |
| Geheel | Onvolledig | 2.500 van 4.000 | Accepteer de eindmap niet. |
5. Onderzoek een stilte of onderbreking zonder een duplicaat te maken
Als geen enkele teller beweegt, bepaal dan de laatst bekende fase en de laatst voltooide eenheid. Controleer of het proces bestaat, of een foutbericht is verschenen en of de bestemming bruikbaar blijft. Een langzame start van het model en een vastgelopen lus kunnen hetzelfde stilstaande scherm opleveren; de context bepaalt de volgende controle.
Bereid het vrijwillige stoppen in je applicatie voor: verzoek tot stoppen, einde van een veilige eenheid, opslaan van de status en dan afsluiten. Signalen en onderbrekingen zijn systeemafhankelijk. Python kan SIGKILL niet onderscheppen, en een Python-handler kan wachten tot het einde van een lange native aanroep voordat hij wordt uitgevoerd. Een back-up bij het stoppen vervangt dus geen periodieke back-ups.
Zoek na een verbindingsverlies eerst de bestaande sessie en uitvoering terug. Bepaal na een bevestigde stop wat compleet en wat gedeeltelijk is. Voor een training vereist het hervatten de gedetailleerde staten van het model en de optimalisatie; de speciale handleiding verifieert dit geval in een nieuw proces.
6. Hervat alleen wat het contract toestaat
In ons voorbeeld gaat hervatten per partitie ervan uit dat elke partitie onafhankelijk is en dat de invoer, de code en de configuratie identiek blijven. Het kan de vijf gevalideerde resultaten behouden en de zesde volledig opnieuw berekenen voordat het verdergaat met de twee volgende. Als die aannames niet opgaan, is deze verkorting niet gerechtvaardigd.
Voeg de nieuwe regels niet simpelweg toe aan het partiële bestand. Je riskeert duplicaten of het vermengen van twee configuraties. Gebruik de verwachte identifiers om volledig, onvolledig en afwezig te onderscheiden. Bewaar de oude toestand als verklarend element, met een aparte bestemming voor de nieuwe poging.
Test je strategie met een gecontroleerde onderbreking voordat je erop vertrouwt voor een grote verwerking. Het criterium is de gelijkwaardigheid van de nuttige uitvoer volgens je contract, niet de identiteit van de voortgangsberichten. Trainingen, berekeningen met externe effecten en gedistribueerde verwerkingen vragen andere garanties dan dit voorbeeld van onafhankelijke partities.
7. Het resultaat accepteren en ophalen voordat je het werk afsluit
Begin met de retourcode en vergelijk daarna de uitvoer met het invoermanifest. Voor ons voorbeeld verwacht je de acht partities en de vierduizend voorziene identifiers, zonder ontbrekende of dubbele. Controleer het formaat, de dimensies en de relevante waarden; het lezen van een bestand bewijst niet dat het het juiste resultaat bevat.
Haal de geaccepteerde uitvoer, de toegestane configuratie, de versies en het controlerapport op. Vergelijk de groottes en indien nodig de hashes tussen bron en kopie. Een identieke hash helpt de overdracht van de bytes te verifiëren; hij bewijst noch de kwaliteit van het model noch de legitieme herkomst van het bestand.
Open ten slotte een resultaat vanaf zijn bewaarbestemming, met het hulpmiddel dat het zal gebruiken. Voorzie deze stap voordat je toegang tot de berekening afloopt. Het werk is klaar wanneer het gecontroleerde resultaat opvraagbaar en interpreteerbaar is, niet wanneer het laatste percentage honderd heeft bereikt.