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

低效内存识别

在训练推理模型时,可能会存在部分内存块申请后没有立即使用,或者使用结束后未及时释放等情况,从而导致内存使用增高的现象,对于内存来说,这种现象是低效的。

低效内存(Inefficient Memory)是指在模型运行过程中,Device侧有关内存申请、释放以及访问操作的时机不合理的某个Tensor对象。

msLeaks工具针对op算子粒度支持过早申请Early Allocation)、过迟释放Late Deallocation)、临时闲置Temporary Idleness)三种低效内存的识别,具体说明如表1所示。

表1 低效内存说明

分类

说明

过早申请

对于某个Tensor对象,在其申请内存的算子与第一次访问的算子之间,存在着其他算子包含了其他Tensor对象的释放操作,这个Tensor对象就是过早申请了。

过迟释放

对于某个Tensor对象,在其最后一次访问的算子与释放内存的算子之间,存在着其他算子包含了其他Tensor对象的申请操作,这个Tensor对象就是过迟释放了。

临时闲置

对于某个Tensor对象,其任意两次内存访问操作的算子之间,存在超过某个阈值的算子数量,则这个对象即为临时闲置对象。

使用方式

执行以下命令,开启低效内存识别功能。其中app_name为用户脚本。

msleaks <app_name> --analysis=inefficient --events=alloc,free,access,launch
  • 当使用低效内存识别功能时,需设置--events=access,alloc,free,launch。
  • msLeaks工具仅支持识别ATB LLM和Ascend Extension for PyTorch单算子场景的低效内存

自定义设置低效内存识别

低效内存识别可通过接口自定义设置,具体操作可参见API参考

结果说明

低效内存识别的结果会保存在leaks_dump_{timestamp}.csv文件中,具体信息可参见输出说明