昇腾910B多机分布式部署Qwen3.5-397B-A17B专业评测

2026-06-12阅读 0热度 0
Qwen

谈到多节点推理部署,许多团队的第一选择是引入Ray这样的编排框架。但实际场景中,我们完全可以通过DP(数据并行)+ TP(张量并行)的参数组合,直接在vLLM上完成跨机协同,省去额外的调度层。操作并不复杂,关键在于参数配置的准确度。

  • 硬件环境:两台 Atlas 800I A2(每台8张 910B 64GB)
  • 示例模型:采用Qwen/Qwen3.5-397B-A17B的w8a8量化版 Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp
  • 推理引擎参考文档:https://docs.vllm.ai/projects/ascend/en/main/tutorials/models...

部署流程分几步走:拉取最新 vllm-ascend 镜像 → 在 GPUStack 平台注册为后端 → 获取跨机通信所需的网络参数 → 分别配置主节点与从节点 → 启动服务并验证。下面拆解每个环节。

添加自定义后端版本

在GPUStack中注册自定义后端,参数填写很直观。版本名称建议直接取镜像标签,例如 0.18.0rc1。镜像地址指向GPUStack同步的国内仓库:swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-ascend:v0.18.0rc1(原始镜像位于 quay.io/ascend/vllm-ascend)。支持框架选择 CANN,入口命令固定为 vllm serve。执行命令格式采用双花括号占位符,GPUStack会在运行时动态替换,直接套用即可:{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}

获取跨机部署的信息

开始跨机部署前,必须先确认网卡信息——这是基础。

主节点网络状态:

从节点网络状态:

网卡选择逻辑很简单:只要与其它节点处于同一网段且能正常通信即可。注意:选中的网卡仅负责API通信,对带宽要求不高;底层数据传输仍依赖高速网络。多节点通信验证方法详见官方文档:https://docs.vllm.ai/projects/ascend/zh-cn/latest/installatio...

以演示环境为例,最终选用以下参数:

  • 主节点:网卡 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 # 引擎启动超时时间;多节点大模型加载耗时较长,设为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,模型便会开始启动。启动顺序无硬性要求,只需在短时间内依次拉起即可。注意:从节点会一直显示 Starting 状态——这是正常现象,无需担心。

待主节点状态变为 Running 后,即可在试验场发起对话测试。

如何禁用思考过程?

在请求体中传入 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部署带来的收益很直观:请求会在各节点间动态分发——并非简单的轮询,而是结合节点实时负载进行调度。这大幅降低了单节点被长请求阻塞的概率,高并发场景下的整体吞吐也更稳定。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策