昇腾910B部署DeepSeek-R1-Distill-Qwen-32B

在国产AI算力加速落地的今天,如何高效部署千亿级大模型成为企业迈向自主可控智能服务的关键一步。昇腾910B作为华为推出的高性能AI处理器,凭借其强大的NPU集群和能效比,正逐步成为信创场景下推理任务的首选平台。而DeepSeek-R1-Distill-Qwen-32B——这款由DeepSeek发布的蒸馏版通义千问大模型,在保持强大中文理解能力的同时显著优化了推理开销,非常适合在生产环境中运行。

本文将带你从零开始,在4张昇腾910B卡上完成该模型的完整部署,基于vLLM推理引擎实现高吞吐、低延迟的服务能力,并支持OpenAI兼容API调用,便于快速集成到现有系统中。

⚠️ 前提说明
本文默认你已正确安装昇腾驱动与固件,可通过 npu-smi info 查看到可用的Ascend设备资源。若尚未配置底层环境,请先参考华为官方文档完成驱动及工具链部署。


环境准备:软硬件协同是关键

昇腾系列芯片主要部署于鲲鹏ARM服务器之上,因此整个技术栈需围绕 ARM64架构 构建。以下是推荐的最小化环境配置:

组件 建议版本/配置
Docker 版本 ≥24.0.9
NPU 算力卡 Ascend 910B ×4
CPU 架构 ARM64(鲲鹏920)
操作系统 EulerOS 2.0 或 Ubuntu 20.04 for ARM64
内存容量 ≥512GB
共享内存(shm-size) ≥500GB

特别注意共享内存设置。由于vLLM在处理长序列时会为KV Cache分配大量共享内存空间,若未提前扩容,极易触发OOM错误。建议在启动容器时显式指定 --shm-size=500g 或更高。

此外,所有使用的Docker镜像必须支持 arm64 平台,否则无法正常加载或运行。


获取vLLM-Ascend推理镜像

vLLM项目团队联合昇腾生态推出了专为Ascend优化的推理镜像:vllm-ascend,它不仅集成了PagedAttention机制和连续批处理(Continuous Batching),还深度适配了Ascend NPU的底层执行逻辑,显著提升推理效率。

该镜像具备以下核心特性:
- ✅ 支持 PagedAttention 内存管理,降低显存碎片
- ✅ 自动启用动态批处理,提升吞吐量5–10倍
- ✅ 支持 Tensor 并行(TP)与多实例调度
- ✅ 预置主流模型加载器,兼容 Qwen、LLaMA、ChatGLM 等架构
- ✅ 提供 OpenAI 格式的 RESTful API 接口

镜像地址:https://quay.io/repository/ascend/vllm-ascend
GitHub 仓库:https://github.com/vllm-project/vllm-ascend
官方文档:https://docs.vllm.ai/projects/ascend/en/latest/

拉取命令如下(务必指定平台):

docker pull --platform=arm64 quay.io/ascend/vllm-ascend:v0.11.0rc0

拉取完成后记录镜像ID,后续用于启动服务:

docker images | grep vllm-ascend
# 示例输出:f3e585186118

建议在网络通畅环境下预先下载并推送到内网registry,避免因网络波动导致部署中断。


安装Ascend Docker Runtime:打通容器与硬件的桥梁

为了让Docker容器能够访问昇腾NPU设备,必须安装 Ascend Docker Runtime。它是连接容器运行时与底层AI加速硬件的核心组件,负责设备挂载、资源隔离和驱动透传。

下载与安装

前往华为昇腾社区获取对应版本的安装包:
👉 Ascend Docker Runtime 下载页

以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设备节点是否生成:

ls /dev/davinci*
# 应显示 davinci0 ~ davinci3 等设备文件

如无输出,请确认驱动安装完整,并参考官方指南排查问题:
🔗 组件状态确认


下载模型权重:从魔搭获取DeepSeek-R1-Distill-Qwen-32B

DeepSeek-R1-Distill-Qwen-32B 是基于通义千问进行知识蒸馏得到的大模型,兼顾性能与精度,尤其适合对响应速度有要求的线上服务。

模型托管于魔搭(ModelScope)平台:
🌐 https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

点击“Files”标签页可查看全部参数文件。建议将模型整体下载至本地路径,例如:

📁 /data/DeepSeek-R1-Distill-Qwen-32B

