大模型会成为 AI 时代的一项基础设施。作为像水、电一样的基础设施,预训练大模型这样的艰巨任务,只会有少数技术实力强、财力雄厚的公司去做。绝大多数人,是水、电的应用者。对这部分人来说,掌握如何用好大模型的技术,更加重要。
用好大模型的第一个层次,是掌握提示词工程 (Prompt Engineering)。
用好大模型的第二个层次,是大模型的微调 (Fine Tuning),这也是本文的主题。
为什么要对大模型进行微调
通常,要对大模型进行微调,有以下一些原因:
- 训练成本考量:大模型的参数量非常大,从头训练的成本极高。每家公司都去从头训练一个自己的大模型,性价比非常低。通过微调,可以在预训练模型的基础上,以较低的成本适配特定任务。
- 提示词工程的局限性:Prompt Engineering 虽然容易上手,但缺点明显。大模型对输入序列长度有限制,过长的 Prompt 会导致推理成本升高(与长度平方正相关),甚至因超过限制被截断,导致输出质量下降。对于对外提供服务的企业,推理成本是必须考虑的因素,微调是更优方案。
- 领域能力提升:当 Prompt Engineering 效果达不到要求,且企业拥有较好的自有数据时,可以通过自有数据微调,提升大模型在特定领域的表现。
- 个性化服务:针对每个用户的数据,训练轻量级的微调模型,可以提供个性化的服务体验。
- 数据安全:如果数据不能传递给第三方大模型服务,搭建自己的大模型并基于自有数据进行微调就非常必要,以满足业务需求。
什么时候需要 LLM 微调
说起 LLM,总会涉及到上下文学习、零样本、单样本和少样本推理等话题。
- 上下文学习 (In-context learning):通过在提示中加入特定任务示例来改进提示的方法,为 LLM 提供了完成任务的蓝图。
- 零样本/单样本/少样本推理:零样本是在提示中直接使用输入数据;单样本或少样本则添加一个或多个已完成示例,帮助较小的 LLM 表现得更好。
- 上下文学习的问题:这些技术并不总是有效,尤其是对于较小的 LLM。此外,在提示中包含任何示例都会占用宝贵的上下文窗口空间,减少了包含其他有用信息的空间。
当以上方式无法解决相关问题时,就需要 LLM 微调。它与预训练阶段使用大量非结构化文本数据不同,微调是一个监督学习过程。这意味着你使用标记好的示例数据集来更新 LLM 的权重。这些标记好的示例通常是 prompt-response,使得模型能更好地完成特定任务。
如何对大模型进行微调
从参数规模的角度,大模型的微调分成两条技术路线:
- 全量微调 (Full Fine Tuning, FFT):对全量的参数进行训练。原理是用特定的数据,对大模型进行训练,将权重 W 变成 W'。W' 相比 W,最大的优点就是上述特定数据领域的表现会好很多。
- 缺点:训练成本高(参数量与预训练一样多);存在灾难性遗忘 (Catastrophic Forgetting),即特定领域变好可能导致其他领域能力变差。
- 参数高效微调 (Parameter-Efficient Fine Tuning, PEFT):只对部分的参数进行训练。主要想解决 FFT 存在的成本高和灾难性遗忘问题,是目前主流的微调方案。
从训练数据的来源以及训练方法的角度,大模型的微调还有以下几条技术路线:
- 监督式微调 (SFT):用人工标注的数据,用传统机器学习中监督学习的方法,对大模型进行微调。
- 基于人类反馈的强化学习微调 (RLHF):把人类的反馈,通过强化学习的方式引入到微调中,让大模型生成的结果更符合人类期望。
- 基于 AI 反馈的强化学习微调 (RLAIF):原理跟 RLHF 类似,但反馈来源是 AI,旨在解决收集人类反馈成本高、效率低的问题。
不同的分类角度侧重点不一样,对同一个大模型的微调,不局限于某一个方案,可以多个方案结合使用。微调的最终目的,是能够在可控成本的前提下,尽可能地提升大模型在特定领域的能力。
流行的参数高效微调技术 (PEFT) 方案
参数高效微调方法,可大致分为三个类别:增加式方法、选择式方法和重新参数化式方法。
1. 增加式方法 (Additive methods)
增加式方法通过增加额外的参数或层来扩展现有的预训练模型,且仅训练新增加的参数。目前,这是 PEFT 方法中被应用最广泛的类别。


