大模型微调全攻略:SFT、PPO、DPO一文讲透
目录
二、PPO(Proximal Policy Optimization)
2. PPO 在 RLHF (Reinforcement Learning from Human Feedback)中的应用流程
一、SFT
监督微调(Supervised Fine-Tuning, SFT)是大语言模型(LLM)对齐技术中的基础且关键的一步。它是在预训练模型的基础上,使用人工标注的 (prompt, response) 数据对模型进行有监督训练,使其学会遵循指令、生成高质量的回答。
1. SFT 的核心思想
-
输入:一个指令(prompt),如“写一首关于春天的诗”
-
输出:一个高质量的回答(response),由人工撰写
-
目标:让模型学会“给定一个指令,生成一个符合人类期望的回复”
🔑 本质:从“能生成文本” → “生成有用的、有帮助的文本”
2. SFT根据更新参数量不同可以分为以下两种
-
全量参数更新 FFT(Full Fine-tuning):即对预训练模型的所有参数进⾏更新,训练速度较慢,消耗机器资源较多。
-
参数⾼效微调 PEFT(Parameter-Efficient Fine-Tuning):只对部分参数做调整,训练速度快,消耗机器资源少。常见的如LoRA微调、QLoRA微调。
2.1 LORA
它通过冻结原始大模型的权重,仅训练一小部分新增的低秩矩阵,来实现对模型的高效微调,从而大幅降低显存占用和计算成本.
LoRA 的核心创新在于:它不直接更新原始权重矩阵 W ,而是学习一个低秩的增量 ΔW
具体来说,对于模型中的某个权重层 ,LoRA 将其更新表示为:
-
:原始冻结权重(如 UNet 中的
to_q,to_v) -
:从输入投影到低维空间
-
:从低维空间投影回输出空间
-
r :秩(rank),超参数,通常 r≪d
-
训练时只更新 A 和 B ,W 保持冻结
LORA参数详解
| 参数 | 符号 | 说明 | 备注 |
| 秩 | r |
|
|
| 缩放因子 | α |
| 通常设置为α=2*r |
| Dropout | dropout |
| 浮点数[0.0,1.0] |
| 矩阵初始化方式 | init |
A :从正态分布初始化(mean=0, std=0.02) B :全零初始化(zeros)
| |
| 目标模块 | target_modules |
| 字符串列表
|
| LoRA α/r 比例 | alpha/ratio |
|
2.2 QLoRA(Quantized LoRA)
2.3 Adapter Tuning
2.3.1 核心概念:什么是 Adapter?
如果把预训练大模型比作一个固定的高速公路网络:
- 传统微调:重新修建整个高速公路(更新所有模型参数),成本高,且容易破坏原有结构。
- Adapter 微调:在高速公路的每个出入口(每一层 Transformer)加一个小型匝道(Adapter 模块)。车流(数据)经过时,通过匝道进行特定任务的调整,而主路(预训练模型)保持原样不动。
核心定义:
- 位置:嵌入在预训练模型的每一层(或某些层)中。
- 训练策略:冻结预训练模型主体参数,只训练新增的 Adapter 模块参数。
- 目的:让大模型适应下游特定任务,同时避免全量微调的高成本和“灾难性遗忘”。
2.3.2 工作原理详解
1. 模型结构如下图所示:

