软件包 |
说明 |
获取方法 |
|---|---|---|
Ascend-cann-nnrt_{version}_linux-aarch64.run |
离线推理引擎包。 {version}表示软件包版本。 |
|
Dockerfile |
制作镜像需要。 |
用户根据业务自行准备 |
业务推理程序压缩包 |
业务推理程序合集,支持tar、tgz格式。 业务推理程序的压缩包格式,应为容器内自带的压缩程序支持的格式,且install.sh中解压业务推理程序压缩包的命令请根据实际格式适配。 说明:
容器内的运行用户需具备业务推理程序压缩包的相关权限。 |
用户根据业务自行准备 |
install.sh |
业务推理程序的安装脚本。 |
|
run.sh |
业务推理程序的运行脚本。 |
vi Dockerfile
#操作系统及版本号,根据实际修改
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需要和宿主机保持一致。
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为端口。
参数 |
说明 |
|---|---|
image-name:tag |
镜像名称与标签,用户可自行设置。 |
--build-arg |
指定dockerfile文件内的参数。 |
NNRT_PKG |
nnrt-name为离线推理引擎包名称,注意不要遗漏文件后缀,请用户自行更换。 |
DIST_PKG |
distpackage-name为业务推理程序压缩包名称,注意不要遗漏文件后缀,请用户自行更换。 |
当出现“Successfully built xxx”表示镜像构建成功。
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