GPU's voor je projecten · crypto-betaling zonder KYC Hoe huren
Nederlands
Console openen
Praktische gids / KERNODECK

Een voltooid proces is nog geen aanvaard resultaat.

Leg vóór een lange verwerking de invoer, de bestemming, de voortgangsgebeurtenissen en het succesCriterium vast. Als je een externe shell hebt, scheid dan de verbindingssessie van het berekeningsproces. Bekijk aan het einde eerst de returncode en dan de resultaten zelf: een opdracht zonder fouten bewijst niet dat alle gegevens zijn verwerkt of dat de uitvoer bruikbaar is.

8 min leestijd · Gids voor ontwikkelaars

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.
Elke observatie beantwoordt een andere vraag.
ObservatieWat ze aangeeftWat ze niet bewijst
Actieve verbindingHet kanaal reageert.De berekening vordert.
Proces aanwezigEr bestaat nog een uitvoering.Ze verwerkt de juiste elementen.
Gevalideerde teller stijgtVoorziene eenheden zijn voltooid.Het volledige corpus is voltooid.
Returncode gelijk aan nulHet programma meldt een normale beëindiging.Het resultaat voldoet aan je contract.
Gecontroleerde en opgehaalde uitvoerDe 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.

Een sessie aanmaken — didactische commando's
tmux new -s campagne-a
In de sessie — voorbeeld om aan te passen, niet uitgevoerd
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"
)
Na herverbinding — de sessie terugvinden
tmux ls
tmux attach -t campagne-a

4. 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.
Didactische momentopname, niet uitgevoerd: vijf van acht partities geaccepteerd.
PartitiesStatusElementen geteld als geaccepteerdBeslissing
1 tot 5Geverifieerd2 500Behoud hun identiteiten en resultaten.
6Gedeeltelijk geschreven0Meld deze partitie niet als voltooid.
7 en 8Te verwerken0Blijf in de werklijst.
GeheelOnvolledig2.500 van 4.000Accepteer 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.

Jouw vragen

Stopt het sluiten van een externe verbinding altijd de berekening?

Nee: dat hangt af van de manier waarop het proces is gestart. Een tmux-sessie maakt het mogelijk het van de clientterminal los te koppelen, als dat hulpmiddel beschikbaar is. Zoek na het opnieuw verbinden eerst naar de bestaande uitvoering voordat je een nieuwe start.

Is een retourcode gelijk aan nul voldoende om mijn resultaat te valideren?

Nee. Hij geeft aan dat het programma een normale beëindiging meldt. Controleer ook de volledigheid van de identifiers, het formaat en de voorziene bedrijfscriteria. Een programma kan normaal eindigen nadat het een verkeerde subset heeft verwerkt.

Betekent een stilstaand log dat de GPU vastloopt?

Niet noodzakelijk. Het programma kan gegevens voorbereiden, op een schrijfactie wachten of geen voortgang melden. Stel de fase en de toestand van het proces vast voordat je tot stoppen besluit. Een expliciete bedrijfsteller is nuttiger dan alleen de aanwezigheid van berichten.