昇腾社区首页
中文
注册

Step间内存对比

如果训练推理参数一致,但是CANN和PyTorch或MindSpore框架的版本不匹配,训练推理任务的两个不同Step的内存使用可能存在差异,会造成内存使用过多,甚至OOM的问题。而msLeaks工具则提供了用户对比分析、定位问题的能力。

工具使用

使用本对比功能之前,需要先采集两个不同Step的数据。

  1. 使用环境变量关闭task_queue算子下发队列优化
    export TASK_QUEUE_ENABLE=0
  2. 在训练推理代码中添加mstx打点代码,可参考Step内内存分析
  3. 执行以下命令,使用msLeaks工具采集指定Step的内存数据。需要采集两个不同Step的数据。建议每次只采集一个Step的数据,两个不同Step的数据采集完成后,用来进行Step间内存对比分析。
    msleaks [options] app_name --steps=Required Step --level=kernel
  4. 执行以下命令,对比采集到的两个Step的内存使用差异。
    msleaks --compare --input=path1,path2 --level=kernel

    其中--compare和--input命令必须一起使用,单个使用无效,同时--input输入的两个文件路径需要逗号(全角半角逗号均可)隔开,--level也可选op。

  5. Step间对比生成的结果目录如下。
    |- leaksDumpResults
           |- compare
                   |- memory_compare_{timestamp}.csv

结果说明

Step间内存问题可通过输出结果件查询定位,结果件详解可参见工具使用中的结果件说明