国产化信创-华为昇腾910B-vllm-ascend像镜部署DeepSeek-R1-Distill-Qwen-32B大模型
国产化信创昇腾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设备挂载
通过devices和volumes挂载华为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": "你好,介绍一下你自己?"}]}'
## 正常返回响应数据,说明运行成功。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)