GPUs für Ihre Projekte · Krypto-Zahlung ohne KYC So mieten Sie
Deutsch
Konsole öffnen
Praktischer Leitfaden / KERNODECK

Ein abgeschlossener Prozess ist noch kein akzeptiertes Ergebnis.

Legen Sie vor einem langen Prozess seine Eingaben, sein Ziel, seine Fortschrittsereignisse und sein Erfolgskriterium fest. Wenn Ihnen eine entfernte Shell zur Verfügung steht, trennen Sie die Verbindungssitzung vom Berechnungsprozess. Prüfen Sie am Ende zuerst den Rückgabecode und dann die Ergebnisse selbst: Ein fehlerfreier Befehl belegt weder, dass alle Daten verarbeitet wurden, noch dass die Ausgaben verwendbar sind.

8 Min. Lesezeit · Leitfaden für Entwickler

1. Vier Zustände unterscheiden, die der Bildschirm vermischt

Eine offene Verbindung beweist nur, dass Sie noch mit der Maschine kommunizieren können. Ein sichtbares Terminal kann eine Shell beherbergen, deren Berechnung bereits abgeschlossen ist. Umgekehrt lässt ein Verbindungsverlust nicht den Schluss zu, dass der Prozess beendet wurde. Beginnen Sie daher damit, der Ausführung und dem Ort, an dem ihre Spuren zu finden sind, einen Namen zu geben.

Verfolgen Sie getrennt die Existenz des Prozesses, seinen fachlichen Fortschritt und die Akzeptanz des Ergebnisses. Die Anzahl der Zeilen in einem Protokoll ist kein Zähler erfolgreich verarbeiteter Daten: Ein Programm kann dieselbe Warnung wiederholen. Eine partielle Ausgabe kann lesbar und dennoch unvollständig sein.

Diese Methode setzt voraus, dass Sie die erforderlichen Zugangsmittel erhalten und geprüft haben. Sie verspricht weder ein bestimmtes Zugangsprotokoll noch eine automatische Aufbewahrung der Dateien. Die verfügbaren Werkzeuge und Ziele müssen in der tatsächlich bereitgestellten Umgebung überprüft werden.

Scrollen Sie durch die Tabelle, um alle Spalten zu lesen.
Jede Beobachtung beantwortet eine andere Frage.
BeobachtungWas sie anzeigtWas sie nicht belegt
Aktive VerbindungDer Kanal antwortet.Die Berechnung schreitet voran.
Prozess vorhandenEine Ausführung existiert noch.Sie verarbeitet die richtigen Elemente.
Zähler bestätigt steigendGeplante Einheiten sind abgeschlossen.Das gesamte Korpus ist abgeschlossen.
Rückgabecode gleich nullDas Programm meldet eine normale Beendigung.Das Ergebnis entspricht Ihrem Vertrag.
Kontrollierte und abgerufene AusgabenDie gewählten Kriterien wurden überprüft.Eine Qualität jenseits dieser Kriterien.

2. Vor dem Abkoppeln einen identifizierbaren Lauf vorbereiten

Kontrollieren Sie die Daten, die effektive Konfiguration und einen ersten kurzen Durchlauf der Anwendung. Die GPU-Diagnose beantwortet eine andere Frage: Kann das Backend eine Berechnung ausführen? Sie validiert weder das vollständige Laden des Korpus noch die Logik Ihres Programms. Führen Sie diese Prüfungen durch, bevor Sie eine lange Laufzeit starten.

Wählen Sie eine Ausführungs-ID und einen neuen Ordner. Bewahren Sie den Befehl ohne Geheimnisse, die Codeversion, die Identität der Eingaben und das erwartete Ergebnis auf. Planen Sie, wohin die Protokolle geschrieben und wo die Dateien abgerufen werden. Zwei Starts dürfen nicht gleichzeitig in denselben Ordner schreiben.

Bei einer in unabhängige Partitionen aufgeteilten Arbeit entscheiden Sie, wann eine Partition als abgeschlossen gilt: Berechnung beendet, Datei geschlossen, Inhalt geprüft und Zustand gespeichert. Eine Datei, die gerade geschrieben wird, darf nicht dieselbe Bedeutung haben wie ein akzeptiertes Ergebnis. Prüfen Sie außerdem den tatsächlich nutzbaren Speicherplatz vor dem Start.

3. Ein auffindbares Terminal behalten, wenn der Kontext es erlaubt

Wenn die Umgebung eine Unix-Shell und tmux bereitstellt, ermöglicht dieser Multiplexer, ein Terminal abzutrennen und es nach einer erneuten Verbindung wiederzufinden. Er schützt diesen Ablauf gegen den Verlust des Verbindungsclients; er ist kein Mechanismus zur Wiederherstellung nach einem Neustart der Maschine oder der Zerstörung des Prozesses.

