推理场景
前提条件
- 安装开发环境,具体安装方法请参见《CANN 软件安装指南》。
- 准备经过ATC转换后的模型OM文件,转换方法请参见《CANN 开发辅助工具指南 (推理)》中的“ATC工具使用指导”章节。
- 准备经过预处理的推理数据及数据集文件,预处理方法可以参考scripts目录下的预处理脚本样例。
运行方法
- 以root用户登录服务器。
- 从获取工具包章节中获取benchmark工具包,并进行解压。
- 进入解压后的文件夹,获取benchmark工具benchmark.{arch}。
{arch}为CPU架构,取值为aarch64或x86_64。
- 将benchmark工具、模型OM文件、模型对应的数据集上传到服务器任意目录下。
这些文件可以上传到同一路径,也可以上传到不同路径,以用户实际情况为准。
- 设置环境变量。
环境变量设置示例如下:
export install_path=/usr/local/Ascend/ascend-toolkit/latest export PATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH export PYTHONPATH=${install_path}/atc/python/site-packages:$PYTHONPATH export LD_LIBRARY_PATH=${install_path}/atc/lib64:${install_path}/acllib/lib64:$LD_LIBRARY_PATH export ASCEND_OPP_PATH=${install_path}/opp
- 进入benchmark工具所在路径,执行如下命令增加对工具的可执行权限。
chmod +x benchmark.{arch}
- 执行如下命令运行benchmark工具。
./benchmark.{arch} 运行参数
benchmark工具支持的运行参数及其说明请参见表4-3。
若显示类似如下所示信息,表示运行成功,并自动创建result文件夹(如果已存在,则不再创建),并在result文件夹下生成记录吞吐率和时延的推理性能输出文件(文件名格式为perf_<model_type>_batchsize_<batch_size> _device_<device_id>.txt,例如perf_vision_batchsize_16_device_0.txt),同时屏幕上打印的信息中也包含吞吐率和时延。运行结果参数说明请参见表4-4。
[INFO][Preprocess] Init SUCCESS [INFO][DataManager] Init SUCCESS [INFO][Inference] Init SUCCESS [INFO][PostProcess] Init SUCCESS [INFO][Vision] Create stream SUCCESS [INFO][Vision] Dvpp init resource SUCCESS [INFO][Vision] Init SUCCESS [INFO][PostProcess] CurSampleNum is 1 -----------------Performance Summary------------------ [e2e] throughputRate: 0.53346, latency: 1874.55 [data read] throughputRate: 2702.7, moduleLatency: 0.37 [preprocess] throughputRate: 253.485, moduleLatency: 3.945 [infer] throughputRate: 95.4381, Interface throughputRate: 168.322, moduleLatency: 6.68 [post] throughputRate: 82.6241, moduleLatency: 12.103 ----------------------------------------------------------- [INFO][Vision] DeInit SUCCESS [INFO][Preprocess] DeInit SUCCESS [INFO][Inference] Unload model SUCCESS! [INFO][Inference] DeInit SUCCESS [INFO][DataManager] DeInit SUCCESS [INFO][PostProcess] Deinit SUCCESS
同时会生成推理结果文件,不同的模型获得的推理结果文件格式不同,请以实际模型为准。
- 在工具的scripts目录下获取后处理脚本和精度统计脚本,并将其上传到服务器任意路径下。
- 进入后处理脚本和精度统计脚本所在路径,执行后处理脚本和和精度统计脚本解析模型输出结果,测试精度,生成结果文件。
不同的模型执行的脚本不同,请以实际模型为准。
运行参数说明
参数 |
说明 |
是否必填 |
---|---|---|
[-model_type, -mt] |
模型的类型,当前支持如下几种:
|
是 |
[-batch_size, -bs] |
执行一次模型推理所处理的数据量。 |
是 |
[-device_id, -di] |
运行的Device编号,请根据实际使用的Device修改。缺省值为0。 |
否 |
[-om_path, -op] |
模型OM文件所在的路径。 |
是 |
[-input_width, -iw] |
输入模型的宽度。 |
仅vision和yolocaffe模型类型支持该参数,且必填。 |
[-input_height, -ih] |
输入模型的高度。 |
仅vision和yolocaffe模型类型支持该参数,且必填。 |
[-input_text_path, -itp] |
模型对应的数据集所在的路径。 |
对于vision和yolocaffe模型类型,-input_text_path、-input_image_path和-input_imgFiles_path三个参数必须选择其一。 bert、nlp、widedeep和nmt模型类型必填。 |
[-input_image_path, -iip] |
模型对应的单张图片所在的路径。 |
仅vision和yolocaffe模型类型支持该参数,且-input_text_path、-input_image_path和-input_imgFiles_path三个参数必须选择其一。 |
[-input_imgFiles_path, -ifp] |
模型对应的图片文件夹所在的路径。 |
仅vision和yolocaffe模型类型支持该参数,且-input_text_path、-input_image_path和-input_imgFiles_path三个参数必须选择其一。 |
[-input_vocab, -iv] |
输入语言词典文件所在的路径。 |
仅nmt模型类型支持该参数,且必填。 |
[-ref_vocab, -rv] |
输出语言词典文件所在的路径。 |
仅nmt模型类型支持该参数,且必填。 |
[-output_binary, -ob] |
输出结果格式是否为二进制文件(即bin文件)。取值为:
缺省值为false。 |
否 |
[-useDvpp, -u] |
模型前处理是否使用DVPP编解码模块。取值为:
缺省值为false。若使用DVPP编解码或图像缩放,则该参数置为true。其他情况置为false。 |
仅vision和yolocaffe模型类型支持该参数,且为必选。 |
运行结果参数说明
参数 |
说明 |
|
---|---|---|
[e2e] |
throughputRate |
端到端总吞吐率。公式为sample个数/时间。 |
latency |
端到端时延,即从处理第一个sample到最后一个sample的完成时间。 |
|
[data read] [preprocess] [post] |
throughputRate |
当前模块的吞吐率。 |
moduleLatency |
执行一次当前模块的时延。 |
|
[infer] |
throughputRate |
推理模块的吞吐率。公式为sample个数/执行一次推理的时间。 |
moduleLatency |
推理模块的平均时延。公式为执行一次推理的时间/batch size。 |
|
Interface throughputRate |
aclmdlExecute接口的吞吐率。公式为sample个数/aclmdlExecute接口的平均执行时间。 |
根据目前的统计规则,一般情况下sample个数=batch size。但是对于NMT模型,sample个数=整个batch中所有句子的总单词个数。