夏新飞1
1
1.芯片型号:J5
2.天工开物开发包OpenExplorer版本:J5_OE_1.1.49
3.问题定位:模型转换
4.问题具体描述:在示例落地的时候,发生了卡IO情况。阅读地平线手册发现,模型转换时可将优化项设置为bandwidth,以降低DDR带宽需求。模型转换结果显示带宽要求降低约30%(如下图),单帧推理耗时增加3ms。理论上来说,AI模块降低了带宽使用,其他模块耗时应该下降,可能可以弥补AI模块增加的3ms耗时。但是实际发现,其他模块耗时并没有降低,整个pipeline耗时增加了约3ms。请问这个有什么排查方向与建议吗?
颜值即正义
2
请问你这里提到的“其他模块”,具体是指哪些呢?像前后处理这种,和模型推理不是并行的,所以不会收模型带宽的影响。
颜值即正义
4
出现这种情况,可能是因为之前DDR带宽瓶颈的时候,是模型的瓶颈,不是并行模块的瓶颈,所以在DDR带宽有余裕的时候,并行模块的耗时没有变化。
夏新飞1
5
您好,想要再深入咨询讨论一下。首先,模型输入是10fps的点云,ai工具链显示读写带宽一帧是70M,那模型推理理论上带宽占用应该是700M/s。单通道16GBDDR4带宽应该不会被占满(J5上面的系统似乎看不到DDR的主频等相关信息,计算不出理论带宽)。其次,如果是AI导致的IO性能瓶颈,那降低了AI的带宽需求,其他模块的等待时间应该是会变少的吧?还想要再咨询一下:J5系统有带宽优先级的说法吗?为啥只启动AI模块与启动全部模块的情况下,模型推理耗时一致呢?
颜值即正义
6
说明卡IO卡的是模型推理那边的IO,不是其他模块的IO。另外,模型编译的时候也可以设置compile_mode=balance,再设置balance_factor=0-100,数值越小表示越靠近带宽优化,可以多次尝试以找到最佳的平衡点。
夏新飞1
7
我们目前使用的是天准的板子,标品。他们提供的读写测试显示DDR带宽为14GB/s,但是模型推理的时候带宽仅仅使用700M/s,为什么推理的时候会卡IO呢?是不是AI推理的时候带宽是"专享"的呢(推理的时候其他IO需求一直在等待)?
颜值即正义
8
第一张图中红色+蓝色的值已经超过编译器给模型分配的读写带宽上限了
颜值即正义
9
模型推理带宽不是700M/s,你看图中,红色加蓝色已经接近10G/s了
夏新飞1
10
图中显示的接近10G,应该是FPS跑满的吧?我们实际上点云输入是10FPS/s,平均每帧70M,每秒700M。
夏新飞1
11
我理解了,就是说在ai推理的15ms内,带宽为10G。谢谢谢谢