Die folgenden Befehle sind didaktisch und werden nicht ausgeführt. Sie setzen Bash, tmux und Ihr eigenes Programm traitement.py mit den gezeigten Optionen voraus; diese Datei ist keine bereitgestellte Ressource. Prüfen Sie zunächst den kurzen Befehl und verwenden Sie einen eigenen Sitzungsnamen, um zwei Berechnungen nicht zu verwechseln.

Erstellen Sie die Sitzung und starten Sie dann den zweiten Block darin. Das Anlegen des Ordners schlägt fehl, wenn er bereits existiert, wodurch vermieden wird, seine Protokolle stillschweigend wiederzuverwenden. Der Rückgabecode bleibt erhalten, wenn die Shell den Schreibschritt erreicht; ein abruptes Ende kann die Erstellung dieser Datei verhindern. Das Fehlen eines Codes ist also kein impliziter Erfolg.

Mit den Standard-Tastenkürzeln trennen Sie mit Ctrl-b und dann d ab. Nach der erneuten Verbindung listen Sie die Sitzungen auf und hängen Sie die richtige wieder an. Die Shell kann noch sichtbar bleiben, obwohl das Programm beendet ist: Prüfen Sie das Protokoll und den gespeicherten Code. Starten Sie nicht sofort eine zweite Kopie, nur weil Ihr altes Terminal verschwunden ist.

Eine Sitzung erstellen — didaktische Befehle
tmux new -s campagne-a
In der Sitzung — anzupassendes Beispiel, nicht ausgeführt
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"
)
Nach der erneuten Verbindung — die Sitzung wiederfinden
tmux ls
tmux attach -t campagne-a

4. Akzeptierte Arbeit zählen, nicht nur Aktivität

Die Python-Option -u hebt die Pufferung ihrer Standardausgabe und Fehlerausgabe auf. Sie hilft, ausgegebene Meldungen zu sehen, erzeugt aber keine Fortschrittsereignisse in der Anwendung. Eine Bibliothek oder ein stiller Schritt kann weiterhin eine eigene Beobachtung erfordern.

Definieren Sie verständliche Phasen: Lesen, Vorbereitung, Berechnung, Schreiben, Überprüfung. Fügen Sie einen Zähler mit stabiler Einheit sowie eine Gesamtsumme hinzu, wenn sie bekannt ist. Wenn Sie akzeptierte Partitionen zählen, wechseln Sie nicht mitten im Protokoll zu einem Zähler gelesener Zeilen, ohne dessen Namen zu ändern.

Das folgende didaktische Beispiel betrifft acht Partitionen mit fünfhundert Elementen, also viertausend Elemente. Im dargestellten Moment sind nur fünf Partitionen akzeptiert. Die sechste ist teilweise fertig und darf die Gesamtsumme nicht aufblähen. Die Zahlen zeigen eine Zählregel; sie beschreiben keine Kernodeck-Ausführung.

Scrollen Sie durch die Tabelle, um alle Spalten zu lesen.
Didaktische, nicht ausgeführte Momentaufnahme: fünf akzeptierte Partitionen von acht.
PartitionenStatusAls akzeptiert gezählte ElementeEntscheidung
1 bis 5Überprüft2 500Ihre Identitäten und Ergebnisse beibehalten.
6Teilweise geschrieben0Diese Partition nicht als abgeschlossen melden.
7 und 8Zu bearbeiten0In der Arbeitsliste bleiben.
GesamtUnvollständig2.500 von 4.000Den endgültigen Ordner nicht akzeptieren.

5. Ein Schweigen oder eine Unterbrechung untersuchen, ohne ein Duplikat zu erzeugen

Wenn sich kein Zähler bewegt, identifizieren Sie die letzte bekannte Phase und ihre letzte abgeschlossene Einheit. Prüfen Sie, ob der Prozess existiert, ob eine Fehlermeldung aufgetreten ist und ob das Ziel weiterhin nutzbar ist. Ein langsamer Start des Modells und eine blockierte Schleife können denselben reglosen Bildschirm erzeugen; der Kontext entscheidet über die nächste Kontrolle.

Bereiten Sie das freiwillige Beenden in Ihrer Anwendung vor: Aufforderung zum Beenden, Abschluss einer sicheren Einheit, Speichern des Zustands, dann Beenden. Signale und Unterbrechungen hängen vom System ab. Python kann SIGKILL nicht abfangen, und ein Python-Handler kann auf das Ende eines langen nativen Aufrufs warten, bevor er ausgeführt wird. Eine Sicherung beim Beenden ersetzt daher keine regelmäßigen Sicherungen.

