跳转到内容

微调与对齐:让模型听指令、守规矩

预训练让模型成为”语言通才”,但它不会自动按人类期望回答问题。微调(fine-tuning)用高质量指令-回答对继续训练,让模型学会”对话格式”。对齐(alignment)则进一步让输出符合人类价值观:有用、诚实、无害。

可以类比为:预训练是读完所有教科书,微调是参加模拟面试练习,对齐则是学习职业道德和行为规范。三者缺一不可。

实际流程通常分阶段:

  1. SFT(监督微调):用人工撰写或蒸馏的高质量指令数据训练,让模型学会跟随格式和风格。
  2. RLHF(基于人类反馈的强化学习):先训练奖励模型(RM)学习人类偏好排序,再用 PPO 等算法优化策略模型,使其获得更高奖励分数。
  3. DPO(直接偏好优化):跳过显式奖励模型,直接用偏好数据优化策略,简化流程且效果往往相当。

工程取舍包括:SFT 数据质量比数量更重要;RLHF 的超参数敏感、训练不稳定;DPO 更简单但可能在长回复或复杂分布上表现不如 RLHF。 Constitutional AI 和 RLAIF 试图用 AI 而非人类生成偏好,降低成本并提高可扩展性。

此外,LoRA、QLoRA 等参数高效微调方法让小资源团队也能在消费级 GPU 上微调大模型,极大降低了应用门槛。

研究上,“对齐”是否真正改变了模型的内部目标,还是只是表面行为的抑制?这是一个开放问题。有证据表明,模型在某些情况下会”绕过”安全训练(jailbreak),说明对齐可能不是深层的。

关键研究方向包括:奖励黑客(reward hacking)的检测与防御;长度偏差、位置偏差等偏好建模的 artifacts;多轮对话中的上下文一致性;以及,如何用更少的人类标注获得更稳健的对齐效果。

🔬 开放研究问题

该领域的关键问题与研究方向:

  1. RLHF 中的 reward hacking 问题如何从根本上解决?DPO 是否完全规避了这一问题?
  2. 对齐后的"能力退化"现象如何量化和缓解?如何在对齐与能力之间找到最优平衡?
  3. 是否存在统一的对齐框架可以同时处理有用性、无害性、诚实性三个维度?

训练数据流:从 rollout 到梯度回传(工程视角)

Section titled “训练数据流:从 rollout 到梯度回传(工程视角)”

RL 对齐训练的核心循环可以用一句话概括:先采样一批回答,重算新旧策略的 token 概率,再用比值裁剪控制更新幅度,最后把 loss 回传到所有参数。七张图展示这条数据流的每一步。

Fig 1 · response_mask:哪些 token 参与 loss

Section titled “Fig 1 · response_mask:哪些 token 参与 loss”

RL 训练只对模型生成的 response 部分计算 loss;prompt 部分的 loss 被掩码为 0,否则奖励信号会污染到输入侧。

Fig 1 · response_mask 只有 response token 参与 loss 计算 / Only response tokens contribute to loss
<bos> 0
User 0
: 0
Summarize 0
this 0
article 0
. 0
<sep> 0
Assistant 0
: 0
The 1
article 1
discusses 1
key 1
topics 1
. 1
<eos> 1
Prompt token  ·  mask = 0  ·  不计入 loss
Response token  ·  mask = 1  ·  计入 loss
loss = Σt mask[t] · CE(logit[t], label[t]) / Σ mask[t]

Fig 2 · rollout:采样生成 response(vLLM)

Section titled “Fig 2 · rollout:采样生成 response(vLLM)”

在每个训练步开始前,用当前策略从 vLLM 批量采样多条回答(rollout)。这些回答将送入奖励模型打分,并用于后续 log_prob 计算。

Fig 2 · rollout (vLLM) 采样生成多条 response / Sample multiple responses via rollout
<bos>User:ExplainRLHF.<sep>Assistant:
vLLM rollout (temperature sampling)
r1
RLHFuseshumanfeedback...<eos>
r2
ReinforcementLearningfromHuman...<eos>
r3
Ittrainsarewardmodel<eos>
r4
RLHFalignsLLMswith...<eos>
每条 response 将用于后续 log_prob 计算 & 奖励打分
Each sampled response feeds into log_prob recalculation & reward scoring

Fig 3 · teacher-forcing forward:重算 log_prob(Megatron)

