推理环境准备

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

推理结果:
01_纯推理场景

调试模式

开启debug调试模式。
示例命令:

python3 -m ais_bench --model ./inference/om/det.om --output ./output/ --debug 1

调试模式开启后会增加更多的打印信息,包括:

  • 模型的输入输出参数信息
    02_模型的输入输出参数
  • 详细的推理耗时信息
    03_推理耗时
  • 模型输入输出等具体操作信息

    文件输入场景

    示例命令:

python3 -m ais_bench --model ./inference/om/det.om --input ./inference/image.npy

推理结果:
04_文件输入场景

文件夹输入场景

使用--input参数指定模型输入文件所在目录,多个目录之间通过“,”进行分隔。
本场景会根据文件输入size和模型实际输入size进行组Batch。
示例命令:

python3 -m ais_bench --model ./inference/om/det.om --input ./inference/input/

推理结果:
05_文件夹输入场景

特殊说明:
模型输入需要与传入文件夹的个数一致。
例如,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

推理结果:
06_多Device场景
输出结果依次展示每个Device的推理测试结果,其中结果最后展示包括throughput(吞吐率)、start_time(测试启动时间)、end_time(测试结束时间)以及summary throughput(吞吐率汇总)。


讲道义的遥控器
1 声望0 粉丝