时代就是个轮回,当年秦始皇追求仙丹,圈养了一批术士,疯狂炼丹。现如今我们在寻找大模型的路上也不断地去调参数以及对大模型进行微调,我们也被称为-“炼丹术士”,而微调的过程我们称为--“炼丹”。
上一节已经讲过,嵌入式数据库可以完成一部分功能,但是我们想要追求更高的客制化,以及更高的准确定,时序需要进行微调的,嵌入式是数据库没有改变模型的结构,是用基础的模型结构去在数据库中寻找答案;而微调却是直接对模型的结构进行更改,使其在运行中就已经依赖于专业的模型知识。当然能达到更好的效果,现如今很多专业领域的大模型都是根据预训练大模型微调的。同时微调也能够模糊掉预训练模型,如果专业大模型开发者不说,几乎很难确认到底使用了什么预训练基础底座。所以这也是护城河的一部分。
微调步骤
微调。通俗来说是预防训练网络的下一步加强,预训练网络训练的仅仅是预测下一个字符的能力,而对于能够自由问答的大模型是要经过微调的。也就是预训练网络是不能使用的,我们现如今直接使用的都是经过微调的文档。更加具体的是:我们使用的是ChatGPT,而不是GPT,虽然说我们经常挂在嘴边的是GPT;同时ChatGPT也是经过GPT微调得来的。 微调最大的难题在于参数的更新,同时更新所有的参数十分不现实,应运而生的就是LORA和QLORA,他们是在大模型旁边添加参数,同时冻结大模型内部参数,仅仅更新添加的参数。具体的细节可以访问文章查看。
1. 收集有标签数据
这里和嵌入式数据库不同之处在于:
嵌入式数据库:仅仅是规范性的文档 微调:有标签数据
此处收集的是带标签的数据,也就是形如:
Q:你在那个国家?
A:我在中国
类似于这种,但要比这种更加复杂。我们将Q输入模型,同时期望输出A的答案,逐渐调整网络的模型,从而实现微调。所以此处微调的数据要足够多,由于是对这些权重的修改,所以需要足够多的数据来缓慢的更改权重,这也是对嵌入式数据库的补充,因为嵌入式数据库过大时候,就会导致数据库无法完成嵌入,那么就要用到微调技术了。
2. 选择微调框架
由于微调步骤很成熟,所以我们选择框架Xtuner,不再重复造轮子.它里面有我们需要的LORA和QLORA框架,我们仅仅需要按照我们的硬件配置与数据类型填入即可。下
3. 进行微调
首先微调比较耗时,而且微调需要算力,尽管微调仅仅进行三轮,但在消费级显卡上依旧要消耗较长的时间。此时进行微调,我们是训练的附加到模型的参数,我们训练此参数,使其符合我们输入的数据匹配对。最后我们得到训练得到额外的参数模型。
4. 模型的合并
我们进行微调得到的仅仅是额外添加的那些模型参数,这些参数单独不能够进行推理运算,一定要附加在原有的大模型上面。那么我们将LORA模型与预训练大模型参数进行融合,即可得到我们的微调后的大模型。最后即可拿融合的大模型进行推理即可。
实例展示
首先可以看到我们对原始的base模型进行提问,它只能按照自己的理解,生成了两条地点,同时介绍很简短
随着微调进行,他已经能够很流畅的生成五点内容,这是因为我们的微调,教给了大模型怎么做,引导出了它本身内有的知识,使其规范的输出,得到我们想要的内容
我们在看一个个人小助手的例子。
我们微调的仅仅是将询问:介绍一下你自己,修改为:
我是助手狗剩,但是我贼聪明,偶尔有点犯傻,别介意,因为你懂的,我还不够完美
我们可以看到我们的狗剩已经对大模型的参数进行修改了。这是我们期望的。
最后
如果有充足的预算,在微调与嵌入式数据库之间推荐微调,他能彻底改变模型的回答方式与内核参考类型。现如今你知道的中医大模型、法律大模型等等都是通过微调得来的。但是带来体验还是非常出色的。