请按照表1所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。
离线推理引擎包名称中{version}表示版本号,{arch}表示架构。
软件包 |
说明 |
获取方法 |
---|---|---|
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_64操作系统为例,以下操作步骤中的代码为示例代码,用户可参考示例进行定制化修改,并且建议用户对示例代码和镜像做安全加固,可参考容器安全加固。
vi install.sh
vi run.sh
vi Dockerfile
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示。
参数 |
说明 |
---|---|
--build-arg |
指定dockerfile文件内的参数。 |
{version} |
离线推理引擎包版本号,请用户根据实际情况写入。 |
{arch} |
离线推理引擎包架构,请用户根据实际情况写入。 |
XXX.tar |
推理业务代码包名称,用户根据实际情况写入。 |
-t |
指定镜像名称。 |
镜像名_系统架构:镜像tag |
镜像名称与标签,请用户根据实际情况写入。 |
当出现“Successfully built xxx”表示镜像构建成功。
docker images
显示示例如下:
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu-infer v1 fffbd83be42a 2 minutes ago 293MB
#!/bin/bash #-------------------------------------------------------------------------------- # 安装推理业务脚本,此处以推理业务包dvpp_resnet.tar为例说明,用户可自行修改业务包名 #------------------------------------- tar -xvf dvpp_resnet.tar # 同时建议修改解压后文件的权限和属主
#!/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 # 加载离线推理环境变量 export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64:${LD_LIBRARY_PATH} source /usr/local/Ascend/nnrt/set_env.sh ./main $numbers
#基础镜像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 --force &&\ 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 bash run.sh
CANN软件包版本为6.2.RC1、6.3.RC1及其之后的版本,在安装软件包时新增--force参数。上述Dockerfile编写示例已经加上该参数。若用户使用6.2.RC1、6.3.RC1之前版本的软件包,需要去除Dockerfile编写示例中该参数。