vLLM-Ascend双机混部DeepSeek-R1-671B-0528 W8A8量化模型

作者:昇腾PAE技术支持团队

昇腾案例库简介https://agent.blog.csdn.net/article/details/155446713
昇腾案例库限时开放https://gitcode.com/invite/link/8791cccc43cb4ee589e8

(如对本文有疑问,请移步案例库提交issue,专人答疑)


背景与前置说明

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的环境中,在此环境中做的任何操作都不会影响宿主机。

bash 复制代码
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个容器分别复制下方环境命令,并执行即可,具体环境变量的作用可在昇腾社区查找。本文只对需要专门修改的环境变量进行说明。

bash 复制代码
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\修改为模型权重路径即可

bash 复制代码
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)执行如下命令即可,无需等待主节点给出提示

bash 复制代码
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进行,此工具具体使用方式可在昇腾社区查找。

bash 复制代码
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
相关推荐
NAGNIP10 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab11 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab11 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP15 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年15 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼15 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS16 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区17 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈17 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang17 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx