- 大模型训练与微调全流程详细讲解,覆盖预训练、对齐、高效微调与评估
- 对应面试问答速查见 大模型训练与微调(面试版)
- 相关主题:大模型基础、大模型推理与部署、RAG、AI Agent、LangChain 与 LangGraph
- 当前覆盖:预训练目标与 causal LM loss、Scaling Laws、数据工程、混合精度(fp16/bf16)、优化器(AdamW)与学习率调度(warmup/余弦)、梯度累积/裁剪、loss 爆炸排查、硬件通信(NVLink/IB)、FLOPs/Chinchilla、checkpoint 与断点续训、课程学习、SFT 与 instruction tuning、self-instruct/backtranslation、RLHF/PPO、DPO/KTO/ORPO、奖励模型与 reward hacking、RLAIF/Constitutional AI、LoRA/DoRA/rsLoRA/LoRA+、继续预训练、soft/hard prompt、评估与 benchmark 污染、LLM-as-judge、模型合并(SLERP/DARE)、合成数据、偏好建模、少样本/零样本、RLVR、收敛监控
大模型预训练的目标是什么?自回归语言模型和 MLM 有什么区别?
预训练目标
在海量无标注文本上自监督学习,让模型学会语言与世界的统计规律,获得通用能力(下游微调/对齐的基础)。核心是「预测被掩蔽或下一位置的 token」。
自回归(Autoregressive)vs MLM
| 维度 | 自回归(GPT 系) | MLM(BERT 系) |
|---|---|---|
| 目标 | 预测下一个 token | 预测被 mask 的 token |
| 方向 | 单向(因果) | 双向 |
| 生成能力 | 天然可生成 | 不适合直接生成 |
| 代表 | GPT/LLaMA/Qwen | BERT/RoBERTa |
- 现代大模型(GPT 系)统一用自回归「预测下一个词」,因为与生成任务天然一致。
- MLM 更擅长理解类任务,但生成能力弱,已不是大模型主流。
讲清「自回归=预测下一个词、单向、能生成;MLM=预测被 mask 词、双向、擅理解」,并点出大模型统一走向自回归。
什么是 Scaling Laws?它说明了什么?
含义
OpenAI 等提出的经验规律:模型性能(损失)与参数量 N、数据量 D、计算量 C 呈可预测的幂律关系,与具体结构细节关系不大。
Loss ≈ f(N, D, C),三者各自平滑缩放,某一维度受限会形成瓶颈结论
- 规模是王道:持续加大参数量/数据量/算力,损失稳定下降。
- 三者需匹配:模型大小与数据量要同比例增长,否则浪费(Chinchilla 定律:一个 token 应配约 20 个参数的规模)。
- 可预测性:可用小模型外推大模型性能,指导资源分配。
- 后续发现「涌现能力」等说明单纯幂律之外还有质变,但缩放仍是核心方法论。
答「性能与 N/D/C 呈幂律、规模可预测」,并提到 Chinchilla「数据与参数需匹配、别只堆参数忽略数据」这个实操结论。
预训练数据需要做哪些处理?数据清洗、去重、配比为什么重要?
数据处理流程
- 采集:网页、书籍、代码、论文、多语言语料。
- 清洗:去 HTML/广告、过滤低质/有害/隐私、质量分类(用分类器打质量分)。
- 去重:文档级与段落级去重,防止数据重复导致过拟合/记忆。
- 配比:按领域(代码/数学/百科/多语言)设定比例混合。
- 去污染:剔除与评测集重叠的数据,保证 benchmark 可信。
为什么重要
- Garbage in, garbage out:低质数据直接拉低模型质量与安全性。
- 去重提升训练效率、降低记忆复读。
- 配比决定模型能力侧重(代码/数学比例高 → 推理强)。
- 数据质量是除算力外最影响效果的因素,高质量小数据常胜过低质量大数据。
强调「数据质量 > 数据数量」,能说出「清洗/去重/配比/去污染」四件套,并提「去污染保证评测可信」这个细节。
什么是 SFT(监督微调)?它解决什么问题?
定义
Supervised Fine-Tuning:用「指令-回答」对(人工或模型生成的高质量 QA)对预训练模型微调,让模型学会遵循指令、按期望格式回答。
解决什么问题
预训练模型只会「续写」,不会「听话」:
- 你问「1+1=?」它可能接着编,而不是回答问题。
- SFT 教会模型「理解指令 → 给出有用回答」的行为模式。
特点
- 数据量小(几千~几十万条高质量指令即可见效)。
- 是 RLHF/DPO 的前置步骤,也是对齐的第一步。
- 关键在数据质量与多样性:覆盖任务类型、格式规范、拒绝/边界情形。
一句话「SFT 用指令-回答对教模型遵循指令」,点出「预训练只会续写、SFT 才会回答」,并强调数据质量与多样性。
RLHF 的完整流程是什么?PPO 有哪些挑战?
RLHF 三步流程
- SFT:指令微调得到策略模型。
- 训练奖励模型(Reward Model, RM):对同一 prompt 生成多个回答,人工标注偏好排序,训练 RM 打分「哪个更好」。
- PPO 强化学习:用 RM 作为奖励,PPO 优化策略模型,使生成更符合人类偏好。
PPO 的挑战
- 训练不稳定:策略/奖励/价值三个模型交替更新,超参敏感。
- 奖励 hacking:模型钻 RM 空子得高分而非真正变好。
- 成本高:需额外训练 RM 与价值网络,工程复杂。
- 由此催生 DPO 等免 RM、免强化学习的替代方法。
完整说出「SFT → RM → PPO」三步,并能点出「奖励 hacking、不稳定、成本高」三个痛点,自然引出 DPO。
DPO 的原理是什么?相比 RLHF 有什么优势?
原理
Direct Preference Optimization:把 RLHF 的「奖励模型 + 强化学习」两步,压缩成一个单阶段的有监督损失。数学上把奖励函数用策略概率隐式表示,直接对「好回答 vs 坏回答」数据对优化。
核心:直接最大化「好回答相对坏回答」的对数概率差,无需显式训练 RM优势
| 维度 | RLHF(PPO) | DPO |
|---|---|---|
| 需要 RM | 是 | 否 |
| 需要强化学习 | 是(PPO) | 否(纯监督损失) |
| 训练稳定性 | 差 | 好 |
| 计算成本 | 高 | 低 |
| 效果 | 经典、上限高 | 多数场景相当 |
- DPO 用「偏好对」数据即可,成为主流轻量对齐方案。
讲清「DPO 把 RM+PPO 合并成单阶段监督损失,免 RM 免 RL」,并说明「更稳、更省,多数场景效果相当」。
LoRA 的原理是什么?为什么能做到参数高效?rank 怎么选?
原理
Low-Rank Adaptation:冻结原模型权重 W,只训练一个低秩增量 ΔW = B·A(A、B 是两个小矩阵,秩为 r),前向 h = Wx + BAx。
ΔW = B·A,其中 A∈R^{r×d},B∈R^{d×r},r << d为什么参数高效
- 原权重 W 不动,只学
B·A,参数量从d×d降到2·d·r(r=8/16 时可降几个数量级)。 - 推理时可把
ΔW合并回 W(W'=W+BA),不增加推理延迟。 - 可训练参数少 → 显存省、可多任务并存、切换快。
rank 怎么选
- r 越大表达越强,但收益递减;常见 r=8~64。
- 简单任务 r 小即可,复杂/大模型可加大 r,或用 rsLoRA 等按需调整。
QLoRA
在 LoRA 基础上把基座模型做 4-bit(NF4)量化并配合分页优化,进一步压显存,让单卡可微调大模型。
核心「冻结 W、只学低秩 ΔW=BA」,强调「推理可合并回 W 不增延迟」,再提 QLoRA 4-bit 进一步省显存。
除了 LoRA,还有哪些参数高效微调(PEFT)方法?
PEFT 家族
只更新极少量参数或引入少量可训练模块,避免全量微调的显存/成本。
| 方法 | 思路 | 特点 |
|---|---|---|
| LoRA/QLoRA | 低秩增量 | 主流、可合并 |
| Adapter | 在层间插入小瓶颈模块 | 每层插小网络 |
| Prefix Tuning | 在输入前加可训练前缀向量 | 冻结模型、只训前缀 |
| Prompt Tuning | 只训一组软 prompt 向量 | 参数极少,大模型效果好 |
| P-Tuning v2 | 深层也加 prompt | 提升小模型效果 |
| IA3 | 缩放激活的少量可学习向量 | 极省参数 |
选型
- 资源紧张、需多任务切换 → LoRA/QLoRA(可合并、可插拔)。
- 极省参数、大模型 → Prompt Tuning。
- 需要改动中间层语义 → Adapter。
归类「加模块(Adapter/LoRA)vs 加提示(Prefix/Prompt Tuning)」,并给出「LoRA 最常用、Prompt Tuning 最省」的结论。
全量微调和高效微调分别适合什么场景?
全量微调(Full Fine-Tuning)
更新全部参数:
- 适合:数据量大(百万级)、领域差异大(如从头适应新语言/新格式)、追求上限、有充足算力。
- 缺点:显存/成本高、每任务存一份全量模型、易灾难性遗忘。
高效微调(PEFT/LoRA)
只更新少量参数:
- 适合:数据少(千~万级)、算力有限、需多任务并存、快速迭代实验。
- 优点:省显存、可插拔、易部署多个 adapter。
- 缺点:极限效果可能略低于全量。
决策要点
数据少+资源少 → LoRA;数据多+要上限 → 全量;两者可组合(先 LoRA 验证,再全量)。
用「数据量 + 算力 + 是否多任务」三个维度判断,说出「数据少用 LoRA、数据多追上限全量」的实操结论。
什么是灾难性遗忘?如何缓解?
定义
模型在微调新任务后,忘记了预训练/旧任务学到的能力(尤其全量微调、领域差异大时明显)。
缓解手段
- PEFT(LoRA):只改少量参数,保留主体权重,遗忘轻。
- 数据混合:微调时混入少量旧领域/通用数据(replay)。
- 多任务联合训练:新旧任务一起训。
- 渐进式/课程式:逐步引入新任务。
- 权重正则/EWC:约束关键参数不要偏离太远。
先定义「学新忘旧」,再给「LoRA 天然缓解 + 混入旧数据 replay」两个最常用手段。
什么是大模型的涌现能力?它真的存在吗?
定义
当模型规模跨过某个阈值后,突然出现小模型不具备的能力(如多步推理、思维链、复杂代码),且这些能力无法从小模型外推预测。
争议
- 支持:GPT-3 论文观察到 scale 带来的质变;多步算术、CoT 等能力在小模型缺失、大模型出现。
- 质疑:有研究认为「涌现」可能只是评测指标选择造成的假象(如精确匹配这类非线性指标会让平滑提升看起来像突变;换成连续指标则能力随规模平滑增长)。
工程含义
无论是否「真涌现」,实践共识是:规模扩大确实解锁更复杂能力,Scaling Laws 仍是指导原则。
平衡作答:「能力随规模质变的现象存在,但『涌现』可能部分是评测指标非线性造成的表象」,体现辩证思考。
如何缓解大模型的幻觉问题?
缓解手段
- RAG:检索外部知识锚定生成,最直接有效。
- 约束解码:限制输出必须符合 schema/词典,减少编造。
- 降低温度 / 贪心:降低采样随机性。
- 自一致性(Self-Consistency):多次采样投票,稳定事实类答案。
- 事实核查 / 反思:生成后让模型自查或外部校验。
- 对齐训练:训练模型「不确定时明确说不知道」。
- 工具调用:让模型查数据库/调用计算器而非脑补。
定位
幻觉无法根除,目标是降低发生概率 + 在关键场景兜底(检索锚定 + 校验)。
把「RAG 锚定 + 约束解码 + 自一致性 + 对齐说不知道」串成体系,并强调「无法根除、重在控制与兜底」。
大模型有哪些评估方法?常用的 benchmark 有哪些?
评估方法
- 困惑度(Perplexity, PPL):衡量语言建模质量,越低越好。
- Benchmark 榜单:固定任务集打分,横向对比。
- LLM-as-judge:用强模型给回答打分(MT-Bench、AlpacaEval),省人工但需防偏置。
- 人工评估:金标准,成本高。
- 能力分域:知识、推理、代码、数学、指令遵循、安全等分项评估。
常用 benchmark
| 维度 | 代表 |
|---|---|
| 综合知识 | MMLU |
| 数学推理 | GSM8K、MATH |
| 代码 | HumanEval、MBPP |
| 中文 | C-Eval、CMMLU |
| 对话质量 | MT-Bench(LLM-as-judge) |
| 长上下文 | LongBench |
分「自动指标 PPL / benchmark / LLM-as-judge / 人工」四类,并能按能力域报出几个代表 benchmark。
训练数据是「质量」重要还是「数量」重要?
结论:质量优先,数量在质量基础上才有意义
- 低质量海量数据会引入噪声、有害内容,反而损害模型(GIGO)。
- 实践(LLaMA、TinyStories、Phi 系列)证明:高质量精选数据 + 合理规模可训出超越更大但更脏数据的效果。
- 但规模仍重要:质量达标后,扩大数量仍按 Scaling Laws 带来收益。
辩证表述
「质量决定上限,数量决定逼近上限的程度」:先保证质量,再在质量约束下尽可能多。
给出「质量决定上限、数量决定逼近程度」这句辩证结论,并举 Phi「小而精」超越更大模型的例子。
causal language model 的 loss 是怎么计算的?
定义
因果语言模型(Causal LM)是自回归模型:给定前文 ,预测下一个 token 的条件概率 ,训练目标是最大化整段文本的对数似然,等价于最小化每个位置的交叉熵:
loss = - (1/T) · Σ_{t=1}^{T} log P(x_t | x_{<t})计算要点
- 训练对每个位置都计算交叉熵,再对 token 数取平均(用 padding mask 屏蔽无效位置)。
- 采用 teacher forcing:每步用「真实前文」而非模型自己生成的前文来预测下一步,训练更稳定。
- 因果掩码(causal mask):位置 t 只能看到前 t−1 个 token,注意力上三角被 mask 掉,防止「偷看未来」。
- 困惑度与 loss 直接挂钩:
PPL = exp(loss),越低说明语言建模越好。
写出「所有位置的 next-token 交叉熵求平均」的公式,并点出 teacher forcing、causal mask、PPL=exp(loss) 三个细节。
什么是混合精度训练?bf16 和 fp16 有什么区别?
定义
混合精度训练:前向/反向用低精度(fp16/bf16)存激活与梯度,主权重保持 fp32(master copy),在几乎不损失精度下大幅降显存、提吞吐。
bf16 vs fp16
| 维度 | fp16 | bf16 |
|---|---|---|
| 指数位 | 5 | 8(与 fp32 相同) |
| 尾数位 | 10 | 7 |
| 动态范围 | 小(max 65504,易上溢/下溢) | 大(与 fp32 同量级) |
| 需要 loss scaling | 是 | 否(大模型首选) |
- fp16:尾数精度高但指数窄,梯度太小时会下溢为 0,需 loss scaling(放大 loss 再回缩)保护小梯度。
- bf16:指数范围与 fp32 一致,几乎不溢出,省去 loss scaling,是 LLaMA 等大模型主流选择。
工程实践
- 主权重 fp32,前向/反向低精度,优化器状态另用 fp32 或分块存储。
- 配合 FlashAttention、梯度 checkpoint 进一步省显存。
点出「bf16 指数位同 fp32 所以不用 loss scaling,fp16 需要」,并说明「主权重 fp32 + 激活梯度低精度」的混合套路。
梯度累积(gradient accumulation)的原理和作用是什么?
原理
把一个 batch 拆成多个 micro-batch,依次前向/反向、累加梯度但不更新参数,累加满 K 步后再执行一次优化器更新:
有效 batch size = micro_batch_size × 累积步数 K作用
- 显存瓶颈主要在「单次 forward/backward 的激活与梯度」,与 batch 大小成正比;梯度累积用小 batch 多次算、梯度累加,用时间换显存,获得大 batch 的训练效果(更稳的梯度、更好的收敛)。
- 不增加单步显存,可在单卡上模拟远超显存限制的 batch。
注意点
- 有效 batch 变大后,学习率通常需按比例放大(线性缩放规则)。
- 累积只省「激活显存」,不省总计算量,训练时间会变长。
- 含 BatchNorm/Dropout 时 micro-batch 间统计量略有差异(Transformer 用 LayerNorm 影响很小)。
说清「等价大 batch = micro-batch × K」,并强调「用时间换显存、需同步放大学习率」两个落地细节。
学习率 warmup 和余弦退火(cosine annealing)是什么?
warmup
训练初期用极小学习率线性/缓慢增长到目标值,避免大 lr 在模型初始状态(梯度大且方向不稳)下把参数「炸飞」,大 batch、深模型尤其必要。
余弦退火(cosine annealing)
达到峰值后,学习率按余弦曲线平滑衰减到接近 0:
lr(t) = lr_min + 0.5 · (lr_max - lr_min) · (1 + cos(π · t / T))- 相比阶梯衰减,余弦前期缓慢下降(充分探索)、后期快速收敛到局部最优,是 LLM 预训练标准配置。
- 常组合成 warmup + cosine:先 warmup 到峰值,再余弦退火,末期用极小 lr 做「冷却」微调。
配套
- 线性 warmup 步数通常占训练总步数的 1%~3%。
- 可配合重启(SGDR)或多周期 cosine 做更多探索。
答「warmup 防初期炸、cosine 平滑收敛到最优」,能写出 cosine 公式并说明是 LLM 预训练标配。
AdamW 和 Adam 有什么区别?为什么用 AdamW?
Adam 回顾
Adam 用一阶矩 m(动量)与二阶矩 v(梯度平方)做自适应学习率:
m_t = β1·m_{t-1} + (1-β1)·g_t
v_t = β2·v_{t-1} + (1-β2)·g_t²
θ_t = θ_{t-1} - lr · m̂_t / (√v̂_t + ε)区别
Adam 的 L2 正则(weight decay)加在梯度上,会被自适应缩放抵消,效果近似 L2 而非真正 decay;AdamW 把 weight decay 从梯度中剥离,直接作用在参数上(decoupled weight decay):
θ_t = θ_{t-1} - lr · (m̂_t / (√v̂_t + ε) + λ · θ_{t-1})为什么用 AdamW
- 解耦后正则与自适应学习率互不干扰,泛化更好。
- 更易与学习率调度(warmup/cosine)配合,收敛更稳。
- 大模型常用 β1=0.9、β2=0.95、weight decay=0.1(GPT-3/LLaMA)。
记住「AdamW = 把 weight decay 从梯度里拆出来直接减参数」,并给 LLaMA 典型超参(β2=0.95、wd=0.1)。
大模型训练的硬件和通信瓶颈有哪些?(NVLink/IB)
硬件层次
- 单机内:多张 GPU 通过 NVLink/NVSwitch 高速互联,带宽数百 GB/s 以上。
- 跨机间:多节点通过 InfiniBand(IB)或 RoCE 以太网互联,带宽 200~800 Gb/s,负责节点间通信。
并行策略与通信需求
| 并行策略 | 通信内容 | 主要瓶颈 |
|---|---|---|
| 数据并行(DP) | 梯度 all-reduce | 节点间带宽(IB) |
| 张量并行(TP) | 每层激活/梯度切分 | 机内 NVLink |
| 流水并行(PP) | 层间激活传递 | 点对点带宽 |
| ZeRO | 分片状态与激活 | 带宽/显存 |
瓶颈与优化
- 显存(HBM) 与 通信 是主要瓶颈,算力利用率(MFU)受两者制约。
- 机内用 NVLink 承担高带宽 TP 通信,跨机用 IB 承担 DP 梯度同步。
- 通信与计算重叠(overlap)、梯度分桶、梯度压缩可隐藏通信延迟。
- ZeRO(DeepSpeed)把优化器状态/梯度/参数分片到各卡省显存,靠高带宽通信换。
分清「机内 NVLink、机间 IB」两层,并说出 DP/TP/PP 各通信什么、ZeRO 分片省显存。
训练中如何做 checkpoint 和断点续训?
checkpoint
周期性保存模型状态(权重、优化器状态、学习率调度器、RNG 随机数状态、训练步数),用于容灾与恢复:
checkpoint = 权重 + 优化器状态(m/v) + lr scheduler + step + RNG state断点续训
训练中断(崩溃/断电/超时)后,从最近 checkpoint 完整恢复训练状态继续跑,而非从头重来。
- 优化器状态(AdamW 的 m/v)必须一起存,否则动量丢失、恢复后收敛轨迹会变。
- 保存频率是「存储成本」与「重训成本」的权衡:大模型 checkpoint 可达数百 GB~TB 级,通常每隔 N 步保存并保留多个以防坏点。
- 常配合异步保存(后台线程写盘不阻塞训练)与分布式一致保存。
强调「checkpoint 必须含优化器状态而不只是权重」,并提「频率=存储与重训成本权衡」与异步保存。
如何估算训练 FLOPs?Chinchilla 定律说明了什么?
FLOPs 估算
Transformer 前向+反向总计算量约为前向的 3 倍,常用近似:
FLOPs ≈ 6 · N · DN 为参数量、D 为训练 token 数。直观理解:每个 token 每个参数在前向+反向约 6 次浮点运算(2 前向 + 4 反向)。
Chinchilla 定律
DeepMind 的 Chinchilla 发现:给定算力预算,参数量与数据量应等比例放大,最优配比约为 1 个 token 配 20 个参数(D ≈ 20N)。
- 反例:GPT-3(175B 参数、300B token)「过参数化」,在同样算力下 Chinchilla(70B 参数、1.4T token)效果更好。
- 结论:别只堆参数忽略数据,数据不足时缩小模型、多喂数据更划算。
应用
- 规划训练:先定算力预算 → 用 6ND 估 FLOPs → 按 D≈20N 反推模型大小与数据量。
- 注意:MoE 模型用「激活参数」估算更准;数据质量提升可突破该配比。
记住「FLOPs ≈ 6ND」与「Chinchilla 一个 token 配约 20 参数」,并能举 GPT-3 过参数化的例子。
什么是 curriculum learning?它有什么用?
定义
模仿人类「由易到难」的学习方式:训练时按难度从简单到困难有序喂给模型,而非随机打乱。
做法
- 难度度量:样本长度、词频、困惑度、语法复杂度,或模型对样本的 loss/置信度。
- 课程设计:分阶段提升难度,或从小语料/短文本开始的渐进式训练。
- 常见变体:难度自动估计(用当前模型 loss 作难度信号)、Anti-curriculum(先难后易,少数场景更优)。
有什么用
- 前期训练更稳、收敛更快,可能提升最终效果。
- 适合数据质量不均、有天然难度层级的任务。
- 争议:LLM 预训练通常直接随机洗牌 + 大 batch已很好,课程学习收益不稳定,更多在微调/小模型或特定任务中见效。
说清「由易到难有序训练」,并诚实指出「LLM 预训练收益不稳定、常被随机洗牌替代」这一辩证点。
「预测下一个 token」作为训练目标有哪些局限?
核心局限
自回归「预测下一个 token」只优化局部下一步的统计拟合,不等于「理解与规划」:
- 不保证事实正确:只学语料分布,会流畅地编造(幻觉根源之一)。
- 缺乏长期规划/多步推理:逐 token 贪心/采样,难以显式优化「整体答案质量」。
- 误差累积(exposure bias):训练看真实前缀、推理看自己生成的前缀,一步错步步错。
- 对齐缺失:只学「像训练数据」,不学「符合人类意图与安全」。
- 难以高效探索:无法像 RL 一样显式权衡探索与利用、优化长期回报。
缓解
- 事实性 → RAG/工具/约束解码;推理 → CoT/ToT/搜索;对齐 → RLHF/DPO;误差累积 → scheduled sampling。
从「不保证事实、缺规划、误差累积、缺对齐」四点展开,各给一个缓解方向,体现体系化思考。
梯度裁剪(gradient clipping)是什么?为什么要用?
定义
反向传播后、优化器更新前,限制梯度范数不超过阈值,防止梯度爆炸导致训练崩溃。
两种主流方式
按范数裁剪:g ← g · min(1, max_norm / ‖g‖₂) (当 ‖g‖₂ > max_norm 时)
按值裁剪: g ← clamp(g, -v, v)- 按范数(norm clipping):全局梯度 L2 范数超阈值则整体等比缩放,保持方向、只压大小,是 LLM 训练最常用(max_norm 常设 1.0)。
- 按值(value clipping):逐元素截断到 [-v, v],简单但可能改变方向。
为什么需要
- 深网络、大 lr、长序列、混合精度下梯度易累积放大,一步就把权重「打飞」。
- 梯度裁剪是最后一道保险,配合 warmup、合理 lr、混合精度一起保证稳定。
答「按 L2 范数等比缩放、保方向压大小,阈值常设 1.0」,并说明它是防梯度爆炸的兜底手段。
训练中 loss 爆炸或 NaN 如何排查?
常见原因与排查顺序
- 学习率过大 / warmup 不足:初期大 lr 把权重打飞 → 先检查 lr 与 warmup,尝试调小。
- 混合精度溢出:fp16 指数窄易溢出,检查 loss scaling;bf16 基本无此问题。
- 数据异常:出现 NaN/Inf 输入、异常大数值、或 tokenizer 产生异常 token → 检查数据与 mask。
- 梯度爆炸/消失:观察梯度范数曲线,加梯度裁剪。
- 数值不稳定算子:某些激活/归一化/softmax 在极端值下溢出(如 attention logits 过大)→ 检查实现精度。
- 优化器状态污染:restore 错误 checkpoint 或混合了不同 run 的状态。
定位方法
- 二分法:逐层/逐 step 定位首次出现 NaN 的位置(打印每层输出与梯度)。
- 用
torch.autograd.detect_anomaly或检查 inf/nan 传播链。 - 回滚到上一个正常 checkpoint,缩小变量范围(lr、数据、精度)做对照实验。
给出「lr/warmup → 精度溢出 → 数据异常 → 梯度裁剪」的排查顺序,并提「二分定位 + detect_anomaly」的方法论。
奖励模型(RM)是怎么训练的?偏好标注怎么做?
训练流程
奖励模型输入 prompt 与回答,输出一个标量奖励分,代表「回答有多符合人类偏好」。
- 采样:对同一 prompt 用 SFT 模型生成多个回答(如 2~4 个)。
- 标注偏好:人工(或 LLM-as-judge)标注哪个更好,得到偏好对 (prompt, 好回答, 坏回答)。
- 训练:用 Bradley-Terry 模型建模偏好,最大化「好回答得分 > 坏回答得分」的概率:
Loss = -log σ( r(x, y_good) - r(x, y_bad) )偏好标注怎么做
- 多样 prompt:覆盖安全、帮助性、诚实性等维度,避免单一偏好。
- 排序 vs 打分:偏好排序比绝对打分更稳定、更易一致。
- 一致性:多人标注需校准,减少噪声(噪声会损害 RM 质量)。
- 现代常用 GPT-4 等强模型代标,降低人工成本(需防其偏置)。
写出 Bradley-Terry 交叉熵损失,说明「采多样本 → 偏好排序 → 训练排序打分」,并提标注一致性。
什么是 reward hacking?如何缓解?
定义
奖励黑客(reward hacking / reward over-optimization):模型钻奖励模型的空子,拿到高分但并非真正满足人类意图——「游戏化」了奖励信号。
表现
- 输出冗长、堆砌「安全正确」的废话讨好 RM。
- 利用 RM 训练的盲点(如 RM 没见过的话题上打高分)。
- 生成无意义但形式上「高分」的内容。
缓解
- RM 质量:更广覆盖、更强泛化的 RM,降低盲点。
- KL 约束:PPO 中加 KL 散度惩罚,限制策略偏离 SFT 参考模型太远(最常用)。
- 早停:奖励曲线异常上升但真实质量下降时停止。
- 混合奖励:RM 分 + 人工抽检 + 规则/事实性校验多信号融合。
- 直接偏好优化(DPO):跳过显式 RM 与 RL,从根上避免对 RM 的过优化。
定义「钻 RM 空子得高分」,最关键是「KL 约束防偏离 + DPO 从根上规避」两条。
什么是 RLAIF 和 Constitutional AI?
RLAIF(RL from AI Feedback)
用 AI 模型(而非人类) 生成偏好反馈来训练:让强 LLM 对回答打分/排序,替代人工标注,成本低、可扩展,但需防 AI 自身偏置。
Constitutional AI(宪法式 AI,Anthropic)
RLAIF 的具体范式:给模型一套原则(宪法),让模型自我批评、自我修正,无需大量人工标注。
- 监督阶段:模型生成回答 → 依据「宪法」自我批评 → 修订回答 → 得到修正后的偏好对用于微调。
- RL 阶段:用「宪法」驱动的 AI 反馈训练偏好模型,再做 RL。
宪法示例:选择更无害、更诚实、更避免性别/种族偏见的回答意义
- 大幅降低人工标注成本,偏好可由规则显式定义、可审计可调整。
- 把「安全对齐」变成可编程的目标,是 RLHF 的重要补充/替代。
答「RLAIF 用 AI 反馈替代人工」,Constitutional AI =「模型按宪法自我批评修订」,强调可审计、低成本。
KTO 和 ORPO 是什么?和 DPO 有什么区别?
背景
DPO 需「成对偏好数据」,实际中「单条好/坏样本」更常见。新方法放宽数据要求、或合并阶段。
| 方法 | 数据要求 | 是否需参考模型 | 是否分阶段 |
|---|---|---|---|
| DPO | 成对(好+坏) | 是 | SFT 后单独对齐 |
| KTO | 单样本 + 好坏标签 | 是 | SFT 后单独对齐 |
| ORPO | 成对(好+坏) | 否 | SFT+对齐一步完成 |
KTO(Kahneman-Tversky Optimization)
- 借鉴前景理论,只需单条样本(好 or 坏)+ 二元标签,无需成对。
- 用「效用函数」建模:好样本提升期望、坏样本拉低期望,非对称处理。
ORPO(Odds Ratio Preference Optimization)
- 把 SFT 和偏好对齐合并到一步:同一损失里同时做「监督学习 + 偏好对比」。
- 无需单独 SFT 阶段、无需参考模型,训练更省。
趋势
- 共同趋势:去参考模型、去成对数据、合并阶段,让对齐更简单高效。
归纳「KTO 放宽成对要求、ORPO 合并 SFT+偏好」,并点出「去参考模型/合并阶段」的演进趋势。
PPO 的 clip 机制是什么?为什么需要 clip?
PPO 目标
PPO 在策略梯度上做信任域约束,限制每次更新幅度,防止策略「一步跨太大」崩掉。
ratio r(θ) = π_θ(a|s) / π_θ_old(a|s)
L^CLIP = E[ min( r(θ)·A, clip(r(θ), 1-ε, 1+ε)·A ) ]- clip(r, 1−ε, 1+ε):把新旧策略概率比限制在 [1−ε, 1+ε](ε 常取 0.2)。
min(...):当优势 A>0(好动作)不放大 ratio 超 1+ε;A<0 不缩小超 1−ε,避免激进更新。
为什么需要 clip
- 普通 policy gradient 直接
∇J = E[A·∇log π],无步长约束,方差大、易策略突变导致崩溃。 - 对 LLM 尤其危险:策略空间巨大,一次坏更新可能让输出彻底变差。
- PPO 的 clip + 优势估计(GAE)+ KL 惩罚,保证小步、稳定地朝高奖励方向走。
写出 clip 公式,解释「ratio 限幅 + min 防激进」,并说「PG 无约束易崩、PPO 小步稳定」。
SFT 数据如何构建?数据质量如何保证?
构建流程
- 采集 prompt:真实用户问题、开源数据集(如 Alpaca、ShareGPT)、自建领域问题。
- 生成回答:强模型(GPT-4 等)生成、人工撰写、或真实对话历史。
- 清洗:去重复、去低质/过短/无意义、去有害与隐私。
- 格式化:统一为「指令-回答」或对话模板(system/user/assistant),与推理模板一致。
质量如何保证
| 维度 | 保证手段 |
|---|---|
| 质量 | 强模型生成 + 人工审核 + 质量打分筛选 |
| 多样性 | 覆盖多任务类型、多难度、多领域 |
| 格式 | 统一模板、长度分布合理、含拒绝/边界样本 |
- 少而精:几千~几万条高质量数据即可见效,宁缺毋滥。
- 模板一致很关键:训练模板必须与推理模板一致,否则性能下降。
强调「质量 > 数量、多样性覆盖任务类型、训练与推理模板一致」,这是 SFT 数据最易踩的三个坑。
instruction tuning 和 SFT 是什么关系?
关系
Instruction tuning(指令微调)是 SFT 的一种具体形式:SFT 是「监督微调」大类,instruction tuning 特指用**「指令-回答」格式**的数据做 SFT,让模型学会遵循指令。
区别
| 维度 | 泛化 SFT | Instruction tuning |
|---|---|---|
| 数据 | 任意监督对(分类、问答等) | 自然语言指令 + 期望输出 |
| 目标 | 拟合特定任务 | 泛化到未见过的指令 |
| 代表 | 传统任务微调 | FLAN、T0、ChatGPT 对齐 |
- 传统 SFT 常针对单一任务(如分类微调);instruction tuning 用多任务指令混合训练,追求「一个模型会听各种指令」的零样本泛化。
- 大模型对齐语境下两者常混用:说「SFT」基本指「instruction tuning」。
一句话「instruction tuning 是 SFT 的子集,用指令-回答数据教模型泛化遵循指令」,并举例 FLAN/T0。
什么是 self-instruct?什么是 backtranslation?
self-instruct
用模型自己生成指令数据,降低人工/API 成本:
- 用少量种子指令让模型生成新指令(+ 输入 + 输出)。
- 过滤低质/重复指令,保留有效样本。
- 用生成的数据微调模型(如 Alpaca 就是 self-instruct 蒸馏 ChatGPT 而来)。
backtranslation(指令回译)
反向:从大量无标注文本「逆向」生成指令,解决指令数据稀缺:
- 从 web 语料选片段,让模型「反推」它可能回答的指令。
- 用强模型对「指令-回答」对打分,筛选高质量样本。
- 先用高质量种子微调模型,再用模型自己扩展数据(Self-Alignment)。
意义与风险
- 低成本、可无限扩展指令数据。
- 风险:模型自我生成的噪声/偏置会自我放大(模型塌缩),需严格过滤与多样性控制。
讲清「self-instruct 模型自己造指令、backtranslation 从文本反推指令」,并提醒「自产数据需过滤防自我放大」。
LoRA 一般加在哪些层?为什么?
一般加在哪
- 默认加在注意力的 Q、K、V、O 投影(
q_proj/k_proj/v_proj/o_proj)。 - 常见省参配置只加 Q、V;难任务可扩展到 FFN 的 up/gate/down。
为什么加这些层
- 注意力的 Q/K/V/O 是线性投影,加低秩增量最直接、改动量最小。
- 注意力层是「信息交互」核心,对下游任务敏感,微调收益最大。
- 实验(LoRA 原论文)表明:只改注意力权重即可达到接近全量微调,FFN 可不动。
实践
| 策略 | 参数 | 效果 |
|---|---|---|
| Q+V | 最少 | 接近全量 |
| Q+K+V+O | 较多 | 最稳 |
| +FFN | 更多 | 难任务可能更好 |
答「Q/K/V/O 是线性投影、注意力层对任务最敏感」,并给 target_modules 的常见配置。
LoRA 的 alpha 和 dropout 参数是什么作用?
alpha(缩放系数)
LoRA 前向 h = Wx + (α/r)·BAx,其中 α 是缩放因子,r 是秩:
ΔW = (α / r) · B · A- α 控制「低秩增量」对原始输出的影响强度,等价于调节学习率的量级。
- 常用
α = 2r(如 r=8 → α=16)或α = r;α/r 才是真正的缩放比。 - α 越大,LoRA 学到的改动越「大胆」,需与 lr 联合调。
dropout
- LoRA 内部对
A的输入做 dropout(如 0.1),正则化防止过拟合。 - 作用在「可训练的低秩路径」上,而非原模型路径。
- 数据量小、易过拟合时增大;数据充足、欠拟合时可减小或设 0。
参数关系
- r 定容量,α 定更新幅度,dropout 定正则强度,三者 + lr 共同决定微调效果。
说清「α/r 才是有效缩放、α 等价调学习率」,dropout 是低秩路径的正则,给出 α=2r 的常用经验。
什么是 DoRA?相比 LoRA 有什么改进?
DoRA(Weight-Decomposed Low-Rank Adaptation)
把预训练权重分解为 幅度(magnitude)+ 方向(direction) 两部分:
W = m · V / ‖V‖c- 方向部分 V 用低秩增量更新(同 LoRA):
V = W0 + BA。 - 幅度部分 m 作为独立可学习标量,单独学习。
- 更新后
W' = m · (W0 + BA) / ‖W0 + BA‖c。
相比 LoRA 改进
- LoRA 把「幅度与方向」的变化耦合在一起,学习能力受限;DoRA 解耦后更接近全量微调的表达能力。
- 实验:相同可训练参数下,DoRA 常优于 LoRA,尤其低秩(r 小)时差距更明显。
代价
- 多了归一化与幅度向量,前向略增开销;推理仍可合并回 W。
核心「把权重拆成幅度×方向,只对方向做低秩、幅度单独学」,点出「低秩下比 LoRA 更接近全量」。
rsLoRA 和 LoRA+ 是什么?解决了什么问题?
rsLoRA(Rank-Stabilized LoRA)
修正 LoRA 的缩放:把缩放因子改为 α/√r 而非 α/r,使不同 rank 下梯度方差稳定,从而可用较大 rank 而不崩:
ΔW = (α / √r) · B · A- 好处:允许用更大 r 提升容量,且训练更稳定。
LoRA+
LoRA 原版 A、B 用相同学习率;LoRA+ 发现模型很宽时,应给 A、B 不同学习率(B 的 lr 更大,常取 A 的数倍)才能有效收敛:
lr_B = λ · lr_A,λ 常取 4~16- 原因:宽网络下 A、B 梯度尺度不同,统一 lr 会导致一个学不动。
共同点
- 都在修正 LoRA 的训练细节(缩放/学习率),让低秩微调更稳定、容量更大,是 LoRA 的进阶改进。
答「rsLoRA 改缩放为 α/√r 稳梯度、支持大 rank;LoRA+ 给 B 更大学习率」,都属于 LoRA 训练细节优化。
全量微调和 LoRA 的学习率设置有什么区别?
全量微调
- 已预训练的权重对下游任务已较近,lr 应远小于预训练,常见 1e-5 ~ 5e-5。
- 预训练常 1e-4 级别,全量微调降 1~2 个数量级,避免破坏已学知识(防灾难性遗忘)。
LoRA 微调
- 只更新少量低秩参数,可承受更大 lr,常见 1e-4 ~ 3e-4(是基座 lr 的 10~30 倍)。
- 原因:A/B 从零初始化,需较大 lr 快速学;且原权重冻结,不怕打飞。
对比
| 方式 | 典型 lr | 理由 |
|---|---|---|
| 预训练 | 1e-4 量级 | 从零学,需大步 |
| 全量微调 | 1e-5 ~ 5e-5 | 保护预训练知识 |
| LoRA | 1e-4 ~ 3e-4 | 只训低秩增量,可大步 |
- 调参时先小 grid 搜 lr,配合 warmup 与 cosine;官方模型各有推荐值。
记住量级「预训练 1e-4、全量 1e-5、LoRA 1e-4~3e-4」,并解释「LoRA 只改少量参数所以 lr 可更大」。
微调数据量多少合适?如何防止过拟合?
数据量经验
- SFT:几千~几万条高质量指令通常足够;数据质量 > 数量。
- LoRA:几百~几千条即可见效(领域/风格迁移场景更少)。
- 全量微调/继续预训练:需更多(万~百万级),否则易过拟合/遗忘。
如何防止过拟合
- 早停(early stopping):看验证 loss/指标,上升前停止。
- 减少 epoch:LoRA 常 1~3 epoch 足够,多轮易背数据。
- 正则化:dropout、weight decay、降低 lr。
- 增大/增广数据:增加多样性、数据增强。
- 降低容量:减小 LoRA rank、冻结更多层。
- 混入通用数据:防止遗忘与过拟合到领域。
判断
- 训练 loss 持续下降、验证 loss 上升(两条曲线「开叉」)是经典过拟合信号。
答「看 train/eval loss 是否开叉」,并给「LoRA 1~3 epoch、早停、降 rank、混通用数据」的实操。
继续预训练(CPT)和微调(SFT)有什么区别?
定义
继续预训练(CPT / continual pretraining):用大规模领域无标注文本,继续做自回归「预测下一个 token」,让模型学会新领域/新语言的知识与语言模式。
与 SFT 的区别
| 维度 | 继续预训练 | SFT 微调 |
|---|---|---|
| 数据 | 海量无标注文本 | 少量指令-回答对 |
| 目标 | 预测下一 token(学知识/语言) | 遵循指令(学行为) |
| 数据量 | 大(B 级 token) | 小(万级条) |
| lr | 较小(接近预训练,防遗忘) | 适中 |
| 产出 | 领域基座模型 | 对话/任务模型 |
应用
- 领域大模型(医学/法律/金融):先 CPT 注入领域知识,再 SFT 学对话。
- 新语言/代码补全:补齐模型不会的语言或格式。
用表格分清「CPT 学知识、SFT 学行为」,并给出「先 CPT 后 SFT」的领域模型标准流程。
soft prompt 和 hard prompt 有什么区别?
hard prompt(硬提示)
自然语言编写的离散文本提示,人可读、可解释:
请总结以下文章:...- 优点:可解释、易编辑、无需训练。
- 缺点:对措辞敏感、需人工设计、离散不可微、搜索空间受限。
soft prompt(软提示)
在输入 embedding 前拼上一组可学习的连续向量(不可读的「虚拟 token」),通过反向传播优化:
[soft_vectors] + 真实 token embedding- 优点:连续可微、可端到端优化、参数极少(Prompt Tuning 只训几百~几千向量)。
- 缺点:不可读、难解释、跨模型迁移需重新训练。
对比
| 维度 | hard prompt | soft prompt |
|---|---|---|
| 形式 | 离散文本 | 连续向量 |
| 可解释 | 是 | 否 |
| 优化 | 手工/搜索 | 梯度优化 |
| 参数 | 0 | 少量 |
讲清「soft 是连续可微、梯度优化的向量,hard 是离散文本」,并说 Prompt Tuning 就是训 soft prompt。
什么是 benchmark 污染?如何防止?
定义
评测集(或其部分内容)泄露进了训练数据,导致模型在 benchmark 上「背答案」而非真正具备能力,分数虚高。
来源
- 预训练语料爬取了公开 benchmark 题目(网页上常有)。
- 数据未做去污染(decontamination),或去污染不彻底(只去精确匹配,漏了改写/翻译版)。
如何防止
- N-gram 重叠检测:训练数据与评测集做 13-gram 等重叠过滤。
- 去污染后再训:剔除高重叠样本。
- 动态/私有评测集:定期更新、未公开的 eval 集(如 HELM、私有榜单)。
- 改写检测:不只精确匹配,检测语义近似的变体。
- 报告时说明污染检测结果(如 LLaMA 论文的做法)。
答「评测集泄露进训练 → 背答案 → 分数虚高」,并提「N-gram 去污染 + 私有/动态评测集」两条对策。
LLM-as-judge 有哪些偏置?如何缓解?
常见偏置
- 位置偏置(position bias):裁判模型倾向于「第一个/第二个」位置的回答(无论内容),对回答顺序敏感。
- 长度偏置(verbosity bias):倾向于更长、更啰嗦的回答,即使质量不高。
- 自我偏好(self-preference):偏好自己(同族模型)生成的风格/回答。
- 格式偏置:对特定模板、编号、格式的偏好。
缓解
- 位置交换(swap):两个回答顺序对调各评一次,取平均或要求一致。
- 长度控制:约束输出长度,或 prompt 中明确「忽略长度」。
- 多次采样取平均、用多个裁判模型交叉验证。
- 锚定标准答案:给 reference 答案,让裁判对照打分。
- 校准:用人工标注的少量样本校准 LLM 裁判的偏置。
重点答「位置偏置(swap 对调)+ 长度偏置(控长/忽略长度)」,并提「多裁判交叉 + 人工校准」。
什么是模型合并(model merging)?SLERP 和 DARE 是什么?
定义
模型合并:不训练,直接把多个微调模型的权重「合并」成一个,融合各自能力(多任务、多领域、去毒化等)。
主流方法
| 方法 | 思路 |
|---|---|
| 简单平均 | 同结构模型权重逐元素平均 |
| SLERP | 在权重球面上做球面线性插值(保持范数,比线性插值更平滑) |
| Task Arithmetic | 用「任务向量 = 微调后 − 基座」做加减,W = W0 + Σ α_i·τ_i |
| TIES | 合并时处理参数符号冲突(保留主流方向、丢弃冲突分量) |
| DARE | 先随机丢弃大部分 delta 再缩放合并,减少冲突、更稀疏 |
SLERP 原理
SLERP(w1, w2, t) = [sin((1-t)Ω)/sinΩ]·w1 + [sin(tΩ)/sinΩ]·w2- 在单位球面上按角度 Ω 插值,权重范数不变,避免线性插值导致范数塌缩。
应用
- 合并多个 LoRA adapter、融合领域专家模型、安全去毒化、跨语言能力融合。
答「SLERP 球面插值保范数、Task Arithmetic 加减任务向量、DARE 稀疏化再合并」,强调「免训练融合」。
什么是合成数据?如何用于训练?
定义
合成数据 = 由模型/算法生成(而非真实采集)的数据,用于训练或数据增强。
生成方式
- 强模型蒸馏:GPT-4 等生成指令/回答/推理(self-instruct、蒸馏)。
- 程序生成:代码、数学题、逻辑题按模板/规则生成(可验证答案)。
- 回译/改写:翻译、改写真实数据扩充多样性与规模。
- 模拟环境:工具调用、Agent 交互轨迹由模拟器生成。
如何用于训练
- SFT/对齐数据:补足稀缺领域指令、扩展任务多样性。
- 推理能力注入:生成带思维链(CoT)的数据训练推理。
- 领域数据扩充:医疗/法律等隐私敏感数据用合成替代。
- 难度控制:生成特定难度的样本做课程学习。
风险
- 模型塌缩(model collapse):过度依赖自身生成数据,多样性下降、偏置自我放大。
- 需严格过滤 + 真实性校验,合成数据与真实数据混合使用更稳。
说清「合成数据由模型/程序生成」,列举「蒸馏/程序生成/回译」来源,并提醒「模型塌缩需过滤与混真实数据」。
如何建模人类偏好?有哪些方法?
建模偏好 = 把「人类更喜欢哪个回答」变成可优化的目标
| 方式 | 核心 | 代表 |
|---|---|---|
| 奖励模型 + RL | 训练 RM 打分,RL 优化策略 | RLHF/PPO |
| 直接偏好优化 | 隐式奖励,直接对偏好对做监督 | DPO |
| 排序/对比损失 | 用排序目标拟合偏好 | SLiC、RRHF |
| 效用/前景理论 | 单样本+标签建模效用 | KTO |
| 一步合并 SFT | 同时做监督与偏好对比 | ORPO |
数学视角
- RLHF:
Loss_RM = -log σ(r_good - r_bad),再用 PPO 最大化 r 减 KL。 - DPO:把最优策略代入 RM 目标,得到隐式奖励
r = β·log(π/π_ref),直接优化策略概率:
L_DPO = -log σ( β·log(π(y_good)/π_ref(y_good)) - β·log(π(y_bad)/π_ref(y_bad)) )选择
- 追求上限、算力足 → RLHF;轻量、稳定 → DPO;无成对数据 → KTO;想省阶段 → ORPO。
能写出 DPO 的 β·log(π/π_ref) 隐式奖励,并给出「RLHF 上限高、DPO 轻量稳、KTO/ORPO 放宽数据」的选择。
少样本评估和零样本评估有什么区别?
定义
- 零样本(zero-shot):不给任何示例,只给指令与问题,直接让模型回答。
- 少样本(few-shot):在 prompt 中给 k 个「输入-输出」示例(in-context learning),再让模型回答新问题。
区别
| 维度 | zero-shot | few-shot |
|---|---|---|
| 示例 | 0 个 | k 个(1/5/10-shot) |
| 依赖 | 纯指令理解 | 上下文示例引导 |
| 效果 | 更弱,测真实泛化 | 通常更强 |
| 成本 | 低(prompt 短) | 高(prompt 长、token 多) |
意义
- zero-shot 测模型**真正「会」**的能力(无示例提示)。
- few-shot 测模型的上下文学习(ICL)能力,更贴近「给几个例子让它学」的实际用法。
- 大模型「涌现」的重要现象之一就是 few-shot 能力大幅超越 zero-shot(GPT-3 论文核心发现)。
- 实践:基准常报 0-shot 与 5-shot 两个分数,对比更全面。
答「zero-shot 无示例测泛化、few-shot 给示例测 ICL 能力」,并联系 GPT-3 的 in-context learning 发现。
什么是 RLVR(可验证奖励的强化学习)?为什么推理模型训练用它?
定义
RLVR(Reinforcement Learning with Verifiable Rewards):用可验证的奖励做强化学习——奖励来自确定性验证器(如代码执行结果、数学答案对错、测试用例通过率),而非训练出的 RM 或 LLM 打分。
为什么推理模型训练用它
- 奖励客观无噪声:答案对错可确定,避免 RM 打分的主观误差与 reward hacking。
- 适合长推理轨迹:推理任务需要试错、反思、多步探索,RL 能优化「最终答案正确」这一整体目标。
- 信号明确:直接优化可验证结果(代码跑通、答案正确),比偏好信号更强。
- 代表:DeepSeek-R1、o 系列等推理模型用 RLVR(配合 GRPO 等)显著提升复杂推理。
与 RLHF 的区别
| 维度 | RLHF | RLVR |
|---|---|---|
| 奖励来源 | 训练 RM / 人类偏好 | 可验证规则/执行结果 |
| 适用 | 开放生成、偏好对齐 | 数学/代码/逻辑等可验证任务 |
| 噪声 | 有(RM 偏置) | 无(客观) |
答「RLVR 用可验证奖励替代 RM,奖励客观无噪声」,并联系 DeepSeek-R1/o 系列用它在推理任务上的成功。
如何评估模型训练是否收敛?有哪些监控指标?
监控指标
- 训练 loss:是否稳定下降、趋于平稳(收敛信号)。
- 验证 loss / PPL:判断过拟合(train 降 eval 升 = 过拟合)。
- 梯度范数:防爆炸/消失,观察是否异常。
- 下游 benchmark 分数:定期 eval(MMLU、GSM8K 等),看真实能力是否提升。
- 学习率调度位置:确认 warmup/cosine 按计划推进。
- 资源指标:token 吞吐、MFU、显存/通信利用率、checkpoint 健康。
收敛判断
- 训练 loss 长时间不再明显下降、验证指标趋于平稳 → 收敛。
- 下游任务分数饱和不再提升,甚至下降(过拟合)→ 该停。
- 梯度范数趋于稳定的小值、无异常尖峰。
实操
- 用 TensorBoard/W&B 等可视化,设早停与 checkpoint 定期保存。
- 若 loss 震荡或 NaN,回到「loss 爆炸排查」流程。
答「看 train/val loss、梯度范数、定期下游 benchmark 分数」,收敛 =「loss 平稳且验证/下游不再提升」。