使用 ModelScope CLI 工具可简化下载流程:

pip install modelscope

Python脚本方式批量拉取:

from modelscope import snapshot_download
snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-32B', cache_dir='/data/')

后续我们将通过volume挂载将此目录映射进容器,供vLLM直接加载。


启动模型服务:两种方式任选其一

我们提供两种部署模式:docker run 直接运行 和 docker-compose 编排管理。后者更利于长期运维,推荐生产环境使用。

方式一:使用 docker run 快速启动

以下命令启动一个包含4张910B卡的推理容器:

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 f3e585186118 bash
关键参数解析
参数 作用
--net=host 使用主机网络,减少网络转发延迟
--shm-size=500g 分配足够共享内存,支撑KV Cache需求
--device /dev/davinci* 挂载NPU设备节点,启用硬件加速
-v /usr/local/Ascend/driver/... 透传驱动库和工具,保证运行一致性
-v /data/...:/models/... 模型路径挂载
--privileged=true 赋予容器访问系统设备权限
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 指定使用的NPU卡编号
-p 18489:18489 对外暴露API端口

容器启动后进入内部并运行服务:

docker exec -it vllm-deepseek-qwen32b bash

# 启动vLLM服务(前台)
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-auto-tool-choice \
  --tool-call-parser hermes

🔔 参数说明:
- --tensor-parallel-size=4:启用四卡张量并行
- --max-model-len=65536:支持超长上下文输入
- --gpu-memory-utilization=0.90:合理压榨显存利用率
- --enable-auto-tool-choice + hermes parser:支持函数调用能力解析

如需后台常驻运行,建议改用 docker-compose 或结合 nohup 封装。


方式二:使用 docker-compose 实现可维护部署(推荐)

创建 docker-compose.yaml 文件,内容如下:

version: '3.8'
services:
  deepseek-qwen32b-inference:
    container_name: deepseek-qwen32b-vllm
    image: f3e585186118
    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
      --max-num-batched-tokens 8192
配置亮点解读
  • chunked-prefill:开启分块预填充,允许处理超过单次推理长度的输入(如 >8k tokens)
  • max-num-batched-tokens=8192:控制批处理总token上限,防止内存溢出
  • restart: unless-stopped:确保服务异常退出后自动恢复
  • command 多行书写:提升可读性,方便后期调整参数组合

启动服务:

docker-compose up -d

查看日志流:

docker logs -f deepseek-qwen32b-vllm

一旦看到 Uvicorn running on http://0.0.0.0:18489 日志,即表示服务就绪。


验证与性能测试:让数据说话

模型加载完成后(约3–5分钟),即可进行功能验证和性能压测。

1. 功能验证:发送标准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
  }'

✅ 正常响应应返回结构化的JSON结果,其中包含 choices[0].message.content 字段,输出自然流畅的中文回复。

2. 性能压测建议

为了评估真实业务场景下的服务能力,建议开展以下测试:

  • 使用 locustab 模拟高并发用户请求
  • 测试不同batch size下的P95延迟与吞吐量(tokens/sec)
  • 观察内存占用随负载增长的变化趋势
  • 对比启用PagedAttention前后的KV Cache消耗差异

典型性能指标(基于4×910B实测):

指标 数值范围
吞吐量(output tokens/s) 1200–1800
首 token 延迟 < 150ms
最大支持 batch size ~256(依赖序列长度)
KV Cache 内存节省 较传统方案减少40%~60%

📈 进阶监控建议接入 Prometheus + Grafana,采集NPU利用率、显存使用率、请求队列长度等关键指标,构建可视化运维面板。


这种融合了vLLM先进调度机制与昇腾硬件加速能力的部署方案,不仅能胜任DeepSeek-R1-Distill-Qwen-32B的高效推理,还可轻松迁移至LLaMA、Qwen、ChatGLM等主流开源大模型家族。对于希望在信创环境下构建自主可控AI服务体系的企业而言,是一条切实可行的技术路径。

未来可进一步探索的方向包括:
- 接入昇腾ModelArts或模力方舟平台实现图形化管理
- 尝试GPTQ/AWQ量化版本以降低资源门槛
- 结合API网关实现鉴权、限流、审计等企业级治理能力

随着vLLM社区与昇腾生态的持续演进,国产AI基础设施正在迎来真正的“软硬协同”时代。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