yuanzhoulvpi2017 / zero_nlp

中文nlp解决方案(大模型、数据、模型、训练、推理)
MIT License
2.85k stars 355 forks source link

chinese_dolly_v2_3b无法支持fp16进行训练问题 #104

Closed Bob199511 closed 1 year ago

Bob199511 commented 1 year ago

看作者在训练时遇到了这个问题,同样的我也遇到了这个问题,因为V100无法支持bp16类型的运算,只能死钻支持fp16的模型训练方法。捣鼓了半天,目前能运行了,结果还没出来,就先发发我的处理方式。

解决方式: 1.首先,我们可以看到加载的dolly-v2-3b的congfig.json文件中定义的 "torch_dtype": "bfloat16",我们直接改为"torch_dtype": "float32",如果直接改为“float16”会出现比较大的精度损失(BP16和FP32的数值表示范围一致,而FP16的表示范围要小得多) 2.然后,在trainer_dolly.py的TrainingArguments配置中将fp16设置为True, 将@click.option("--bf16", type=bool, default=True, help="Whether to use bf16 (preferred on A100's).")代码中的True改为False

做完这些程序就可以运行了,运行的效果还没出来,等结果。

yuanzhoulvpi2017 commented 1 year ago
  1. 不错不错,给你点赞👍。
  2. 不过:模型为fp32,训练的Trainer为fp16。显存并不会降低很多😂(只是好像,有待考量)。
Bob199511 commented 1 year ago

是的,显存不会降低很多,还发现问题是训练后的模型以fp32模式保存,大小为10G多了,模型相对于bloom-3B的6G较大,也可能自己设置存在问题,推理速度比较慢 image

yuanzhoulvpi2017 commented 1 year ago

dolly效果其实一般,建议看我的新仓库chinese_bloom。可以使用各个尺寸的bloom模型