文档
注册

制作推理镜像

根据宿主机目录是否挂载到容器,容器部署分为如下两种安装方式,用户需根据实际情况进行选择。
  • 将宿主机的目录挂载到容器中。该方式需要开放Kubeedge原生的容器挂载能力(如挂载卷、能力集等),存在容器安全风险,详情请参考container_capability_tool工具中的“工具使用方法”章节。
  • 将驱动安装到镜像中,部署时不挂载驱动目录。该方式不存在容器逃逸的问题,但存在与宿主机驱动配套的问题,详情请参考推理容器升级约束章节。
    表1 边缘场景镜像制作指导说明

    产品形态

    不挂载目录方式

    挂载目录方式

    Atlas 200 AI加速模块

    NA

    请参考《Atlas 200 AI加速模块软件安装与维护指南(RC场景)》中的“软件安装 > 容器化部署应用”章节制作推理镜像。

    Atlas 500 智能小站

    请参考业务典型场景示例

    请参考《Atlas 500 智能小站 用户指南 (型号 3000, 3010)》中的“附录 > 制作和启动容器镜像”章节制作推理镜像。

    Atlas 500 Pro 智能边缘服务器

    请参考业务典型场景示例

    请参考《Atlas 500 智能小站 用户指南 (型号 3000, 3010)》中的“附录 > 制作和启动容器镜像”章节制作推理镜像。
    说明:

    请注意Atlas 500 Pro 智能边缘服务器Atlas 500 智能小站制作容器镜像的操作存在差异点,需要根据驱动安装路径适配Dockerfile中LD_LIBRARY_PATH环境变量值,即把“/home/data/miniD/driver/lib64”替换为驱动安装的实际路径。

  • 本章节仅适用于Atlas 500 智能小站Atlas 500 Pro 智能边缘服务器,本章将以Atlas 500 智能小站为例,进行容器镜像的制作与部署。
  • Atlas 500 Pro 智能边缘服务器需要安装对应NPU设备的驱动后再参考使用。

业务典型场景示例

在AI应用中需要使用到边缘设备的NPU算力,下文以AtlasEdge平台部署为例,仅供参考。

该镜像具备以下特点:
  • 该镜像不挂载主机路径。
  • 该镜像以HwHiAiUser用户运行。
  • 该容器应用部署时无需配置特权容器、能力集、主机网络等。

前提条件

  • 容器OS镜像由用户自行准备,可从Docker Hub拉取。
  • 请按下表所示,获取离线推理引擎包与业务推理程序压缩包。
表2 所需软件

软件包

说明

获取方法

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

离线推理引擎包。

{version}表示软件包版本。

获取链接

NPU的驱动软件

准备运行环境上NPU设备的驱动包,详情请参考驱动文档。

-

Dockerfile

制作镜像需要。

用户根据业务自行准备

业务推理程序压缩包

业务推理程序合集,包含模型文件、推理代码、配置文件等,可为tar、tar.gz等格式文件,install.sh安装业务推理程序的命令请根据实际情况适配。

说明:
  • 容器内的运行用户需具备业务推理程序压缩包的相关权限。
  • 模型文件更新可通过更新镜像方式更新容器。
  • 配置文件可直接放到镜像中,也可以通过ConfigMap下发配置。

用户根据业务自行准备

install.sh

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

-

run.sh

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

-

