OpenGVLab / VideoMamba

VideoMamba: State Space Model for Efficient Video Understanding
https://arxiv.org/abs/2403.06977
Apache License 2.0
660 stars 47 forks source link

在breakfast和somthingv2数据集训练过程中loss都出现nan #57

Open sunxin010205 opened 1 month ago

sunxin010205 commented 1 month ago

感谢您的精彩的工作,请问训练loss出现nan可能是哪里的原因,以及应该如何修改呢?期待您的早日回复!

Andy1621 commented 1 month ago

我的经验是从头预训练阶段容易nan,这些下游微调一般不会nan。要解决的话,可以尝试把混合精度关掉

sunxin010205 commented 1 month ago

我的经验是从头预训练阶段容易nan,这些下游微调一般不会nan。要解决的话,可以尝试把混合精度关掉

是的 我是从头预训练的,请问一下混合精度在哪里关闭?

sunxin010205 commented 1 month ago

我还想请问一下,在video_sm任务里,从头与训练的命令应该是bash ./exp/k400/videomamba_middle_mask/run_mask_pretrain.sh,然后bash ./exp/k400/videomamba_middle_mask/run_f8x224.sh是对他进行微调或者是进行评估的,我的理解应该是对的吧?不好意思,我是新手,可能问的问题比较简单,感谢您的回复!

Andy1621 commented 1 month ago

我还想请问一下,在video_sm任务里,从头与训练的命令应该是bash ./exp/k400/videomamba_middle_mask/run_mask_pretrain.sh,然后bash ./exp/k400/videomamba_middle_mask/run_f8x224.sh是对他进行微调或者是进行评估的,我的理解应该是对的吧?不好意思,我是新手,可能问的问题比较简单,感谢您的回复!

对的

Andy1621 commented 1 month ago

我的经验是从头预训练阶段容易nan,这些下游微调一般不会nan。要解决的话,可以尝试把混合精度关掉

是的 我是从头预训练的,请问一下混合精度在哪里关闭?

这些下游任务建议load预训练模型做,性能也更好~

sunxin010205 commented 1 month ago

我的经验是从头预训练阶段容易nan,这些下游微调一般不会nan。要解决的话,可以尝试把混合精度关掉

是的 我是从头预训练的,请问一下混合精度在哪里关闭?

这些下游任务建议load预训练模型做,性能也更好~

好的 感谢您的回复,另外我想请问一下关于breakfast数据集没有预训练的sh文件吗?

Andy1621 commented 1 month ago

Breakfast用的是k400的训练

sunxin010205 commented 1 month ago

我的经验是从头预训练阶段容易nan,这些下游微调一般不会nan。要解决的话,可以尝试把混合精度关掉

是的 我是从头预训练的,请问一下混合精度在哪里关闭?

这些下游任务建议load预训练模型做,性能也更好~ 我好像明白了,您的模型都是在Imagnet数据集上进行训练,然后在Short-term Video Understanding和Long-term Video Understanding的任务中,都是直接调用在Imagnet数据集上的训练模型,然后微调吗?

Andy1621 commented 1 month ago

有的是用掩码预训练的模型,可以看具体的shell文件调用的模型

sunxin010205 commented 1 month ago

Breakfast用的是k400的训练 用k400的run_mask_pretrain.sh训练完 Breakfast的数据集,然后再利用k400的run_f8x224.sh对他进行评估吗

Andy1621 commented 1 month ago

请结合论文和具体的shell看

对于breakfast,用的都是k400的训练模型,但这个k400的训练模型,有的是imagenet预训练,有的是掩码从头预训练

sunxin010205 commented 1 month ago

请结合论文和具体的shell看

对于breakfast,用的都是k400的训练模型,但这个k400的训练模型,有的是imagenet预训练,有的是掩码从头预训练

好的 感谢您的回复 原来如此 那在k400和sthv2数据集,如果从头开始预训练,都需要800个epoch吗?我现在使用一张H800,可能完成训练就要十几天

Andy1621 commented 1 month ago

单卡不太建议从头训练,可以直接微调预训练模型

sunxin010205 commented 1 month ago

单卡不太建议从头训练,可以直接微调预训练模型

是的 因为我是对原版mamba做了一些改进,所以想要在一些mamba的应用上看一下效果如何,所以需要从头训练。但是我看k400和sthv2数据集需要的时间太久了,所以我在breakfast数据集从头训练,但是运行run_class_finetuning.py一直会报这个错误: RuntimeError: Error(s) in loading state_dict for VisionMamba: Missing key(s) in state_dict: "head.weight", "head.bias", "norm_f.weight". Unexpected key(s) in state_dict: "norm.weight", "clip_decoder.0.head.weight", "clip_decoder.0.head.bias", "clip_decoder.0.norm.weight", "clip_decoder.0.norm.bias". 另外我想请问一下,可以多卡训练吗?