最近在用 PyTorch 微调一个 7B 左右的模型,用的是混合精度加 gradient checkpointing。训练大概几百步之后 loss 会突然变成 NaN,但把整个训练从头重启一遍,同样的数据和超参又能正常跑完。试过调小学习率、加 gradient clipping,好像只是把出现 NaN 的步数往后推了一点。看网上说是 fp16 溢出,但也有人讲是 loss scale 的问题。有没有大佬能解释下这到底是哪里出的问题,以及一般怎么系统排查这种偶发的 NaN?
最近在用 PyTorch 微调一个 7B 左右的模型,用的是混合精度加 gradient checkpointing。训练大概几百步之后 loss 会突然变成 NaN,但把整个训练从头重启一遍,同样的数据和超参又能正常跑完。试过调小学习率、加 gradient clipping,好像只是把出现 NaN 的步数往后推了一点。看网上说是 fp16 溢出,但也有人讲是 loss scale 的问题。有没有大佬能解释下这到底是哪里出的问题,以及一般怎么系统排查这种偶发的 NaN?
暂无回复,快来抢沙发吧