昇腾虚拟化实例(AVI)vNPU 管理
本技能用于管理华为昇腾 NPU 的虚拟化实例(AVI)和 vNPU。
注意: 在执行任何修改操作(设置、创建、销毁)之前,系统会检查设备状态并请您确认。
快速开始
查询操作
# 查询AVI模式
npu-smi info -t vnpu-mode
# 查询所有AVI模板
npu-smi info -t template-info
# 查询指定设备的模板
npu-smi info -t template-info -i <设备ID>
# 查询指定芯片的vNPU信息
npu-smi info -t info-vnpu -i <设备ID> -c <芯片ID>
# 查询vNPU配置恢复使能状态
npu-smi info -t vnpu-cfg-recover -i <设备ID> -c <芯片ID>
修改操作
# 设置AVI模式 (0=Container, 1=VM)
npu-smi set -t vnpu-mode -d <0|1>
# 创建vNPU实例
npu-smi set -t create-vnpu -i <设备ID> -c <芯片ID> -f <模板名> [-v <vnpu_id>] [-g <vgroup_id>]
# 销毁vNPU实例
npu-smi set -t destroy-vnpu -i <设备ID> -c <芯片ID> -v <vnpu_id>
# 设置vNPU配置恢复使能状态
npu-smi set -t vnpu-cfg-recover -i <设备ID> -c <芯片ID> -d <0|1>
查询操作详情
1. 查询昇腾虚拟化实例(AVI)模式
npu-smi info -t vnpu-mode
返回说明:
0: Container 模式(Docker/容器虚拟化)VM: VM 模式(虚拟机虚拟化)
2. 查询昇腾虚拟化实例(AVI)模板信息
# 查询所有模板
npu-smi info -t template-info
# 查询指定设备的模板
npu-smi info -t template-info -i <设备ID>
常用模板:
| 模板名 | AI Core数 | 内存 | 适用场景 |
|---|---|---|---|
| vir02 | 2 | 2GB | 轻量级工作负载 |
| vir04 | 4 | 4GB | 中等工作负载 |
| vir08 | 8 | 8GB | 重工作负载 |
3. 查询指定设备的昇腾虚拟化实例(AVI)模板信息
npu-smi info -t template-info -i <设备ID>
4. 查询指定芯片的vNPU
npu-smi info -t info-vnpu -i <设备ID> -c <芯片ID>
返回字段:
| 字段 | 说明 |
|---|---|
| vNPU ID | vNPU标识符 |
| vNPU Group ID | vNPU组ID |
| AI Core Num | 分配的AI Core数量 |
| Memory Size | 分配的内存大小 |
| Status | 当前状态 |
5. 查询vNPU的配置恢复使能状态
npu-smi info -t vnpu-cfg-recover -i <设备ID> -c <芯片ID>
返回:Enable (启用) 或 Disable (禁用)
修改操作详情
6. 设置昇腾虚拟化实例(AVI)模式
npu-smi set -t vnpu-mode -d <0|1>
参数说明:
0: Container 模式1: VM 模式
注意: 更改AVI模式可能需要重启设备。
7. 创建指定芯片的vNPU
npu-smi set -t create-vnpu -i <设备ID> -c <芯片ID> -f <模板名> [-v <vnpu_id>] [-g <vgroup_id>]
参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
| i | 是 | 物理NPU ID |
| c | 是 | 芯片ID |
| f | 是 | 模板名称 (如 vir02, vir04, vir08) |
| v | 否 | 自定义vNPU ID: [phy_id*16+100, phy_id*16+115] |
| g | 否 | 组ID: 0, 1, 2, 或 3 |
示例:
# 使用自动分配的vNPU ID创建
npu-smi set -t create-vnpu -i 0 -c 0 -f vir04
# 指定vNPU ID创建
npu-smi set -t create-vnpu -i 0 -c 0 -f vir04 -v 103
# 在指定组中创建
npu-smi set -t create-vnpu -i 0 -c 0 -f vir04 -v 104 -g 1
8. 销毁指定芯片的vNPU
npu-smi set -t destroy-vnpu -i <设备ID> -c <芯片ID> -v <vnpu_id>
参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
| i | 是 | 物理NPU ID |
| c | 是 | 芯片ID |
| v | 是 | 要销毁的vNPU ID |
示例:
npu-smi set -t destroy-vnpu -i 0 -c 0 -v 103
9. 设置vNPU的配置恢复使能状态
npu-smi set -t vnpu-cfg-recover -i <设备ID> -c <芯片ID> -d <0|1>
参数说明:
0: 禁用配置恢复1: 启用配置恢复
安全检查机制
在执行任何修改操作之前,系统会自动执行以下检查:
- 设备状态检查: 执行
npu-smi info -l和npu-smi info -t health查看设备健康状态 - 进程占用检查: 执行
npu-smi info -t proc-mem查看是否有程序占用NPU - 用户确认: 在执行修改操作前,会请求您确认是否继续
如果检测到有程序占用NPU,系统会:
- 显示占用程序信息
- 询问您是否要kill掉这些程序后再执行操作
⚠️ 重要:模板名称确认
当用户使用模糊表达(如"模板1"、"第一个模板"、"第二个模板")时,必须先确认具体的模板名称,不能直接猜测执行。
正确的处理流程:
- 用户说"模板1" → 显示可用模板列表,让用户确认是哪一个
- 用户说"第一个模板" → 同上
- 用户说"用模板 vir10_3c_16g" → 直接执行
可用模板列表示例:
| 序号 | 模板名 | AICORE | 内存 |
|---|---|---|---|
| 1 | vir10_3c_16g | 10 | 16GB |
| 2 | vir10_4c_16g_m | 10 | 16GB |
| 3 | vir10_3c_16g_nm | 10 | 16GB |
| 4 | vir05_1c_8g | 5 | 8GB |
参数参考
| 参数 | 说明 | 获取方式 |
|---|---|---|
设备ID |
NPU设备ID | npu-smi info -l |
芯片ID |
运行时芯片ID | npu-smi info -m (通常为0) |
vNPU ID |
vNPU实例ID | 范围: [phy_id*16+100, phy_id*16+115] |
常见问题
Q: 如何查看当前有哪些vNPU实例?
npu-smi info -t info-vnpu -i 0 -c 0
Q: 创建vNPU时模板如何选择?
根据工作负载需求选择:
| 模板名 | AICORE | 内存 | 说明 |
|---|---|---|---|
| vir10_3c_16g | 10 | 16GB | 标准模板 |
| vir10_4c_16g_m | 10 | 16GB | 媒体增强模板 |
| vir10_3c_16g_nm | 10 | 16GB | 非媒体模板 |
| vir05_1c_8g | 5 | 8GB | 轻量级模板 |
注意: 当您说"模板1"、"第一个模板"等模糊表达时,我会列出模板请您确认后再执行。
Q: vNPU ID可以自定义吗?
可以,范围是 [phy_id*16+100, phy_id*16+115]。例如设备0的vNPU ID范围是 100-115。
Q: 更改AVI模式需要重启吗?
通常需要重启设备才能生效。请提前做好业务规划。