Section titled “Fig 3 · teacher-forcing forward:重算 log_prob(Megatron)”

得到采样回答后,把「prompt + response」整条序列以 teacher-forcing 方式重新喂入策略模型,在一次前向计算中并行得到所有 response token 的 log P。这是当前策略 π_θ 的 log_prob。

Fig 3 · teacher-forcing forward (Megatron) 重算 log_prob:把 prompt+response 整条喂入模型 / Recalculate log_prob with teacher-forcing
t=0 User
t=1 :
t=2 Explain
t=3 RLHF
t=4 .
t=5 <sep>
t=6 RLHF
t=7 uses
t=8 human
t=9 feedback
t=10 <eos>
Megatron policy model πθ (235B)
t=1 :
t=2 Explain
t=3 RLHF
t=4 .
t=5 <sep>
t=6 RLHF log p
t=7 uses log p
t=8 human log p
t=9 feedback log p
t=10 <eos> log p
Teacher-forcing:每步输入真实 token(而非上步预测),并行高效重算整条序列的 log_prob。
Teacher-forcing feeds ground-truth tokens at each step, enabling efficient parallel log_prob recalculation.

Fig 4 · log_prob vs old_log_prob:新旧策略对比

Section titled “Fig 4 · log_prob vs old_log_prob:新旧策略对比”

将上一步得到的 log π_θ 与采样时记录的 log π_old 逐 token 对比,差值决定策略的”漂移程度”。

Fig 4 · log_prob vs old_log_prob 新旧策略 per-token 概率对比 / New vs reference policy per-token log probabilities
log p -0.32 -0.45 RLHF -0.18 -0.20 uses -0.55 -0.38 human -0.41 -0.62 feedback -0.12 -0.15 to -0.78 -0.90 align -0.25 -0.21 LLMs -0.08 -0.09 <eos>
log πθ(at|st) — new policy
log πold(at|st) — reference / old policy
差值 Δ = log πθ − log πold 决定重要性采样比 rt = exp(Δ), PPO/GRPO 对 rt 进行裁剪以防策略漂移。
The difference Δ = log πθ − log πold determines importance ratio rt = exp(Δ), which PPO/GRPO clips to prevent policy drift.

Fig 5 · ratio clipping:PPO / GRPO 裁剪

Section titled “Fig 5 · ratio clipping:PPO / GRPO 裁剪”

比值 r_t = exp(log π_θ − log π_old) 代表策略更新幅度。PPO 把 r_t 裁剪到 [1−ε, 1+ε],防止单步更新过大造成训练崩溃。

Fig 5 · PPO / GRPO ratio clipping 重要性采样比值裁剪 / Importance sampling ratio clip at [1−ε, 1+ε]
safe zone [1−ε, 1+ε] 0.8 1.2 1.0 clipped RLHF 1.31 uses 1.02 clipped human 0.78 clipped feedback 1.24 to 0.98 align 1.15 LLMs 0.85 <eos> 1.01
rt = πθ(at|st) / πold(at|st) = exp(log πθ − log πold)
LCLIP = Et[ min(rt·Ât, clip(rt, 1−ε, 1+ε)·Ât) ]

Fig 6 · seq-mean-token-mean:loss 聚合方式

Section titled “Fig 6 · seq-mean-token-mean:loss 聚合方式”

先在每条序列内对 response token 取平均(消除序列长度偏差),再跨 mini-batch 取平均得到标量 loss。

Fig 6 · seq-mean → token-mean loss aggregation 先序列内 token 平均,再跨序列平均 / Per-seq token-mean, then batch mean
Step 1 · token-level loss per sequence
seq 1
RLHF
0.32
uses
0.18
human
0.55
feedback
0.41
<eos>
0.08
seq mean 0.308
seq 2
Reinforcement
0.27
Learning
0.44
from
0.19
Human
0.38
Feedback
0.52
.
0.07
<eos>
0.06
seq mean 0.276
seq 3
It
0.14
trains
0.36
a
0.09
reward
0.48
model
0.31
<eos>
0.05
seq mean 0.238
Step 2 · average seq-means across batch
batch loss = 0.2740 = (0.308 + 0.276 + 0.238) / 3
Seq-mean-token-mean:先在每条序列内按 token 数归一化,再跨序列平均,消除序列长度偏差。
Seq-mean-then-batch-mean: normalize per sequence first, then average across the batch — eliminating length bias.

