微调之后还能做什么?大模型后训练全链路技术解析

微调之后还能做什么?大模型后训练全链路技术解析

本文探讨了后训练的重要性、方法以及最新进展。文章将包含理论分析与实际操作指南,适合希望深入了解并应用这些技术的开发者。

什么是后训练?

后训练(Post-Training)是指在预训练模型的基础上,针对特定的任务或数据集进行额外的训练。这个阶段通常涉及到微调(Fine-tuning)和对齐(Alignment),即调整预训练模型的参数以适应新的任务。

后训练阶段示意图

黑色:预训练阶段

红色:后训练阶段

紫色:推理测试阶段

预训练、后训练与推理测试时间线

为什么要进行后训练?

1. Post-training 重要性:后训练扩展律已经出现

预训练阶段的 Scaling Law

  • 计算量 C,模型参数量 N、数据大小 D,当不受其它两个因素制约时,模型性能与每个因素均呈幂律关系,三者满足:

Scaling Law 公式 Scaling Law 公式(续)

  • 随着模型尺寸的逐渐增大,预训练阶段参数扩展带来的边际收益开始递减,基于 RL 的 post-training 将会成为下一个突破点;
  • 自回归模型在数学推理问题上很难进步的一点在于没有办法进行回答的自主修正,仅依靠生成式方法和扩大参数规模,收益有限,需要寻找额外的 Scaling Laws;

GPT(Generative Pretrained Transformer)系列是典型的自回归语言模型。在 GPT 模型中,它的生成过程是基于自回归机制。例如,在文本生成任务中,给定一个初始的输入文本序列(可以是一个单词、一个句子或一段话),模型会预测下一个单词出现的概率分布。假设输入序列是 “The cat”,模型会计算在这个序列之后不同单词(如 “runs”“jumps”“sleeps” 等)出现的概率,然后从这个概率分布中采样一个单词作为下一个生成的单词。

GPT 自回归生成示意图

  • **新的扩展维度:**AI 能力的提升不再局限于预训练阶段,还可以通过在 Post-Training 阶段中提升 RL 训练的探索时间和增加模型推理思考时间来实现性能提升,即 Post-Training Scaling Laws 以及 Test-time Scaling Reasoning

Post-Training Scaling Laws 示意

随着训练时的计算量和测试时的计算量的增加,模型性能也会随之提升。

常见大模型后训练流程

这里以 Llama 3 来示例:

Llama 3 后训练流程

1.持续通过人工标注或机造方式生成偏好 pair 样本,训练 Reward Model;

2.基于当前能力最好的模型,随机采集一批{Prompt},每个 Prompt 拿最好的模型做 K 次数据生成采样,每个 Prompt 就得到 K 条<Prompt, Response_k>数据;

3.拒绝采样:对第 2 步采样的 K 个<Prompt, Response_k>数据,用 Reward Model 打分,并从中选取打分最高 topN 条样本。作为指令微调的精选样本,训练 SFT Model;

4.训完 SFT Model,再通过持续收集的偏好对样本(同步骤 1)做对齐学习(Llama 使用的是 DPO)。最终得到了一个比当前模型更好的模型;

5.持续做步骤 1~步骤 4,飞轮迭代优化模型。

1.1 训练数据

SFT data

SFT 数据采样示意

采样模型多次,让 RM 选出最好的回复,作为 SFT data 的一部分。部分细节如下:

  • 采样什么模型?两种情况。迭代中表现 Avg score 最好的模型,或者在某个 particular capability 上表现最好的模型。
  • 采样多少次?K=10~30,即一般采样 10-30 次。
  • prompt 哪来?人工标注的 prompts。并在后训练迭代后期引入特殊的 system prompts。

Preference data

偏好数据采样示意

  • 采样什么模型?部署多个不同数据配比和对齐方法训练的模型,针对每个 prompt 选取两个不同的模型进行采样。原因:不同模型能够在不同的能力维度上表现出差异,数据质量和多样性更好。
  • 偏好等级?四个等级:显著更好(significantly better),更好(better),稍微更好(slightly better),略微更好(marginally better)。
  • 允许修改:标注同学可以进一步优化 chosen response,最后 edited > chosen > rejected。
  • 迭代式难度:最后随着模型改进逐步提高 prompt 复杂度。

1.2 微调 Fine-tuning

微调是指在预训练模型的基础上,使用特定任务的数据集进行进一步训练,以使模型适应特定任务或领域。其目的是优化模型在特定任务上的性能,使模型能够更好地适应和完成特定领域的任务。

SFT(Supervised Fine-tuning)微调方法

全量微调 VS 部分微调

2. 全量微调 Full Fine-Tuning(FFT)

是指在预训练模型的基础上,使用特定任务的数据集对模型的所有参数进行进一步训练,以使模型更好地适应特定任务或领域的过程。

3. 部分微调 PEFT(Parameter-Efficient Fine-Tuning)

