昇腾910B部署DeepSeek-R1-Distill-Qwen-32B
在国产化信创浪潮持续推进的背景下,越来越多企业开始将大模型推理能力下沉至自主可控的硬件平台。昇腾910B作为华为推出的高性能AI加速卡,凭借其强大的算力与能效比,正逐步成为构建本地化大模型服务的核心选择之一。结合vLLM这一高性能推理引擎,我们完全可以在4张昇腾910B上高效运行像DeepSeek-R1-Distill-Qwen-32B这类32B级别的大语言模型,实现高吞吐、低延迟的生产级部署。
本文将带你从零开始,在鲲鹏920 + EulerOS/Ubuntu ARM64 架构服务器上完成整个部署流程。方案采用容器化方式运行,集成Ascend优化版vLLM镜像,支持OpenAI兼容API接口,适用于金融、政务、教育等对安全性和稳定性要求较高的行业场景。
环境准备:确保基础组件就位
部署前,请确认你的系统满足以下软硬件条件:
| 项目 | 要求 |
|---|---|
| 算力卡 | 昇腾910B ×4 |
| CPU 型号 | 鲲鹏920(ARM64/aarch64) |
| 操作系统 | EulerOS 或 Ubuntu AArch64 |
| Docker 版本 | 建议 24.0.9 及以上 |
| 共享内存(shm) | 至少预留 500GB |
✅ 强烈建议使用ARM64架构主机,以避免交叉编译或兼容性问题。Ascend生态工具链和官方镜像主要针对aarch64构建。
首先验证NPU设备状态:
npu-smi info预期输出应包含四张昇腾910B的信息,表示驱动和固件已正确安装。若未看到设备信息,请先完成驱动安装并重启系统。
获取vLLM Ascend优化镜像
为充分发挥昇腾硬件性能,我们采用由昇腾社区维护的vLLM Ascend专用镜像。该镜像基于开源vLLM项目深度定制,内置多项关键优化:
- ✅ 支持PagedAttention,显著提升KV Cache内存利用率
- ✅ 实现连续批处理(Continuous Batching),提高请求吞吐量
- ✅ 内建 GPTQ/AWQ 量化加载器,便于低成本部署
- ✅ 提供标准 OpenAI API 接口,无缝对接现有应用
镜像地址:https://quay.io/repository/ascend/vllm-ascend
GitHub源码:https://github.com/vllm-project/vllm-ascend
官方文档:https://docs.vllm.ai/projects/ascend/en/latest/
由于目标平台为ARM64架构,拉取时需显式指定平台:
docker pull --platform=arm64 quay.io/ascend/vllm-ascend:v0.11.0rc0如果服务器处于内网环境,可在有外网权限的机器上先导出镜像:
docker save quay.io/ascend/vllm-ascend:v0.11.0rc0 > vllm-ascend.tar scp vllm-ascend.tar user@target-server:/path/to/ docker load < vllm-ascend.tar安装Ascend Docker Runtime
为了让Docker容器能够直接访问昇腾NPU资源,必须安装Ascend Docker Runtime组件。这是连接宿主机驱动与容器内推理框架的关键桥梁。
前往昇腾官网获取对应版本的安装包:
🔗 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再次验证设备是否可识别。如仍报错,请检查SELinux策略或udev规则是否生效。
下载并准备模型权重
前往ModelScope平台下载DeepSeek-R1-Distill-Qwen-32B的完整权重文件:
📌 https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B/files
推荐将模型统一存放于/data/DeepSeek-R1-Distill-Qwen-32B目录下,方便后续挂载管理:
mkdir -p /data/DeepSeek-R1-Distill-Qwen-32B tar -zxvf DeepSeek-R1-Distill-Qwen-32B.tar.gz -C /data/DeepSeek-R1-Distill-Qwen-32B最终目录结构应如下所示:
/data/DeepSeek-R1-Distill-Qwen-32B/ ├── config.json ├── merges.txt ├── pytorch_model-*.bin ├── tokenizer.json ├── tokenizer_config.json └── vocab.json注意:确保所有文件具有读权限,且磁盘空间充足(建议预留至少100GB用于缓存和临时计算)。
启动模型服务:两种部署方式对比
方式一:使用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关键参数说明
--shm-size=500g:vLLM的PagedAttention机制依赖大块共享内存来管理KV缓存,此值过小会导致OOM。- 多
--device挂载:必须包含所有NPU相关设备节点,否则容器内无法调用硬件加速。 -v挂载路径:尤其是驱动库和配置文件,是容器识别Ascend设备的前提。--privileged=true:开启特权模式以允许设备直通,虽存在安全风险但目前为必要手段。ASCEND_RT_VISIBLE_DEVICES=0,1,2,3:控制可用NPU编号,配合--tensor-parallel-size 4实现四卡并行。
容器启动后进入实例并手动运行服务:
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 \ --enable-chunked-prefill参数解读:
---tensor-parallel-size 4:启用四卡张量并行,充分利用昇腾集群算力。
---max-model-len 65536:支持最长64K上下文,适用于长文本摘要、代码生成等任务。
---enable-chunked-prefill:分块预填充技术,有效缓解长输入导致的显存峰值压力。
方式二:使用docker-compose编排部署(推荐)
对于生产环境,强烈建议使用docker-compose管理服务。它不仅简化了配置管理,还支持自动重启、日志追踪和服务编排。
创建docker-compose.yaml文件:
version: '3.8' services: deepseek-qwen32b-inference: 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 --enable-chunked-prefill优势分析
- 配置集中化:所有参数清晰可见,便于团队协作和版本控制。
restart: unless-stopped:实现故障自愈,保障服务可用性。command字段整合启动参数:避免遗漏关键选项,降低人为错误概率。- 更易扩展为多模型服务或加入监控组件(如Prometheus、Fluentd)。
部署命令:
docker-compose up -d docker logs -f vllm-deepseek-qwen32b观察日志直到出现以下提示:
INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:18489 (Press CTRL+C to quit)表明服务已就绪。
测试与调用:验证部署结果
等待模型加载完毕后,通过curl发起一次标准OpenAI风格的聊天请求:
curl http://127.0.0.1:18489/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-R1-Distill-Qwen-32B", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己?"} ], "temperature": 0.7, "max_tokens": 512 }'成功响应示例如下:
{ "id": "chat-xxx", "object": "chat.completion", "created": 1712345678, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "我是由深度求索开发的 DeepSeek 系列大模型……" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 21, "completion_tokens": 128, "total_tokens": 149 } }只要返回内容合理且无错误码(如500、404),即可确认DeepSeek-R1-Distill-Qwen-32B 已在昇腾910B平台上稳定运行。
总结与延伸思考
本次部署展示了如何利用Ascend 910B + vLLM + Docker构建一个高效、稳定的国产化大模型推理平台。只需4张NPU卡,就能支撑32B级别模型的服务化输出,具备良好的性价比和可维护性。
核心价值点总结:
- 性能优化到位:PagedAttention 和 Chunked Prefill 技术有效缓解内存瓶颈;
- 工程实践成熟:容器化部署保证环境一致性,易于迁移与复制;
- 接口标准化:OpenAI兼容设计极大降低了集成成本;
- 国产生态闭环:从芯片到框架再到模型,实现全栈自主可控。
未来可进一步探索的方向包括:
- 尝试AWQ/GPTQ量化版本,在保持效果的同时降低显存占用;
- 调整
--max-num-seqs和批处理策略,优化高并发下的吞吐表现; - 结合 Kubernetes(如KubeFlow、Seldon Core)实现弹性伸缩与多租户管理;
- 集成监控告警系统,实时跟踪GPU利用率、请求延迟等关键指标。
这套技术组合拳——Ascend 910B+vLLM+PagedAttention+Docker+OpenAI API——正在成为构建企业级大模型服务平台的新范式。它不仅是技术选型的胜利,更是国产算力走向实用化的标志性一步。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考