单独结合Ascend Docker Runtime(容器引擎插件)使用,将vNPU挂载到容器。
Ascend Docker Runtime使用vNPU方法
选择以下两种方式之一进行使用:
- 静态虚拟化:用户已通过npu-smi工具创建vNPU,在拉起容器时执行以下命令将vNPU挂载至容器中。以下命令表示用户在拉起容器时,挂载虚拟芯片ID为100的芯片。
docker run -it -e ASCEND_VISIBLE_DEVICES=100 -e ASCEND_RUNTIME_OPTIONS=VIRTUAL image-name:tag /bin/bash
- 动态虚拟化:用户在拉起容器时,执行以下命令虚拟化资源,以下命令表示从物理芯片ID为0的芯片上,切分出4个AI Core作为vNPU并挂载至容器。以此方式拉起的容器,在结束容器进程时,虚拟设备会自动销毁。
docker run -it --rm -e ASCEND_VISIBLE_DEVICES=0 -e ASCEND_VNPU_SPECS=vir04 image-name:tag /bin/bash
- 使用动态虚拟化时,需要关闭vNPU的恢复使能功能,该功能的详细说明和操作指导请参考《Atlas 中心推理卡 25.0.RC1 npu-smi 命令参考》中的“算力切分相关命令>设置vNPU的配置恢复使能状态”章节。
- 可用的芯片ID可通过如下方式查询确认:
- 物理芯片ID:
ls /dev/davinci*
- 虚拟芯片ID:
ls /dev/vdavinci*
- image-name:tag:镜像名称与标签,请根据实际情况修改。如“ascend-tensorflow:tensorflow_TAG”。
- 用户在使用过程中,请勿重复定义和在容器镜像中固定ASCEND_VISIBLE_DEVICES、ASCEND_RUNTIME_OPTIONS和ASCEND_VNPU_SPECS环境变量。
表1 参数解释参数
|
说明
|
举例
|
ASCEND_VISIBLE_DEVICES
|
必需使用ASCEND_VISIBLE_DEVICES环境变量指定被挂载至容器中的NPU设备,否则挂载NPU设备失败;使用NPU设备序号指定设备,支持单个和范围指定且支持混用;使用NPU名称指定设备,支持同时指定多个同类型的NPU名称。
|
- 静态虚拟化:
- ASCEND_VISIBLE_DEVICES=100表示将100号vNPU挂载入容器中。
- ASCEND_VISIBLE_DEVICES=101,103表示将101、103号vNPU挂载入容器中。
- ASCEND_VISIBLE_DEVICES=100-102表示将100号至102号vNPU(包含100号和102号)挂载入容器中,效果同ASCEND_VISIBLE_DEVICES=100,101,102。
- ASCEND_VISIBLE_DEVICES=100-102,104表示将100号至102号以及104号vNPU挂载入容器,效果同ASCEND_VISIBLE_DEVICES=100,101,102,104。
- ASCEND_VISIBLE_DEVICES=AscendXXX-Y,其中XXX表示NPU的型号,支持的取值为910,310和310P;Y表示vNPU的ID。
- ASCEND_VISIBLE_DEVICES=Ascend910-101,表示把101号vNPU挂载进容器。
- ASCEND_VISIBLE_DEVICES=Ascend910-101,Ascend910-103,表示把101号vNPU和103号vNPU挂载进容器。
说明: - NPU类型需要和实际环境的芯片类型保持一致,否则将会挂载失败。
- 不支持在一个参数里既指定vNPU设备序号又指定vNPU名称,即不支持ASCEND_VISIBLE_DEVICES=100,Ascend910-101。
- 必须搭配ASCEND_RUNTIME_OPTIONS,取值必须包含VIRTUAL,表示挂载的是vNPU。
- 动态虚拟化:
ASCEND_VISIBLE_DEVICES=0表示从0号NPU设备中划分出一定数量的AI Core。 说明: - 一条动态虚拟化的命令只能指定一个物理NPU的ID进行动态虚拟化。
- 必须搭配ASCEND_VNPU_SPECS,表示在指定的NPU上划分出的AI Core数量。
- 可以搭配ASCEND_RUNTIME_OPTIONS,但是只能取值为NODRV,表示不挂载驱动相关目录。
|
ASCEND_RUNTIME_OPTIONS
|
对参数ASCEND_VISIBLE_DEVICES中指定的芯片ID作出限制:
- NODRV:表示不挂载驱动相关目录。
- VIRTUAL:表示挂载的是虚拟芯片。
- NODRV,VIRTUAL:表示挂载的是虚拟芯片,并且不挂载驱动相关目录。
|
- ASCEND_RUNTIME_OPTIONS=NODRV
- ASCEND_RUNTIME_OPTIONS=VIRTUAL
- ASCEND_RUNTIME_OPTIONS=NODRV,VIRTUAL
|
ASCEND_VNPU_SPECS
|
从物理NPU设备中划分出一定数量的AI Core,指定为虚拟设备。支持的取值为(vir01,vir02,vir02_1c,vir04,vir04_3c,vir08,vir16、vir04_4c_dvpp、vir04_3c_ndvpp)。
- Atlas 训练系列产品(30或32个AI Core)处理器支持vir02、vir04、vir08和vir16。
- Atlas 推理系列产品处理器支持vir01、vir02、vir02_1c、vir04、vir04_3c、vir04_4c_dvpp、vir04_3c_ndvpp。
需配合参数“ASCEND_VISIBLE_DEVICES”一起使用,参数“ASCEND_VISIBLE_DEVICES”指定用于虚拟化的物理NPU设备。
|
ASCEND_VNPU_SPECS=vir04表示划分4个AI Core作为vNPU,挂载至容器。
|