微调你需要了解的一些事情

#AI
14 分钟阅读
Image
Image

经常在各种文章或视频中听到“微调”这个词,而与它相关的还有“全量微调”、“LoRA 微调”,更专业的还包括“SFT”、“RLHF”等名词。刚接触这些术语时,常常会感到困惑:“它们分别属于训练的哪个阶段?彼此又是什么关系?”。

本文将借此机会,对这些概念进行系统梳理与澄清。上图是一个大语言模型(LLM, Large Language Model)诞生的大致过程,我们可以简要地分成三个阶段:

  1. 预训练(Pre-training)
    从网络、图书、代码仓库等来源收集海量的数据,然后进行初次训练,得到一个基础模型(Base Model)。模型在这个阶段具备了通用语言理解和基础知识,但尚未具备处理具体任务(如问答、对话等)的能力。

  2. 微调(Fine-Tuning) 这是将基础模型变成能处理实际任务(比如聊天、写代码、总结文章)的关键一步。根据使用场景的不同,我们通常会基于特定数据集进一步训练模型。

  3. 部署(Deployment) 当模型训练完成,就可以部署上线了,提供 API 或 Web 服务供用户使用。

接下来我们重点讨论第二阶段:微调(Fine-Tuning)。

微调(Fine-Tuning)🔗

所谓“微调”,是一个覆盖范围较广的概念。很多人听到微调这个词,以为就是简单地再训练一下,但实际上它包含了一系列的过程。常见的 SFT 和 RLHF 都属于微调阶段的内容。

我们为什么要微调?虽然预训练模型已经拥有大量通用知识,但在很多真实场景中,它可能会出现理解偏差或不符合任务要求的情况。

例如:

TXT
问:“请总结这篇文章的内容。”
预训练模型可能会误解成:“请续写这段话。”
虽然其底层机制仍是“预测下一个 token”,但由于缺乏指令训练,模型往往无法准确识别任务意图。

另外在特定领域(如医疗、金融)或者企业内部数据(私有文档、对话流程)中,模型缺乏专属知识,也需要我们进行进一步训练。

所以可以理解为:

微调是一个过程,包含多个步骤,常见的有:

  • SFT
  • RLHF

SFT:Supervised Fine-Tuning(监督微调)🔗

这是微调的第一步,目标是:教会模型按照人类的指令来完成任务

我们通常会准备结构化的、有明确指令和参考答案的数据集,比如下面这些:

  • 指令:请介绍一下光合作用
    回答:光合作用是植物利用光能,将二氧化碳和水合成为有机物并释放氧气的过程。

  • 指令:你是一位风趣幽默的导游,请介绍一下故宫
    回答:各位游客欢迎来到紫禁城,它是中国古代皇家宫殿,走进这片金碧辉煌的世界……

  • 指令:用 Python 写一个函数,计算斐波那契数列的第 n 项
    回答:

    PYTHON
    def fibonacci(n):
        if n <= 1:
            return n
        return fibonacci(n - 1) + fibonacci(n - 2)
    

这些样本数据不仅有助于模型理解任务意图,还提供了高质量参考答案,确保学习方向正确。

根据这些数据集训练完成之后,就会得到一个 SFT 模型(SFT Model)。

RLHF:Reinforcement Learning from Human Feedback(人类反馈强化学习)🔗

SFT 之后,模型已经能回答问题了,但这时候的回答可能还不够“好”,比如存在以下问题:

  1. 回答内容虽然正确,但可能过于啰嗦、跑题,甚至语气不礼貌。
  2. 在多个可能的正确答案中,有的更贴近人类的表达习惯,有的则显得“AI 味”很浓,缺乏人情味。

为了解决这些问题,我们需要让模型的“行为”和“价值观”进一步与人类的偏好对齐。这个至关重要的阶段,就叫做RLHF

在正式开始 RLHF 之前,我们需要先“创造”一个能够理解人类偏好的“评判模型”。想象一下,一个刚毕业的实习生(SFT 后的模型)虽然掌握了专业技能,但还不太懂职场沟通的艺术。我们需要一位经验丰富的导师来指导他,告诉他哪种沟通方式更好。但在 AI 的世界里,我们不可能让一个人类导师实时在线指导,所以我们选择预先训练一个“评判模型”,也就是奖励模型(Reward Model, RM)。它的任务是:根据人类偏好,为模型生成的回答打一个能反映质量的奖励分数。

