推理环境准备
ais_bench推理工具简介
昇腾离线OM模型的推理后端是ACL(Ascend Computing Language),其底层采用C实现,后来在ACL基础上又做了一套Python接口,命名为pyACL,为了方便开发,华为工程师又基于pyacl开发出一款推理工具ais_bench,此工具支持使用命令进行快捷地推理,并测试推理模型的性能(包括吞吐率、时延),同时ais_bench工具也对外开放推理相关的API。
推理工具下载
下载aclruntime和ais_bench推理程序的whl包,aclruntime包请根据当前环境选择适配版本:
aclruntime-0.0.2-cp39-cp39-linux_x86_64.whl
aclruntime-0.0.2-cp39-cp39-linux_aarch64.whl
ais_bench-0.0.2-py3-none-any.whl
推理工具安装
执行如下命令,进行安装:
# 安装aclruntime
pip3 install aclruntime-0.0.2-cp39-cp39-linux_aarch64.whl
# 安装ais_bench推理程序
pip3 install ais_bench-0.0.2-py3-none-any.whl
分别提示如下信息则表示安装成功:
# 成功安装aclruntime
Successfully installed aclruntime-{version}
# 成功安装ais_bench推理程序
Successfully installed ais_bench-{version}
设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
静态OM推理
纯推理场景
该场景主要用于模型性能测试。默认情况下,构造全为0的数据送入模型推理。
示例命令:
python3 -m ais_bench --model ./inference/om/det.om --output ./output/ --outfmt BIN --loop 5
推理结果:
调试模式
开启debug调试模式。
示例命令:
python3 -m ais_bench --model ./inference/om/det.om --output ./output/ --debug 1
调试模式开启后会增加更多的打印信息,包括:
- 模型的输入输出参数信息
- 详细的推理耗时信息
模型输入输出等具体操作信息
文件输入场景
示例命令:
python3 -m ais_bench --model ./inference/om/det.om --input ./inference/image.npy
推理结果:
文件夹输入场景
使用--input参数指定模型输入文件所在目录,多个目录之间通过“,”进行分隔。
本场景会根据文件输入size和模型实际输入size进行组Batch。
示例命令:
python3 -m ais_bench --model ./inference/om/det.om --input ./inference/input/
推理结果:
特殊说明:
模型输入需要与传入文件夹的个数一致。
例如,bert模型有三个输入,则必须传入3个文件夹,且三个文件夹分别对应模型的三个输入,顺序要对应。 模型输入参数的信息可以通过开启调试模式查看,bert模型的三个输入依次为input_ids、 input_mask、 segment_ids,所以依次传入三个文件夹:
- 第一个文件夹“./data/SQuAD1.1/input_ids",对应模型第一个参数"input_ids"的输入
- 第二个文件夹"./data/SQuAD1.1/input_mask",对应模型第二个参数"input_mask"的输入
- 第三个文件夹"./data/SQuAD1.1/segment_ids",对应模型第三个参数"segment_ids"的输入
python3 -m ais_bench --model ./save/model/BERT_Base_SQuAD_BatchSize_1.om --input ./data/SQuAD1.1/input_ids,./data/SQuAD1.1/input_mask,./data/SQuAD1.1/segment_ids
多Device场景
多Device场景下,可以同时指定多个Device进行推理测试。
示例命令:
python3 -m ais_bench --model ./inference/om/det.om --input ./inference/input/ --device 1,2
推理结果:
输出结果依次展示每个Device的推理测试结果,其中结果最后展示包括throughput(吞吐率)、start_time(测试启动时间)、end_time(测试结束时间)以及summary throughput(吞吐率汇总)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。