HorizonRobotics / Sparse4D

MIT License
298 stars 26 forks source link

interrupted after a day of training #54

Closed flora077 closed 2 months ago

flora077 commented 3 months ago

hi,I am running this project on four V100 GPUs, but it was interrupted after a day of training and reported the following error. Can you tell me why this happened img_v3_02bi_b9c931e7-49b1-41a5-8789-3d5de6ff294g

flora077 commented 3 months ago

20240604_163516.log.json 林博,这是我的log

flora077 commented 3 months ago

我使用多卡训练并且只改动了CUDA_VISIBLE_DEVICES以及配置文件中的内容total_batch_size = 16 num_gpus = 4 batch_size = total_batch_size // num_gpus num_iters_per_epoch = int(28130 // (num_gpus * batch_size)) num_epochs = 100 checkpoint_epoch_interval = 20,难道是还有什么地方需要改动的?

linxuewu commented 3 months ago

你的log里面grad_norm已经nan了,这是因为你减小了total_batch_size 但是没有减小lr,如果设置total_batch_size =16,那么建议把lr缩小至2e-4以内。

关于图片里面那个cuda oom的error,你训练开始的时候显存稳定在多少g了?

flora077 commented 3 months ago

附件中是我最新的log。我更改了设置,使用单卡进行训练,并且total_batch_size=2,学习率为1e-4,目前正在正常训练中,gpu使用如下 img_v3_02bk_b1fa4890-e3bf-4600-83ae-830acf0ba66g 。我不知道为什么使用多卡训练会发生AssertionError: loss log variables are different across GPUs! · 20240606_085930.log.json 感谢林博的耐心回答,嘿嘿

flora077 commented 3 months ago

image 又出现了梯度消失的情况,难道我还需要调小学习率嘛?或者我需要将batchsize改为4?

linxuewu commented 3 months ago

total_batch_size=2,这个batch_size过于小了,模型很难收敛。我没有试过这么小的batch size,不确定应该设置多小的学习率才行,我怀疑训不出来。建议还是用个正常的batch size。

flora077 commented 3 months ago

好滴,我现在设置了batchsize为4 lr为1e-4,正在训练中

flora077 commented 3 months ago

经过一天的训练后,并没有出现nan的情况,但是发生了奇怪的错误,ValueError: Length of names must match number of levels in MultiIndex. image

linxuewu commented 3 months ago

这是在tracking评测的时候报的错。

detection的指标正常吗?

flora077 commented 3 months ago

detection的指标是指log的loss吗? image

flora077 commented 3 months ago

这是评估的结果 img_v3_02bq_edfcf25a-3ad9-4ecc-9714-578461a1338g img_v3_02bq_380ddb98-02ee-4f65-a694-a376c1749cfg

linxuewu commented 3 months ago

你这训练还是没有收敛。同样地,我没有试过batch size=4。

你这是已经训了多少step了?

可以先把evaluation 关了(防止报错),多训一会,batch size小可能收敛会比较慢。

flora077 commented 3 months ago

好的,我更改了配置文件evaluation = dict(

interval=num_iters_per_epoch * checkpoint_epoch_interval,

interval=1e9,
pipeline=[],
#pipeline=vis_pipeline,
out_dir="./vis",  # for visualization

),目前正在训练中。我之前才训练到第一个epoch

MandyMo commented 3 months ago

好的,我更改了配置文件evaluation = dict( #interval=num_iters_per_epoch * checkpoint_epoch_interval, interval=1e9, pipeline=[], #pipeline=vis_pipeline, out_dir="./vis", # for visualization ),目前正在训练中。我之前才训练到第一个epoch

大兄弟,这个问题现在解决了么

MandyMo commented 3 months ago

稍微低于 paper Tab. 3 里面列出的指标,大家有碰到类似的情况么