本文将从部署环境、实操步骤、接口调用、问题排查、服务管理等方面,完整分享本次双机分布式推理部署的实战经验,为大模型规模化分布式部署提供可落地的参考方案。
项目 | 详情 |
部署方案 | 双机 Ray + vLLM 分布式推理 |
Head 节点 | spark-002 (192.168.110.32) |
Worker 节点 | spark-3185 (192.168.110.97) |
高速网络 | 200GE (10.10.10.1 ↔ 10.10.10.2) |
GPU | NVIDIA GB10 × 2(每台1个) |
操作系统 | Linux (ARM64架构) |
项目 | 详情 |
Docker 镜像 | nvcr.io/nvidia/vllm:25.10-py3 |
推理框架 | vLLM(内置于镜像) |
分布式框架 | Ray(内置于镜像) |
模型名称 | Qwen3-32B |
模型路径 | /data/models/Qwen3-32B |
张量并行度 | TP=2(跨双机) |
1. 200GE 高速网络配置:Head 节点配置 10.10.10.1/24,Worker 节点配置 10.10.10.2/24,通过 nmcli 创建 high-speed 连接绑定到高速网口 enp1s0f0np0。
2. SSH 双向免密登录:两台服务器之间互相配置 RSA 公钥免密登录,验证双向 SSH 互信正常。
3. 模型文件同步:确认两台服务器 /data/models/Qwen3-32B/ 路径下模型文件一致。
4. Docker 镜像拉取:两台服务器均成功拉取 nvcr.io/nvidia/vllm:25.10-py3 镜像。
Head 节点启动命令:
docker run -d \
--name vllm-head \
--gpus all --network host --shm-size=16g --ipc=host \
-v /data/models:/models \
nvcr.io/nvidia/vllm:25.10-py3 \
/bin/bash -c "ray start --head \
--node-ip-address=10.10.10.1 \
--port=6379 \
--dashboard-host=10.10.10.1 \
--dashboard-port=8265 && sleep infinity"
Worker 节点启动命令:
docker run -d \
--name vllm-worker \
--gpus all --network host --shm-size=16g --ipc=host \
-v /data/models:/models \
nvcr.io/nvidia/vllm:25.10-py3 \
/bin/bash -c "ray start --address=10.10.10.1:6379 \
--node-ip-address=10.10.10.2 && sleep infinity"
集群验证:执行 ray status 确认 2 个节点均为 Active 状态,集群资源显示 40.0 CPU、2.0 GPU 可用。
关键环境变量:
export VLLM_HOST_IP=10.10.10.1
export GLOO_SOCKET_IFNAME=enp1s0f0np0
export NCCL_SOCKET_IFNAME=enp1s0f0np0
export VLLM_TORCH_COMPILE_LEVEL=0
export VLLM_DISABLE_CUSTOM_ALL_REDUCE=1
启动命令:
python3 -m vllm.entrypoints.openai.api_server \
--model /models/Qwen3-32B \
--tensor-parallel-size 2 \
--host 0.0.0.0 --port 8000 \
--trust-remote-code \
--max-model-len 2048 \
--gpu-memory-utilization 0.85 \
--enforce-eager \
--disable-custom-all-reduce
参数 | 值 | 说明 |
--model | /models/Qwen3-32B | 模型路径 |
--tensor-parallel-size | 2 | 跨双机张量并行 |
--host | 0.0.0.0 | 监听所有网卡 |
--port | 8000 | API 服务端口 |
--max-model-len | 2048 | 最大上下文长度 |
--gpu-memory-utilization | 0.85 | GPU 显存利用率 |
--enforce-eager | - | 禁用 CUDA Graph (DGX Spark 需要) |
--disable-custom-all-reduce | - | 禁用自定义 AllReduce |
端点说明 | URL |
模型列表 | http://192.168.110.32:8000/v1/models |
对话补全 | http://192.168.110.32:8000/v1/chat/completions |
Ray Dashboard | http://192.168.110.32:8265 |
from openai import OpenAI
client = OpenAI(
base_url="http://192.168.110.32:8000/v1",
api_key="not-used"
)
response = client.chat.completions.create(
model="/models/Qwen3-32B",
messages=[{"role": "user", "content": "你好"}],
max_tokens=500
)
print(response.choices[0].message.content)
curl http://192.168.110.32:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/models/Qwen3-32B",
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "你好,请介绍一下你自己。"}
],
"max_tokens": 500,
"temperature": 0.7
}'
问题描述 | 原因分析 | 解决方案 | 状态 |
Ray Worker 无法连接 Head 节点 | SSH 互信未配置或防火墙未开放 | 配置 SSH 免密登录,开放 6379/8265/10001-10100 端口 | 已解决 |
vLLM 启动后 8000 端口无监听 | GPU 显存不足/模型路径错误/Ray 集群不完整 | 降低 gpu-memory-utilization,确认模型路径和集群状态 | 已解决 |
推理速度较慢 | 使用管理 IP 而非高速 IP | 确保使用高速网络 IP,设置 NCCL_SOCKET_IFNAME 为高速网卡 | 已解决 |
操作 | 命令 |
停止 vLLM 推理 | docker exec vllm-head pkill -f "vllm.entrypoints" |
停止 Ray 集群 | docker stop vllm-worker && docker stop vllm-head |
启动 Ray 集群 | docker start vllm-head && docker start vllm-worker |
验证集群状态 | docker exec vllm-head ray status |
查看 vLLM 日志 | docker exec vllm-head tail -f /tmp/vllm.log |
清理重建 | docker rm -f vllm-head vllm-worker |
双机 Ray vLLM 分布式推理方案已在两台 NVIDIA DGX Spark 服务器上成功部署并验证。
• 部署可行性:通过 Ray 分布式框架实现了跨两台服务器的 Qwen3-32B 模型 tensor-parallel 推理,有效利用多机 GPU 资源。
• 服务可用性:vLLM 提供的 OpenAI 兼容 API 正常工作,支持 Chat Completions 等标准接口。
后续建议:
• 可根据需求调大 --max-model-len 以支持更长上下文。
• 建议配置服务开机自启脚本,保障服务持续可用。
• 可考虑接入负载均衡或网关层进行 API 管理。
作为英伟达官方授权代理商,北京容天汇海科技有限公司为您提供全系列产品采购与咨询服务。
能一站式满足您在 AI 算力、网络搭建、服务器部署等多场景的需求,用专业服务帮您降低技术门槛,快速落地高性能生产力工具~
专属对接通道:
产品咨询热线:400-890-8985
期待与您携手,以英伟达硬核产品为基石,探索 AI 赋能办公、算力驱动创新的无限可能!