一种针对大型预训练模型的微调技术,旨在减少训练参数的数量,从而降低计算和存储成本,同时保持或提升模型性能,仅微调模型中的一小部分参数,常见方法如下:

  • 选择参数子集

  • 重新参数化

  • LoRA(Low-Rank Adaptation)使用低秩表示重新参数化模型权重

  • 核心思想是将权重矩阵 W 分解为两个低秩矩阵 A 和 B 的乘积,即:

LoRA 权重分解公式 是预训练模型的原始权重矩阵。

A 和 B 是两个低秩矩阵,其维度远小于 W。

通过这种方式,LoRA 只需要更新 A 和 B 的参数,而不是整个 W。这显著减少了需要更新的参数数量,从而提高了微调的效率。

  • 添加额外的可训练的 token

  • Prompt-tuning

3.1 对齐(Alignment)

对齐是指通过各种技术手段,使模型的输出与人类的偏好和价值观对齐,确保模型的行为和决策符合人类社会的期望和标准。对齐技术旨在解决模型可能带来的潜在问题,如生成有害内容、不符合伦理的输出等。强化学习是实现模型对齐的核心工具,即可通过人类反馈强化学习(RLHF)(Reinforcement Learning from Human Feedback)的方式,通过训练奖励模型对齐模型输出与人类偏好,强化学习中需要用到的关键组成部分如下

  1. 带有人类偏好反馈的标签数据
  • <input,accept,reject>
  1. 奖励模型(Reward Model)-> 奖励信号
  • Rule-based RM

  • Model-based RM

  1. 强化学习策略优化算法
  • DPO (Direct Preference Optimization) 直接偏好优化
  • PPO(Proximal Policy Optimization)近端策略优化
  • GRPO(Group Relative Policy Optimization)组内相关策略优化算法

4. 强化学习策略优化算法:DPO vs PPO vs GRPO

RLHF 即基于人类反馈的强化学习训练流程中涉及到的策略优化算法,常见的有以下几种:

  • PPO(Proximal Policy Optimization)近端策略优化

  • 是 OpenAI 在 2017 年提出的一种基于策略梯度(Policy Gradient)的强化学习算法。

  • 优化过程是构建一个损失函数,需要根据奖励模型的奖励信号和新旧策略差异计算损失函数,并且会限制策略更新的幅度,保证了模型的稳定性。

  • 损失函数:

PPO 损失函数公式

其中 PPO 新旧策略概率比 是新旧策略概率之比,反映新旧策略的改进情况。

PPO 优势估计公式 是优势估计值,反映智能体选择某个动作的好坏。

clip 是剪辑机制,反映经过剪辑后的改进结果,防止进步过快或退步过多,保持稳定的训练过程。

选择最小值:1)基于新策略直接计算出来的值,2)经过剪辑后的值,保持训练的稳定性。

  • DPO(Direct Preference Optimization) 直接偏好优化

  • 优化过程相对直接。不需要训练一个单独的奖励模型。直接利用人类偏好排序数据(概率比)来构建目标函数并优化策略;

  • 目标: 最大化用户偏好数据的生成概率,同时减少用户非偏好数据的生成概率;

  • 无需明确的奖励模型,更多依赖于用户提供的偏好排序或比较数据,不需要同环境进行交互,适用于需要从静态数据(如用户的偏好反馈)中学习的任务,并且高度依赖用户反馈的数据质量;

  • GRPO(Group Relative Policy Optimization)组内相关策略优化算法

GRPO 算法公式

GRPO 奖励计算示意

  • 与 PPO 相比,无需额外训练价值模型,通过从同一问题的多个输出中计算平均奖励来替代价值函数的作用,从而减少了显存和计算负担,但依赖于奖励模型的评分来区分输出的好坏,这对于奖励模型的设计也提出了更高的要求。

5. 强化学习中奖励模型(RM)的优化思路

在传统的强化学习 RL 框架中,智能体通过与环境的交互来学习,以最大化累积奖励。但这种方法有时会面临奖励设计困难和学习效率低下的问题。为了解决这些难题,RLHF(Reinforcement Learning from Human Feedback)引入人类作为奖励信号的来源。人类反馈可以采取多种形式,包括直接的奖励信号、排名反馈、偏好比较等。

  • LLM as a judge:判别式的 RM 的准确率不足,可以用于事实性、输出风格等的判定;

  • Generative RM:先 CoT 自然语言推断的,再给出奖励信号,Let’s verify step by step;

  • Critic Model:随着大模型的不断迭代,其输出的内容越来越准确,错误也变得更加隐蔽,就算是专业的 AI 训练师也很难察觉那些错误所在,OpenAI 训练了 CriticGPT 这种评论家模型,用于加强 RLHF,但注意用 model 去建模 reward,可能会因为过度对齐人类的偏好而引入 bias;

  • Outcome-based Reward Model(ORM)到 Process-based Reward Model(PRM)向着模型能生成正确推理能力的方向优化

  • PRM:过程奖励模型,是在生成过程中,分步骤,对每一步进行打分,是更细粒度的奖励模型。

  • ORM:结果奖励模型,是不管推理有多少步,对完整的生成结果进行一次打分,是一个反馈更稀疏的奖励模型。

