yolov4-pytorch icon indicating copy to clipboard operation
yolov4-pytorch copied to clipboard

训练中突然停止,也不报错,就一直停在那里

Open wusheng816 opened this issue 4 years ago • 23 comments

第一个epoch就出现这种问题,手动中断训练,再次运行train.py,还是相同的情况,不过每次停止的iter都不一样。

感谢UP的分享!

wusheng816 avatar Jul 24 '20 05:07 wusheng816

应该是显存OOM,但我batch_size设成1,input设置为418*418,用的Titan X 12G显卡,还是一直出现这个问题。

wusheng816 avatar Jul 24 '20 10:07 wusheng816

没有道理。12G不可能这样爆显存。。输入应该是416x416吧

bubbliiiing avatar Jul 24 '20 14:07 bubbliiiing

相同的数据集(45000张图片,9比1划分训练集和验证集),在ultralytics yolov5x上跑没问题(input_size=640,batch_size=4,使用mosaic数据增强)。

不知道up主有没有拿大批量的数据集来训练过。

wusheng816 avatar Aug 01 '20 04:08 wusheng816

什么错误?

bubbliiiing avatar Aug 01 '20 04:08 bubbliiiing

我训练过COCO

bubbliiiing avatar Aug 01 '20 04:08 bubbliiiing

什么错误?

没有错误提示,训练就停在那里,不往下训练了,也不退出,这种情况都是出现在第一个epoch,不过每次的iter都不一样

wusheng816 avatar Aug 01 '20 04:08 wusheng816

显存OOM不会停在那里。会提示错误

bubbliiiing avatar Aug 01 '20 04:08 bubbliiiing

重下一下吧,最近换成了tqdm进度条,看看还有没有错误

bubbliiiing avatar Aug 01 '20 04:08 bubbliiiing

显存OOM不会停在那里。会提示错误

好的,等周一上班了再试一下。

wusheng816 avatar Aug 01 '20 04:08 wusheng816

跑到第13个epoch爆显存了,input_shape = (416,416),Batch_size = 4.

Epoch 13/25: 60%|██████ | 6080/10125 [25:21<23:04, 2.92it/s, lr=0.000282, step/s=0.306, total_loss=14.1]Traceback (most recent call last): File "D:\anaconda\lib\multiprocessing\queues.py", line 236, in _feed obj = _ForkingPickler.dumps(obj) File "D:\anaconda\lib\multiprocessing\reduction.py", line 51, in dumps cls(buf, protocol).dump(obj) MemoryError Epoch 13/25: 60%|██████ | 6088/10125 [25:40<19:00, 3.54it/s, lr=0.000282, step/s=0.248, total_loss=14.1]

wusheng816 avatar Aug 04 '20 00:08 wusheng816

,你这个是爆内存了。你可以减少num_works

bubbliiiing avatar Aug 06 '20 02:08 bubbliiiing

,你这个是爆内存了。你可以减少num_works

num_works设为2一样出错,设成0跑了3个epoch受不了了,训练太慢了

wusheng816 avatar Aug 11 '20 07:08 wusheng816

训练时,修改Use_Data_Loader = False(原来为True),这个修改会使num_workers,pin_memory参数不再生效,同时将batch_size改小,比如修改为8. 测试时,可以将测试时的batch_size改为原来的1/3或者1/2. 2070S这样设置可以跑,不再无故卡死。

Eliza-and-black avatar Aug 27 '20 08:08 Eliza-and-black

一般无故卡死是因为多线程读取数据导致内存爆炸,所以大内存很重要,否则就调小num_works

bubbliiiing avatar Aug 28 '20 15:08 bubbliiiing

为0的话 等于Use_Data_Loader = False

bubbliiiing avatar Aug 28 '20 15:08 bubbliiiing

后来发现,训练时,可以将预训练模型加载在cpu上,num_works拉满,pin_memory=False,调整训练时的batch_size至内存有1G剩余;val时,除batch_size=Batch_size//5,其余参数相同。  这样也可以。

Eliza-and-black avatar Aug 29 '20 04:08 Eliza-and-black

Use_Data_Loader

请问Use_Data_Loader 这个参数在哪里

Sencc avatar Aug 16 '21 03:08 Sencc

已经取消这个参数了,自动使用pytorch的dataloader

bubbliiiing avatar Aug 23 '21 14:08 bubbliiiing

我也遇到了相同的问题,我是训练固定轮次就停下,不报错。继续训练,又训练相同轮数停下,已排除显存不够的问题。请各位大佬帮忙看一下如何解决。

Aning327 avatar Mar 25 '23 14:03 Aning327

我也遇到一樣的問題,不知道有沒有人已經解決了。

alisanissun avatar Mar 31 '23 01:03 alisanissun

一般无故卡死是因为多线程读取数据导致内存爆炸,所以大内存很重要,否则就调小num_works

你好 请问这种情况导致的内存爆炸能检测到吗 比如使用命令 watch free -h

还是说卡死之后内存会自动被系统释放

Esperanto-mega avatar Jun 14 '23 09:06 Esperanto-mega

Total Loss: 0.032 || Val Loss: 0.024 Save best model to best_epoch_weights.pth Start Train Epoch 52/200: 94%|▉| 1558/1660 [05:59<00:22, 4.55it/s, loss=0.0319, lr=0.00053 Process finished with exit code -1 我的v7运行到52轮就自动停止了,是什么原因。

Zxtxxx avatar Jul 08 '23 08:07 Zxtxxx

请问解决吗了,我也出现这个问题。代码中断,不显示任何错误提示。排查了很久都没有找到原因!

yidamyth avatar Jul 21 '24 02:07 yidamyth