如何创建容器化的昇腾工作环境?
摘要:本文介绍了在宿主机(配备8张Atlas910B2 NPU卡)上部署vLLM容器的完整流程。关键步骤包括:1)拉取24.9GB的专用镜像;2)以特权模式(--privileged必须)创建容器,挂载NPU设备及驱动目录;3)配置16G共享内存和多卡通信支持。特别指出昇腾NPU在非特权容器中会出现错误代码87,必须通过特权模式解决。最后提供了容器内验证NPU状态的常用命令。该方案适用于需要高性能
·
宿主机环境信息
| 项目 | 详情 |
|---|---|
| 宿主机 NPU | 8 × Atlas 910B2 |
| 驱动版本 | 25.0.rc1.2 |
| Docker 镜像 | quay.io/ascend/vllm-ascend:main |
| 容器名称 | vllm-ascend |
操作过程
0.下载镜像资源
镜像资源[RED HAT]:quay.io/ascend/vllm-ascend:main
# 拉取指定路径的镜像
docker pull quay.io/ascend/vllm-ascend:main
1. 环境检查
- 确认本地已有镜像
quay.io/ascend/vllm-ascend:main(约 24.9GB) - 通过
ls /dev/davinci*确认宿主机存在 8 张 NPU 设备(davinci0 ~ davinci7) - 通过
npu-smi info确认 8 张 910B2 卡均在线,驱动版本 25.0.rc1.2
2. 创建容器(特权模式)
注意,一定要添加 --privileged 参数。只有在特权模式下,才能在容器内使用宿主机NPU。
可以利用-v挂载宿主机的工作目录或者软件目录到容器内,确保容器内可以使用宿主机的资源。
docker run -d \\\\
--name vllm-ascend \\\\
--restart unless-stopped \\\\
--privileged \\\\
--network host \\\\
--shm-size 16g \\\\
--device /dev/davinci0 \\\\
--device /dev/davinci1 \\\\
--device /dev/davinci2 \\\\
--device /dev/davinci3 \\\\
--device /dev/davinci4 \\\\
--device /dev/davinci5 \\\\
--device /dev/davinci6 \\\\
--device /dev/davinci7 \\\\
--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:/usr/local/Ascend/driver \\\\
-v /etc/ascend_install.info:/etc/ascend_install.info:ro \\\\
quay.io/ascend/vllm-ascend:main \\\\
bash -c "while true; do sleep 3600; done"
关键参数说明
| 参数 | 作用 |
|---|---|
--privileged |
赋予容器完整内核权限,昇腾驱动需要此权限访问 NPU 设备 |
--restart unless-stopped |
宿主机重启后容器自动拉起 |
--network host |
使用宿主机网络,方便暴露服务端口 |
--shm-size 16g |
vLLM/PyTorch 多卡通信需要较大共享内存 |
--device /dev/davinci* |
透传 NPU 设备到容器 |
-v /usr/local/Ascend/driver |
挂载宿主机驱动目录 |
-v /usr/local/dcmi + npu-smi |
容器内可使用 npu-smi 监控 NPU 状态 |
踩坑记录
昇腾 NPU 在非特权容器中会出现 drvRetCode=87(driver error: internal error),原因是昇腾驱动需要额外的内核权限(如访问特定的 /sys 和 /proc 路径)。解决方案是添加 --privileged 参数。
日常使用
# 进入容器
docker exec -it vllm-ascend bash
# 查看 NPU 状态
npu-smi info
# 验证 PyTorch NPU
python3 -c "import torch; import torch_npu; print(torch.npu.is_available())"
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)