Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》
云脑(mindtorch0.3环境)运行调试任务的时候报错
RuntimeError: Allocate memory failed
。同样的代码,我在3090(24GB显存)+intel(72GB内存)上跑没有问题,我看Ascend平台给的一张910有32GB显存和96GB内存。但是运行了几次都报错
RuntimeError: Allocate memory failed
。如下:我减少了数据集大小和
batch_size
大小但是还是报同样的错误。但我用top
看内存占用并不高。我又尝试用
GRAPH_MODE
,但是显示代码中有些操作不支持GRAPH_MODE
,于是就放弃了。请问这个报错是什么原因导致的呢?我要怎么改才能正常运行呢。
你好,这个报错信息应该是指的显存不足了,通过top命令是无法观察的。改变数据集大小或者bs执行的迭代数有所变化吗?另外,每次报错的迭代数是一致的还是随机的呢?可以把图模式遇到的报错也发一下。
改变
batch_size
或数据集大小后执行的迭代次数有变化,每次报错的迭代数是随机的。我之前在Ascend平台(mindtorch0.3镜像)上用Res34跑MNIST数据集显存也不足了(在默认的pynative_mode下执行),当时就觉得很奇怪。但是我用同样的代码(在默认的pynative_mode下执行),在调试任务下会报错显存不足,训练任务下就不会,环境全都是一样的。
另外图模式,我发现之前报错是因为图模式没有
with torch.no_gard():
,现在去掉这行之后就可以正常运行了。现在只有在默认的pynative_mode下才会报错显存不足。另一个思路,云脑环境是可以替换mindspore版本的,从https://www.mindspore.cn/versions 查看历史版本,安装2.3rc2或者2.3.0看下是否还复现问题
云脑环境的mindspore只有2.2.0和2.3.0的mindspore环境,其中只有2.3.0的mindspore环境有mindtorch(0.3.0)。可以看看我这个比较简单的仓库,就是我之前用Res34跑MNIST数据集的仓库,在pynative_mode下也有同样的显存不足的问题。或许更容易找到原因?
仓库地址:https://openi.pcl.ac.cn/davislee/davis202407221627027/src/branch/main
启动一个云脑调试任务,到仓库根目录下用
python main.py
就能执行了。MNIST数据集整个也都传到了仓库中,在仓库名/data
文件夹下。会遇到这样的报错:
Malloc Mem From Mem Pool failed
MindTorch一般是不会导致内存泄漏的。MindSpore框架在中间开发版本确实有几个点会触发显存泄漏,在新版本已经修复了,当前只能通过现替换环境中的mindspore版本来验证。
我通过
pip install mindspore==2.3.0rc2
下载了2.3.0rc2版本的mindspore。依旧报错:安装2.3.0rc1版本的,依旧报错:
但是安装了2.3.1的mindspore就可以正常运行了。