PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
21.79k stars 5.47k forks source link

Paddle3D下PETR算法训练无法收敛 #56493

Open LeungWaiHo opened 10 months ago

LeungWaiHo commented 10 months ago

请提出你的问题 Please ask your question

Hello, 根据https://github.com/PaddlePaddle/Paddle3D/tree/develop/docs/models/petr 下训练命令, 无论是单卡还是多卡,都无法收敛,总在某一阶段后LOSS突然增大/与Box相关的LOSS突然为0;

LielinJiang commented 10 months ago

请问使用的paddle的是什么版本,数据集annotation是使用上述doc中提供的不?

LeungWaiHo commented 10 months ago

请问使用的paddle的是什么版本,数据集annotation是使用上述doc中提供的不?

您好,我用的是2.4.2的paddle-gpu,数据集和annotation都是按照doc中在nuscenes上下载下来的

LielinJiang commented 10 months ago

麻烦使用doc中提供的预训练模型测试下精度有没有问题

LeungWaiHo commented 10 months ago

麻烦使用doc中提供的预训练模型测试下精度有没有问题

精度没问题,mAP和NDS都和docs中的一致

LielinJiang commented 10 months ago

好的,那就奇怪了。麻烦给下你的训练命令,我们复现一下

LeungWaiHo commented 10 months ago

好的,那就奇怪了。麻烦给下你的训练命令,我们复现一下

我的命令就是原doc的训练命令python -m paddle.distributed.launch tools/train.py --config configs/petr/petr_vovnet_gridmask_p4_800x320.yml --num_workers 2 --log_interval 50 --save_interval 1 --keep_checkpoint_max 100 --save_dir out_petr --model fcos3d_vovnet_imgbackbone-remapped.pdparams

LeungWaiHo commented 10 months ago

好的,那就奇怪了。麻烦给下你的训练命令,我们复现一下

btw,我是用的四张V100(16G)复现,所以我把petr_vovnet_gridmask_p4_800x320.yml里的T_max和warmup_steps分别改成了168792和1000

LielinJiang commented 10 months ago

这两个调整没问题。还有一个点是我们默认使用8张卡的,用4张卡,总的batch size减小一半。学习率也应该调整为原来的1/2

LeungWaiHo commented 10 months ago

这两个调整没问题。还有一个点是我们默认使用8张卡的,用4张卡,总的batch size减小一半。学习率也应该调整为原来的1/2

我改完这些参数之后,还是有loss突然增大的现象,我在想是不是我的数据集差了1张图片,导致这样总iter数是168792而不是原本84408的两倍

LielinJiang commented 10 months ago

按道理,一两张图片的差距不会造成这种问题。你显卡显存够吗,试试batch_size=2 4gpu训练?

LeungWaiHo commented 10 months ago

按道理,一两张图片的差距不会造成这种问题。你显卡显存够吗,试试batch_size=2 4gpu训练?

我之前也有试过batch_size=2 4gpu,但是也会有这种现象

LielinJiang commented 10 months ago

哦哦,可以分享一下你训练的log嘛

LeungWaiHo commented 10 months ago

哦哦,可以分享一下你训练的log嘛

log.txt

LielinJiang commented 10 months ago

workerlog.txt 我训了一版,没有复现你的问题。建议参考下我的环境和配置。感觉可以升级cuda到11.2及以上的版本试试

LielinJiang commented 10 months ago

这个上面训练后评估的结果: image

LeungWaiHo commented 10 months ago

workerlog.txt 我训了一版,没有复现你的问题。建议参考下我的环境和配置。感觉可以升级cuda到11.2及以上的版本试试

您好,我在paddle环境中安装的是cuda11.2,然后paddle安装是2.4.2.post112版本,但是我显示的是nvcc - Cuda compilation tools, release 10.1, V10.1.105而不是您的nvcc - Build cuda_11.2.r11.2/compiler.29558016_0

LeungWaiHo commented 10 months ago

workerlog.txt 我训了一版,没有复现你的问题。建议参考下我的环境和配置。感觉可以升级cuda到11.2及以上的版本试试

log.txt 我昨天训了一版,优化器设置跟您的一样,但还是出现损失陡增然后梯度消失的问题

LielinJiang commented 10 months ago

升级一下cuda环境试试呢?我看用的还是10.1.可以用下paddle的docker

LeungWaiHo commented 10 months ago

升级一下cuda环境试试呢?我看用的还是10.1.可以用下paddle的docker

我在anaconda的paddle环境里面安装的cudatoolkit的是11.2,但是log.txt里CUDA: nvcc - 后面显示的是机器nvcc -V的版本; 因为机器是远程服务器,所以不好修改机器的cuda环境;