昇腾学院 | 案例分享 模型处理时延长达600ms问题
问题现象描述
问题现象:模型输入数据尺寸是1000*128*7*7(NCHW),4个fc算子组成的网络模型,模型处理时延将近600ms。
关键过程、根本原因分析
关键过程:
1. 为了测试模型推理时延,需要构造模型推理的工程,准备数据集和模型文件。
2. 在程序里面进行打点处理,以便计算模型处理时延。
图1-1 程序加点计算时延
3. 打开日志查看模型处理时间,包括模型的数据输入、推理和数据输出耗时。
4. 通过使用profiling工具,可以查看模型的单个算子时延以及模型的数据转换时延,如下图所示,单个模型的推理时延都在20ms之内,主要耗时在于数据转换过程。
图1-2 Profiling工具显示单个算子的时延都在20ms之内
图1-3 Profiling工具显示数据转换时延530ms
5. 通过上述数据说明,百万级输入情况下,fp32转fp16,数据转换过程中耗时较多,同时模型的C通道是128,导致无法使用ai core进行加速。
根本原因分析:
1、对于百万级输入数据,fp32转成fp16过程中,数据转换耗时较多,导致模型整体推理时延较大。
2、模型输入的通道大于3,导致aipp无法使用,即数据的搬运处理不是用ai core进行加速,是使用cpu核处理。
结论、解决方案及效果
结论:
1、模型处理时延大的主要原因体现在无法使用ai core资源对百万级数据量进行数据转换。
解决方案:
1、 在模型转换时以5D FP16输出,后一个设置是5D FP16输入,该方案必须保证模型的中间层没有额外处理。
2、 修改NCHW的C通道为3,使用aipp进行加速。
经验总结、预防措施和规范建议
建议通道数改成3,使用ai core资源进行数据转换过程,降低数据转换时延。
- 点赞
- 收藏
- 关注作者
评论(0)