PaddleOCR训练时内存溢出解决办法暂列,PaddleOCR训练Python程序没反应,显卡功耗低,显存很高

现象

在使用过程中我经常会发现一个现象就是,我的程序会卡住,如果观察显卡的显存,你会发现显存占用了,但是功耗下去了,程序是没有在运行的入下图所示

nvidia-smi指令显示的如下

image-20201223172040594

image-20201223172123439

然后发现程序一直卡在这里,一点反应都没有,我是比较懵逼的

之前在PaddleOCR GitHub给的例程中,我尝试跑ICDAR2015,一开始出现过这个现象,我就尝试将batch_size调小了,你会发现确实有效果的,我的1200次也跑完了,但是我更换到ICDAR2019-LSVT之后发现,就非常容易崩,我心态也崩了,我甚至将batch_size调到了2,但是他在比较长的一段时间之后发现还是崩了。

我意识到可能这是一个比较严重的问题,就在issues上面找答案,最终参考#218,发现和内存是有关系和问题的。

通过指令

gonome-system-monitor

可以看到如下界面

image-20201223173858051

我的内存占用是21g,如果正常情况你会发现内存会慢慢增长然后到一个溢出的状态,然后内存会被释放,程序就一下不动了,这个应该就是内存溢出了吧,我也是第一次见到这种现象。

原因

参考#112和#218我得到的结果是,由于多线程的原因

image

如图这个函数的queue_size参数默认值是1000,也就是队列最多有1000数据,但是由于我们的GPU算力跟不上,旧的得不到释放,新的又往队列里面加,所以在累计之后会发现内存溢出。

解决办法

我个人的解决办法是有如下几点:

1.降低batch_size,在降低batch_size之后会十分有效地发现能暂时缓解这个问题

image-20201223175231951

文件是在./configs/det/内(因为我在做检测),看你调用的是什么配置文件就是什么。

2.如上图FAQ所示修改那个函数的参数值(个人感觉那个FAQ已经删了,因为没找到),这个函数的路径在

./ppocr/data/reader_main.py内,第70行,需要修改queue_size参数,默认1000,我大概修改到150发现内存能稳定在22g左右

3.需要修改num_workers参数,在github上看到有老哥说,将这个参数改到1就不会出问题,但是训练速度会变慢,就个人而言,我发现是,修改这个参数无明显现象,有待考证。该参数路径为

./configs/det/的reader函数,也就是你的配置文件yml所指向的reader_yml(上图中有)

目前我的数据集为ICDAR2019-LVST,我大概划分了1/8为测试集来使用,在RTX2060上暂时稳定工作

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值