Knoten. Tests

Tests, die Sie durchführen können, um die korrekte Konfiguration zu überprüfen.

Allgemeine Informationen

Es ist sehr ärgerlich, wenn man scheinbar alles richtig gemacht hat und trotzdem nicht in die Epoche kommt.

Überprüfen Sie besser alles mehrmals.

circle-info

Achtung! Im Text können Fehler sein, da ich mich nicht gut mit Serverkonfigurationen auskenne. Richtiger gesagt: "sehr schlecht auskenne", aber diese Tests haben mir geholfen.

Überprüfen Sie die korrekte Installation der Schlüssel

Es kommt vor, dass mehrere Personen die Nodes konfiguriert haben oder Sie den Befehl zum Festlegen des Consensus Public Key verwechselt haben, wodurch auf der Node und im Netzwerk unterschiedliche Schlüssel entstanden sind.

So kommen Sie mit Sicherheit nicht in die Epoche. Prüfen!

Prüfung des Consensus Key

🔎 SCHRITT 1. Consensus Public Key auf der Node herausfinden

circle-info

Achtung! Die Prüfung erfolgt auf dem Server, auf dem sich die ML Node (oder die Network Node — ich selbst habe das noch nicht genau herausgefunden, da bei mir beide Nodes derzeit auf einem Server liegen) befindet.

docker exec node wget -qO- "http://127.0.0.1:26657/status" | jq -r '.result.validator_info.pub_key.value'

du erhältst ungefähr:

{
  "value": "AD+NQncKPBzqw0u8KcSmlIMqogg7i4nhDfLIgIkGYiY="
}

👉 Kopiere das Feld "value".+

🔎 SCHRITT 2. Consensus Public Key im Netzwerk herausfinden

circle-info

Achtung! Die Prüfung erfolgt auf dem Server, auf dem Sie die Schlüssel erstellt haben. Also nicht auf der Network Node und nicht auf der ML Node.

Jetzt schauen wir, was das Netzwerk als deinen Schlüssel ansieht:

curl -s http://node2.gonka.ai:8000/chain-api/productscience/inference/inference/participant/gonka1yplcem8kfe6vm06t4sl8fskm0we2zslxxu90ta | jq

circle-info

Achtung! Ersetze das Fettgedruckte durch die Adresse deines Hot-Schlüssels.

Du erhältst:

Als Ergebnis bekommst du eine solche Antwort:

{ "participant": { "index": "gonka1yplcem8kfe6vm06t4sl8fskm0we2zslxxu90ta", "address": "gonka1yplcem8kfe6vm06t4sl8fskm0we2zslxxu90ta", "weight": -1, "join_time": "1771876365572", "join_height": "2792955", "last_inference_time": "0", "inference_url": "http://203.168.252.195:8000", "status": "ACTIVE", "coin_balance": "0", "validator_key": "7GEr4jV5GjCv+C+jKOq3Eh4bwxMVs7kafm7tcWP0EOo=", "consecutive_invalid_inferences": "0", "worker_public_key": "", "epochs_completed": 0, "current_epoch_stats": { "inference_count": "0", "missed_requests": "0", "earned_coins": "0", "rewarded_coins": "0", "burned_coins": "0", "validated_inferences": "0", "invalidated_inferences": "0", "invalidLLR": { "value": "0", "exponent": 0 }, "inactiveLLR": { "value": "0", "exponent": 0 }, "confirmationPoCRatio": null }

Uns interessiert der Wert "validator_key".

🔎 SCHRITT 3. Vergleiche sie. Sie müssen gleich sein

Sie müssen übereinstimmen. Bei uns stimmen sie nicht überein. Es ist nicht verwunderlich, dass wir nicht in die Epoche kommen ))

Gründe für diese Abweichung können verschieden sein. Ich denke, ihr werdet selbst herausfinden, wie man das behebt.

Wie man es behebt: Ich denke, ihr findet es selbst heraus. Es ist nicht kompliziert.

---------------------------------------------------------------------------

Finde das Modell auf deiner Node heraus

Achtung! Wenn nichts angezeigt wird, dann befindet sich deine ML Node möglicherweise an einem anderen Port. Mögliche Varianten:

  • 5000

  • 8000

  • 8080

  • 9200

d.h. ersetze einfach diese Zahl im Befehl.

Erwartete Antwort:

root@mlnode-308:/app# curl http://localhost:5000/v1/models {"object":"list","data":[{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-FP8","object":"model","created":1772106402,"owned_by":"vllm","root":"/root/models/Qwen3-235B-A22B-Instruct-2507-FP8","parent":null,"max_model_len":240000,"permission":[{"id":"modelperm-f9056e19f4b1494c9854c8df9887394b","object":"model_permission","created":1772106402,"allow_create_engine":false,"allow_sampling":true,"allow_logprobs":true,"allow_search_indices":false,"allow_view":true,"allow_fine_tuning":false,"organization":"*","group":null,"is_blocking":false}]}]}root@mlnode-308:/app#