关键参数:
- d:模型原始隐藏层维度(如 4096)。
- m:Adapter 中间层维度(瓶颈维度,如 64 或 256)。
- m≪d:通过控制 m 的大小,极大地限制了参数量(通常只占模型总参数的 0.5% - 5%)
2. 工作流程
- 前向传播:
- Transformer 层的输出进入 Adapter。
- 先压缩到低维空间(提取任务特定特征)。
- 再还原到高维空间(与原始模型维度对齐)。
- 结果通常与原始输入相加(残差连接),确保信息不丢失
- 反向传播
- 预训练模型的权重梯度为 0(冻结)。
- 梯度只更新 Adapter 内部的权重。
2.4 Prefix Tuning
2.4.1 核心概念
通俗理解: 想象你要训练一个员工(大模型)做不同的工作(写销售话术、写行程介绍)。
- 传统微调:重新培训整个员工的大脑(更新所有模型参数),成本高,且学会新技能容易忘掉旧技能。
- Prefix Tuning:给员工发不同的 “任务手册”(Prefix)。员工的大脑(模型主体)不动,只根据手册的指引来工作。训练时,只优化这本“手册”的内容,不改变员工原有的知识。
核心定义:
- 在输入 token 之前,构造一段 任务相关的虚拟 tokens(Virtual Tokens) 作为 Prefix。
- 训练时 只更新 Prefix 部分的参数,预训练语言模型(PLM)的其他部分参数 固定(Frozen)。
2.4.2 核心机制详解
1. 虚拟 Tokens(Virtual Tokens)
-
不是真实词语:这些 Prefix 不是 "请", "写", "生成" 这样的真实词汇,而是 连续的向量(Continuous Vectors)。
-
可学习参数:它们像模型权重一样,通过反向传播梯度下降来优化。
-
作用:相当于在模型的注意力机制中注入了一种“软提示(Soft Prompt)”,引导模型进入特定的任务状态。
2. 参数冻结(Parameter Freezing)
-
基座模型冻结:大模型(如 LLaMA, T5)的原始权重 W 保持不变。
-
仅训练 Prefix:假设 Prefix 长度为 L,维度为 d,则只训练 L×d 个参数。
-
参数量极小:通常只占模型总参数的 0.1% - 1%,极大节省显存和存储。
备注:为什么要用“连续向量”?
1 突破词汇限制
-
问题:有时候,想要引导模型完成特定任务(如“写销售话术”),人类语言中可能没有完美的词能精准触发模型的这种状态。
-
解决:连续向量可以在高维空间中找到一个人类语言无法表达的位置,这个位置恰好能最大程度激活模型中关于“销售”、“热情”、“转化”相关的神经元。
2 可直接优化(关键!)
-
问题:如果想优化真实词语,你需要尝试“请写”、“帮我写”、“生成”... 这是组合爆炸,且无法求导。
-
解决:连续向量是参数,可以直接用梯度下降:
模型会自动找到那个“最优向量”,而不需要人工试错。
2.5 Prompt Tuning
2.5.1 核心概念:什么是 Prompt Tuning?
通俗理解: 如果把大模型比作一个博学的专家:
- 传统微调:重新培训专家的大脑(更新所有参数)。
- Prefix Tuning:在专家工作的每一个环节(每一层网络)都塞一张提示纸条(MLP 生成)。
- Prompt Tuning:只在专家开始工作前(输入层),给一张最简单的提示纸条,专家就能懂你的意思。
核心定义:
- 输入层添加:只在模型的 Input Embedding 层 拼接可学习的 Prompt Tokens。
- 无需 MLP:直接优化 Prompt 向量,不需要像 Prefix Tuning 那样通过 MLP 重参数化来稳定训练。
- 模型冻结:预训练模型(PLM)的主体参数完全固定,只训练 Prompt 参数。
2.5.2 与prefix tuning图解对比
Prompt Tuning:
[Prompt] + [Input] → [Transformer Layer 1] → ... → [Output]
↑
仅此处添加
Prefix Tuning:
[Prompt] + [Input] → [Transformer Layer 1 + Prefix] → ... → [Layer N + Prefix] → [Output]
↑ ↑ ↑
输入层添加 每层都添加 (Key/Value 注入)
二、PPO(Proximal Policy Optimization)
1. PPO的核心思想
PPO 是一种策略梯度方法,其目标是通过与环境(在这里是“人类偏好”)的交互来优化模型的策略(即生成文本的方式),使其获得更高的奖励。
-
策略(Policy):语言模型本身,输入 prompt,输出 response。
-
奖励(Reward):由一个奖励模型(Reward Model, RM)根据人类偏好打分。
-
目标:调整策略,使得生成的 response 能获得更高的奖励。
PPO 的核心创新在于引入了 “近端”(Proximal) 概念,通过一个剪裁(clipping)机制来限制策略更新的幅度,防止更新过大导致训练不稳定。
2. PPO 在 RLHF (Reinforcement Learning from Human Feedback)中的应用流程
PPO 是 RLHF 的第三步,完整流程如下:
1.SFT (Supervised Fine-Tuning)
-
使用
(prompt, response)数据对预训练模型进行监督微调,得到一个基础的、能遵循指令的模型
2. Reward Modeling (RM)
- 收集人类对同一 prompt 的多个 response 的偏好数据(
chosenvsrejected) - 训练一个独立的奖励模型(RM),使其能够预测人类对任意 response 的偏好分数
3.PPO微调:
-
初始化:将 SFT 模型作为 PPO 的策略模型(Policy Model)。
-
生成:策略模型为一批 prompt 生成 responses。
-
打分:奖励模型(RM)为这些 responses 打分。
-
计算奖励:奖励不仅来自 RM,还包含一个KL 散度惩罚项,用于衡量当前策略模型与初始 SFT 模型的差异,防止模型“跑偏”太远。
-
更新策略:使用 PPO 算法,根据综合奖励来更新策略模型的参数。
🔁 这个过程会迭代进行,模型生成的 response 越来越符合人类的偏好
三、DPO
DPO 的核心突破在于:它绕过了显式训练奖励模型(Reward Model)和使用强化学习算法(如 PPO)的复杂流程。
-
传统 RLHF 流程:
-
SFT(监督微调)
-
训练 Reward Model(基于人类偏好)
-
使用 PPO 强化学习优化策略
-
-
DPO 流程:
-
SFT
-
直接使用偏好数据优化模型
-
DPO 从数学上证明,可以通过一个巧妙的损失函数,直接将 (prompt, chosen, rejected) 的偏好数据转化为策略优化信号,而无需中间的奖励模型。
四、DPO与PPO对比
| 步骤 | PPO | DPO |
| 1.基础模型 | SFT(监督微调) | SFT(监督微调) |
| 2.偏好学习 | 训练 Reward Model(RM) | 无需 Reward Model |
| 3.策略优化 | 使用 PPO 算法,结合 RM 打分更新策略 | 直接使用(prompt, chosen, rejected)数据优化模型 |
| 4.训练方式 | 强化学习(RL) | 强化学习(RL) |
更多推荐
所有评论(0)