算子性能问题定位方法
算子性能问题是深度学习模型中的一个关键挑战,具体表现为部分基础计算单元的执行效率低下,从而影响整个模型的运行速度并造成资源浪费。这类问题需要借助专门的分析工具和代码优化技术来解决。例如,在评估融合算子性能时,可以通过对比不同配置下的计算时间、内存使用量等指标来进行综合判断。

分析方式 |
分析目的 |
处理思路 |
|---|---|---|
advisor分析 |
AI CPU算子耗时占比问题。 降低AI CPU算子耗时。 |
AI CPU算子首先基于算子名在时间线(Timeline)中定位算子位置,接着基于调用栈找到代码中的位置,然后尝试相同逻辑替换,如果无法替换,可记录算子shape、type等信息并联系算子负责人,确认是否支持该case。 |
算子编译问题 |
可尝试在Python训练开始前添加如下代码,指定二进制模式。如果无效则记录算子shape、type等并信息联系算子负责人,确认是否支持该case。
torch_npu.npu.set_compile_mode(jit_compile=False) torch_npu.npu.config.allow_internal_format = False |
|
单算子分析 |
vector算子分析 |
|
cube算子分析 |
基于模型调优深入分析(MindStudio Insight)中的operator页签,查看算子占比,选取最高耗时的TopN算子,并详细分析input shape下平均aicore性能,记录异常算子及shape,并联系算子负责人确认优化计划。
当算子性能无法达成预期, 优化步骤如下: |
|
融合算子/亲和API替换 |
使用融合算子/亲和API替换,可减少不必要的小算子下发,提高AI Core利用率。 |
advisor中Affinity API Issues分析器可自动识别融合算子,结合调用栈可定位代码位置,进行融合算子/亲和API替换。 |
融合算子开发 |
如需进一步提升模型性能,可以考虑进行融合算子开发,融合算子主要为了减少小算子下发,进而减少空闲时间占比。 |
advisor csv交付件中,针对Host瓶颈和MTE瓶颈的算子序列分析结果已充分展现,并清晰标注了算子序列存在Host瓶颈或MTE瓶颈。为了进一步提升性能,建议深入剖析代码逻辑,判断能否通过算子合并等手段缓解瓶颈现象。 |