Ascend Docker 用于创建面向华为昇腾(Ascend)NPU 开发的 Docker 容器,帮助开发者在容器中正确映射 NPU 设备与挂载相关目录。
用途 该技能面向昇腾 NPU 开发环境的搭建,通过脚本生成配置好设备映射和卷挂载的容器,便于在容器内进行昇腾相关的开发、推理与调试工作。
主要能力
- 自动检测设备:脚本会从 /dev/davinci* 自动检测可用的 NPU 设备。
- 设备选择:可通过 --device-list 指定设备,支持单个设备、范围(如 "0-3")以及范围与单个设备组合(如 "0-3,7,10-11")。
- 三种容器模式:特权模式(默认)、基础模式、完整模式,分别对应不同的权限、设备访问与日志/性能分析支持。
- 设备与卷映射:映射 NPU 设备管理器、设备内存管理、HDC 通信设备及单个 NPU 设备,并挂载昇腾驱动库、NPU 管理工具、附加组件、日志、profiling、dump、时区与用户工作目录等。
使用方式 快速开始命令:
特权模式(默认,自动检测所有设备)
./scripts/run-ascend-container.sh <image> <container_name>
基础模式并指定设备
./scripts/run-ascend-container.sh <image> <container_name> --mode basic
完整模式并选择设备
./scripts/run-ascend-container.sh <image> <container_name> --mode full --device-list "0,1,2,3"
设备选择示例:
使用所有检测到的设备(默认)
./scripts/run-ascend-container.sh <image> <container_name>
使用指定设备
./scripts/run-ascend-container.sh <image> <container_name> --device-list "0,1,2,3"
使用设备范围
./scripts/run-ascend-container.sh <image> <container_name> --device-list "0-3"
组合范围与单个设备
./scripts/run-ascend-container.sh <image> <container_name> --device-list "0-3,7,10-11"
查看可用设备: ls /dev/davinci* | grep -oE 'davinci[0-9]+$'
容器模式
-
特权模式(默认):权限最大,适合无特定要求的场景。 docker run -itd --privileged --name=<CONTAINER_NAME> --ipc=host --net=host
--device=/dev/davinci_manager
--device=/dev/devmm_svm
--device=/dev/hisi_hdc
-v /usr/local/sbin:/usr/local/sbin:ro
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
-v /home:/home
-w /home
<IMAGE>
/bin/bash -
基础模式:指定设备映射并使用 host 网络,适用于推理负载。 docker run -itd --net=host
--name=<CONTAINER_NAME>
--device=/dev/davinci_manager
--device=/dev/hisi_hdc
--device=/dev/devmm_svm
--device=/dev/davinci0
--device=/dev/davinci1
...
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
-v /usr/local/sbin:/usr/local/sbin:ro
-v /etc/localtime:/etc/localtime
-v /home:/home
<IMAGE>
/bin/bash -
完整模式:支持 profiling、日志、dump 与 add-ons。 docker run -itd --ipc=host
--name=<CONTAINER_NAME>
--device=/dev/davinci_manager
--device=/dev/devmm_svm
--device=/dev/hisi_hdc
--device=/dev/davinci0
--device=/dev/davinci1
...
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi
-v /usr/local/sbin/:/usr/local/sbin/
-v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf
-v /var/log/npu/slog/:/var/log/npu/slog
-v /var/log/npu/profiling/:/var/log/npu/profiling
-v /var/log/npu/dump/:/var/log/npu/dump
-v /var/log/npu/:/usr/slog
-v /etc/localtime:/etc/localtime
-v /home:/home
<IMAGE>
/bin/bash
模式对比
- 网络模式:特权 host,基础 host,完整 未提供。
- IPC 模式:特权 host,基础 未提供,完整 host。
- 设备访问:特权 全部(通过 privileged),基础 选定设备,完整 选定设备。
- Profiling 支持:特权 支持,基础 不支持,完整 支持。
- Dump 支持:特权 支持,基础 不支持,完整 支持。
- 日志(slog):特权 支持,基础 不支持,完整 支持。
- 安全性:特权 最低,基础 较高,完整 较高。
设备参数
- /dev/davinci_manager:NPU 设备管理器。
- /dev/devmm_svm:设备内存管理。
- /dev/hisi_hdc:HDC 通信设备。
- /dev/davinci<N>:单个 NPU 设备(0、1、2……)。
卷参数
- /usr/local/Ascend/driver:昇腾驱动库。
- /usr/local/sbin:NPU 管理工具(npu-smi)。
- /usr/local/Ascend/add-ons:昇腾附加组件。
- /var/log/npu/slog:系统日志。
- /var/log/npu/profiling:Profiling 数据。
- /var/log/npu/dump:Dump 数据。
- /etc/localtime:时区同步。
- /home:用户工作目录。
常用镜像 ascendhub.huawei.com/public-ascendhub/ascend-pytorch:24.0.RC1 ascendhub.huawei.com/public-ascendhub/ascend-mindspore:24.0.RC1 ascendhub.huawei.com/public-ascendhub/ascend-toolkit:24.0.RC1
容器管理 docker exec -it <container_name> bash docker stop <container_name> docker start <container_name> docker rm -f <container_name>
安装后配置 对于自建镜像,需配置环境变量: echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> ~/.bashrc source ~/.bashrc
适用场景
- 搭建昇腾 NPU 开发环境。
- 在容器中运行推理负载(基础模式)。
- 需要 profiling、dump、slog 日志或 add-ons 支持的场景(完整模式)。
- 需要最大权限、无特定要求的场景(特权模式)。
限制
- 特权模式安全性最低。
- 基础模式不支持 profiling、dump 与 slog 日志。
- 完整模式的网络模式在资料中未提供。
- 具体镜像版本、收费与价格等信息暂未提供。