国产化信创昇腾910B使用vllm-ascend镜像部署DeepSeek-R1-Distill-Qwen-32B大模型

  • 前言
  • 一、环境信息
  • 二、拉取vllm镜像
  • 三、安装Ascend Docker Runtime
  • 四 、下载大模型权重文件
  • 五、启动大模型
    • 1. docker run直接运行
      • 配置解析表格
      • 关键配置解析
    • 2. docker-compose运行
      • 配置解析表格
      • 关键配置说明
  • 六、验证

前言

本文档采用docker容器运行大模型服务。该文档适用大多数想要通过vllm-ascend镜像来运行大模型,同样适用Qwen3-30B-A3B-Instruct-2507。本文不介绍如何安装昇腾910B驱动,请自行安装,确保昇腾910B正常使用,可通过npu-smi info命令查询昇腾910B是否可用。
运行DeepSeek-R1-Distill-Qwen-32B仅需4张昇腾910B即可

一、环境信息

docker版本 算力卡 CPU型号 CPU架构
24.0.9 8*昇腾910B 鲲鹏920 arm

二、拉取vllm镜像

vllm-ascend镜像仓库地址是:https://quay.io/repository/ascend/vllm-ascend
vllm-ascend的github项目仓库地址:https://github.com/vllm-project/vllm-ascend
vllm-ascend教程文档地址是:https://docs.vllm.ai/projects/ascend/en/latest/tutorials/

注意: 我这里加了–platform=arm64这个参数,是专门拉取适合arm架构的镜像。

# 找个外网docker环境进行拉取vllm-ascend镜像
docker pull --platform=arm64 quay.io/ascend/vllm-ascend:v0.11.0rc0

三、安装Ascend Docker Runtime

因为我们使用的是docker的方式来运行大模型,那么需要安装一个Ascend Docker Runtime。
获取Ascend Docker Runtime包地址:获取软件包,安装请看:安装Ascend Docker Runtime

我这里是arm架构的服务器,那么下载的版本如下:
Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run在这里插入图片描述
安装完毕之后,验证可用请看:组件状态确认

四 、下载大模型权重文件

下载大模型权重文件上传到服务器,方便下一步挂载进容器
下载地址:DeepSeek-R1-Distill-Qwen-32B/files

五、启动大模型

下面介绍2种运行方式,任选一种即可,推荐docker-compose运行的方式,方便维护。

1. docker run直接运行

下面的配置是使用0,1,2,3前四张昇腾910B卡运行大模型,具体可根据自身需求修改执行NPU的ID

## 运行镜像
docker run --name vllm-ascend-DeepSeek-R1-Distill-Qwen-32B \
--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:/DeepSeek-R1-Distill-Qwen-32B \
--privileged=true \
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 \
-p 18489:18489 \
-itd f3e585186118 bash

以下是对该 docker run 命令配置的整理表格,详细说明各参数的作用:

配置解析表格

配置参数 说明
--name vllm-ascend-DeepSeek-R1-Distill-Qwen-32B 指定容器名称为 vllm-ascend-DeepSeek-R1-Distill-Qwen-32B
--net=host 容器使用宿主机的网络模式,直接共享网络栈。
--shm-size=500g 设置容器的共享内存大小为 500GB。
--device /dev/davinci0 挂载 Ascend NPU 设备 /dev/davinci0 到容器。
--device /dev/davinci1 挂载 Ascend NPU 设备 /dev/davinci1 到容器。
--device /dev/davinci2 挂载 Ascend NPU 设备 /dev/davinci2 到容器。
--device /dev/davinci3 挂载 Ascend NPU 设备 /dev/davinci3 到容器。
--device /dev/davinci_manager 挂载 Ascend NPU 管理设备 /dev/davinci_manager 到容器。
--device /dev/devmm_svm 挂载 Ascend NPU 共享虚拟内存设备 /dev/devmm_svm 到容器。
--device /dev/hisi_hdc 挂载华为设备 /dev/hisi_hdc 到容器。
-v /usr/local/dcmi:/usr/local/dcmi 将宿主机的 /usr/local/dcmi 目录挂载到容器的相同路径。
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi 挂载 NPU 管理工具 npu-smi 到容器。
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ 挂载 Ascend 驱动库文件到容器。
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info 挂载驱动版本信息文件到容器。
-v /etc/ascend_install.info:/etc/ascend_install.info 挂载 Ascend 安装信息文件到容器。
-v /root/.cache:/root/.cache 挂载宿主机的缓存目录到容器。
-v /data/DeepSeek-R1-Distill-Qwen-32B:/DeepSeek-R1-Distill-Qwen-32B 挂载模型数据目录到容器。
--privileged=true 赋予容器特权模式,允许访问所有设备。
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 设置环境变量,指定可见的 NPU 设备编号。
-p 18489:18489 将容器的 18489 端口映射到宿主机的 18489 端口。
-itd 以交互式终端后台模式运行容器。
f3e585186118 使用的 Docker 镜像 ID。
bash 容器启动后执行的命令。

