AI开发平台MODELARTS-性能调优:性能测试

时间:2024-12-09 20:36:11

性能测试

benchmark工具也可用于性能测试,其主要的测试指标为模型单次前向推理的耗时。在性能测试任务中,与精度测试不同,并不需要用户指定对应的输入(inDataFile)和输出的标杆数据(benchmarkDataFile),benchmark工具会随机生成一个输入进行推理,并统计推理时间。执行的示例命令行如下。

#shell
benchmark --modelFile=resnet50.mindir --device=Ascend

为了简化用户使用,ModelArts提供了Tailor工具便于用户进行Benchmark性能测试,具体使用方式参考Tailor指导文档

在某些推理场景中,模型输入的shape可能是不固定的,因此需要支持用户指定模型的动态shape,并能够在推理中接收多种shape的输入。在CPU上进行模型转换时无需考虑动态shape问题,因为CPU算子支持动态shape;而在昇腾场景上,算子需要指定具体的shape信息,并且在模型转换的编译阶段完成对应shape的编译任务,从而能够在推理时支持多种shape的输入。

绝大多数情况下,昇腾芯片推理性能相比于CPU会好很多,但是也可能会遇到和CPU推理性能并无太大差别甚至出现劣化的情况。造成这种情况的原因可能有如下几种:

  1. 模型中存在大量的类似于Pad或者Strided_Slice等算子,其在CPU和Ascend上的实现方法存在差异(硬件结构不同),后者在运算此类算子时涉及到数组的重排,性能较差;
  2. 模型的部分算子在昇腾上不支持,或者存在Transpose操作,会导致模型切分为多个子图,整体的推理耗时随着子图数量的增多而增长;
  3. 模型没有真正的调用昇腾后端,而是自动切换到了CPU上执行,这种情况可以通过输出日志来进行判断。
support.huaweicloud.com/bestpractice-modelarts/modelarts_10_1163.html