昇腾910B虚拟卡(vNPU)创建以及Docker挂载
本文介绍了昇腾NPU设备的容器化使用方法,主要包括两种挂载方式:物理挂载模式(需手动指定设备)和Runtime模式(自动挂载)。详细说明了虚拟NPU的创建流程,包括查询模板、创建vNPU、查看信息和删除操作。提供了Docker环境配置指南,包括二进制安装、Runtime配置和启动验证。最后给出了虚拟卡申请、挂载示例和常用管理命令。全文涵盖了从硬件虚拟化到容器集成的完整操作流程,适用于昇腾AI处理器
容器挂载方式
物理挂载模式
物理挂载模式: 普通 Docker 模式(必须配合 --device), 如果你不依赖高级 Runtime,完全手动挂载。
-
操作方式: 你先用
--device=/dev/davinci_vicap5, 或者–device=/dev/davinci0, 把特定的虚拟卡或者实体卡挂载进去。 -
挂载后, 容器内卡号
ID变为0,1,2....
Runtime模式
Runtime模式: Ascend Docker Runtime 模式, 需要安装了昇腾专门的容器运行时。
- 操作方式: 不写 --device,只指定ASCEND_VISIBLE_DEVICES的ID。
- 运行流程: 此时 Docker 就会去宿主机上寻找对应ID的虚拟卡或者物理卡,并自动帮你挂载。
- 变量作用: 它扮演了物理卡申请 ID 的角色。
虚拟卡创建
1. 辅助查询命令 (Optional)
在操作之前,你可能需要知道有哪些模板可用:
查看支持的模板规格:
npu-smi info -i 1 -c 0 -t template-info
用途:查看模板分别占用多少 AI Core 和显存,避免创建时资源冲突。
参数标注:
-i 1: 板卡 ID (Card ID)。物理机的第几张卡(通常从 0 开始)。-c 0: 芯片 ID (Chip ID)。卡上的第几个芯片(910B 通常单卡单芯,填 0)。
2. 创建虚拟 NPU (Create)
用于将物理芯片切分为指定规格的虚拟芯片。
命令示例:
npu-smi set -t create-vnpu -i 1 -c 0 -f [复制过来的模板名]
参数标注:
-i 1: 板卡 ID (Card ID)。物理机的第几张卡(通常从 0 开始)。-c 0: 芯片 ID (Chip ID)。卡上的第几个芯片(910B 通常单卡单芯,填 0)。-f vir05_1c_16g: 模板名称 (Template Name)。vir05_1c_16g表示切分规格: 1 个 AI Core,16g显存(05是算力份额)。
3. 查看虚拟 NPU 信息 (Check)
用于确认已创建的 vNPU 状态及其分配的设备 ID。
命令示例:
npu-smi info -i 1 -c 0 -t info-vnpu
参数标注:
-t info-vnpu: 查询类型。专门用于列出当前芯片下所有已存在的虚拟设备信息。
核心输出字段说明:
- vDevID: 虚拟设备 ID。这是最重要的参数(例如 125),对应宿主机的设备节点
/dev/davinci125。 - TemplateName: 该 vNPU 使用的规格模板。
4. 删除虚拟 NPU (Destroy)
用于释放已经创建的虚拟资源,将其归还给物理芯片。
命令示例:
npu-smi set -t destroy-vnpu -i 1 -c 0 -v [vDevID]
参数标注:
-t destroy-vnpu: 操作类型。销毁/删除指定的虚拟 NPU。-i 1: 板卡 ID。该 vNPU 所属的物理卡号。-c 0: 芯片 ID。该 vNPU 所属的芯片号。-v 125: 虚拟设备 ID (vDevID)。必须填入通过info-vnpu命令查到的具体 ID 号。
Docker应用示例
1. 二进制安装docker
tar -zxvf docker-24.0.6.tgz
cp docker/* /usr/bin/
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
2. 安装Ascend-docker-runtime
下载地址: https://www.hiascend.com/document/detail/zh/mindcluster/730/clustersched/dlug/dlug_installation_009.html
./Ascend-docker-runtime_7.3.1_linux-aarch64.run
3. 配置docker
# 创建docker配置目录和数据目录
mkdir -p /etc/docker/
mkdir -p /data/docker/
# 添加如下配置
export harbor_url=3.1.38.138:8005
cat > /etc/docker/daemon.json <<EOF
{
"max-concurrent-downloads": 30,
"data-root": "/data/docker",
"log-opts": {"max-size":"10m", "max-file":"3"},
"insecure-registries":["${harbor_url}"],
"runtimes": {
"ascend": {
"path": "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime",
"runtimeArgs": []
}
},
"default-runtime": "ascend"
}
EOF
4. 启动验证
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker info
虚拟卡申请
# 查看是否有创建过的虚拟卡
npu-smi info -i 1 -c 0 -t info-vnpu
# 查看模板(会有两个模板: vir05_1c_16g和vir10_3c_32g)
npu-smi info -i 1 -c 0 -t template-info
# 根据实际情况选择模板创建虚拟卡
npu-smi set -t create-vnpu -i 1 -c 0 -f vir05_1c_16g
# 确认vNPU是否创建完成
npu-smi info -i 1 -c 0 -t info-vnpu
删除虚拟卡
# 查看vNPU划分 npu-smi info -i 1 -c 0 -t info-vnpu # 删除对应卡位对应vNPU_ID的虚拟卡 npu-smi set -t destroy-vnpu -i 1 -c 0 -v 116
虚拟卡挂载
# docker挂载示例
docker run -it \
--runtime=ascend \ # 关键步骤:指定使用 ascend 运行时
-e ASCEND_VISIBLE_DEVICES=100 \ # 指定 vNPU ID
-e ASCEND_RUNTIME_OPTIONS=VIRTUAL \ # 声明挂载的是虚拟芯片
your_image_name
常用命令
# 安装信息
npu-smi info
# 查看模块加载情况
lsmod | grep davinci
# 查看固件版本号
npu-smi info -t board -i 0
# 查看显卡被使用情况
cat /proc/uda/namespace_node
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)