本文介绍如何使用 GPUStack,在两台 Atlas 800 A2 系列服务器上跨机部署 DeepSeek-V4.1-Flash-1017 W8A8,并对 Model Runner V1 与 V2 的单会话性能及并发性能进行对比测试。

测试环境

项目配置
硬件配置2 台 Atlas 800 A2 系列服务器,每台 8 张 Ascend 910B3
模型DeepSeek-V4.1-Flash-1017 W8A8
推理框架vLLM-Ascend v0.30.0
部署平台GPUStack
部署拓扑DP2 / TP8 / EP16,共 16 卡

适用范围:本文记录的是上述软硬件环境中的实测结果。不同 vLLM-Ascend 版本、网络拓扑、模型权重和启动参数可能产生不同结果,请勿直接外推。

参考文档:DeepSeek-V4.1-Flash|vLLM Ascend

一、添加自定义后端

在本文使用的跨机网络环境中,直接使用官方 vLLM-Ascend v0.30.0 镜像启动时出现了以下通信错误:

nnopbase fails to invoke the HcclAllocComResourceByTiling function of the hccl module, ret = 4

该问题与当前网络拓扑下的 MC2 通信建链有关。类似错误及 AllGather 规避思路可参考 vLLM-Ascend Issue #7606。需要注意的是,该 Issue 记录的是 MiniMax M2.5 在双机背靠背组网下的通信问题,并非 DeepSeek-V4.1-Flash 的专属问题;本文引用它主要用于说明相似的通信限制及处理思路。

为适配本次环境,我们基于官方镜像 quay.io/ascend/vllm-ascend:v0.30.0 制作了补丁镜像,并通过环境变量 VLLM_ASCEND_DISABLE_MC2=1 禁用 MC2,切换为 AllGather 通信方式。

重要说明:VLLM_ASCEND_DISABLE_MC2=1 是本文补丁镜像提供的开关,并非当前 vLLM-Ascend 官方文档中的通用环境变量。使用其他镜像时,请以对应版本的实现和文档为准。

补丁镜像地址:

swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-ascend:v0.30.0-allgather

接下来,在 GPUStack 的 vLLM 后端中添加自定义版本,配置如下:

配置项配置内容
镜像swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-ascend:v0.30.0-allgather
入口vllm serve
命令{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}
框架cann

添加自定义后端版本

后续部署模型时,还需要添加环境变量 VLLM_ASCEND_DISABLE_MC2=1,否则补丁镜像不会切换到本文使用的 AllGather 通信路径。

二、部署配置

完整 YAML 配置:下载 YAML 文件

本文对 Model Runner V1 与 V2 进行了对照测试。在相同提示词下,V2 的单会话生成速度更高。

配置项V1 对照配置V2 实测配置
VLLM_USE_V2_MODEL_RUNNER01
--additional-config包含 enable_dsa_cp本文配置中移除 enable_dsa_cp
--engram-configcpu_offload 与 dp_shared_memory可按显存和主机内存情况保留或调整

版本说明:当前 vLLM-Ascend 官方文档已经为 A2 双机部署提供 Model Runner V2 配置,并采用 DP2 / TP8 / EP16 拓扑。本文保留 V1 数据仅用于展示同一测试环境中的性能对照。

配置说明:enable_dsa_cp 是否需要移除与 vLLM-Ascend 版本、Model Runner 和并行拓扑有关。本文的处理方式仅适用于本次配置,不建议在其他环境中直接照搬。

本次测试中,Engram 表放置方式对生成性能没有观察到明显影响。但 --engram-config 会影响显存、主机内存和共享内存占用,因此调整前仍需确认资源容量。官方 A2 配置使用 cpu_offload 与 dp_shared_memory 时,还需要为主机内存和共享内存预留足够空间。

这份 YAML 怎么用

在部署页面右上角选择「部署模型 → YAML 文件」,然后导入 YAML。

导入前,GPUStack 会将 YAML 与当前集群配置进行比对,并列出具体变更。确认无误后,再将配置写入集群。

导入 YAML

正式导入前,建议先调整以下两项:

  • 将 local_path 改为实际的模型权重目录。两个 Worker 容器中的权重绝对路径必须一致。
  • 可以先删除 gpu_selector,导入后再根据实际节点和 NPU 情况进行配置。

部署完成后,一个模型副本会占用两台服务器的全部 16 张 NPU 卡。

模型实例

三、性能实测

单会话测试

在 GPUStack 试验场中,使用相同提示词分别测试 Model Runner V1 和 V2。

Model Runner单会话生成速度
V120.03 Tokens/s
V229.29 Tokens/s

V1 单会话测试

V2 单会话测试

相同提示词下,V2 的单会话生成速度较 V1 提升约 46%。

这套配置启用了 DSpark 投机解码,并设置 5 个草稿 Token,因此单会话生成速度也会受到提示词和草稿 Token 接受率影响。接受率越高,生成速度通常越快;接受率较低时,加速收益也会下降。

不同提示词之间出现较大的速度差异属于正常现象。本次 V1 与 V2 使用同一条提示词,因此结果具备一定的对比参考价值,但仍不能替代多轮、不同负载下的完整基准测试。

并发性能测试

使用 GPUStack 基准测试工具,设置 32 并发、1024 个输入 Token 和 512 个输出 Token,测试结果如下:

并发基准测试

指标测试结果
总吞吐量1413 Tokens/s
输出吞吐量462 Tokens/s
平均首 Token 延迟(TTFT)2.45 s
平均每 Token 生成耗时(TPOT)54.48 ms
请求成功率100%
请求数量153
失败请求0

在本次 32 并发测试中,总吞吐量达到 1413 Tokens/s,153 个请求均成功完成,未出现失败请求。

四、总结

  • 跨机部署:两台 Atlas 800 A2 系列服务器共 16 张 Ascend 910B3,采用 DP2 / TP8 / EP16 拓扑,DeepSeek-V4.1-Flash-1017 W8A8 在本文环境中可以稳定运行。
  • 通信处理:本文网络环境下的 MC2 通信出现建链问题。使用补丁镜像并设置 VLLM_ASCEND_DISABLE_MC2=1 后,可切换到 AllGather 通信路径。该环境变量仅适用于本文补丁镜像。
  • 性能对比:在相同提示词和本次测试环境下,Model Runner V2 的单会话生成速度由 20.03 Tokens/s 提升至 29.29 Tokens/s,提升约 46%。
  • 启动预热:冷启动后的前两个请求可能较慢,主要耗时来自图捕获和算子编译,本文环境实测需要约 1~2 分钟。正式压测前,建议先发送少量请求进行预热。

需要特别说明的是,当前官方文档在 A2 上更推荐 W4A8 权重,并已提供 Model Runner V2 的双机配置。本文使用 W8A8,主要用于记录实际环境中的部署过程与性能结果。官方文档也说明,现有 A2 双机示例主要完成了启动、文本和图像冒烟测试以及 16K 输入验证,超长上下文和高并发性能仍需根据实际环境进一步验证。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