文档
注册

构建推理容器镜像

前提条件

  • 容器场景,需用户自行安装docker(版本要求大于等于18.03)。
  • 容器OS镜像可从Docker Hub拉取。
  • 容器内非root用户运行时,需具备执行文件的相关权限。
  • 请按照表1所示,获取离线推理引擎包与业务推理程序压缩包。
    表1 所需软件

    软件包

    说明

    获取方法

    Ascend-cann-nnrt_{version}_linux-aarch64.run

    离线推理引擎包。

    {version}表示软件包版本。

    获取链接

    Dockerfile

    制作镜像需要。

    用户根据业务自行准备

    业务推理程序压缩包

    业务推理程序合集,支持tar、tgz格式。

    业务推理程序的压缩包格式,应为容器内自带的压缩程序支持的格式,且install.sh中解压业务推理程序压缩包的命令请根据实际格式适配。

    说明:

    容器内的运行用户需具备业务推理程序压缩包的相关权限。

    用户根据业务自行准备

    install.sh

    业务推理程序的安装脚本。

    run.sh

    业务推理程序的运行脚本。

操作步骤

  1. 将准备的软件包上传到Atlas 200I SoC A1核心板的同一目录(如“/home/test”)。
    • Ascend-cann-nnrt_{version}_linux-aarch64.run
    • 业务推理程序压缩包
  2. 执行以下步骤准备dockerfile文件。
    1. root用户登录Atlas 200I SoC A1核心板,执行id HwHiAiUser命令查询并记录宿主机上HwHiAiUser用户的UID和GID。
    2. 进入1中软件包上传目录,执行以下命令创建dockerfile文件(文件名示例“Dockerfile”)。

      vi Dockerfile

    3. 写入以下内容后执行:wq命令保存内容,内容以Ubuntu arrch64操作系统为例。(以下内容仅为编写示例,请用户根据实际情况结合自身理解进行二次开发)
      #操作系统及版本号,根据实际修改
      FROM ubuntu:18.04
      
      #设置离线推理引擎包参数
      ARG NNRT_PKG
      
      #设置环境变量
      ARG ASCEND_BASE=/usr/local/Ascend
      
      ENV LD_LIBRARY_PATH=\
      $LD_LIBRARY_PATH:\
      $ASCEND_BASE/driver/lib64:\
      $ASCEND_BASE/nnrt/latest/acllib/lib64:\
      /usr/lib64
      
      ENV ASCEND_AICPU_PATH=$ASCEND_BASE/nnrt/latest
      #设置进入启动后的容器的目录,本示例以root用户运行为例,如果想使用非root用户运行,可将命令改为WORKDIR /home
      WORKDIR /root
      
      #在容器内创建HwHiAiUser、HwDmUser、HwBaseUser用户及属组。
      RUN groupadd -g gid HwHiAiUser && useradd -u uid -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok && \
          groupadd -g gid HwDmUser && useradd -u uid -g HwDmUser -d /home/HwDmUser -m HwDmUser && echo ok && \
          groupadd -g gid HwBaseUser && useradd -u uid -g HwBaseUser -d /home/HwBaseUser -m HwBaseUser && echo ok
      
      #配置HwHiAiUser、HwDmUser、HwBaseUser用户的相关属组信息。
      RUN usermod -a -G HwBaseUser HwHiAiUser && \
          usermod -a -G HwDmUser HwHiAiUser  && \
          usermod -a -G HwBaseUser HwDmUser && \
          usermod -a -G HwHiAiUser HwDmUser
      
      #创建驱动进程访问目录
      RUN mkdir -m 750 /var/driver -m 750 /var/dmp -m 750 /usr/slog -p -m 750 /home/drv/hdc_ppc
      
      #配置“/var/dmp ”、“/var/driver ”、“/usr/slog”目录属组信息。
      RUN chown HwDmUser:HwDmUser /var/dmp && \
          chown HwHiAiUser:HwHiAiUser /var/driver && \ 
          chown HwHiAiUser:HwHiAiUser /usr/slog && \
          chown HwHiAiUser:HwHiAiUser /home/drv/hdc_ppc
      
      #拷贝离线推理引擎包
      COPY $NNRT_PKG .
      RUN mkdir -p /var/davinci/driver && \ 
          mkdir -p /usr/lib64/aicpu_kernels
      
      #由于ARM Ubuntu 18.04系统没有lib64目录,需将lib软链接到lib64目录
      RUN ln -s /lib /lib64
      
      #安装离线推理引擎包
      RUN umask 0022 && \
          chmod +x ${NNRT_PKG} &&\
          ./${NNRT_PKG} --quiet --install &&\
          rm ${NNRT_PKG}
      
      #拷贝业务推理程序压缩包、安装脚本与运行脚本
      ARG DIST_PKG
      COPY $DIST_PKG .
      COPY install.sh .
      COPY run.sh /usr/local/bin/
      
      #运行安装脚本
      RUN chmod +x /usr/local/bin/run.sh && \
          sh install.sh && \
          rm $DIST_PKG && \
          rm install.sh
      
      #容器启动时默认执行的程序
      CMD run.sh

      Dockerfile中

      groupadd -g gid HwHiAiUser && useradd -u uid -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok
      groupadd -g gid HwDmUser && useradd -u uid -g HwDmUser -d /home/HwDmUser -m HwDmUser && echo ok
      groupadd -g gid HwBaseUser && useradd -u uid -g HwBaseUser -d /home/HwBaseUser -m HwBaseUser && echo ok

      为在容器内创建HwHiAiUser、HwDmUser 和HwBaseUser用户。gid、uid为宿主机上对应用户的UID和GID,用户可根据2.a自行替换,容器内用户的UID和GID需要和宿主机保持一致。

    4. 在创建Dockerfile文件后,执行以下命令修改Dockerfile文件权限。

      chmod 600 Dockerfile

    5. “install.sh”脚本与“run.sh”脚本文件准备与dockerfile文件准备操作一致,文件内容如编写示例所示。
  3. 进入软件包所在目录,执行以下命令,构建容器镜像。

    docker build -t image-name:tag --build-arg NNRT_PKG=nnrt-name --build-arg DIST_PKG=distpackage-name .

    注意不要遗漏命令结尾的“.”,命令解释如表2所示。

    如需在此步配置系统网络代理,命令参考如下:

    docker build -t image-name:tag --build-arg NNRT_PKG=nnrt-name --build-arg DIST_PKG=distpackage-name --build-arg http_proxy=http://proxyserverip:port --build-arg https_proxy=http://proxyserverip:port .

    其中proxyserverip为代理服务器的ip地址,port为端口。

    表2 命令参数说明

    参数

    说明

    image-name:tag

    镜像名称与标签,用户可自行设置。

    --build-arg

    指定dockerfile文件内的参数。

    NNRT_PKG

    nnrt-name为离线推理引擎包名称,注意不要遗漏文件后缀,请用户自行更换。

    DIST_PKG

    distpackage-name为业务推理程序压缩包名称,注意不要遗漏文件后缀,请用户自行更换。

    当出现“Successfully built xxx”表示镜像构建成功。

  4. 构建完成后,执行以下命令查看镜像信息。

    docker images

    显示示例:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    workload-image      v1.0                1372d2961ed2        About an hour ago   249MB

编写示例

install.sh编写示例(请根据实际情况编写):

#!/bin/bash
#进入容器工作目录,本示例以root用户运行为例,如果想使用非root用户运行,可将命令改为cd /home
cd /root
#解压业务推理程序压缩包,请根据压缩包格式适配
tar xf dist.tar

run.sh编写示例(请根据实际情况编写):

#!/bin/bash

#安装后配置
source ~/.bashrc
. /usr/local/Ascend/nnrt/set_env.sh

#启动slogd守护进程
su - HwHiAiUser -c "export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/ && /var/slogd &"

#启动DMP(设备管理)守护进程
su - HwDmUser -c "export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/ && /var/dmp_daemon -I -M -U 8087 &"

#进入业务推理程序的可执行文件所在目录(本示例以root用户运行为例,如果想使用非root用户运行,可将命令改为cd /home/dist)
cd /root/dist
#运行可执行文件
./main
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词