我在开发机上使用hb_mapper对YOLOX_tiny的bin模型进行评估,得到的帧率为52FPS,而在开发板上实测,得到的帧率只有7FPS,不太明白为什么会差这么多,我看了生成的profile文件,CPU的推理用时很短
您好,推测可能是这个模型使用了查表激活(可以查看转换日志,显示算子类型为HzLut),当查表算子的shape超过8192时会被回退到cpu计算(但在转换时模型并不会被拆段,只是运行时编译器会进行判断),而html是统计不到cpu部分的耗时的,所以会存在动静态性能差异较大的问题。
您好,请问查表激活是什么意思呢,我查了一下没查到这个东西。我在板端进行推理,得到的profile.log文件中,显示BPU的推理时间占了绝大部分,应该不会是cpu的问题吧。另外,请问板端的hrt_model_exec有没有类似hb_perf中统计每一层的计算时间的功能。
你好,是的,在 SiLU 激活的计算中有 sigmoid,对于这种无法用矩阵乘计算的 op,我们只能通过查表去实现,但 BPU 查表无法无限大,所以当算子 shape>8192 时,我们会回退至 CPU 执行,这时候 BPU 的预估就无法统计到了,会体现在板端耗时中。综上,我们还是建议使用 BPU 原生加速的 ReLU 或者 ReLU6 来做激活函数。