yuanzhoulvpi2017 / zero_nlp

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

训练epoch的设置和效果问题 #88

Open GreatWildFire opened 1 year ago

GreatWildFire commented 1 year ago

设置的epoch为50的时候,能改名字,但是问的相关程度低的话会失败。同时对于其他问题的回答并不好,对于数据集中的问题回答效果差。 设置的epoch为90以上时,可以改名字,但是模型会不断重复回答名字,无法回答其他问题。 目前还没有解决这个问题。 同时采用了Chat-glm 6b的ptuning微调方案,这个epoch设置为30. 遇到了类似的问题,这个方案微调训练后只能回答本数据集中的问题,不管问什么问题都只会回答本数据集的相关答案。 搞不清楚是什么原因,按照lora和ptuning的原理来说应该不会这样的,不知道是不是微调的并没有收敛或者什么的,所以和原来的参数结合的不好。如果有明白的大佬,请不吝赐教,希望我的失败经历能给大家带来点帮助。

这个改名字效果可能也与同义句数据比较少有关,但是微调后对训练数据集的回答很差还是搞不懂。并且原模型的效果也会受到很大影响。

Emperorizzis commented 1 year ago

其实从lora的原理来看,他其实是通过矩阵低秩分解 然后去优化分解的矩阵 来达到优化原矩阵的目的,本质上其实在降低训练资源占用量,但其实还是在反向传播原矩阵 (因为原参数矩阵和分解的矩阵会pointwise加和,计算loss的时候虽然原矩阵无梯度,但是会计入loss) 从原理来看,如果训练的学习率过大、训练周期过长,是大概率会造成模型知识灾难性遗忘的(ps: 我个人在训练改名实验的时候,一开始学习率设置的很大,epoch设置的也比较多,loss降到了0.1以下后 模型出现了和你类似的灾难性遗忘问题,只会回答“我是谁”,不会回答其他问题了) 所以对于lora来说,如果仅使用原模型+lora的方法,想尽量保证不遗忘原知识也能达到增量微调的目的的话,这其实是一个调参性质的问题(训练少必然导致学不到,训练多必然导致过拟合/知识灾难性遗忘) 大语言模型增量训练也算是最近新兴的方向之一吧

如果有最新的有关增量训练更好的方法,欢迎一起交流哈👏🏻 ~

fengzehui0422 commented 11 months ago

请问ChatGLM-v2-6b的Lora微调该如何设置epoch,我没找到epoch的相关参数

onekid commented 3 months ago

epoch设置为80,数据集中的很多问题都回答不上来

onekid commented 3 months ago

请问ChatGLM-v2-6b的Lora微调该如何设置epoch,我没找到epoch的相关参数

应该是max_steps吧,我倒是没找到学习率参数,而且我训练到最后loss也只是从3.2降到1.4左右