PYNATIVE 模式训练完全正常,切换到静态图模式,显存会随着训练逐渐增加,最终逐渐增加到显存溢出,请问这个问题如何定位和解决?
另外,训练存在一个现象,每运行一个batch就会打印很多信息,不清楚这个是否是正常现象?
****************************************************解答*****************************************************
先看看这里https://bbs.huaweicloud.com/forum/thread-169771-1-1.html 有没有帮助。另外也有可能是因为使用了某个有显存泄露风险的算子。
至于打印信息,一般是不会有这么多输出的。是不是有什么开关打开了?但看报错信息没法定位。
打印信息的话,可能是你加了什么callback?
动态shape方面,首先需要知道你是什么版本。mindspore1.8开始支持动态shape,因此这方面会造成和之前版本不大一致的表现。你可以先试试用不同的版本跑,是否都会复现一样的问题。
至于哪个输入是动态shape的,实际上,一开始的输入都不会是动态的,但是某些算子支持动态shape的话,它可能会推导出某个shape为动态的,造成后面一系列的动态shape。这方面可以参考比如这个:https://www.jianshu.com/p/c4ab4691f9f4
静态图出错的话会有一个输出analyze_fail.dat ,可以找所有----->语句之后的报错信息进行分析。可以参考https://www.mindspore.cn/docs/programming_guide/en/r1.6/read_ir_files.html ,虽然不是很好懂。
另外,可以使用export GLOG_v=0 来查看日志。参考https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.5/custom_debugging_info.html :