文档
注册

使用Dockerfile构建推理镜像

前提条件

请按照表1所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。

离线推理引擎包名称中{version}表示版本号,{arch}表示架构。

表1 所需软件

软件包

说明

获取方法

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

离线推理引擎包。

获取链接

Dockerfile

制作镜像需要。

用户根据业务自行准备。

install.sh

安装推理业务的脚本。

XXX.tar

推理业务代码包名称,用户根据推理业务准备。本章以dvpp_resnet.tar为例说明。

run.sh

启动推理服务的脚本。

说明:

推理需要的其他软件包和代码请用户自行准备。

为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。

在软件包下载之后,请参考《OpenPGP签名验证指南》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。

使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。

运营商客户请访问:https://support.huawei.com/carrier/digitalSignatureAction

企业客户请访问:https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

本章节以Ubuntu X86操作系统为例,以下操作步骤中的代码为示例代码,用户可参考示例进行定制化修改,并且建议用户对示例代码和镜像做安全加固,可参考容器镜像安全加固

操作步骤

  1. 将准备的软件包及文件上传到服务器同一目录(如“/home/infer”)。
    • Ascend-cann-nnrt_{version}_linux-{arch}.run
    • Dockerfile
    • install.sh
    • run.sh
    • XXX.tar(自行准备的推理代码或脚本)
  2. root用户登录服务器。
  3. 执行以下步骤准备install.sh文件。
    1. 进入软件包所在目录,执行以下命令创建install.sh文件。

      vim install.sh

    2. 参见install.sh编写示例,请根据业务实际编写,写入后执行:wq命令保存内容。
  4. 执行以下步骤准备run.sh文件。
    1. 进入软件包所在目录,执行以下命令创建run.sh文件。

      vim run.sh

    2. 参见run.sh编写示例,请根据业务实际编写,写入后执行:wq命令保存内容。
  5. 执行以下步骤准备Dockerfile文件。
    1. 进入软件包所在目录,执行以下命令创建dockerfile文件(文件名示例“Dockerfile”)。

      vim Dockerfile

    2. 参见Dockerfile编写示例,请根据业务实际编写,写入后执行:wq命令保存内容。
  6. 进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”

    docker build --build-arg NNRT_VERSION={version} --build-arg NNRT_ARCH={arch} --build-arg DIST_PKG=XXX.tar -t 镜像名_系统架构:镜像tag .

    例如:

    docker build --build-arg NNRT_VERSION=20.1.rc3 --build-arg NNRT_ARCH=x86_64 --build-arg DIST_PKG=dvpp_resnet.tar -t ubuntu-infer:v1 .

    命令解释如所表2示。

    表2 命令参数说明

    参数

    说明

    --build-arg

    指定dockerfile文件内的参数。

    {version}

    离线推理引擎包版本号,请用户根据实际情况写入。

    {arch}

    离线推理引擎包架构,请用户根据实际情况写入。

    XXX.tar

    推理业务代码包名称,用户根据实际情况写入。

    -t

    指定镜像名称。

    镜像名_系统架构:镜像tag

    镜像名称与标签,请用户根据实际情况写入。

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

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

    docker images

    显示示例:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu-infer        v1                  fffbd83be42a        2 minutes ago       293MB

编写示例

  1. install.sh编写示例。
    #!/bin/bash
    #--------------------------------------------------------------------------------
    # 安装推理业务脚本,此处以推理业务包dvpp_resnet.tar为例说明,用户可自行修改业务包名
    #-------------------------------------
    tar -xvf dvpp_resnet.tar
    # 同时建议修改解压后文件的权限和属主
  2. run.sh编写示例。
    #!/bin/bash
    #运行业务代码
    cd /home/out
    numbers=`ls /dev/| grep davinci | grep -v davinci_manager | wc -l`
    #每5分钟更新日志
    #./main $numbers|grep -nE '.*\[.*[[:digit:]]{2}:[[:digit:]]{1}[05]:00' >./log.txt
    # 加载离线推理环境变量
    source /usr/local/Ascend/nnrt/set_env.sh
    ./main $numbers        
  3. Dockerfile编写示例,请根据实际情况进行定制化修改。
    #基础镜像ubuntu:18.04不包含离线推理包Ascend-cann-nnrt-xxx.run,可参考Dockerfile示例中的部分步骤进行安装,需提前准备好离线推理包。
    #推荐从昇腾镜像仓库拉取推理基础镜像,此时的镜像中已安装离线推理包Ascend-cann-nnrt-xxx.run。同时请确认离线推理包是否与物理机上的驱动版本匹配
    FROM ubuntu:18.04
    
    #设置离线推理引擎包参数
    ARG NNRT_VERSION
    ARG NNRT_ARCH
    ARG NNRT_PKG=Ascend-cann-nnrt_${NNRT_VERSION}_linux-${NNRT_ARCH}.run
    #设置环境变量
    ARG ASCEND_BASE=/usr/local/Ascend
    
    #设置进入启动后的容器的目录
    WORKDIR /home
    #拷贝驱动包和离线推理引擎包
    COPY $NNRT_PKG .
    
    #安装离线推理引擎包
    RUN umask 0022 && \
        groupadd xxx(自定义用户,需要与驱动安装指定的一致) && \
        useradd -g xxx(自定义用户,需要与驱动安装指定的一致) -s /usr/sbin/nologin(禁止用户登录,示例为Ubuntu系统) -m -d /home/xxx xxx(自定义用户,需要与驱动安装指定的一致) && \
        chmod +x ${NNRT_PKG} &&\
        ./${NNRT_PKG} --quiet --install &&\
        rm ${NNRT_PKG}
    
    #拷贝业务推理程序压缩包、安装脚本与运行脚本
    ARG DIST_PKG
    COPY $DIST_PKG .
    COPY install.sh .
    COPY run.sh .
    
    #运行安装脚本
    RUN mkdir -p /usr/slog && \
        mkdir -p /var/log/npu/slog/slogd && \
        chmod u+x run.sh install.sh && \
        sh install.sh && \
        rm $DIST_PKG && \
        rm install.sh
    
    CMD sh run.sh
搜索结果
找到“0”个结果

当前产品无相关内容

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