下载
中文
注册

部署容器镜像

当宿主机环境为CentOS系统时,由于CentOS的安全模块selinux默认开启,会导致挂载到容器的本地目录没有执行权限,因此需要临时关闭selinux,命令为:su -c "setenforce 0"。完成相关业务后再重新开启selinux,命令为: su -c "setenforce 1"

  1. 请执行如下命令基于新镜像运行一个容器。
    docker run -itd -e ASCEND_VISIBLE_DEVICES=xxx --pids-limit 409600 image-name:tag /bin/bash

    命令示例:

    docker run -itd -e ASCEND_VISIBLE_DEVICES=0 ascend-cann:8.0.RC2-ubuntu /bin/bash
    表1 参数解释

    参数

    参数说明

    ASCEND_VISIBLE_DEVICES=xxx

    使用ASCEND_VISIBLE_DEVICES指定被挂载至容器中的NPU设备(用户可执行ls /dev/ | grep davinci*命令查询宿主机的NPU设备),使用设备序号指定设备,支持单个和范围指定且支持混用。例如:

    • ASCEND_VISIBLE_DEVICES=0 表示将0号设备(/dev/davinci0)挂载入容器中。
    • ASCEND_VISIBLE_DEVICES=1,3 表示将1、3号设备挂载入容器中。
    • ASCEND_VISIBLE_DEVICES=0-2 表示将0号至2号设备(包含0号和2号)挂载入容器中,效果同

      ASCEND_VISIBLE_DEVICES=0,1,2。

    • ASCEND_VISIBLE_DEVICES=0-2,4 表示将0号至2号以及4号设备挂载入容器,效果同

      ASCEND_VISIBLE_DEVICES=0,1,2,4。

    --pids-limit 409600

    当host宿主机系统为CentOS和BC-linux时,docker内的线程数最大为4092,无法满足训练要求,启动容器时需要添加该参数以配置CentOS/BC-linux下docker的最大线程。

    image-name:tag

    镜像名称与标签,填写已构建的CANN容器镜像(如“ascend-cann:cann-openeuler”)。

    执行该命令后,如果显示容器ID(本例为“1dc80f32c263”),则表示已经启动该容器。

    执行如下命令进入容器。

    docker exec -it 容器ID /bin/bash

    示例命令:

    docker exec -it 1dc80f32c263 /bin/bash

    回显以下信息,表示成功进入该容器。

    uername@1dc80f32c263:~$

    如果用户在宿主机创建了模型文件目录(用于容器中调用模型进行训练),可以在启动容器时挂载模型目录(如“/data/model ”),命令示例如下所示:

    docker run -itd -e ASCEND_VISIBLE_DEVICES=0 -v /data/model:/data/model ascend-tensorflow:8.0.RC2-ubuntu18.04-arm64  /bin/bash
  2. 容器启动后,执行以下命令查看当前docker容器中可以使用的davinci设备:
    ls /dev/ | grep davinci*

    命令执行情况如下图。

    其中:

    • davinci_manager为管理模块的字符设备节点。
    • davinci0为该容器使用的davinci设备。
  3. 配置环境变量,请用户根据set_env.sh的实际安装路径进行替换。
    source CANN软件包实际安装路径/set_env.sh