专栏算法工具链J5 影响模型性能的编译器选项

J5 影响模型性能的编译器选项

Huanghui2024-10-23
91
0

编译优化选项(必选)

-O3 > -O2 > -O1 > -O0。O3优化效果最好,但编译速度最慢。O0无优化,编译最快。

输入数据来源(必选)

--input-source

  • ddr 普通Feature,需满足数据layout的对齐要求,额外的padding会增加读写的数据量。
  • 数据对齐受--input-layout 影响
  • pyramid 和 resize 都是yuv420-nv12数据格式。数据量小,通常是最好的选择
  • --input-layout 选项不适用。

数据排布选项(必选)

--input-layout 和 --output-layout 分别指定模型输入和输出的数据排布。
  • NHWC: 当输入C>4时或输出时,C bytes对齐 256*{0,1,...} + {0, 16, 32, 64, 128} 当输入C
    • NCHW:W bytes对齐256*{0,1,...} + {0, 16, 32, 64, 128}
    • BPU_RAW:shape对齐到layout block。
非BPU_RAW 会有额外的数据转换开销,通常BPU_RAW性能最好,如果编译器决定的BPU_RAW导致padding很大时,NCHW、NHWC可能会好。
  • 实际对齐以编译结果为准(HBM中记录的对齐)

  • pyramid/resizer输入的数据格式是NV12,--input-layout 无效

优化目标选项

  • --fast (默认
  • 以FPS为优化目标,使延迟最低(FPS最大化)

  • --ddr

  • 以带宽为优化目标,使带宽最低(推理一次的读写数据量最少)

  • --balance 1

  • 平衡ddr和fast,参数范围[0, 100]。0表示等同--ddr,100等同--fast

部分模型设置balance小于100后,FPS更大的原因:

  1. 由于编译时间限制,编译器内部未做全局搜索评估

  2. 评估时IR并不是汇编后的最终指令,会有些误差

建议:

当出现带宽瓶颈时可以尝试 --ddr 和 --balance选项,观察上板性能。

拆分输入选项

--split-by-input-dims 准备好部分输入就可以执行模型,模型执行时间会变长。不建议用

额外输出选项

--dump-layer-output 调试用选项,额外的输出必然会降低性能

执行时间选项

--max-time-per-fc 指定最长的BPU连续执行时间。限制执行时间会影响调度,导致性能下降
算法工具链
征程5官方教程
评论0
0/1000