Ascend 910B 多机分布式部署 Qwen3.5-397B-A17B

0 阅读6分钟

在大模型推理的多机部署中,vLLM 常见的实现方式是基于 Ray 的分布式方案。不过,借助多节点参数组合(如 DP + TP),也可以在不依赖额外调度框架的情况下完成跨机协同推理。本文将以实际环境为例,介绍如何通过这种方式完成多节点部署配置。

  • 硬件环境:两台 Atlas 800I A2(8张 910B 64G)
  • 示例模型:Qwen/Qwen3.5-397B-A17B 的 w8a8 量化版 Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp
  • 推理引擎参考文档:docs.vllm.ai/projects/as…

部署核心步骤:

  1. 拉取最新的 vllm-ascend 镜像
  2. GPUStack 平台中,将该镜像作为 vLLM 后端添加
  3. 获取跨机部署所需的网络信息(提取主从节点的网卡名称与 IP 地址)
  4. 配置主节点
  5. 配置从节点
  6. 启动服务并进行推理测试

添加自定义后端版本

在平台中添加自定义后端时,请参考以下配置:

  • 版本名称:建议与镜像的 Tag 保持一致(例如 0.18.0rc1
  • 镜像地址:swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-ascend:v0.18.0rc1 (GPUStack 同步的国内源镜像,原镜像:quay.io/ascend/vllm-ascend:v0.18.0rc1)
  • 支持框架:CANN
  • 入口命令:vllm serve
  • 执行命令:{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}

双花括号包裹的部分为 GPUStack 动态值的占位符。

获取跨机部署的信息

在进行跨机部署前,需要分别确认主节点和从节点的网卡信息。

主节点网络状态:

从节点网络状态:

根据实际网络环境选择任一可用网卡即可。关键要求是该网卡与其他节点处于同一网段,并且能够正常通信。

注意:这里选择的网卡仅用于 API 通信,对网络要求较低,但底层通信仍依赖高速网络:

验证多节点通信:docs.vllm.ai/projects/as…

以本文的演示环境为例,网络参数选取如下:

  • 主节点:网络接口名称为 enp67s0f0,本地 IP 为 192.168.13.33
  • 从节点:网络接口名称为 enp67s0f0,本地 IP 为 192.168.13.34

vLLM 跨机分布式部署

主节点配置

  1. 在 GPUStack 部署页面,展开部署菜单,选择 ModelScope

  1. 搜索并选择模型:Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp

  2. 初始配置时,先将副本数调整为 0

提示:我们需要等待主从两个模型的参数都配置完毕后,再统一进行启动。

  1. 将推理后端设置为 vLLM,并将版本指定为我们在前面步骤中添加的 0.18.0rc1

  1. 将调度方式修改为“手动”,并勾选主节点(Node 1)对应的所有 NPU 卡

  1. 进入详细参数配置页面

主节点高级参数填写如下:

--data-parallel-size 2 --tensor-parallel-size 8 # 并行策略:2个数据并行(DP),8个张量并行(TP)。注意:需保持在同一行
--data-parallel-size-local=1 # 当前节点上运行的 DP 副本数
--api-server-count=2 # API 服务进程数(未指定时默认等于 DP 数量)
--data-parallel-address=192.168.13.33 # 多节点 DP 场景下的主节点 IP 地址。请以实际环境中获取的地址为准
--data-parallel-rpc-port=13389 # 多节点 DP 的 RPC 通信端口
--seed=1024 # 随机种子(多节点需保持一致以对齐采样逻辑,默认: 0)
--enable-expert-parallel
--max-num-seqs=16 # 单次迭代最大并发序列数(吞吐量与延迟/显存的折中点)
--max-model-len=32768 # 最大上下文长度(按需设置,过大易导致显存溢出 OOM)
--max-num-batched-tokens=8192 # 单次 Batch 处理的最大 Token 数(用于控制显存峰值)
--gpu-memory-utilization=0.90
--trust-remote-code
--async-scheduling # 启用异步调度(重叠 CPU 调度与 GPU 计算开销,提升吞吐)
--no-enable-prefix-caching
--speculative_config '{"method":"qwen3_5_mtp","num_speculative_tokens":3,"enforce_eager":true}'
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'
--additional-config '{"enable_cpu_binding":true,"multistream_overlap_shared_expert":true}'
--disable-access-log-for-endpoints /health,/metrics,/ping # 屏蔽健康检查等探针接口的访问日志,保持日志清晰聚焦业务请求

注意:--tensor-parallel-size 参数请与 --data-parallel-size 参数保持在同一行,避免单独换行导致参数校验失败。GPUStack 平台后续版本将对该部署方式进行优化。

主节点环境变量填写如下:

PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
HCCL_IF_IP=192.168.13.33 # 请以实际环境中获取的地址为准
GLOO_SOCKET_IFNAME=enp67s0f0 # 请以实际环境中获取的网卡名称为准
TP_SOCKET_IFNAME=enp67s0f0 # 同上
HCCL_SOCKET_IFNAME=enp67s0f0 # 同上
OMP_PROC_BIND=false
OMP_NUM_THREADS=1
HCCL_BUFFSIZE=1024
TASK_QUEUE_ENABLE=1
VLLM_ENGINE_READY_TIMEOUT_S=1500 # vLLM 引擎启动的超时时间(秒),多节点大模型加载耗时较长,需适当调大(此处设为 25 分钟)

从节点配置

  1. 直接克隆已配置好的主节点模型

  1. 将调度选项中,勾选从节点(Node 2)对应的所有 NPU 卡

  1. 调整从节点的高级参数,与主节点相比差异如下:
- --api-server-count=2
+ --data-parallel-start-rank=1
+ --headless
  1. 调整从节点的环境变量,与主节点相比差异如下:
- HCCL_IF_IP=192.168.13.33
+ HCCL_IF_IP=192.168.13.34

注意:如果网卡名称不一致,也需进行修改。

启动并测试模型

至此,跨机 DP 的相关参数已全部配置完毕。您可以将主节点与从节点的副本数从 0 恢复为 1,以启动模型实例。启动的先后顺序没有严格限制,短时间内依次启动即可。

等待主节点模型成功启动并处于 Running 状态后,即可在试验场发起对话测试。

注意:从节点会一直处于 Staring 状态,这是正常的。

如何禁用思考过程?

在请求体中传入 enable_thinking: false,参考示例如下:

curl http://your-gpustack-server/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${YOUR_GPUSTACK_API_KEY}" \
-d '{
  "model": "qwen3.5-397b-1",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ],
  "extra_body": {
    "chat_template_kwargs": {
      "enable_thinking": false
    }
  }
}'

小结

在多节点 DP 部署下,请求会在各节点之间进行分发。相比简单的均匀分配,这种方式能够结合各节点当前的运行状态(如请求处理进度、负载情况等)进行更动态的调度,从而减少单节点因长请求导致的阻塞,在高并发场景下整体吞吐更稳定。

加入 GPUStack 社区

GPUStack 社区聚焦 AI 基础设施与大模型实践

社区中持续分享真实环境下的部署经验、问题排查案例,以及推理引擎、算力管理和系统架构相关讨论。

欢迎扫码加入 GPUStack 社区,与更多关注 AI Infra 与大模型推理实践的伙伴一起交流、学习与分享

社区群二维码

若群聊已满或二维码失效,请访问以下页面查看最新群二维码: github.com/gpustack/gp…