在Docker客户端使用
- 示例1:启动容器时,挂载物理芯片ID为0的芯片。
docker run -it -e ASCEND_VISIBLE_DEVICES=0 image-name:tag /bin/bash
- 示例2:启动容器时,仅挂载NPU设备和管理设备,不挂载驱动相关目录。
docker run --rm -it -e ASCEND_VISIBLE_DEVICES=0 -e ASCEND_RUNTIME_OPTIONS=NODRV image-name:tag /bin/bash
- 示例3:启动容器时,挂载物理芯片ID为0的芯片,读取自定义配置文件hostlog中的挂载内容。
docker run --rm -it -e ASCEND_VISIBLE_DEVICES=0 -e ASCEND_RUNTIME_MOUNTS=hostlog image-name:tag /bin/bash
- 示例4:启动容器时,挂载虚拟芯片ID为100的芯片。
docker run -it -e ASCEND_VISIBLE_DEVICES=100 -e ASCEND_RUNTIME_OPTIONS=VIRTUAL image-name:tag /bin/bash
- 示例5:启动容器时,从物理芯片ID为0的芯片上,切分出4个AI Core作为虚拟设备并挂载至容器中。
docker run -it --rm -e ASCEND_VISIBLE_DEVICES=0 -e ASCEND_VNPU_SPECS=vir04 image-name:tag /bin/bash
容器启动后,可使用ls /dev | grep davinci* && ls /dev | grep devmm_svm && ls /dev | grep hisi_hdc && ls /usr/local/Ascend/driver && ls /usr/local/ |grep dcmi && ls /usr/local/bin命令来检查相应设备和驱动是否挂载成功,每台机型具体的挂载目录参考Ascend Docker Runtime默认挂载内容。
对于使用容器运行训练、推理或其他任务时,存在以下两种情况:
使用Ascend Docker Runtime:
以Atlas 200I Soc A1 核心板运行推理容器为例,用户请根据实际情况修改。示例如下,相关参数如表 Ascend Docker Runtime运行参数解释表 其他参数解释所示:
docker run -it -e ASCEND_VISIBLE_DEVICES=0 --device=/dev/xsmem_dev --device=/dev/event_sched --device=/dev/svm0 --device=/dev/sys --device=/dev/vdec --device=/dev/vpc --device=/dev/log_drv --device=/dev/spi_smbus --device=/dev/upgrade --device=/dev/user_config --device=/dev/ts_aisle --device=/dev/memory_bandwidth -v /var/dmp_daemon:/var/dmp_daemon:ro -v /var/slogd:/var/slogd:ro -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf:ro -v /usr/local/Ascend/driver/tools:/usr/local/Ascend/driver/tools -v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 -v /usr/lib64/aicpu_kernels:/usr/lib64/aicpu_kernels:ro -v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so:ro -v /sys/fs/cgroup/memory:/sys/fs/cgroup/memory:ro -v /etc/ascend_install.info:/etc/ascend_install.info -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info workload-image:v1.0 /bin/bash
不使用Ascend Docker Runtime:
以Atlas 200I Soc A1 核心板运行推理容器为例,用户请根据实际情况修改。示例如下,相关参数如表 Ascend Docker Runtime运行参数解释表 其他参数解释所示:
docker run -it --device=/dev/davinci0 --device=/dev/xsmem_dev --device=/dev/event_sched --device=/dev/svm0 --device=/dev/sys --device=/dev/vdec --device=/dev/venc --device=/dev/vpc --device=/dev/davinci_manager --device=/dev/spi_smbus --device=/dev/upgrade --device=/dev/user_config --device=/dev/ts_aisle --device=/dev/memory_bandwidth -v /etc/sys_version.conf:/etc/sys_version.conf:ro -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi:ro -v /var/dmp_daemon:/var/dmp_daemon:ro -v /var/slogd:/var/slogd:ro -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf:ro -v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg:ro -v /usr/local/Ascend/driver/tools:/usr/local/Ascend/driver/tools -v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 -v /usr/lib64/aicpu_kernels:/usr/lib64/aicpu_kernels:ro -v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so:ro -v /sys/fs/cgroup/memory:/sys/fs/cgroup/memory:ro -v /etc/ascend_install.info:/etc/ascend_install.info -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info workload-image:v1.0 /bin/bash
参数 |
说明 |
举例 |
---|---|---|
ASCEND_VISIBLE_DEVICES |
使用ASCEND_VISIBLE_DEVICES环境变量指定被挂载至容器中的NPU设备,使用设备序号指定设备,支持单个和范围指定且支持混用。 |
|
ASCEND_RUNTIME_OPTIONS |
对参数ASCEND_VISIBLE_DEVICES中指定的芯片ID作出限制:
说明:
虚拟设备的相关约束及创建方法具体请参见《Ascend 910 NPU驱动和固件安装指南(AI服务器)》(其他产品型号请参考对应的驱动和固件安装手册)的“算力分组场景下的安装”章节。 |
|
ASCEND_RUNTIME_MOUNTS |
读取配置文件中的挂载内容。 |
ASCEND_RUNTIME_MOUNTS=hostlog
说明:
hostlog请根据实际自定义配置文件名修改。 |
ASCEND_VNPU_SPECS |
从物理NPU设备中切分出一定数量的AI Core,指定为虚拟设备。支持的取值为(vir01,vir02,vir02_1c,vir04,vir04_3c,vir08,vir16、vir04_4c_dvpp、vir04_3c_ndvpp)。
需配合参数“ASCEND_VISIBLE_DEVICES”一起使用,参数“ASCEND_VISIBLE_DEVICES”指定用于切分的物理NPU设备。 |
ASCEND_VNPU_SPECS=vir04表示切分4个AI Core作为虚拟设备,挂载至容器中。 说明:
|
参数 |
参数说明 |
---|---|
/dev/xsmem_dev |
将内存设备管理挂载到容器。 |
/dev/event_sched |
将事件调度的设备挂载到容器。 |
/dev/ts_aisle |
将aicpudrv驱动对应的设备挂载到容器。 |
/dev/svm0 |
将内存管理的设备挂载到容器。 |
/dev/sys |
将dvpp相关的设备挂载到容器。 |
/dev/vdec |
将dvpp相关的设备挂载到容器。 |
/dev/vpc |
将dvpp相关的设备挂载到容器。 |
/dev/log_drv |
将日志记录相关的设备挂载到容器。 |
/dev/upgrade |
将获取昇腾系统相关配置、固件设备挂载到容器。 |
/dev/spi_smbus |
将设备带外spi通信相关的设备挂载到容器。 |
/dev/user_config |
将管理用户配置相关的设备挂载到容器。 |
/dev/memory_bandwidth |
将内存带宽相关的设备挂载到容器。 |
-v /var/slogd:/var/slogd |
将dmp日志目录挂载到容器。 |
-v /var/dmp_daemon:/var/dmp_daemon |
将dmp守护进程挂载到容器。 |
-v /var/log/npu/conf/slog:/var/log/npu/conf/slog |
将npu日志模块挂载到容器。 |
-v /usr/local/Ascend/driver/tools:/usr/local/Ascend/driver/tools |
将驱动相关工具目录“/usr/local/Ascend/driver/tools”挂载到容器中。 |
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 |
将驱动依赖动态库目录“/usr/local/Ascend/driver/lib64”挂载到容器中。 |
-v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so |
将tensorflow的aicpu算子库文件“/usr/lib64/libtensorflow.so”挂载到容器中。 |
-v /usr/lib64/aicpu_kernels:/usr/lib64/aicpu_kernels |
将aicpu lib库目录“/usr/lib64/aicpu_kernels”挂载到容器。 |
-v /sys/fs/cgroup/memory:/sys/fs/cgroup/memory:ro |
将宿主机查询内存占用率所需依赖目录“/sys/fs/cgroup/memory”以只读方式挂载到容器中。 |
-v /etc/ascend_install.info:/etc/ascend_install.info |
将宿主机安装信息文件“/etc/ascend_install.info”挂载到容器中。 |
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info |
将宿主机版本信息文件“/usr/local/Ascend/driver/version.info”挂载到容器中,请根据实际情况修改。 |
workload-image:v1.0 /bin/bash |
生成的镜像文件。 |

- 可用的芯片ID可通过如下方式查询确认:
- 物理芯片ID:
ls /dev/davinci*
- 虚拟芯片ID:
ls /dev/vdavinci*
- 物理芯片ID:
- image-name:tag:镜像名称与标签,请根据实际情况修改。如“ascend-tensorflow:tensorflow_TAG”。
- 若用户不需要挂载基础配置文件base中的所有内容时,可指定自定义配置文件hostlog减少挂载的内容,hostlog请根据实际创建的配置文件名修改。
hostlog文件挂载内容须基于“base.list”文件,base.list内容如Ascend Docker Runtime默认挂载内容所示。
创建配置文件请参见创建配置文件,以配置文件“hostlog.list”为例(文件后缀必须为.list)。
- 用户在使用过程中,请勿重复定义和在容器镜像中固定ASCEND_VISIBLE_DEVICES、ASCEND_RUNTIME_OPTIONS、ASCEND_RUNTIME_MOUNTS和ASCEND_VNPU_SPECS等环境变量。