Fig 7 · softmax Jacobian → 梯度回传 → Megatron 管线

Section titled “Fig 7 · softmax Jacobian → 梯度回传 → Megatron 管线”

从标量 loss 开始,梯度经由 softmax Jacobian 传回 logit,再沿 96 层 Transformer 反传至所有 235B 参数,最终由 Megatron-LM 的三维并行切分(PP/TP/DP)分发到各 GPU 更新权重。

Fig 7 · softmax Jacobian → 梯度回传 → Megatron 管线 梯度如何从 loss 流回 235B 参数 / Gradient flow through the full training pipeline
L
scalar loss
∈ ℝ
∂L/∂logit ∈ ℝV
∂softmax
Softmax Jacobian
J = diag(p) − p·p ∈ ℝV×V
V ≈ 128k vocab; full J 太大→实际用向量积简化
∂L/∂hlast ∈ ℝd (d = 8192)
Layer 96 Layer … Layer 1
Transformer backprop
96 layers × (Attn + FFN) = 235B params total
每层累积 ∂L/∂W via chain rule
gradient tensors 分发到各设备
Megatron-LM
3D 并行切分
PP stage 1
layers 1–24
PP stage 2
layers 25–48
PP stage 3
layers 49–72
PP stage 4
layers 73–96
← Tensor Parallel (TP) → ↕ Data Parallel (DP)
AllReduce grad sync (DP) + send/recv (PP)
Adam
Optimizer step
θ ← θ − α · m̂ / (√v̂ + ε)  ·  235B params updated
Softmax Jacobian 的维度爆炸(V×V ≈ 128k²)在实现中用向量乘法 (p − y) 简化为 O(V) 操作。 Megatron 的流水线并行(PP)、张量并行(TP)、数据并行(DP)三维切分让 235B 参数更新分布在数千 GPU 上。
The softmax Jacobian dimension explosion (V×V) is avoided in practice using the simplified gradient (p − y) — O(V) ops. Megatron's 3D parallelism (PP/TP/DP) distributes the 235B parameter update across thousands of GPUs.

本文引用论文

  • Training language models to follow instructions with human feedback — Long Ouyang et al. (2022)

    InstructGPT 论文,提出了 RLHF 三阶段训练方法(SFT → 奖励模型 → PPO 强化学习), 让语言模型从"预测下一个词"转变为"按人类意图回答问题"。这是 ChatGPT 的直接前身, 开创了对齐技术的主流路线。

  • Deep Reinforcement Learning from Human Preferences — Paul Christiano et al. (2017)

    RLHF(人类反馈强化学习)的奠基论文。作者展示了通过人类对比偏好来训练奖励模型, 再用该奖励模型指导强化学习,可以让 agent 学会难以用奖励函数显式描述的复杂行为。 这个框架后来被 InstructGPT/ChatGPT 直接采用。

  • Direct Preference Optimization: Your Language Model is Secretly a Reward Model — Rafael Rafailov et al. (2023)

    DPO(直接偏好优化)证明了 RLHF 中的奖励模型 + RL 两步可以合并为一步有监督学习: 直接在偏好数据上优化语言模型参数,数学上等价于最优 RLHF 策略。 DPO 因其简洁高效成为对齐研究和开源社区的主流替代方案。

  • Constitutional AI: Harmlessness from AI Feedback — Yuntao Bai et al. (2022)

    Anthropic 的 Constitutional AI(CAI)方法:用一组明文"宪法"原则,让模型先进行自我批评和 修订(SL-CAI 阶段),再用 AI 反馈代替人类反馈做 RLHF(RLAIF 阶段)。 这减少了对人工标注的依赖,是 Claude 系列模型对齐的核心技术。

  • RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback — Harrison Lee et al. (2023)

    Google 系统性地证明 RLAIF 在多种任务上能匹敌 RLHF,把"AI 反馈替代人工"作为可扩展的对齐方案给出工程证据。

  • LoRA: Low-Rank Adaptation of Large Language Models — Edward J. Hu et al. (2021)

    LoRA 通过冻结预训练模型权重,只训练两个低秩矩阵的乘积(秩 r 远小于原始维度), 把微调的可训练参数量降低了 10000 倍。这使得在消费级 GPU 上微调大模型成为可能, 几乎成为当今最主流的参数高效微调(PEFT)方法。