昇腾社区首页
中文
注册
开发者
下载

调优流程

目前典型的内存问题分类可参见表1

表1 内存问题分类

问题类别

问题现象

场景

内存踩踏

出现精度异常或出现NaN,通常出现在Device上。

训练开发、推理开发、算子开发

内存使用过多

内存使用过多,通常与以下两种情况有关:

  • 泄漏或OOM(Out of Memory,内存溢出)
    • Host侧内存监测持续增长,甚至OOM。
    • Device侧内存使用量持续增长,甚至OOM。
  • 与预期或基线相差大

    实际采集的内存使用数据远超预期或基线数据,差值会达到GB量级,通常出现在Device侧。

训练开发、推理开发

定位流程

针对Device侧内存使用过多或OOM,问题分析流程如下:

  1. 通过Profiling采集性能数据,并导入MindStudio Insight
  2. 查看内存(Memory)界面中“内存分析”区域的内存曲线图、算子或组件内存申请/释放详情,进行基础定界,明确异常范围、Step或算子;
  3. 使用msLeaks工具采集对应异常范围的内存详情与内存拆解数据,导入MindStudio Insight
  4. 查看内存详情(Leaks)界面,结合“调用栈火焰图”“内存申请/释放折线图&内存块图”“内存详情表”进行内存占用拆解分析。