jiahe7ay / MINI_LLM

This is a repository used by individuals to experiment and reproduce the pre-training process of LLM.
327 stars 52 forks source link

在V100上训练总是出现loss为0,grad_norm为Nan的情况,不知是否有相似情况的? #17

Open Willamjie opened 5 months ago

Willamjie commented 5 months ago

已经所有bf调成false,fp16开启或不开启loss都会很快变成0 grad_norm爆炸,很奇怪

Willamjie commented 5 months ago

0zm3m12000di9uyme3096

jiahe7ay commented 5 months ago

别人使用v100训练也有这种情况 已在排查

wtxfrancise commented 5 months ago

有找到原因么~

Willamjie commented 5 months ago

有找到原因么~

大概找到了,在v100上使用fp16会自动起一个GradScaler,虽然能在transformer的trainer库中设置fp16为true,但在GradScaler中无法使用fp16,导致这个问题,训练的精度设置和模型的精度设置无法匹配,感觉像是更高版本的库之间不兼容的问题,暂无法解决,不过可以使用fp32位训练

wtxfrancise commented 5 months ago

你是几张V100的卡,效率怎么样?换成fp32后,batchsize设置为1了都会导致OOM

有找到原因么~

大概找到了,在v100上使用fp16会自动起一个GradScaler,虽然能在transformer的trainer库中设置fp16为true,但在GradScaler中无法使用fp16,导致这个问题,训练的精度设置和模型的精度设置无法匹配,感觉像是更高版本的库之间不兼容的问题,暂无法解决,不过可以使用fp32位训练