开源模型转换成BPU后速度慢

模型全BPU运行,去除反量化层后还是只有不到5帧。详见附件。debug模型中conv与天工开物中提供的detail不一样。

https://github.com/milesial/Pytorch-UNet-

unet_20221203173115.zip

您好,针对这种情况,请您先检查检查影响模型性能的yaml参数,包括:

  • layer_out_dump:指定模型转换过程中是否输出模型的中间结果,一般仅用于调试功能。 如果将其配置为 True,则会为每个卷积算子增加一个反量化输出节点,它会显著的降低模型上板后的性能。 所以在性能评测时,务必要将该参数配置为 False
  • compile_mode:该参数用于选择模型编译时的优化方向为带宽还是时延,关注性能时请配置为 latency
  • optimize_level:该参数用于选择编译器的优化等级,实际生产中应配置为 O3 获取最佳性能。
  • debug:配置为 True 将打开编译器的debug模式,能够输出性能仿真的相关信息,如帧率、DDR 带宽占用等。 一般用于性能评估阶段,在产品化交付时候,可关闭该参数减小模型大小,提高模型执行效率。

确认无误后,建议您选择**使用地平线平台友好结构&模型,**地平线芯片上的depthwise convolution的计算效率接近100%,所以对于MobileNet类的模型,BPU芯片具有效率优势。

可以参考OE开发包中`ddk/samples/ai_toolchain/horizon_model_train_samples/configs/segmentation`目录下的示例进行高效开发。

同问

谢谢回答!示例中调用了hat包,比如MobileNetV1就在hat里,我看不到,要怎么参考呢?

hat包也提供啦,您可以参考手册进行学习,

也可以参考开源的mobilenent或者efficientnet-lite系列代码使用

在:/usr/local/lib/python3.6/site-packages/hat/models/backbones/