参考 https://support.huaweicloud.com/instg-ascend-deployer-cann330/atlasdeploy_03_0109.html
三、安装运行环境
3.1 准备软件包
下载软件包
用户可根据下表获取所需软件包和数字签名文件,各软件包版本号需要保持一致。
Ascend-cann-toolbox_{version}_linux-{arch}.run
https://www.hiascend.com/software/cann/commercial
3.2 安装实用工具包
安装步骤
获取并安装离线推理引擎包,详细安装步骤如下。
1、 以软件包的安装用户登录安装环境。
2、将获取到的离线推理引擎包上传到安装环境任意路径(如“/home/package”)。
3、进入软件包所在路径。
4、增加对软件包的可执行权限。
chmod +x *.run
5、执行如下命令校验软件包安装文件的一致性和完整性。
./*.run --check
6、执行以下命令安装软件。
若使用非root用户安装,请执行以下命令。
./*.run --install
若使用root用户安装,请执行以下命令。
若使用默认运行用户HwHiAiUser:
./*.run --install
若用户需自行指定运行用户:
./*.run --install-username=username --install-usergroup=usergroup --install
其中–install-username和–install-usergroup用于指定运行用户。
安装完成后,若显示如下信息,则说明软件安装成功:
[INFO] xxx install success
3.3 配置环境变量
CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以root用户默认安装路径为例):
# 安装toolbox包时配置
. /usr/local/Ascend/toolbox/set_env.sh
用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:
1、以运行用户在任意目录下执行vi ~/.bashrc命令,打开bashrc文件,在文件最后一行后面添加上述内容。
2、执行:wq!命令保存文件并退出。
3、执行source ~/.bashrc命令使其立即生效。
3.4 容器基础镜像制作指南
前提条件
容器场景,需用户自行安装docker(版本要求大于等于18.03)。
容器OS镜像可从Docker Hub拉取。
请按照表1所示,获取离线推理引擎包与业务推理程序压缩包。
软件包 | 说明 | 获取方法 |
A500-3000-nnrt_{version}_linux-aarch64.run | 离线推理引擎包。 {version}表示软件包版本。 | https://www.hiascend.com/software/cann/commercial |
Dockerfile | 制作镜像需要。 | 用户根据业务自行准备 |
业务推理程序压缩包 | 业务推理程序合集,支持tar、tgz格式。 业务推理程序的压缩包格式,应为容器内自带的压缩程序支持的格式,且install.sh中解压业务推理程序压缩包的命令请根据实际格式适配。 | 用户根据业务自行准备 |
install.sh | install.sh 业务推理程序的安装脚本。 | |
run.sh | 业务推理程序的运行脚本。 |
操作步骤
1、将准备的软件包上传到小站的同一目录(如“/home/test”)。
A500-3000-nnrt_{version}_linux-aarch64.run
业务推理程序压缩包
2、 执行以下步骤准备dockerfile文件。
a、 以root用户登录小站,执行id HwHiAiUser命令查询并记录宿主机上HwHiAiUser用户的UID和GID。
b、 进入1中软件包上传目录,执行以下命令创建dockerfile文件(文件名示例“Dockerfile”)。
vi Dockerfile
c、 写入以下内容后执行:wq命令保存内容,内容以Ubuntu Arm操作系统为例。
#操作系统及版本号,根据实际修改
FROM ubuntu:18.04
#设置离线推理引擎包参数
ARG NNRT_PKG
#设置环境变量
ARG ASCEND_BASE=/usr/local/Ascend
ENV LD_LIBRARY_PATH=\
$LD_LIBRARY_PATH:\
$ASCEND_BASE/nnrt/latest/acllib/lib64:\
/home/data/miniD/driver/lib64
ENV ASCEND_AICPU_PATH=\
$ASCEND_BASE/nnrt/latest
#设置进入启动后的容器的目录
WORKDIR /root
#拷贝离线推理引擎包
COPY $NNRT_PKG .
#安装离线推理引擎包
RUN umask 0022 && \
groupadd -g gid HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && usermod -u uid HwHiAiUser &&\
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
为在容器内创建HwHiAiUser用户。gid、uid为宿主机上HwHiAiUser用户的UID和GID,用户可自行替换,容器内的HwHiAiUser用户的UID和GID需要和宿主机保持一致。
d、 在创建Dockerfile文件后,执行以下命令修改Dockerfile文件权限。
chmod 600 Dockerfile
e、 “install.sh”脚本与“run.sh”脚本文件准备与dockerfile文件准备操作一致,文件内容如编写示例所示。
3、 进入软件包所在目录,执行以下命令,构建容器镜像。
docker build -t image-name --build-arg NNRT_PKG=nnrt-name --build-arg DIST_PKG=distpackage-name .
注意不要遗漏命令结尾的“.”,命令解释如所表3.2示。
参数 | 说明 |
---|---|
image-name | 镜像名称与标签,用户可自行设置。 |
–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
#进入容器工作目录
cd /root
#解压业务推理程序压缩包,请根据压缩包格式适配
tar xf dist.tar
run.sh编写示例:
#!/bin/bash
#进入业务推理程序的可执行文件所在目录
cd /root/dist
#运行可执行文件
./main
3.5 部署推理容器
前提条件
容器镜像已构建成功。
操作步骤
1、 以root用户登录小站。
2、 以root用户登录小站。
docker run --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/hisi_hdc --device /dev/devmm_svm \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /home/data/miniD/driver/lib64:/home/data/miniD/driver/lib64 \
-it workload-image:v1.0
以上命令示例会默认执行业务程序,若用户需要直接进入容器,请在以上命令的末尾添加 /bin/bash。
参数 | 参数说明 |
---|---|
–device | 表示映射的设备,davinci0需要根据实际设备名称修改。如果需要映射多个芯片,需要配置多个参数如:–device=/dev/davinci0 --device=/dev/davinci1。 |
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi | 将NPU-SMI工具挂载到容器,请根据实际情况修改。 |
-v /home/data/miniD/driver/lib64:/home/data/miniD/driver/lib64 | 将运行环境目录“/home/data/miniD/driver/lib64 ”挂载到容器,请根据driver的驱动.so所在路径修改。 |
workload-image:v1.0 | 生成的镜像文件。 |
说明:
本版本支持多个容器挂载同一块芯片:
• 建议最多不超过16个容器。
• 各容器通过抢占方式获取芯片算力,不支持内存隔离和算力切分。
• 默认关闭device共享模式,请在宿主机上执行以下命令开启device共享:
npu-smi set -t device-share -i 0 -c 0 -d 1
可执行以下命令查询device共享状态:
npu-smi info -t device-share -i 0 -c 0
重启或升级后多容器共享功能关闭。
3.6 环境设置
进入docker镜像,安装python3.7.5环境,然后安装numpy ,opencv等等依赖包。
ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest/
NNRT_LD_LIBRARY_PATH=/usr/local/Ascend/nnrt/latest/acllib/lib64/
NNRT_PYTHONPATH=/usr/local/Ascend/nnrt/latest/pyACL/python/site-packages/acl/
NNRT_ASCEND_AICPU_PATH=/usr/local/Ascend/nnrt/latest/
LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64:/usr/local/Ascend/ascend-toolkit/latest/atc/lib64/
TOOLCHAIN_HOME=/usr/local/Ascend/ascend-toolkit/latest/toolkit/
NPU_SMI=/usr/local/bin/npu-smi/
LIB64_PATH=/home/data/miniD/driver/lib64/
PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/python/site-packages\;/usr/local/Ascend/ascend-toolkit/latest/toolkit/python/site-packages\;/usr/local/Ascend/ascend-toolkit/latest/atc/python/site-packages:/usr/local/Ascend/ascend-toolkit/latest/pyACL/python/site-packages/acl\;
PATH=/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin\;/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/bin\;/usr/local/Ascend/ascend-toolkit/latest/atc/bin\;
ASCEND_OPP_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp
DISPLAY=your ip:0.0