Nach einem Verbindungsverlust finden Sie zuerst die bestehende Sitzung und Ausführung wieder. Nach einem bestätigten Beenden bestimmen Sie, was vollständig und was teilweise fertig ist. Bei einem Training erfordert die Wiederaufnahme die detaillierten Zustände des Modells und der Optimierung; der spezielle Leitfaden prüft diesen Fall in einem neuen Prozess.

6. Nur das wiederaufnehmen, was der Vertrag erlaubt

In unserem Beispiel setzt die Wiederaufnahme pro Partition voraus, dass jede Partition unabhängig ist und dass Eingabe, Code und Konfiguration identisch bleiben. Sie kann die fünf validierten Ergebnisse behalten und das sechste vollständig neu berechnen, bevor sie mit den beiden folgenden fortfährt. Wenn diese Annahmen nicht zutreffen, ist diese Abkürzung nicht gerechtfertigt.

Fügen Sie die neuen Zeilen nicht einfach an die partielle Datei an. Sie riskieren, Duplikate zu erzeugen oder zwei Konfigurationen zu vermischen. Verwenden Sie die erwarteten Identifikatoren, um vollständig, unvollständig und fehlend zu unterscheiden. Bewahren Sie den alten Zustand als erklärendes Element auf, mit einem separaten Ziel für den neuen Versuch.

Prüfen Sie Ihre Strategie an einer kontrollierten Unterbrechung, bevor Sie sich für eine große Verarbeitung darauf verlassen. Das Kriterium ist die Gleichwertigkeit der nutzbaren Ausgaben gemäß Ihrem Vertrag, nicht die Identität der Fortschrittsmeldungen. Trainingsläufe, Berechnungen mit externen Effekten und verteilte Verarbeitung erfordern andere Garantien als dieses Beispiel unabhängiger Partitionen.

7. Das Ergebnis annehmen und abrufen, bevor die Arbeit abgeschlossen wird

Beginnen Sie mit dem Rückgabecode und gleichen Sie dann die Ausgaben mit dem Eingabemanifest ab. Für unser Beispiel warten Sie auf die acht Partitionen und die viertausend vorgesehenen Identifikatoren, ohne Lücken oder Duplikate. Prüfen Sie Format, Dimensionen und relevante Werte; das Lesen einer Datei beweist nicht, dass sie das richtige Ergebnis enthält.

Rufen Sie die angenommenen Ausgaben, die genehmigte Konfiguration, die Versionen und den Prüfbericht ab. Vergleichen Sie die Größen und, falls nötig, die Prüfsummen zwischen Quelle und Kopie. Eine identische Prüfsumme hilft, die Übertragung der Bytes zu überprüfen; sie belegt weder die Qualität des Modells noch die legitime Herkunft der Datei.

Öffnen Sie schließlich ein Ergebnis von seinem Aufbewahrungsziel aus, mit dem Werkzeug, das es verwenden wird. Planen Sie diesen Schritt vor dem Ende Ihres Zugriffs auf die Rechenleistung ein. Die Arbeit ist abgeschlossen, wenn das geprüfte Ergebnis abrufbar und interpretierbar ist, nicht wenn der letzte Prozentwert hundert erreicht hat.

Ihre Fragen

Beendet das Schließen einer entfernten Verbindung immer die Berechnung?

Nein: Das hängt davon ab, wie der Prozess gestartet wurde. Eine tmux-Sitzung ermöglicht es, ihn vom Client-Terminal zu lösen, wenn dieses Werkzeug verfügbar ist. Suchen Sie nach dem erneuten Verbinden zuerst nach der bestehenden Ausführung, bevor Sie eine weitere starten.

Reicht ein Rückgabecode von null aus, um mein Ergebnis zu validieren?

Nein. Er zeigt an, dass das Programm eine normale Beendigung meldet. Prüfen Sie auch die Vollständigkeit der Identifikatoren, das Format und die vorgesehenen fachlichen Kriterien. Ein Programm kann normal enden, nachdem es eine falsche Teilmenge verarbeitet hat.

Bedeutet ein stillstehendes Protokoll, dass die GPU blockiert ist?

Nicht unbedingt. Das Programm kann Daten vorbereiten, auf einen Schreibvorgang warten oder keinen Fortschritt ausgeben. Bestimmen Sie die Phase und den Zustand des Prozesses, bevor Sie über einen Abbruch entscheiden. Ein expliziter fachlicher Zähler ist nützlicher als das bloße Vorhandensein von Meldungen.