注意 reward model 可能会被 hacking(奖励攻击)的问题,可以将不同的 reward model 混在一起训练,让模型训多轮后也比较难找到 RM 的漏洞。

5.1 推理阶段(Test-time computation)的优化思路

快思考 → 慢思考

  • 系统 1 思维:一次性生成完整解法的方法

    • Next Token Prediction 缺乏详细的中间推理步骤,模型一开始可能会犯错,错误会传播导致最终生成的答案也是错的;
  • 系统 2 思维:模仿人类通过更慢、更深的思考过程进行推理

  • CoT:Training-Free 的方式,通过分步的方式生成一系列中间推理步骤,从而提升模型推理能力;

  • Let’s think step by step;

  • Best of N;

  • MCTS(Monte Carlo Tree Search 蒙特卡洛树搜索):在 Token 或词句级别分解建模成节点后提供奖励信息(Process-based-Reward-Model);

  • Token 级别的节点:每个节点对应生成序列中的一个 Token。通过 MCTS,模型可以探索不同的 Token 序列,最终生成更连贯的响应;

  • 句子级别的节点:在复杂推理任务中,每个节点可以代表一个完整的句子或推理步骤,帮忙模型更好地处理多步推理任务;

  • STaR(Self-Taught Reasoner):教会模型从内部深入思考问题与答案的关联;

  • STaR 的核心思路是利用 LLM 已有的推理能力,迭代式地引导模型产生合理推理过程(Rationales) 的能力,并将 Rationales 融入到训练过程内,让模型学会进行推理;

  • 通过少量示例(few-shot example)来提示(prompt)模型生成答案和推理过程,过滤出正确的数据集生成微调数据集来微调;

STaR 推理训练示意

  • DeepSeek-R1 强化学习训练时使用的 prompt 格式,要求模型将推理过程的思路输出到标签中,引导模型进行慢思考;

DeepSeek-R1 提示词格式

  • Quiet-STaR(Self-Taught Reasoner)

  • 通过控制模型在生成文本时自动生成推理步骤(即理由或 rationales),从而提高模型的预测能力和推理性能;

  • 在训练阶段,先基于前序 token 停下,进行 think 阶段,产出多个 thought,选择某一个 thought 加上前序 token,进行预测下一个 token,然后经过奖励模型的评判,进行反馈学习;

  • 在推理阶段,利用 think 及 talk 对应的 prompt 来引导进入慢思考,在 think 结束后,再进行 talk;

Quiet-STaR 训练推理示意

5.2 微调(SFT)与强化学习(RL)

SFT → 示范给模型怎么样做是对的

RL → 在环境中不断试错、累积奖励,理论上 RL 能榨干模型、突破人类上限,但 reward 要能写好

SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training

  • RL 在泛化方面的优势:RL,特别是在基于结果的奖励下进行训练时,能够在基于规则的文本和视觉变体中实现泛化。这表明强化学习在处理不同情境和变化时具有更强的适应能力。强化学习通过与环境的交互不断调整策略,从而能够学习到更通用的知识和行为模式。
  • SFT 在记忆方面的倾向:SFT 则倾向于记忆训练数据,在分布外的场景中难以很好地泛化。这是因为监督微调主要是通过最小化预测与真实标签之间的误差来调整模型参数,容易使模型过度拟合训练数据。

SFT 对 RL 训练的重要性:尽管 RL 在泛化方面表现出色,但文章指出 SFT 对于有效的 RL 训练仍然至关重要。SFT 能够稳定模型的输出格式,为后续的 RL 训练奠定基础。没有经过 SFT 的模型可能在输出格式上不稳定,导致 RL 训练难以收敛或效果不佳。

5.3 以 DeepSeek-R1 为例:后训练实践

DeepSeek-R1

DeepSeek-R1 训练流程

DeepSeek-R1 蒸馏模型示意

  • 对于 test-time 阶段的处理,提及对于 PRM 及 MCTS 等手段,未被证实有效;
  • R1-ZERO 仅使用 RL,未使用 SFT
  • Reward Model 未使用 PRM 等相对复杂的模型,而是仅使用了 rule-based 的 RM;
  • 强化学习算法使用的是自家的 GRPO,相对于 PPO 等更加简单,也更考验 RM 的设计能力;

给后续的推理模型后训练很多启发,仅 RL 也可以得到非常好的推理效果。

  • RL → DeepSeek-R1-Zero
  • SFT + RL → DeepSeek-R1(Llama 3)
  • SFT → 蒸馏得到的一些小模型
  • Test-time Scaling → OpenAI o1

6. 附录:参考资料

基于 RAGFlow 构建私有知识问答应用

传统 RAG 应用因文档解析能力不足,导致相关问题的回答失准。RAGFlow 凭借创新的深度文档理解技术,能精准解析各类复杂格式的原始数据,提升回答准确性。本方案介绍如何一键部署 RAGFlow 并构建私有知识问答应用,无需编码,最快 10 分钟、最低 2 元即可实现。

点击阅读原文查看详情。