Closed vscv closed 1 year ago
@vscv 感觉是你没有开amp(混合精度)模式的缘故
@MINGtoMING 謝謝您的提醒,剛加了--amp參數,錯誤還是一樣的。
@vscv 我重新试了一下找到原因了:训练运行rtdetr_focalnet_L_384_3x_coco是会先加载FocalNet(focalnet_L_384_22k_fl4)的预训练权重,这个权重的dtype是float16,paddle不支持直接加载float16权重,是这个导致的报错, 之后才会重新继续加载rtdetr_focalnet_L_384_3x在obj365上的预训练权重,这个权重是可以正常加载的。 解决方法:不要加载FocalNet(focalnet_L_384_22k_fl4)的预训练权重,但如果设FocalNet::pretrained=None, 它还是会自动从默认链接下载并加载float16格式的权重,所以我们直接设FocalNet::pretrained=rtdetr_focalnet_L_384_3x在obj365上的预训练权重的链接,即可如下图:
FocalNet的其他scale的模型的预训练权重我随机检查了几个都是float32的,可能就这个focalnet_L_384_22k_fl4是float16
@MINGtoMING 謝謝大佬解惑。
我改完之后会出现这个问题。。找遍了都找不到解决TypeError: init() got an unexpected keyword argument 'query_pos_head_inv_sig
问题确认 Search before asking
Bug组件 Bug Component
Training
Bug描述 Describe the Bug
AssertionError: Variable dtype not match, Variable [ conv2d_0.w_0 ] need tensor with dtype paddle.float32 but load tensor with dtype paddle.float16,
使用rtdetr_focalnet_L_384_3x_coco会报上述错误。
但使用rtdetr_r50vd_6x_coco則訓練正常。 python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml --fleet --eval
复现环境 Environment
paddlepaddle-gpu==2.5.1.post120
$nvcc --version
$python3 -c "import platform;print(platform.architecture()[0]);print(platform.machine())"
$python -c "import paddle; print(paddle.version)"
$python -c "import paddle; paddle.utils.run_check()"
$./build/all_reduce_perf -b 8 -e 256M -f 2 -g 8
[重現報錯指令] $python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/rtdetr/rtdetr_focalnet_L_384_3x_coco.yml --fleet --eval
Bug描述确认 Bug description confirmation
是否愿意提交PR? Are you willing to submit a PR?