大家好,欢迎来到IT知识分享网。
微调大模型chatglm baichuan llama都给出了非常简单的教程,大家通过简单配置,通过简单的样例数据,可以比较容易的finetuning 你的大模型但是少量的数据finetuning 通常不能得到比较好的效果,模型出现过拟合, 出现遗忘现象,会让原本模型能力下降;
这里我们可能需要想清楚fine-tune的目的和场景是什么:
一 构建我们自己的垂直领域大模型(垂直域数据很重要,数据整理也很重要)
如果我们想创建一个垂直领域的大模型,那么比较好的做法是进行无监督的继续预训练,同时也要构造带标注的指令微调数据,将垂直领域(中文领域)的知识注入到模型中。(构造指令微调数据的时候,相对于数量,我觉得更应该关注多样性,尽量构造多个不同场景、不同任务的数据,同时指令的描述形式也需要多样化。)当然,这个阶段要防止模型把通用知识遗忘,需要同时引入通用领域的语料。
在BloomBerg训练的金融领域大模型BloomBergGPT、度小满训练的金融领域大模型轩辕2.0都是将通用语料与金融语料混合进行训练。BloomBerg尽量让通用语料与金融语料达到1:1的混合比例。度小满则是使用了一种专门设计的混合方式,简单来说就是将数据按照是否通用、是否带标注的指令数据等特性切分成块,包括通用无监督语料、金融无监督语料、通用标注指令语料、金融标注指令语料。然后将这些语料块打散随机组成训练的batch
如果受限于训练成本无法全量参数做训练或者获取数据有难度,我建议直接找合作厂商或者直接等其他机构出相关的垂域模型。因为即使是勉强使用lora、ptuning等方式做高效参数微调,得到的模型效果有很大概率无法实际应用
二 另外一种finetune场景估计是题主的场景,就是有个下游任务,想用大模型finetune做这个任务。所以一般标注数据量不会太大。此时可能又要分几种细分的情况:
(1)faq对话类任务,想让大模型直接学习当前对话库中的问答数据,目标是想让大模型能够直接对相关问题给出回答。——这种场景,我们尝试用lora微调了一下,可以明确地说大模型很难给出正确的回答。通过这样的训练,大模型确实可以学习场景中的语言表达方式以及领域相关主题内容,但是对于问答库中的具体答案内容是无法完美学习的,尤其是在6B、7B模型的情况下。(估计很多机构也没有成本去尝试超过20B的模型微调)因此,这种场景更适合结合langchain、autogpt等方式,将本地知识库的访问工具化,让大模型不直接做回答,而是做用户意图理解、知识检索与整合的工作。
(2)文本分类、抽取、摘要等传统NLP任务。我觉得大模型对这类任务应该是天然适配的。理论上并不需要太多的数据进行微调,微调的主要意义主要有两点:一个是让大模型学习这种任务的模式,学习要让他干什么;另外一种在于让大模型学习一些任务场景的上下文行文风格,例如金融领域中对研报指标的抽取,会有诸如“指标1/指标2/指标3,指标数值1/指标数值2/指标数值3,yoy同比1/同比2/同比3”这样的行文,在一般领域下面会比较少见。其实,理论上来说甚至不需要做微调,直接在prompt中加入一些样例,采用few-shot的形式引发大模型的In-context learning能力。但由于大模型的输入context长度通常有限制,而样例涉及的上下文通常也比较长,所以很多时候还是要做微调。
至于这种场景如何防范过拟合?我觉得过拟合也不是不可以,因为你就是让他专门做这个任务的,又不是要弄一个啥都会的模型,如果在这个任务上能够做的很好,损失掉一些通用知识也无伤大雅,而且对于一个任务来说,大部分的知识肯定是冗余的,并不需要。所以我觉得可能未来大模型的一个发展方向可能还是要参考MoE的路子,做一个任务只需要对应专家(小模型,或者大模型中的参数子集)参与就行了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/51009.html