关键配置解析

  • NPU 设备挂载:通过 --device 挂载华为 Ascend NPU 相关设备,支持 AI 计算加速。
  • 共享内存--shm-size=500g 确保大模型运行时内存充足,根据自身服务器资源设置大小。
  • 特权模式--privileged=true 允许容器访问宿主机硬件资源。
  • 网络模式--net=host 减少网络延迟,适合高性能计算场景。
  • 数据卷挂载:模型、驱动和工具挂载确保容器内环境与宿主机一致。
    等待上面启动的容器运行正常之后,进入容器进行启动大模型

接着进入容器启动大模型

## 进入容器
docker exec -it 容器id bash
## 这是前台启动大模型,会实时输出启动,推出容器大模型会停止运行。可以加nohup让大模型变成后台运行
vllm serve /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

2. docker-compose运行

前提需要服务器安装了docker-compose
具体启动大模型的docker-compose.yaml的配置如下:
下面的配置是使用0,1,2,3前四张昇腾910B卡运行大模型,具体可根据自身需求修改执行NPU的ID

version: '3.8'
services:
  DeepSeek-R1-Distill-Qwen-32B:
    container_name: DeepSeek-R1-Distill-Qwen-32B-202501126
    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:/DeepSeek-R1-Distill-Qwen-32B
    privileged: true
    environment:
      - ASCEND_RT_VISIBLE_DEVICES=0,1,2,3
    ports:
      - "18489:18489"
    restart: unless-stopped
    # 替换为vllm serve启动命令
    command: >
      vllm serve /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

配置解析表格

配置项 值/参数 说明
version ‘3.8’ 使用的Docker Compose文件版本
services DeepSeek-R1-Distill-Qwen-32B 定义的服务名称
container_name DeepSeek-R1-Distill-Qwen-32B-202501126 容器实例名称
image f3e585186118 使用的Docker镜像ID
network_mode host 容器直接使用宿主机网络
shm_size 500g 共享内存大小设置为500GB
devices /dev/davinci[0-3]
/dev/davinci_manager
/dev/devmm_svm
/dev/hisi_hdc
挂载华为Ascend NPU设备文件
volumes /usr/local/dcmi
/usr/local/bin/npu-smi
/usr/local/Ascend/driver/lib64/
/usr/local/Ascend/driver/version.info
/etc/ascend_install.info
/root/.cache
/data/DeepSeek-R1-Distill-Qwen-32B
挂载宿主机目录到容器,包含驱动、工具和模型数据
privileged true 容器以特权模式运行
environment ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 指定可见的Ascend NPU设备编号
ports “18489:18489” 容器端口18489映射到宿主机18489
restart unless-stopped 容器自动重启策略
command vllm serve指令 启动vLLM服务的命令,参数包括:
- 模型路径
- 端口
- 数据类型自动推断
- KV缓存类型自动推断
- 最大模型长度65536
- 张量并行度4
- GPU内存利用率90%

关键配置说明

NPU设备挂载
通过devicesvolumes挂载华为Ascend NPU的驱动文件和工具,支持多卡(0-3)访问。

vLLM服务参数
--tensor-parallel-size=4表示使用4张NPU卡并行计算,--max-model-len=65536支持长上下文处理。

数据持久化
/data/DeepSeek-R1-Distill-Qwen-32B挂载模型数据目录,/root/.cache挂载缓存目录。

## docker-compose运行
## 进入docker-compose.yaml配置文件所在的目录执行以下命令
docker-compose up -d
## 观察启动日志
docker logs -f 容器id

六、验证

通过第五章节的启动,大概要几分钟,请耐心等待,可以通过观察日志来初步判断大模型是否运行正常,正常启动之后日志无报错,最后的日志会显示英文类似启动成功的提示。启动完毕可使用下面的curl请求测试。

## 使用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": "你好,介绍一下你自己?"}]}'
## 正常返回响应数据,说明运行成功。
Logo

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

更多推荐