Nodo. Pruebas

Pruebas que puedes hacer para comprobar la correcta configuración.

Información general

Es muy frustrante cuando parece que hiciste todo bien y aun así no logras entrar en la época.

Mejor revisarlo todo varias veces.

circle-info

¡Atención! En el texto puede haber errores, ya que no entiendo mucho sobre la configuración de servidores. Más correcto sería decir "realmente no entiendo", pero estas pruebas me ayudaron.

Verifica la correcta instalación de las claves

Sucede que, como resultado de que varias personas configuraron los nodos o confundiste el comando para asignar la Consensus Public Key, terminas con claves diferentes en el Nodo y en la Red.

Así seguro no entrarás en la época. ¡Revisa!

Verificación de la Consensus Key

🔎 PASO 1. Averiguar la Consensus Public Key en el nodo

circle-info

¡Atención! La verificación se realiza en el servidor donde está el ML Node (o Network Node, aún no lo tengo claro, ya que por ahora ambos nodos están en el mismo servidor para mí).

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

obtendrás aproximadamente:

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

👉 Copia el campo "value".+

🔎 PASO 2. Averiguar la Consensus Public Key en la red

circle-info

¡Atención! La verificación se realiza en el servidor donde creaste las claves. Es decir, no en el Network Node ni en el ML Node.

Ahora mira qué considera la red como tu clave:

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

circle-info

¡Atención! Sustituye lo que está en negrita por la dirección de tu clave caliente.

Recibirás:

Como resultado obtendrás una respuesta como esta:

{ "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 }

Nos interesa el valor "validator_key".

🔎 PASO 3. Compáralos. Deben ser idénticos

Deben coincidir. Y en nuestro caso no coinciden. No es de extrañar que no entremos en la época ))

Las razones de esta discrepancia pueden ser variadas. Creo que ustedes mismos sabrán cómo solucionarlo.

Cómo arreglarlo: Creo que lo entenderás por ti mismo. No es difícil.

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

Averigua el modelo en tu nodo

¡Atención! Si no ves nada, es posible que tu ML Node esté en otro puerto. Posibles opciones:

  • 5000

  • 8000

  • 8080

  • 9200

es decir, simplemente reemplaza este número en el comando.

Respuesta esperada:

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

¡Atención! Después de ejecutar este comando entrarás en el contenedor Docker. Para seguir trabajando con la línea de comandos en el servidor, debes salir del contenedor con el comando: exit

Averiguar la configuración del nodo

Respuesta esperada:

/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:~#

¡Atención! Necesitas sustituir mlnode-308 por el nombre de tu nodo. Si lo olvidaste, puedes averiguarlo con el comando:

Respuesta esperada- alguno de estos:

Puedes mostrar los nombres de todos los contenedores:

Respuesta esperada

Estado de la GPU

Respuesta esperada:

Verifica la configuración declarada

Comprobamos la correcta configuración del nodo:

Muestra con qué ajustes está tu ML Node. Probablemente se ejecuta en el servidor ML Node (si los tienes separados).

circle-info

¡Atención! Estos parámetros se dan como ejemplo. Seguro están desactualizados. A ti te será diferente.

Verificación del nodo con parada

Detén el nodo

Respuesta esperada:

{"status":"OK"}

Comprueba el estado del nodo

Respuesta esperada:

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

circle-info

Si ves otra cosa, vuelve a ejecutar el paso de detener el nodo.

Ejecuta la Prueba Forzada del nodo

Respuesta esperada

Consulta el progreso de la prueba en los logs

En unos minutos (normalmente 5–15) debería aparecer el resultado final. Tras completar el PoC:

Respuesta esperada:

Es importante que las CUDA se carguen al 100%

Para salir de la prueba pulsa la combinación CTRL+C

Habilitar el nodo

Respuesta esperada

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

Comprueba el estado de tu nodo:

Respuesta esperada:

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

Averigua el estado PoV de tu nodo:

Respuesta no esperada:

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

Cuál es la "respuesta esperada" aún no lo sé ))

Verificación de contenedores

Después de arrancar, lo primero es asegurarse de que los parámetros que elegiste para tu node-config.json hayan funcionado en mlnode

Iniciamos los logs del contenedor mlnode

Si vemos que el modelo se cargó como en la captura, en general podemos salir del contenedor con la combinación CTRL+C

Iniciamos los logs del contenedor node

circle-info

Se ejecuta en el Network Node.

Si el nodo no se había sincronizado, deberíamos ver la descarga de "chunks" del blockchain

625 - cantidad total, 160 - último cargado

salir del contenedor con la combinación CTRL+C

Comprueba la sincronización del nodo con la red

Respuesta esperada

Es decir, aquí el número debería ser pequeño. Es el tiempo en segundos desde la creación del último bloque.

Comprueba el bloque actual de la red

Comprobar el bloque en el que está nuestro nodo

Por ahora no sé cómo )

Y compáralos. Deberían estar cerca.

Lista de verificación para entrar en la época

Ayuda a entender en qué dirección buscar el problema.

Respuesta esperada:

La flecha roja marca el campo de verificación que FAIL absolutamente todos tienen. Este parámetro PASS solo lo tienen los master-nodes de Gonka (eso creo).

La flecha azul señala el campo que tú puedes tener FAIL - si aún no has entrado en ninguna época.

Enlaces

FIN

Última actualización