昇腾910B虚拟卡(vNPU)创建以及Docker挂载

容器挂载方式

物理挂载模式

物理挂载模式: 普通 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)

在操作之前,你可能需要知道有哪些模板可用:

查看支持的模板规格:

bash 复制代码
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)

用于将物理芯片切分为指定规格的虚拟芯片。

命令示例:

bash 复制代码
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)

用于释放已经创建的虚拟资源,将其归还给物理芯片。

命令示例:

bash 复制代码
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

bash 复制代码
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

bash 复制代码
# 创建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. 启动验证

bash 复制代码
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker info

虚拟卡申请

bash 复制代码
# 查看是否有创建过的虚拟卡
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

删除虚拟卡

bash 复制代码
# 查看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

虚拟卡挂载

bash 复制代码
# docker挂载示例
docker run -it \
  --runtime=ascend \   # 关键步骤:指定使用 ascend 运行时
  -e ASCEND_VISIBLE_DEVICES=100 \  # 指定 vNPU ID
  -e ASCEND_RUNTIME_OPTIONS=VIRTUAL \  # 声明挂载的是虚拟芯片
  your_image_name

常用命令

bash 复制代码
# 安装信息
npu-smi info

# 查看模块加载情况
lsmod | grep davinci

# 查看固件版本号
npu-smi info -t board -i 0

# 查看显卡被使用情况
cat /proc/uda/namespace_node
相关推荐
大大杰哥2 小时前
Docker笔记
java·docker
wuyikeer3 小时前
如何在docker中的mysql容器内执行命令与执行SQL文件
sql·mysql·docker
tian_jiangnan3 小时前
把 Docker 镜像推送到 阿里云容器镜像服务 ACR
阿里云·docker·容器
heimeiyingwang5 小时前
【架构实战】Docker容器网络模型详解
网络·docker·架构
Eric.Lee202116 小时前
docker 启动停止命令
运维·docker·容器
苏渡苇18 小时前
5 分钟跑起 Redis(Docker 版)
数据库·redis·缓存·docker·redis入门
昇腾CANN18 小时前
码力全开特辑直播预告|4月20日19:00,PyPTO Tensor编程范式介绍
人工智能·昇腾·cann
深念Y19 小时前
赛米尼M02/海纳斯HiNAS系统-WiFi驱动安装教程
运维·服务器·网络·docker·nas·机顶盒·hinas
小义_21 小时前
【Kubernetes】(五) pod2
linux·云原生·容器·kubernetes