A5 Supplement (Instruction Tuning & RLHF / DPO)

A5 补充(Instruction Tuning & RLHF / DPO)

一份“通用对话助手对齐”的完整流水线:先做 多基准零样本评测,再做 指令微调(SFT),然后做 偏好对齐(DPO),并在多个维度(能力 + 安全 + 对话质量)上评测与分析“alignment tax”。

0) 总览:要实现什么、要跑什么、代码结构

**你需要实现(from scratch)**三类组件:

  1. 多个数据集的 zero-shot prompting baseline
  2. SFT 指令微调(instruction-response pairs)
  3. DPO(pairwise preference data)

并且给了专门的 GitHub repo(含 prompts、tests、data、脚本配置),要求你通过指定测试:test_data.py/test_sft.py/test_dpo.py/test_metrics.py

1) Part 2:零样本评测 Baselines(四个任务集:知识/推理/对话质量/安全)

补充用 同一个 system prompt做通用助手 baseline(强调 helpful+safe),并利用“看到 # Query: 就停止生成”的约定来截断输出。

1.1 MMLU baseline(mmlu_baseline,4分)

任务包括:

1.2 GSM8K baseline(gsm8k_baseline,4分)

任务几乎同 MMLU,但解析为数字:

1.3 AlpacaEval baseline(alpaca_eval_baseline,4分)

这是“对话质量/指令遵循”评测:

1.4 SimpleSafetyTests baseline(sst_baseline,4分)

这是“安全/拒答能力”评测:

2) Part 3:Instruction Fine-Tuning(SFT 指令微调)

2.1 看数据(look_at_sft,4分)

2.2 实现数据加载(data_loading,3分)

这块很工程:把 prompt/response 变成“可 packed 的 LM token 流”。

2.3 写 SFT 训练脚本(sft_script,4分)

2.4 跑一次指令微调(sft,6分,算力很重)

3) Part 4:评测指令微调后的模型(四个基准 + 误差分析)

对每个基准都要求:写脚本、测吞吐、报指标、做 10 个错例分析,并对比 zero-shot baseline。

4) Part 4.5:Red-teaming(红队测试,4分)

5) Part 5:DPO(偏好对齐,替代 PPO/RLHF 的简化路线)

先讲 RLHF 经典流程,再给出 DPO 目标推导(Equation 3),然后实现 DPO loss 与训练。

5.2 看偏好数据(look_at_hh,2分)

5.3 实现 DPO loss(dpo_loss,2分)

5.4 DPO 训练 + 多基准“对齐税”分析(dpo_training,4分)

一句话总结:A5 补充的“任务谱系”

  1. 评测工程:为 MMLU/GSM8K/AlpacaEval/SST 写 prompt、生成脚本、解析器、落盘、吞吐与错误分析。
  2. SFT 工程:看数据 → packed 数据加载 → 可配置训练脚本(含梯度累积) → 训练并保存 → 四基准再评测。
  3. 安全评测与红队:自动安全评审 + 人工 red-teaming。
  4. 偏好对齐(DPO):看 HH 数据 → 实现 DPO loss → DPO 训练 → 对话质量/安全提升 vs 能力下降(alignment tax)全套评测。