报错信息
- 增加数据并行数,同时按比例增加卡数,理论上每张卡上的模型大小不变,占用显存也应该不变,但是这里增加数据并行数之后显存OOM了,使用
export MS_MEMORY_STATISTIC=1环境变量查看显存分配情况发现显存占用有明显提升。
dp=2
max static mem:1125453824 bytes,
peak used:1124418048 bytes,
dp=1
max static mem:973373440 bytes,
peak used:973373440 bytes,
问题根因
- 参考文档MindSpore静态图模式内存分析优化方法进行定位,对dp=1和dp=2的情况分别跑dry run,并用脚本分析日志,得到每个内存块的生命周期、大小、传递关系等信息(blocks.csv)。
- 对比两个场景,发现sigmoid算子显存占用显著增加。分别保存ir图,发现dp=2时sigmoid算子处做了重排布。