整个 RLHF 的流程通常可划分为三个关键步骤:

  1. 第一步:收集人类偏好数据,为“导师”提供教材 我们让 SFT 模型对同一个问题生成多个不同的回答,然后请人类标注员对这些回答进行排序,选出哪个更好。

    • 例子:对于问题“我想减肥,有什么建议吗?”
      • 回答 A:“很棒的想法!健康饮食和规律运动是关键。您可以先尝试每天散步 30 分钟,并减少高糖饮料的摄入。”(正面、可行、有帮助)
      • 回答 B:“节食。不要吃碳水化合物。”(简单粗暴,可能不健康)
      • 回答 C:“减肥很难,很多人都失败了。”(消极,无用)
    • 人类标注员会给出明确的偏好排序:A > B > C。
  2. 第二步:训练奖励模型(Reward Model),让“导师”上岗 我们使用海量的、类似上一步的偏好排序数据,来训练这个奖励模型。最终,它将学会精准地预测对于任意一个回答,人类会给它打多高的“奖励分数”。

  3. 第三步:通过强化学习优化主模型,让“实习生”在“导师”的指导下成长 这是最后也是最关键的一步。主模型生成回答后,并由奖励模型实时打分。通过强化学习算法(如 PPO),主模型会不断调整自身的参数,目标只有一个:生成能让奖励模型打出最高分的回答。

这个循环训练的过程,类似实习生在导师持续指导和评分下逐步成长的过程。

最终,经过 RLHF“对齐”训练的模型,其回答会更安全、表达更自然、也更有帮助性,从而成为一个真正成熟、可靠的 AI 助手。

微调的实现方式🔗

在介绍完微调的两个核心阶段(SFT 和 RLHF)之后,我们再来看实现它们的两种主流技术手段:全量微调(Full Fine-Tuning) 和 PEFT (Parameter-Efficient Fine-Tuning, 参数高效性微调)。你可以把它们理解为在 SFT 或 RLHF 阶段,可供选择的两种不同的“施工方案”。

这里你可能会有疑问:为什么没有提 LoRA、QLoRA 这些名词?

这是因为,无论是 LoRA 还是其优化版 QLoRA,它们都属于 PEFT 这个大家族下的一个具体分支。PEFT 是一个总称,其背后的核心思想都是相近的。

全量微调(Full Fine-Tuning)🔗

模型在设计之初,其参数规模就已确定。例如,一个 7B 模型,就表示它有 70 亿个参数。所谓全量微调,就是指在训练时,对模型所有的参数进行更新和调整,网络中的每一层都参与训练。

  • 优点:

    • 灵活性和效果上限最高。可以最彻底地让模型“变成”你想要的样子。
  • 缺点:

    • 训练资源要求极高。需要大量的 GPU 显存和长时间的训练,成本高昂,不太适合普通开发者或小型团队使用。

PEFT (Parameter-Efficient Fine-Tuning, 参数高效性微调)🔗

PEFT 旗下有多种具体的微调方法,这里我们介绍其中最常见、也最成功的一种:LoRA。

LoRA(Low-Rank Adaptation,低秩适配)

这是一种更高效、更资源友好的微调方法,它的核心思想是:

我并不需要直接修改庞大而笨重的原始权重矩阵 W,而是可以通过引入两个“轻量级”的小矩阵 A 和 B,来模拟对 W 的增量更新。最终的计算效果可近似为: W_new = W + α·A·B,其中 α 是可调的缩放因子,用于控制更新强度。 这个公式虽然简单,但背后体现的是一种“低秩近似”的思想:用更少的参数模拟大模型的行为。

其中,A 和 B 是两个非常小的矩阵,在整个训练过程中,我们只训练它们,而原始的 W 始终保持冻结。

举个例子,直观感受一下效率差异:

  • 假设原始权重矩阵 W 的维度是 1000×1000,总参数量是 1,000,000。
  • 如果我们设置 LoRA 的“秩”(Rank, r,可以理解为信息压缩的程度)为一个很小的值,比如 r = 8
    • 那么矩阵 A 的维度就是 1000×8,矩阵 B 的维度是 8×1000
    • 我们需要训练的总参数量就变成了 (1000 * 8) + (8 * 1000) = 16,000

相比全量微调需要调整 1,000,000 个参数,LoRA 只需调整 16,000 个,效率提升了超过 60 倍,这就是它的魅力所在。

  • 优点

    • 训练成本极低,速度快,对硬件要求友好。
    • 可以针对不同任务,快速微调出多个轻量的 LoRA“适配器”,即插即用,非常灵活。
    • 非常适合个人开发者、小型任务和私有化部署场景。
  • 缺点:

    • 对模型能力的修改范围相对有限,在某些极其复杂的任务上,效果可能不如全量微调来得彻底。

总结🔗

最后,我们用一张表格来总结一下这些核心概念的关系:

概念英文全称核心作用所属类型
微调Fine-Tuning让基础模型适应具体任务整体过程
监督微调SFT (Supervised Fine-Tuning)教模型完成特定任务(指令跟随)微调步骤
人类反馈强化学习RLHF (Reinforcement Learning from Human Feedback)对齐人类偏好,优化回答质量微调步骤
全量微调Full Fine-Tuning对所有参数进行训练和更新实现手段/工具
LoRALoRA (Low-Rank Adaptation)仅训练新增参数,保留主模型权重实现手段/工具 (PEFT 的一种)
文章目录