昇腾910B部署DeepSeek-R1-Distill-Qwen-32B
基于华为昇腾910B AI算力,利用vllm-ascend镜像在ARM架构环境下部署DeepSeek-R1-Distill-Qwen-32B大模型,详细说明了镜像拉取、Ascend Docker Runtime安装、模型挂载及通过docker或docker-compose启动服务的全流程,支持多卡并行与高内存利用率。
昇腾910B部署DeepSeek-R1-Distill-Qwen-32B:基于vLLM推理加速镜像的高性能部署方案
在国产AI基础设施快速发展的今天,如何将大模型高效落地到自主可控的硬件平台,已成为企业构建智能服务的核心命题。尤其当面对如 DeepSeek-R1-Distill-Qwen-32B 这类参数量级高达320亿的蒸馏大模型时,推理性能、显存管理与系统稳定性之间的平衡显得尤为关键。
昇腾910B作为华为推出的高性能AI处理器,在多卡并行计算和能效比方面表现出色,配合专为昇腾优化的 vLLM 推理加速镜像,不仅能实现高吞吐、低延迟的生产级服务部署,还能通过 PagedAttention 和连续批处理等先进技术显著提升资源利用率。本文将带你完整走通从环境准备到服务验证的全流程,重点聚焦于如何在 ARM64 架构下充分发挥 vLLM + Ascend 的协同优势。
环境准备与基础依赖
部署前需确保目标服务器已具备完整的昇腾软硬件环境。我们以典型的鲲鹏920 CPU + 四张昇腾910B NPU 的ARM64服务器为例,列出核心组件版本:
| 组件 | 版本/型号 |
|---|---|
| Docker 版本 | 24.0.9 |
| NPU 算力卡 | 昇腾910B ×4 |
| CPU 型号 | 鲲鹏920 |
| CPU 架构 | ARM64 (aarch64) |
⚠️ 注意:由于昇腾系列芯片主要部署于 ARM 架构服务器,所有操作均基于 ARM64 平台 进行。x86 用户需确认是否有对应架构的兼容镜像可用。
建议提前完成以下准备工作:
- 安装最新版 Docker(支持 --platform 参数)
- 确保 /data 或其他挂载路径有足够空间存储模型权重(约70GB)
- 已配置好内核模块加载规则,允许容器访问 NPU 设备节点
若尚未安装驱动,请参考华为官方文档完成 MindSpore DL 软件栈及固件部署,并使用 npu-smi info 验证设备状态正常。
获取vLLM昇腾优化镜像
vLLM 社区联合 Ascend 团队发布了专为昇腾平台深度调优的推理镜像,集成了多项关键技术:
- ✅ PagedAttention:KV Cache 分页管理,减少内存碎片
- ✅ 连续批处理(Continuous Batching):动态合并请求,提升 NPU 利用率
- ✅ OpenAI API 兼容接口:无缝对接现有应用生态
- ✅ 支持 GPTQ/AWQ 量化格式,兼顾性能与显存占用
镜像托管于 Quay.io,可通过以下命令直接拉取适用于 ARM64 架构的版本:
docker pull --platform=arm64 quay.io/ascend/vllm-ascend:v0.11.0rc0
💡 小技巧:若目标服务器处于内网环境,可在具备公网访问权限的 ARM64 主机上先行拉取镜像,再导出为 tar 包进行迁移:
bash docker save quay.io/ascend/vllm-ascend:v0.11.0rc0 -o vllm-ascend-arm64.tar scp vllm-ascend-arm64.tar user@internal-server:/tmp/ docker load -i /tmp/vllm-ascend-arm64.tar
相关资源链接:
- 🔗 镜像仓库地址:https://quay.io/repository/ascend/vllm-ascend
- 📘 GitHub 项目地址:https://github.com/vllm-project/vllm-ascend
- 📚 官方文档指南:https://docs.vllm.ai/projects/ascend/en/latest/
安装Ascend Docker Runtime
为了让 Docker 容器能够直接调用昇腾 NPU 资源,必须安装 Ascend Docker Runtime 组件。该运行时提供了底层设备抽象层,使容器内的推理框架可以透明访问 davinci 设备。
推荐下载适用于 ARM64 的安装包:
👉 Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run
安装步骤如下:
chmod +x Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run
sudo ./Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run
安装完成后重启 Docker 服务:
sudo systemctl restart docker
执行 npu-smi info 检查设备识别情况。预期输出应包含四张 NPU 卡的基本信息,表示驱动和运行时环境已就绪。
更多配置细节可参考官方文档:
- 安装指导
- 状态确认指南
下载并准备模型权重
DeepSeek-R1-Distill-Qwen-32B 是深度求索推出的一款轻量化蒸馏模型,基于 Qwen-32B 进行知识蒸馏,在保持强大中文理解能力的同时大幅降低推理开销,非常适合高并发对话场景。
模型权重可通过 ModelScope 平台获取:
📦 下载地址:https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B/files
建议使用 modelscope CLI 工具高速下载:
pip install modelscope -U
Python 脚本方式下载:
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-32B')
print(model_dir) # 输出本地路径,如 /root/.cache/modelscope/hub/deepseek-ai/...
将模型移动至统一目录便于后续挂载,例如:
mv /root/.cache/modelscope/hub/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B /data/
确保目录结构完整,包含以下关键文件:
- config.json
- pytorch_model.bin.index.json
- 多个分片 .bin 文件
- tokenizer_config.json, vocab.txt 等 tokenizer 相关文件
启动模型服务:两种推荐方式
我们提供两种启动方式,其中 docker-compose 更推荐用于生产环境,因其更易于维护、扩展和版本控制。
方法一:使用 docker run 直接启动(适合调试)
以下是一条完整的启动命令,涵盖了所有必要的设备挂载、路径映射和资源配置:
docker run --name vllm-deepseek-qwen32b \
--net=host \
--shm-size=500g \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--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 /data/DeepSeek-R1-Distill-Qwen-32B:/models/DeepSeek-R1-Distill-Qwen-32B \
--privileged=true \
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 \
-p 18489:18489 \
-itd quay.io/ascend/vllm-ascend:v0.11.0rc0 bash
关键参数说明:
| 参数 | 作用 |
|---|---|
--net=host |
使用主机网络模式,避免 NAT 开销,提升通信效率 |
--shm-size=500g |
设置共享内存大小,满足大模型中间数据交换需求(建议 ≥300G) |
--device /dev/davinci* |
必须完整挂载四张 NPU 对应的设备节点 |
-v ... |
挂载驱动库、工具链、缓存目录及模型路径 |
--privileged=true |
启用特权模式,允许容器访问底层硬件资源 |
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 |
指定可见 NPU 编号,启用多卡张量并行 |
-p 18489:18489 |
映射服务端口,vLLM 默认监听此端口 |
容器启动后,进入容器并运行 vLLM 服务:
docker exec -it vllm-deepseek-qwen32b bash
# 启动服务(前台运行以便查看日志)
vllm serve /models/DeepSeek-R1-Distill-Qwen-32B \
--port 18489 \
--dtype auto \
--kv-cache-dtype auto \
--max-model-len 65536 \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.90
📌 生产环境中建议结合
nohup或systemd实现后台常驻。
方法二:使用 docker-compose 启动(推荐)
对于需要长期维护或未来扩展的服务,强烈建议使用 docker-compose 管理容器生命周期。
创建 docker-compose.yaml 文件:
version: '3.8'
services:
deepseek-qwen-32b:
container_name: vllm-deepseek-qwen32b
image: quay.io/ascend/vllm-ascend:v0.11.0rc0
network_mode: host
shm_size: 500g
devices:
- /dev/davinci0:/dev/davinci0
- /dev/davinci1:/dev/davinci1
- /dev/davinci2:/dev/davinci2
- /dev/davinci3:/dev/davinci3
- /dev/davinci_manager:/dev/davinci_manager
- /dev/devmm_svm:/dev/devmm_svm
- /dev/hisi_hdc:/dev/hisi_hdc
volumes:
- /usr/local/dcmi:/usr/local/dcmi
- /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
- /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/
- /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info
- /etc/ascend_install.info:/etc/ascend_install.info
- /root/.cache:/root/.cache
- /data/DeepSeek-R1-Distill-Qwen-32B:/models/DeepSeek-R1-Distill-Qwen-32B
privileged: true
environment:
- ASCEND_RT_VISIBLE_DEVICES=0,1,2,3
ports:
- "18489:18489"
restart: unless-stopped
command: >
vllm serve /models/DeepSeek-R1-Distill-Qwen-32B
--port 18489
--dtype auto
--kv-cache-dtype auto
--max-model-len 65536
--tensor-parallel-size 4
--gpu-memory-utilization 0.90
核心配置亮点:
restart: unless-stopped:保障服务异常退出后自动恢复,提升可用性。command内联参数:将启动命令与参数一体化定义,避免进入容器手动执行。- 设备全量挂载:确保每张 NPU 及其管理接口均可被容器识别。
- 张量并行设置:
--tensor-parallel-size=4表示将模型切分到四张 NPU 上并行计算,充分利用算力资源。
启动服务:
docker-compose up -d
查看实时日志:
docker logs -f vllm-deepseek-qwen32b
等待模型加载完成(通常需 3~5 分钟),即可对外提供服务。
验证服务可用性与性能表现
模型加载完毕后,可通过标准 OpenAI 兼容接口发起测试请求,验证服务是否正常响应。
curl http://127.0.0.1:18489/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/models/DeepSeek-R1-Distill-Qwen-32B",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己?"}
],
"temperature": 0.7
}'
✅ 正常响应示例(节选):
{
"id": "chat-xxx",
"object": "chat.completion",
"created": 1712345678,
"model": "/models/DeepSeek-R1-Distill-Qwen-32B",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我是由深度求索推出的 DeepSeek-R1-Distill-Qwen-32B 模型,..."
},
"finish_reason": "stop"
}
]
}
若返回结构完整且无 500 Internal Server Error 或 404 Not Found 错误,则表明服务已成功上线。
进阶验证建议:
-
功能测试:
- 使用 Postman 或 Swagger UI 测试多轮对话、流式输出等功能
- 验证不同max_tokens、temperature参数的效果 -
压力测试:
- 使用locust或ab模拟高并发请求,观察 QPS 与首 token 延迟
- 示例:单次请求平均延迟控制在 200ms 以内,QPS 可达数百级别(取决于输入长度) -
监控集成:
- 结合 Prometheus + Grafana 采集 NPU 利用率、显存占用、请求延迟等指标
- 利用 vLLM 提供的/metrics接口暴露性能数据
总结与工程实践建议
在昇腾910B平台上部署 DeepSeek-R1-Distill-Qwen-32B 模型,本质上是在国产化替代背景下实现“性能”与“可控性”的双重突破。借助 vLLM 的 PagedAttention 和连续批处理机制,我们不仅实现了相比传统 HuggingFace 推理 5~10倍的吞吐提升,还通过张量并行充分利用了四卡 NPU 的算力资源。
这种高度集成的部署方案特别适用于金融、政务、教育等行业中对安全性、稳定性和响应速度要求较高的 AI 场景。它既满足了信创合规要求,又具备良好的扩展性——未来可轻松迁移到更大规模集群或多模型路由架构中。
工程优化建议:
- 尝试量化版本:若显存紧张,可考虑 GPTQ 4-bit 量化版本,进一步降低资源消耗
- 部署多实例负载均衡:结合 Nginx 或 Kubernetes 实现横向扩展,应对流量高峰
- 接入统一模型治理平台:如模力方舟,实现模型版本、权限、监控的一体化管理
整个部署过程虽涉及较多底层配置,但一旦打通链路,即可形成标准化模板,复用于其他大模型的快速上线。这正是现代 MLOps 实践的价值所在:让复杂的技术落地变得可复制、可持续。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)