circle-info

Achtung! Nach Ausführung dieses Befehls gelangst du in den Docker-Container. Um weiterhin mit der Kommandozeile auf dem Server zu arbeiten, musst du den Container mit dem Befehl verlassen: exit

Node-Konfiguration herausfinden

Erwartete Antwort:

/usr/bin/python3.12 -m vllm.entrypoints.openai.api_server --model Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 --dtype float16 --port 5001 --host 0.0.0.0 --max-model-len 240000 --enable-auto-tool-choice --tool-call-parser hermes --tensor-parallel-size 4 --pipeline-parallel-size 2 --enable-expert-parallel --quantization fp8 --gpu-memory-utilization 0.846 --kv-cache-dtype fp8 --swap-space 4 --enforce-eager --cpu-offload-gb 4 --model /root/models/Qwen3-235B-A22B-Instruct-2507-FP8 --served-model-name Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 root@ecs-99605001-024:~#

Achtung! Anstelle von mlnode-308 muss der Name deiner Node eingesetzt werden. Wenn du ihn vergessen hast, kannst du ihn mit folgendem Befehl herausfinden:

Erwartete Antwort- eines davon:

Man kann die Namen aller Container ausgeben:

Erwartete Antwort

GPU-Zustand

Erwartete Antwort:

Überprüfe die deklarierte Konfiguration

Wir überprüfen die korrekte Konfiguration der Node:

Zeigt, mit welchen Einstellungen deine ML Node läuft. Wird offenbar auf dem Server der ML Node ausgeführt (falls diese getrennt sind).

circle-info

Achtung! Diese Parameter sind als Beispiel angegeben. Sie sind mit Sicherheit veraltet. Bei dir wird es anders sein.

Prüfung der Node mit Stop

Stoppe die Node

Erwartete Antwort:

{"status":"OK"}

Überprüfe den Zustand (Status) der Node

Erwartete Antwort:

{"state":"STOPPED"}root@submodel-sxA100-19-14:~/gonka/deploy/join#

circle-info

Wenn du etwas anderes siehst – führe den Schritt zum Stoppen der Node noch einmal aus.

Starte den erzwungenen Node-Test

Erwartete Antwort

Sieh dir den Fortschritt des Tests in den Logs an

Nach einigen Minuten (normalerweise 5–15) sollte das endgültige Ergebnis erscheinen. Nach Abschluss des PoC:

Erwartete Antwort:

Wichtig ist, dass CUDA zu 100% geladen ist

Um den Test zu beenden, drücke die Tastenkombination STRG+C

Node aktivieren

Erwartete Antwort

{"message":"node enabled successfully","node_id":"node1"} root@submodel-sxA100-19-14:~/gonka/deploy/join#

Überprüfe den Zustand deiner Node:

Erwartete Antwort:

root@ecs-99605001-024:# curl http://localhost:8080/api/v1/state {"state":"INFERENCE"}root@ecs-99605001-024:#

Finde den PoV-Status deiner Node heraus:

Unerwartete Antwort:

"detail":"Cannot run POW because MLNode is currently in ServiceState.INFERENCE mode. Please stop ServiceState.INFERENCE first."}root@ecs-99605001-024:~#

Welche "erwartete Antwort" ist, weiß ich bisher nicht ))

Überprüfung der Container

Nach dem Start muss man sich zuerst vergewissern, dass die Parameter, die du für deine node-config.json gewählt hast, im mlnode übernommen wurden

Wir starten die Container-Logs mlnode

Wenn wir sehen, dass das Modell wie auf dem Screenshot geladen wurde, können wir im Allgemeinen mit der Tastenkombination den Container verlassen STRG+C

Wir starten die Container-Logs node

circle-info

Wird auf der Network Node ausgeführt.

Wenn die Node nicht synchronisiert war, sollten wir das Herunterladen der Blockchain-"Chunks" sehen

625 - Gesamtanzahl, 160 - zuletzt geladen

den Container mit der Tastenkombination verlassen STRG+C

Überprüfe die Synchronisation der Node mit dem Netzwerk

Erwartete Antwort

Also sollte hier die Zahl klein sein. Das ist die Zeit in Sekunden seit der Erstellung des letzten Blocks.

Prüfe den aktuellen Block des Netzwerks

Prüfe den Block, auf dem unsere Node ist

Ich weiß noch nicht wie )

Und vergleiche. Sie sollten nahe beieinander liegen.

Checkliste für das Hineinkommen in die Epoche

Hilft zu verstehen, in welche Richtung man nach dem Problem suchen sollte.

Erwartete Antwort:

Mit dem roten Pfeil ist das Prüfungsfeld markiert, das FAIL bei absolut allen. Dieser Parameter PASS nur bei den Master-Nodes von Gonka (glaube ich).

Mit dem blauen Pfeil ist das Feld markiert, das bei dir FAIL - wenn du noch in keiner Epoche warst.

ENDE

Zuletzt aktualisiert