Нода. Тестирование
Тесты, которые вы можете сделать для проверки правильности настройки.
Общая информация
Очень обидно, когда вроде все сделал правильно, и все равно не получилось войти в эпоху.
Лучше все проверить несколько раз.
Внимание! В Тексте могут быть ошибки, т.к. я не очень разбираюсь в настройке серверов. Правильнее даже сказать "очень не разбираюсь", но эти тесты мне помогли.
Проверьте правильность установки ключей
Бывает такое, что в результате того, что несколько человек настраивало ноды или вы перепутали команду по назначению Consensus Public Key в результате чего у вас получились разные ключи на Ноде и в Сети.
Так вы точно в эпоху не попадете. Проверяйте!
Проверка Consensus Key
🔎 ШАГ 1. Узнать Consensus Public Key на ноде
Внимание! Проверка происходит на сервере где находится ML Node (или Network Node, я еще сам не разобрался, т.к. у меня пока обе эти ноды находятся на одном сервере).
docker exec node wget -qO- "http://127.0.0.1:26657/status" | jq -r '.result.validator_info.pub_key.value'ты получишь примерно:
{
"value": "AD+NQncKPBzqw0u8KcSmlIMqogg7i4nhDfLIgIkGYiY="
}👉 Скопируй поле "value".+
🔎 ШАГ 2. Узнать Consensus Public Key в сети
Внимание! Проверка происходит на том сервере, где вы создавали ключи. Т.е. не на Network Node и не на ML Node.
Теперь смотрим, что сеть считает твоим ключом:
curl -s http://node2.gonka.ai:8000/chain-api/productscience/inference/inference/participant/gonka1yplcem8kfe6vm06t4sl8fskm0we2zslxxu90ta | jq
Внимание! Замени то, что выделено жирным на адрес своего Горячего ключа.
Ты получишь:
В результате вы получите такой ответ:
{ "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 }
Нас интересует значение "validator_key".
🔎 ШАГ 3. Сравни их. Они должны быть одинаковыми
Они должны совпадать. А у нас - не совпадают. Ничего удивительного нет в том, что мы не попадаем в эпоху ))
Причины этого несовпадения могут быть разными. Думаю, вы сами разберетесь в том, как это исправить.
Как исправить: Думаю, сами разберетесь. Там не сложно.
---------------------------------------------------------------------------
Узнайте модель на вашей ноде
Внимание! Если у вас ничего не отобразилось, то, возможно, у вас ML Node находится на другом порту. Возможные варианты:
5000
8000
8080
9200
т.е. просто замените эту цифру в коде.
Ожидаемый ответ:
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#
Внимание! После выполнения этой команды вы попадете в Докер Контейнер. Чтобы продолжить работать с Командрой Строкой на сервере, нужно выйти из Контейнера командой:
exit

Узнать Конфигурацию Ноды
Ожидаемый ответ:
/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:~#
Внимание! Нужно вместо mlnode-308 подставить название вашей ноды. Если вы забыли, то можете это узнать через команду:
Ожидаемый ответ- какое-то из этих:

Можно вывести имена всех контейнеров:
Ожидаемый ответ

Состояние GPU
Ожидаемый ответ:

Проверьте объявленный Конфиг
Проверяем правильность настройки ноды:

Показывает, с какими настройками у вас ML Node. Выполняется, видимо, на сервере ML Node (если у вас они раздельные).
Внимание! Данные параметры приведены для примера. Они точно устарели. У вас будет иначе.
Проверка ноды с остановкой
Остановите ноду
Ожидаемый ответ:
{"status":"OK"}
Проверьте состояния (статуса) ноды
Ожидаемый ответ:
{"state":"STOPPED"}root@submodel-sxA100-19-14:~/gonka/deploy/join#
Если видите что-то другое - выполните шаг по остановке ноды еще раз.
Запустите Принудительный Тест ноды
Ожидаемый ответ

Смотрите прогресс Теста по логам
Через несколько минут (обычно 5–15) должен появиться окончательный результат. После завершения PoC:
Ожидаемый ответ:

Важно, чтобы CUDA подгрузились на 100%


Чтобы выйти из теста нажмите комбинацию CTRL+C
Включение ноду
Ожидаемый ответ
{"message":"node enabled successfully","node_id":"node1"} root@submodel-sxA100-19-14:~/gonka/deploy/join#
Проверьте состояние вашей ноды:
Ожидаемый ответ:
root@ecs-99605001-024:# curl http://localhost:8080/api/v1/state {"state":"INFERENCE"}root@ecs-99605001-024:#
Узнайте статус PoV вашей ноды:
Не ожидаемый ответ:
"detail":"Cannot run POW because MLNode is currently in ServiceState.INFERENCE mode. Please stop ServiceState.INFERENCE first."}root@ecs-99605001-024:~#
Какой "ожидаемый ответ" я пока не знаю ))
Проверка контейнеров
После запуска в первую очередь надо убедиться что те параметры что ты подобрал для своей node-config.json - заработали в mlnode
Запускаем логи контейнера mlnode

Если видим что модель загрузилась как на скрине, в целом можем выйти из контейнера через комбинацию CTRL+C
Запускаем логи контейнера node
Запускается на Network Node.
Если нода не была синхронизирована, то мы должны увидеть подтягивание "чанков" блокчейна

625 - общее кол-во, 160 - последний загруженный
выйти из контейнера через комбинацию CTRL+C
Проверьте синхронизацию ноды с сетью
Ожидаемый ответ

Т.е. вот тут цифра должна быть небольшой. Это - время в секундах с момента создания последнего блока.
Проверьте актуальный блок сети
Проверить блок на котором наша нода
Пока не знаю как )
И сравните. Должны быть рядом.
Чек-лист попадания в эпоху
Помогает понять в какую сторону искать проблему.
Ожидаемый ответ:

Красной стрелкой отмечено поле проверки, которое FAIL абсолютно у всех. Этот параметр PASS только у мастер-нод Gonka(я так думаю).
Синей стрелкой отвечено поле, которое у тебя может быть FAIL - если ты еще не попадал ни в одну эпоху.
Ссылки
Статья в Телеграмм: Gonka - Запуск. Или майнеры в поисках доходности. PART_1
Статья в Телеграмм: Gonka - Запуск. Или майнеры в поисках доходности. PART_2
КОНЕЦ
Последнее обновление