多节点
在此方案中,您将在多台服务器上部署网络节点以及一个或多个推理(ML)节点。要加入网络,需要部署两类服务:
- 网络节点 – 由链节点和 API 节点组成的服务,负责所有通信。链节点连接区块链,API 节点处理用户请求。
- 推理(ML)节点 – 在 GPU 上执行大语言模型(LLM)推理的服务。至少需要一个 ML 节点 才能加入网络。
本指南说明如何在同一台机器上部署这两类服务,以及如何在不同机器上部署。服务均以 Docker 容器形式部署。
先决条件
网络节点的大致硬件要求:
- 16 核 CPU(amd64)
- 64 GB 及以上内存
- 1TB NVMe SSD
- 至少 100Mbps 网络连接(推荐 1Gbps)
最终需求取决于所连接的 ML 节点数量及其总吞吐量。
在继续之前,请先完成快速入门指南至步骤 3.3,包括:
- 硬件与软件要求
- 下载部署文件
- 容器访问与鉴权
- 密钥管理配置(账户密钥与 ML 运营密钥)
- 主机注册与权限
启动网络节点与推理节点
本节说明如何部署一个网络节点与多个推理节点的分布式方案。
Note
在启动网络节点之前,请确保网络服务器上 config.env 中的 DAPI_API__POC_CALLBACK_URL 已正确设置。该变量定义 API 容器的回调 URL,会传给所有 ML 节点,供其发送计算证明(PoC)nonce。
多节点部署时,该 URL 必须能被集群内所有 ML 节点访问。请勿保留默认的 Docker 内部地址(http://api:9100),因为外部 ML 节点无法访问。请改为网络节点服务器的内网地址(或 DNS 名称),例如:DAPI_API__POC_CALLBACK_URL=http://<NETWORK_NODE_PRIVATE_IP>:9100。若网络节点的 API 容器已用错误值启动,请更新 config.env 并重启 api 容器。
确保端口 9100 已开放,且可从您网络中所有推理(ML)节点访问。
启动网络节点
请确保已先完成快速入门指南至步骤 3.3(密钥管理与主机注册)。
该服务器将作为对外参与者的入口,需暴露在公网(建议使用静态 IP 或域名)。网络稳定性和安全性很重要,请使用稳定、高带宽且安全加固的服务器。
单机部署:网络节点 + 推理节点
若网络节点服务器有 GPU,且希望在同一台机器上同时运行网络节点和推理节点,请在 gonka/deploy/join 目录下执行:
source config.env && \
docker compose -f docker-compose.yml -f docker-compose.mlnode.yml up -d && \
docker compose -f docker-compose.yml -f docker-compose.mlnode.yml logs -f
将在同一台机器上启动一个网络节点和一个推理节点。
分机部署:仅网络节点
若网络节点服务器没有 GPU,且只运行网络节点(不运行推理节点),请在 gonka/deploy/join 目录下执行:
source config.env && \
docker compose -f docker-compose.yml up -d && \
docker compose -f docker-compose.yml logs -f
网络节点状态
网络节点激活后将参与下一轮计算证明(PoC),其权重将根据所连接推理节点产生的工作量更新。若未连接推理节点,则不会参与 PoC 也不会出现在列表中。下一轮 PoC 后,网络节点将出现在活跃主机列表中(变更生效约需 1–3 小时):
http://node2.gonka.ai:8000/v1/epochs/current/participants
若按下文步骤增加更多推理节点服务器,更新后的权重将在下一轮 PoC 后反映在活跃主机列表中。
在独立服务器上运行推理节点
在其他服务器上仅运行推理节点,请按以下步骤操作。
步骤 1. 配置推理节点
1.1. 下载部署文件
克隆包含基础部署脚本的仓库:
git clone https://github.com/gonka-ai/gonka.git -b main
1.2.(可选)将模型权重预下载到 Hugging Face 缓存(HF_HOME)
推理节点从 Hugging Face 下载模型权重。为确保推理前权重已就绪,建议在部署前下载。可任选一种方式。
export HF_HOME=/path/to/your/hf-cache
创建可写目录(如 ~/hf-cache),并按需预加载模型。
当前网络仅支持 Qwen/Qwen3-235B-A22B-Instruct-2507-FP8。
huggingface-cli download Qwen/Qwen3-235B-A22B-Instruct-2507-FP8
1.3. 供网络节点连接的开放端口
5050 - 推理请求(映射到 ML 节点的 5000)
8080 - 管理 API 端口(映射到 ML 节点的 8080)
重要
这些端口不得暴露在公网(仅应在网络节点所在环境中可访问)。
步骤 2. 启动推理节点
在推理节点所在服务器上,进入 cd gonka/deploy/join 目录并执行:
docker compose -f docker-compose.mlnode.yml up -d && docker compose -f docker-compose.mlnode.yml logs -f
这将部署推理节点,并在其注册到您的网络节点(见下文)后开始处理推理与计算证明(PoC)任务。
向网络节点添加(注册)推理节点
Note
通常服务器在数分钟内即可就绪。若 5 分钟后仍无法接受请求,请联系我们获取帮助。
必须将每个推理节点注册到网络节点后才会生效。 推荐通过网络节点服务器终端使用 Admin API 进行动态管理:
curl -X POST http://localhost:9200/admin/v1/nodes \
-H "Content-Type: application/json" \
-d '{
"id": "<unique_id>",
"host": "<your_inference_node_static_ip>",
"inference_port": <inference_port>,
"poc_port": <poc_port>,
"max_concurrent": <max_concurrent>,
"models": {
"<model_name>": {
"args": [
<model_args>
]
}
}
}'
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
id |
推理节点的唯一标识符 | node1 |
host |
推理节点的静态 IP,或与网络节点在同一 Docker 网络时的容器名 | http://<mlnode_ip> |
inference_port |
推理节点接收推理与训练任务的端口 | 5050(映射到 ML 节点 nginx 的 5000) |
poc_port |
用于 ML 节点管理 的端口 | 8080(映射到 ML 节点 nginx 的 8080) |
max_concurrent |
该节点可处理的最大并发推理请求数 | 500 |
models |
推理节点可处理的支持的模型集合 | (见下) |
model_name |
模型名称 | Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 |
model_args |
该模型的 vLLM 推理参数 | "--tensor-parallel-size","4" |
当前网络仅支持 Qwen/Qwen3-235B-A22B-Instruct-2507-FP8。
为确保配置正确且性能最优,请使用与您的模型和 GPU 布局最匹配的参数。
| 模型与 GPU 布局 | vLLM 参数 |
|---|---|
Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 在 8xH100 或 8xH200 上 |
"--tensor-parallel-size","4" |
如需根据 GPU 硬件选择最优部署配置与 vLLM 参数的详细说明,请参阅 为 LLM 选择最优部署配置的基准测试指南。
若节点添加成功,响应将返回新添加推理节点的配置。
获取所有推理节点
要查看网络节点下所有已注册推理节点列表,请使用:
curl -X GET http://localhost:9200/admin/v1/nodes
移除推理节点
在网络节点服务器上,使用以下 Admin API 请求可动态移除推理节点而无需重启:
curl -X DELETE "http://localhost:9200/admin/v1/nodes/{id}" -H "Content-Type: application/json"
id 为注册推理节点时使用的标识符。成功时响应为 true。