open-mmlab / mmdetection

OpenMMLab Detection Toolbox and Benchmark
https://mmdetection.readthedocs.io
Apache License 2.0
28.71k stars 9.32k forks source link

MM-Grounding DINO训练过程中显存增加 #11429

Open zkyseu opened 6 months ago

zkyseu commented 6 months ago

您好,我训练过程中发现MM-Grounding DINO显存在不断增加,我清楚Randomchoice resize可能是导致这个原因,但是为何batchsize=2,memory=12866,3090的24GB显存会溢出呢。我看训练过程中GPU的memory不断增加,这是什么原因?

hhaAndroid commented 5 months ago

不会呀,我就是用的 3090 训练的,swin-t 的所有实验都是在 3090 上跑完的。

hhaAndroid commented 5 months ago

你可以看一下我们发布的训练log

zkyseu commented 5 months ago

@hhaAndroid 我看我这边训练log里mmdetection 输出显存占用为memory: 5951,为何用nvdia-smi查看时候GPU占用11959MB,这是为何

zkyseu commented 5 months ago

@hhaAndroid 还有个不太理解的地方,当迭代到1000次迭代时候,显存会有一个明显的增加,这个是为何呢

hhaAndroid commented 5 months ago

@zkyseu log 里面显示的 memory 是会偏小的,但是 nvdia-smi 中显示是最大能占用的,其实都不准确。3090 应该不会 OOM 的,我们模型就是 3090 上训练的。

Baboom-l commented 5 months ago

可能是torch版本原因吗? @hhaAndroid 训练的torch版本等环境信息可以发布吗

lanhas commented 5 months ago

应该和torch版本有关,高版本的pytorch为了提高训练速度可能会申请非常多的空间。我用的是torch2.1,batch_size为4时在A100上显存甚至会从18G增长到50G,但同样的容器在4090上训练了20个epoch也没有出错。

KDgggg commented 4 months ago

您好,我训练过程中发现MM-Grounding DINO显存在不断增加,我清楚Randomchoice resize可能是导致这个原因,但是为何batchsize=2,memory=12866,3090的24GB显存会溢出呢。我看训练过程中GPU的memory不断增加,这是什么原因?

请问解决了吗,我是8张Tesla_V100_SXM2_32_GB,也显示显存溢出