操作步骤

  1. 将准备的软件包及脚本上传至同一目录(如“/home/test”)。
    • Ascend-cann-nnrt_{version}_linux-aarch64.run
    • NPU的驱动软件
      • 构建镜像前,需要将NPU的驱动安装路径下的driver目录提前拷贝到当前目录。Atlas 500 智能小站的NPU驱动安装路径为“/home/data/miniD/driver”Atlas 500 Pro 智能边缘服务器的NPU驱动安装路径以实际安装路径为准。
      • 如果在Atlas 500 智能小站构建镜像,则需要执行cp -r /home/data/miniD/driver/ /home/test命令。
      • 如果在Atlas 500 Pro 智能边缘服务器构建镜像,则需要执行cp -r NPU实际安装路径/Ascend/driver/ /home/test命令。
    • 业务推理程序压缩包
    • Dockerfile、install.sh、run.sh
  2. 执行以下步骤准备dockerfile文件。
    1. root用户登录,执行id HwHiAiUser命令查询并记录镜像环境上HwHiAiUser用户的UID和GID(用于替换“Dockerfile”文件编写示例中的gid和uid)。
    2. 进入步骤 1中软件包上传目录,执行以下命令创建Dockerfile文件(文件名示例“Dockerfile”)。
      vi Dockerfile
    3. 写入以下内容后执行:wq命令保存内容,内容以Ubuntu Arm操作系统为例(以下内容仅为编写示例,请用户根据实际情况结合自身理解进行二次开发)。
      # 操作系统及版本号,根据实际修改
      FROM ubuntu:18.04
      
      # Build Arguments
      ARG NNRT_PKG
      ARG DIST_PKG
      ARG ASCEND_BASE=/usr/local/Ascend
      
      # 设置环境变量
      ENV LD_LIBRARY_PATH=\
      $LD_LIBRARY_PATH:\
      $ASCEND_BASE/driver/lib64:\
      $ASCEND_BASE/nnrt/latest/acllib/lib64
      
      ENV ASCEND_AICPU_PATH=$ASCEND_BASE/nnrt/latest
      
      # 添加HwHiAiUser用户,用于运行业务容器
      RUN umask 0022 && \
      groupadd -g gid HwHiAiUser && \
      useradd -u uid -g HwHiAiUser -m -d /home/HwHiAiUser HwHiAiUser
      
      #设置进入启动后的容器的目录, WORKDIR可根据业务设置,这里以/home/HwHiAiUser/app为例
      RUN mkdir -p /home/HwHiAiUser/app
      WORKDIR /home/HwHiAiUser/app
      COPY $NNRT_PKG .
      COPY $DIST_PKG .
      COPY install.sh .
      
      # 安装NNRT。
      RUN bash ${NNRT_PKG} --quiet --install --install-for-all && \
      rm ${NNRT_PKG}
      
      # Install Driver
      # Atlas 500 智能小站和Atlas 500 Pro 智能边缘服务器需要将NPU的驱动安装路径下的driver目录提前拷贝到当前目录
      # Atlas 500 智能小站的NPU驱动安装路径位于在/home/data/miniD/driver,Atlas 500 Pro 智能边缘服务器的NPU驱动安装路径以实际安装路径为准
      COPY driver/ $ASCEND_BASE/driver/
      
      #Install DIST,运行业务安装脚本
      RUN sh install.sh && \
          rm $DIST_PKG && \
          rm install.sh
      
      COPY run.sh /home/HwHiAiUser/app/run.sh
      RUN chmod +x /home/HwHiAiUser/app/run.sh
      
      
      RUN chown -R HwHiAiUser:HwHiAiUser /home/HwHiAiUser/app/
      RUN chown -R HwHiAiUser:HwHiAiUser $ASCEND_BASE/nnrt
      RUN chown -R HwHiAiUser:HwHiAiUser $ASCEND_BASE/driver
      USER HwHiAiUser:HwHiAiUser
      
      #Execute run.sh
      CMD bash /home/HwHiAiUser/app/run.sh
    4. 在创建Dockerfile文件后,执行以下命令修改Dockerfile文件权限。
      chmod 600 Dockerfile
    5. “install.sh”脚本与“run.sh”脚本文件根据业务适配,且与dockerfile文件准备操作一致。
    6. install.sh编写示例:
      #!/bin/bash
      #进入容器工作目录
      cd /home/HwHiAiUser/app
      #解压业务推理程序压缩包,请根据压缩包格式适配,DIST为用户准备的业务推理程序压缩包名称
      tar -xzvf DIST.tar
      run.sh编写示例:
      #!/bin/bash
      #进入业务推理程序的可执行文件所在目录,用户需根据实际路径修改
      cd /home/HwHiAiUser/app/FaceRecognition_b098/src/dist/HostCPU
      #运行可执行文件,用户需根据实际应用修改
      ./AclFaceRecognitionHostCPU
  3. 进入软件包所在目录,执行以下命令,构建容器镜像。
    docker build -t image-name:tag --build-arg NNRT_PKG=nnrt-name --build-arg DIST_PKG=distpackage-name .

    注意不要遗漏命令结尾的“.”

    当出现“Successfully built xxx”表示镜像构建成功,命令解释如表3所示。

    表3 命令参数说明

    参数

    说明

    image-name:tag

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

    NNRT_PKG

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

    DIST_PKG

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

  4. 执行以下命令制作容器镜像软件包。
    docker save image-name:tag |gzip -c > image-name.tar.gz
搜索结果
找到“0”个结果

当前产品无相关内容

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