本文的视频教程可访问下面链接:
https://www.bilibili.com/video/BV1iB4y1E75V
若模型推理时包含动态Batch/动态分辨率特性,在模型推理时,需调用pyACL提供的接口设置模型推理时需使用的Batch数/分辨率。
关键原理说明如下:
对于动态Batch/动态分辨率,模型支持的Batch数已提前在构建模型时配置(构建模型的说明请参见《ATC工具使用指南》中的“ATC工具使用指南”章节),构建模型成功后,在生成的om模型中,会新增一个输入(下文简称动态Batch输入/动态分辨率输入),在模型推理时通过该新增的输入提供具体的Batch值/分辨率。
例如,a输入的Batch数/分辨率是动态的,在om模型中,会有与a对应的b输入来描述a的Batch数/分辨率。在模型执行时,准备a输入的数据结构请参见准备模型推理的输入/输出数据,准备b输入的数据结构、设置b输入的数据请依次参见2、3。
加载模型数据分为以下4种方式:
acl.mdl.load_from_file:从文件加载离线模型数据,由系统内部管理内存。
acl.mdl.load_from_mem:从内存加载离线模型数据,由系统内部管理内存。
acl.mdl.load_from_file_with_mem:从文件加载离线模型数据,由用户自行管理模型运行的内存(包括工作内存和权值内存)。
acl.mdl.load_from_mem_with_mem:从内存加载离线模型数据,由用户自行管理模型运行的内存(包括工作内存和权值内存)。
此处设置的Batch数/分辨率只能是模型转换时通过dynamic_batch_size/dynamic_image_size参数设置的Batch/分辨率档位中的某一个,模型转换的详细说明请参见《ATC工具使用指南》。
也可以调用acl.mdl.get_dynamic_batch/acl.mdl.get_dynamic_hw接口获取指定模型支持的Batch/分辨率档位数以及每一档中的Batch数/宽、高。
详情请见官网开发文档合集(华为 CANN 配置手册、产品文档、PDF - https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373)
调用acl.mdl.execute接口执行模型。
图1 动态Batch/动态分辨率流程图
开发环境搭建可选择A.Ubuntu环境下或者B.Windows环境下远程连接已经配置完毕的服务器
注意分为昇腾设备和非升腾设备。非昇腾AI设备无需安装固件与驱动,仅能用于代码开发、编译等不依赖于昇腾设备的开发活动。在昇腾AI设备上安装开发环境,支持代码开发和编译,同时可以运行应用程序或进行训练脚本的迁移、开发&调试。
开发框架CANN开发环境支持多种操作系统,如这里的Ubuntu 18.04。请在root用户下执行如下命令检查源是否可用:
安装一些OS依赖库,具体可执行如下命令:
·apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev
·sudo apt-get install -y unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev libncursesw5-dev
因为此处我们已经安装过了,因此显示都已经是最新版
CANN 还依赖于Python3.7 ,因此首先确认一下本地的Python版本,执行命令python3 --version,如果python版本在3.7.0~ 3.7.11之间则可以跳过Python安装过程,默认情况下,Ubuntu 18.04安装的Python是3.6.9 。因此需要重新安装python3.7.5。在目录/home/jack/mysoft下,执行如下命令:
稍等片刻后,会在mysoft目录中下载完成此安装包Python-3.7.5.tgz。解压源码包:
进入解压后的文件夹,执行配置、编译和安装命令:
其中“--prefix”参数用于指定python安装路径,用户根据实际情况进行修改。“--enable-shared”参数用于编译出libpython3.7m.so.1.0动态库。“--enable-loadable-sqlite-extensions”参数用于加载libsqlite3-dev依赖。安装完成后,如果输入python3还是未生效,需要配置环境变量。可以执行如下命令设置python3.7.5环境变量,执行如下命令:
具体可以参考官网 https://www.hiascend.com/software/mindstudio
之前的配置Python环境变量,只能在当前的Shell窗口有效,当开启新的命令窗口,则环境变量失效,示意如下所示:
下面设置永久的环境变量,命令如下:
增加的内容如下:
执行如下命令生效:
为后续安装CANN软件包、运行CANN软件环境变量设置脚本时能够自动配置python3.7.5环境变量,用户需提前创建好文件“use_private_python.info”,执行如下命令(root用户):
内容如下:
在基础Linux环境搭建完成后,需要登录华为相关网站(下载软件有权限要求,否则可能无法下载),并获取相关权限后,首先可以在Windows操作系统上下载两种架构(x86和aarch64)的CANN toolkit开发套件包Ascend-cann-toolkit_xxx.run 。
请根据CPU架构(x86_64、aarch64)获取对应的软件包。
例如本次安装的版本为CANN 5.1.RC1:
Ascend-cann-toolkit_5.1.RC1_linux-aarch64.run
Ascend-cann-toolkit_5.1.RC1_linux-x86_64.run
对于x86_64则: ./Ascend-cann-toolkit_{version}_linux-x86_64.run
对于运行环境为aarch64而开发环境为x86_64的场景,需同时获取两种架构的开发套件包。
({version}表示软件版本号,{arch}表示CPU架构。)
其主要用于用户开发应用、自定义算子和模型转换。开发套件包包含开发应用程序所需的库文件、开发辅助工具如ATC模型转换工具。
然后打开终端命令行,执行如下命令进行CANN toolkit安装:
./Ascend-cann-toolkit_{version}_linux-x86_64.run --check
./Ascend-cann-toolkit_{version}_linux-aarch64.run --check
./Ascend-cann-toolkit_{version}_linux-x86_64.run --install
./Ascend-cann-toolkit_{version}_linux-aarch64.run --install
输入如下命令设置可执行权限:
chmod +x Ascend-cann-toolkit_5.1.RC1_linux-aarch64.run
chmod +x Ascend-cann-toolkit_5.1.RC1_linux-x86_64.run
输入如下命令进行安装
./Ascend-cann-toolkit_5.1.RC1_linux-x86_64.run --install
安装过程如下
安装完成显示如下:
输入如下命令进行安装
./Ascend-cann-toolkit_5.1.RC1_linux-aarch64 --install
安装过程同上
最后,对于Atlas 200 AI加速模块 (RC场景)和Atlas 500 小站(运行环境aarch64架构)来说,当开发环境是一台X86 PC进行环境搭建时,需要在开发环境中安装交叉编译工具,具体命令如下:
安装成功后,再次验证,执行如下命令:
此处已经配置完成
去昇腾社区官网,选择对应版本,下载安装包。
网址:https://www.hiascend.com/software/mindstudio/download
将MindStudio_{software version}_ubuntu18.04-x86_64.tar.gz软件包上传至MindStudio安装服务器。并解压
使用MindStudio的安装用户进入软件包解压后的MindStudio/bin目录,执行如下命令启动:
第一次运行时会检查环境,MindStudio依赖JDK和Python3等环境,检查过程示意如下:
首先根据提示安装相关库,执行如下命令:
·apt-get -y install xterm fonts-wqy-zenhei fonts-wqy-microhei fonts-arphic-ukai fonts-arphic-uming
·pip3.7 install --user grpcio coverage gnureadline pylint matplotlib pandas xlrd==1.2.0 absl-py
打开软件后,到setting配置CANN的路径
在里面配置MindX sdk
python3 -m pip install numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests grpcio pylint absl-py --user -i https://pypi.tuna.tsinghua.edu.cn/simple
在官网选择MindStudio Windows版本进行下载
这里选择软件包下载,点击软件包下载,跳出安装界面进行安装
用户根据需要勾选安装选项
Windows SSH连接配置:
点击Test Connection
显示连接成功
动态Batch:用户执行推理时,其Batch数是动态可变的。
动态分辨率H*W: 用户执行推理时,每张图片的分辨率H*W是动态可变的。
注意:
对同一模型不能同时调用接口设置动态Batch、动态分辨率和动态维度。
对同一模型,AIPP(包括静态AIPP和动态AIPP)与动态维度(ND格式)不能同时使用。
图2 动态Batch/动态分辨率设置总体流程图
这里我们需要注意设置动态batch和动态分辨率的操作必须在模型执行前进行,否则程序会报错。
详情请见昇腾社区https://www.hiascend.com/