vLLM-Ascend双机混部DeepSeek-R1-671B-0528 W8A8流程
摘要:vLLM-Ascend实现了昇腾NPU专用后端与DeepSeek-R1-671B-0528 W8A8模型的深度集成。通过低侵入式插件架构,该项目确保了主仓代码纯净性,并显著提升了千亿参数MoE模型在昇腾硬件上的推理性能。文中详细提供了包含Atlas 800I A2服务器、MindIE v0.9.1镜像等核心组件的环境配置清单,以及双机部署的具体操作流程(主节点端口8000启动服务,副节点以h
背景与前置说明
vllm与多模态部署的意义
vLLM-Ascend是vLLM社区官方支持的昇腾NPU专用后端,通过将PagedAttention等核心技术与昇腾硬件深度集成,显著提升大模型在昇腾集群上的推理性能并降低部署门槛。该项目采用低侵入式插件架构,将torch_npu等硬件依赖完全隔离至独立后端,既保障了主仓代码纯净性,又为异构硬件生态接入树立了范式,推动昇腾生态从交付模式向开源共建转型,为国产硬件在大模型推理领域提供了关键基础设施
目标模型:DeepSeek-R1-671B-0528 W8A8
DeepSeek-R1-671B-0528 W8A8是DeepSeek最新发布的6710亿参数专家混合模型(MoE)的8位权重量化版本,该版本通过vLLM-Ascend在昇腾硬件上实现了高效部署。作为稀疏激活模型,其实际推理时仅激活约370亿参数,结合W8A8量化技术显著降低了显存占用,使单卡部署超大规模模型成为可能。在昇腾NPU上,该模型通过vLLM-Ascend的PagedAttention内核和MTP(内存优化)技术,实现了接近FP16精度的推理效果,同时吞吐量提升1.6倍以上,为千亿级MoE模型在国产硬件上的产业化应用提供了关键技术支持。
环境版本与依赖清单
为确保部署兼容性,以下是本次部署的核心组件版本与硬件规格,建议严格遵循:
| 组件类别 | 组件名称/规格 | 版本/参数 | 用途说明 |
|---|---|---|---|
| 硬件载体 | 昇腾服务器规格 | Atlas 800I A2(64GB)*2 | 模型推理的硬件基础,双机64G显存满足DeepSeek-R1-671B-0528 W8A8大模型需求 |
| 基础镜像 | MindIE镜像 | v0.9.1-dev-openeuler | 预集成CANN、MindIE、torch_npu,vllm,vllm-ascend减少环境配置工作量 |
| 系统依赖 | 操作系统 | openEuler 24.03 LTS | 昇腾硬件推荐适配系统 |
| 编译工具 | gcc/g++ | gcc 12 / g++ 12;适配工具链7.3.0 | 编译模型依赖的C++组件,解决头文件缺失问题 |
| Python依赖 | Python版本 | 3.11 | 镜像内置,匹配依赖库版本 |
模型下载地址
为了方便开发者下载模型,以下提供了模型下载地址:
https://www.modelscope.cn/models/vllm-ascend/DeepSeek-R1-0528-W8A8
镜像下载地址
Docker镜像通过将应用及其所有依赖项打包在一起,确保了应用在任何环境中运行的结果都是一致的。华为官方提供了一系列已经配置好环境的镜像,通过下方镜像站直接下载的镜像,无需再配置vllm和vllm-ascend,ais-bench工具等环境,方便开发者直接推理模型。
https://quay.io/repository/ascend/vllm-ascend?tab=tags
本文下载的镜像版本为v0.9.1-dev-openeuler
启动容器
在下载好镜像后,可通过下方的命令直接启动容器运行进入docker的环境中,在此环境中做的任何操作都不会影响宿主机。
docker run --name ${docker-name} \
--net=host --shm-size=500g \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-v /dpc:/dpc \
-p 8000:8000 \
-it ${image-name} bash
注释:${docker-name}是容器名称,${image-name}是镜像名称,可以通过docker images查到,启动后,通过docker ps,找到${docker-name}后可通过docker exec -it ${docker-name} bash再次进入容器。
设置环境变量
在每个2个容器分别复制下方环境命令,并执行即可,具体环境变量的作用可在昇腾社区查找。本文只对需要专门修改的环境变量进行说明。
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export HCCL_IF_IP=`hostname -I|awk -F" " '{print $1}'`
#ifconfig 查询获得(本机为enp61s0f0)
export HCCL_SOCKET_IFNAME=enp61s0f0
export TP_SOCKET_IFNAME=enp61s0f0
export GLOO_SOCKET_IFNAME=enp61s0f0
export HCCL_BUFFSIZE=1024
export HCCL_CONNECT_TIMEOUT=7200
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_OP_EXPANSION_MODE=AIV
export TASK_QUEUE_ENABLE=1
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=100
export VLLM_USE_V1=1
export VLLM_LOGGING_LEVEL=WARNING
主节点启动
在主节点(Node 0)上执行如下命令启动服务,/mnt/nfs/deepseek/DeepSeek-R1-0528-W8A8\修改为模型权重路径即可
vllm serve /mnt/nfs/deepseek/DeepSeek-R1-0528-W8A8 \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--gpu-memory-utilization 0.9 \
--no-enable-prefix-caching \
--max-model-len 8192\
--max-num-batched-tokens 8192 \
--max-num-seqs 256 \
--data-parallel-size 2 \
--data-parallel-size-local 1 \
--data-parallel-address 10.226.72.51 \
--data-parallel-rpc-port 13389 \
--tensor-parallel-size 8 \
--block-size=128 \
--seed 1024 \
--enable-expert-parallel \
--quantization ascend \
--additional-config '{"ascend_scheduler_config":{"enabled":false},"torchair_graph_config":{"enabled":true}}'
副节点执行命令
在主节点启动后,立刻在副节点(Node 1)执行如下命令即可,无需等待主节点给出提示
vllm serve /mnt/nfs/deepseek/DeepSeek-R1-0528-W8A8 \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--headless \
--gpu-memory-utilization 0.9 \
--no-enable-prefix-caching \
--max-model-len 8192 \
--max-num-batched-tokens 8192 \
--max-num-seqs 256 \
--data-parallel-size 2 \
--data-parallel-size-local 1 \
--data-parallel-start-rank 1 \
--data-parallel-address 10.226.72.51 \
--data-parallel-rpc-port 13389 \
--tensor-parallel-size 8 \
--block-size=128 \
--seed 1024 \
--enable-expert-parallel \
--quantization ascend \
--additional-config '{"ascend_scheduler_config":{"enabled":false},"torchair_graph_config":{"enabled":true}}'
测试服务可用性
为了测试服务是否可用,可以通过下方命令进行简单的测试,如果需要性能测试或者精度测试,可以采用ais-bench进行,此工具具体使用方式可在昇腾社区查找。
curl -H "Accept:application/json" -H "Content-type:application/json" -X POST -d '{
"model": "/mnt/nfs/deepseek/DeepSeek-R1-0528-W8A8",
"stream": false,
"max_completion_tokens":20,
"messages":[
{"role":"user","content": "who are you?"}]
}' http://10.226.72.51:8000/v1/chat/completions
更多推荐



所有评论(0)