MMdet3D--BEVFusion【2】训练报错以及解决方案

训练配置 RTX3090  单卡 24G cuda-11.8 torch-2.0.1

数据集 nuscenes-v1.0mini

前面我们已经对仅only-lidar进行训练,能够顺利跑通Mmdetection3d学习笔记--bevfusion跑通 在nuscenes v1.0-mini数据集上_孔猪猪的男朋友的博客-CSDN博客但是在训练lidar-camera融合时就报错。

1.报错一 :分布式训练出错

我先是报的分布式训练出错。理论上我是单卡,即便我调用了分布式训练应该也能查到我的cuda号,我查阅了csdn很多方案,比如在训练前通过添加语句指定cuda使用哪一块来固定,以及在训练时指定参数1,依然没用,最后再查看tools底下的dist_train.sh文件有个gpu项,原来是8,将它改成1即可,就会取消分布式训练。记得dist_test.sh也要改一下,因为它的runner包含了训练和测试部分。

2.报错二 :cuda out of memory

真的很致命这个问题。原论文使用的也是RTX3090 8张卡,每张卡4个Batch。我将lidar-camera的配置文件中的base_batch_size调整为1,依然oom:

就很费解,甚至去学习了一遍swintransformer网络架构 ,想要缩小图片再训练一遍图像权重,但是我的代码能力还是在copy阶段,所以放弃。

然后和群里同样想要训练bevfusion的群友进行讨论,给他看了我的batch_size修改处,结果他跟我说要改lidar_onlyconfig文件下的Batch_size:如下图所示:

 原来train_dataloader底下的batch_size为4, 现在改为2 ,就可以训练了。

 这是因为lidar-cam通过_base_继承了lidar-only的配置,所以需要通过修改lidar-only的batch_size 才有用。

 训练如下:

 batch_size=2的时候显存占用情况如下,可想而为4的时候真的狠狠oom了。。。

总结:感觉相同配置下,论文不会oom而Mmdetd/proj下的项目会还是代码的原因。但是小白真的不会修改别人的代码(卡Bug好几天了),尝试过清除缓存,尝试过指令将散落的cuda块统一起来(现在想起来我24576MiB差不多占了23000多,怎么可能有散落的。。)都没有用,还是和群友交流共同找办法有用。跑通了就可以开始学习别人的代码啦!希望对大家有帮助~

----------------------------训练6个epoch结果如下(第七个epoch)开始过拟合--------------------------------

可视化结果显示

 可能因为使用的是mini数据集,所以最后的结果精度不是很高~~

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值