人工智能AI

什么情况需要微调定制属于自己的大模型

2024-02-11  本文已影响0人  梅西爱骑车

背景

我们日常所认识的「大模型」都是经过微调之后得到的。大模型只是一个「文本续写的模型」。在未经过任何微调或者基于人类反馈的强化学习(RLHF)之前,模型只能实现基本的文本接龙,并没有直接理解用户任何指令或意图的能力。

下面是开源大模型零一万物 Yi-34b 未经过微调之前,模型的输出:


上面的输出其实从语法结构什么来说都是对的,但是它的输出并不是「对话」,而是像继续编写某个文本里的片段。

经过 Chat 数据微调训练之后,模型才学会如何和人类进行正常交流:


用来微调的 Chat 对话模型使用的训练数据为下图所示,由符合预期的「一问一答」数据组成:

社区上的大模型,无论是 GPT 还是开源大模型,基本都遵循先进行预训练然后微调,得到一个对话或者其他用途的模型。

什么是预训练?

在预训练阶段,模型通过学习大量的数据来提取特征、理解语义和推理能力,从而对通识知识,代码知识获得一般性认识。质量较高的预训练数据可以增强模型的泛化能力,减少在后续特定任务上的训练调优时间和资源消耗。

预训练适合什么场景?

什么是微调?

大模型先通过预训练学习基础知识,再通过微调让模型学会基于它通过预训练已经学会的知识,学习如何去根据用户指令输出正确适当的内容。

我能用微调定制什么?

可以使用微调来让大模型新增知识吗?

不推荐,在需要有可信依据的场景上,比如构建智能客服机器人,通常会使用 RAG 的方式配合向量搜索等方式从文档库搜寻与用户询问问题最为相关的内容,并将匹配到的文档段落作为知识内容添加到提示词中,大模型使用提示词中的知识来回答用户的问题。

微调改善的是大模型在某种模式下的表现(如风格,准确度,幻觉问题等)。虽然微调也能一定程度上记忆新增的知识,但由于微调是改变模型的参数结构,使得模型在生成新 token 时输出与训练数据模式更相似的内容。从输出准确度上来说是不如在提示词中添加的知识内容。

微调方式

在大模型预训练参数上进行参数微调训练,有三种方式:

关于全量参数微调 和 LoRA 方式效果的对比,以下以 SQL 生成场景举例,柱状图从深到浅依次是未经过微调训练、LoRA 方式训练和全参数训练后模型生成的准确度:



在 SQL 数据集上,根据模型大小和微调方法预测准确率,LoRA微调模型的表现几乎可与全参数微调模型相当。需要注意的是,LoRA 微调的 13B 模型的表现略优于全参数微调的 7B 模型。

关于 QLoRA 训练的效果:


从上图中可以看到,在5-shot MMLU 场景下,QLoRA 效果与常规 LoRA 效果接近,甚至能反超常规 LoRA 微调效果。

关于资源消耗:


在上表中:

以 6b 参数量的模型分别以不同方式启动训练,显存占用情况:


从上表中可以看到:

因此,结合训练效果看,LoRA 或者 QLoRA 的高效微调的方式成本较低效果相对也较好,因此以LoRA 的方式来对基座模型进行预训练是最为合适的。

上一篇 下一篇

猜你喜欢

热点阅读