首页 Paddle框架 帖子详情
训练一段事件后,显存不足
收藏
快速回复
Paddle框架 问答模型训练 3243 14
训练一段事件后,显存不足
收藏
快速回复
Paddle框架 问答模型训练 3243 14

最近比赛,用2080ti训练模型,发现一个情况,查了两天没解决

训练过程中,每个epoch跟一个val,验证精度

每2000个iter保存一次模型和opt(admin)参数

在训练4到10个epoch后,报显存不足的错误

 

所有变量都有归零操作,所有积累变量用类似loss.item()的方式取值

疑惑,有哪些变量是积累的,不释放而且占用显存?

多进程引起的或者是其他引起的?

我怎么才能追出来?

没思路,痛苦

0
收藏
回复
全部评论(14)
时间顺序
Y_kira
#2 回复于2022-02

显存有没有基本占满呢? 降低bs试一次。

0
回复
奔向未来的样子
#3 回复于2022-02
Y_kira #2
显存有没有基本占满呢? 降低bs试一次。

没有占满,如果沾满了启动或者第一次验证的时候会卡住

运行到第四个epoch,显然不是初始设定的问题

0
回复
Y_kira
#4 回复于2022-02
没有占满,如果沾满了启动或者第一次验证的时候会卡住 运行到第四个epoch,显然不是初始设定的问题

那不一定的。你占用多少?比如24G你占用23G?

 

0
回复
深渊上的坑
#5 回复于2022-02

可能是eval时候出现的?

0
回复
深渊上的坑
#6 回复于2022-02

paddlex现在每次训练完要重启内核,不然显存释放不了

0
回复
奔向未来的样子
#7 回复于2022-02

没有用框架,用的paddlepaddle API

第一次eval的时候也没出现,这正是我迷惑的地方,按道理讲,train和eval都过去之后,不应该出现缓存不足的情况

每一个epoch都val一次,但是运行到第四个epoch才报错。

我现在怀疑,adam的opt,随着训练,里面内容是累计的

保存了从训练开始的动量和二阶动量

但不知道怎样验证,也不知道怎么解决

0
回复
ygq
#8 回复于2022-02

看起来是显存没有合理的释放。检查一下代码里面看看吧。

0
回复
十进制到二进制
#10 回复于2022-02

我之前也在pytorch里遇到同样的问题,大概是因为验证的时候用testdataload导致内存炸了,解决办法可以尝试下:https://aistudio.baidu.com/aistudio/projectdetail/3465771

 

将中间过程变量删除,然后清除内存,pytorch里就可以解决了。paddle里我还没遇到过这种问题。

0
回复
skywalk163
#11 回复于2022-02

是在notebook里面吗? 可以试试改成终端里运行试试,notebook下可能会有忽略的变量占用。 

另外是不是计算梯度的时候,有些变量的梯度没有释放? 

还有极小的概率是飞桨自己的bug,但一般不会碰到。

0
回复
奶瓶大爸爸
#12 回复于2022-02

可能是多进程引起的,找到多进程读文件参数,我用paddleocr 默认1000  在平台上内存溢出 后来改成30了。。。。batch_size  20 ~

0
回复
4
432412
#13 回复于2022-02

1

0
回复
奔向未来的样子
#14 回复于2022-02
可能是多进程引起的,找到多进程读文件参数,我用paddleocr 默认1000  在平台上内存溢出 后来改成30了。。。。batch_size  20 ~

我去试试多线程设置为0

0
回复
奔向未来的样子
#15 回复于2022-02
是在notebook里面吗? 可以试试改成终端里运行试试,notebook下可能会有忽略的变量占用。  另外是不是计算梯度的时候,有些变量的梯度没有释放?  还有极小的概率是飞桨自己的bug,但一般不会碰到。
展开

是离线环境,在pycharm里面

0
回复
进击的钝角
#16 回复于2022-03

在aistudio上也遇到过,现在训练时都会预留一些显存

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户