pdf版下载链:https://pan.quark.cn/s/9cc742e9c2a8
08 大模型微调与后训练:LoRA、对齐与训练优化
更新: 2026-10-12
时效说明:框架/API 描述截至 2026-10。训练超参数必须由模型、数据和评测决定;文中的配置仅是起点,不是通用最优值。
📋 目录
- 微调决策与 PEFT
- 偏好优化与在线强化学习
- 显存、并行与数据工程
- 2026 工具链与上线验收
一、微调基础概念
Q1: 什么是微调(Fine-tuning)?为什么需要微调?
微调是在预训练权重基础上继续优化,使模型适应目标行为。常见阶段:
- Continued Pretraining / Domain-Adaptive Pretraining:用领域原始语料继续做语言建模,补充术语和分布。
- SFT:用“输入→理想输出”学习格式、任务流程和风格。
- Preference Optimization:用偏好对或标量反馈改善回答取舍。
- Online RL:模型在线采样轨迹,由可验证奖励、环境或奖励模型评分。
适合微调:
- 输出 schema、语气或工具协议长期稳定。
- 任务有足量高质量示例,prompt 已达到瓶颈。
- 需要把领域行为固化到模型参数,降低每次请求的 prompt 成本。
不应先微调:
- 知识频繁变化:优先 RAG / 工具查询。
- 只缺少少量规则:先做 prompt、结构化输出和校验。
- 没有独立测试集或无法定义成功指标:先建立 eval。
Q2: 全量微调 vs 参数高效微调(PEFT)有什么区别?
全量微调更新全部权重:
- 容量最大,适合大规模预训练/后训练或明显分布迁移。
- 优化器状态、梯度和 checkpoint 成本高。
- 需要 FSDP、ZeRO、TP/PP/CP 等并行策略。
PEFT 冻结大部分基座参数,仅训练少量参数:
- LoRA/DoRA:对线性层注入低秩更新。
- IA3:学习激活缩放向量。
- Prompt/Prefix Tuning:学习虚拟 token 或层级前缀。
- Adapter:在网络中插入瓶颈模块。
选择不是“PEFT 永远不掉点”。数据量大、分布迁移强或需改变深层能力时,全量微调可能更合适;PEFT 的优势是迭代、存储、多租户适配和回滚成本低。
Q3: 什么时候用微调,什么时候用 RAG?
- RAG 改变模型看到的上下文,适合可更新、可引用、需要权限控制的事实。
- 微调改变参数中的行为分布,适合稳定技能、风格、格式和决策偏好。
- 工具调用适合需要实时、精确或有副作用的数据与动作。
生产常见组合:
领域继续预训练(可选)
→ SFT / 偏好优化
→ RAG 注入可追溯知识
→ 工具执行实时动作
→ 规则校验与人工审批
面试中应先问:问题是“不会按要求做”,还是“不知道最新事实”?前者考虑后训练,后者优先检索。
二、LoRA 与 PEFT
Q4: 什么是 LoRA?它的原理是什么?
对冻结权重 W,LoRA 学习低秩增量:
W' = W + scaling × B × A
A ∈ R^(r×d_in), B ∈ R^(d_out×r)
r决定低秩子空间容量。lora_alpha与实现的缩放规则共同决定增量尺度。target_modules决定注入哪些线性层。- 训练只保存 adapter;部署时可动态挂载或合并。
现代实践不能只写死 q_proj,v_proj。应检查模型模块名,并用消融验证 attention-only 与 all-linear。Hugging Face 的 LoRA 指南 还覆盖 AdaLoRA、LoHa、LoKr 等变体;是否采用取决于框架、模型和部署支持。
Q5: LoRA 的超参数怎么选?r 和 alpha 如何影响性能?
可靠顺序:
- 先固定数据、评测集、基座和 chat template。
- 从较小
r起测,容量不足再增大;不能用参数量替代评测。 - 扫学习率、有效 batch、epoch/step 和 warmup。
- 对比 attention-only、MLP 与
all-linear。 - 监控 train/eval loss、任务指标和通用能力回归。
常见误区:
alpha=2r只是经验起点,不是定律。- 增大 rank 不一定弥补错误的 target modules。
- 高 rank adapter 仍可能过拟合。
- adapter 可卸载恢复基座,不代表启用 adapter 时没有灾难性遗忘。
Q6: QLoRA 和 LoRA 有什么区别?
QLoRA 通常指:以 4-bit 量化形式加载冻结基座,在其上训练 LoRA;计算仍使用合适的 BF16/FP16 路径。核心价值是降低基座驻留显存。
需要区分:
- 训练量化不是“把所有梯度都变成 4-bit”。
- 量化格式、double quant、compute dtype 和硬件内核会影响稳定性。
- 合并 adapter 后的导出精度、推理格式和部署引擎兼容性必须实测。
TRL PEFT integration 的当前接口是给 trainer 传 peft_config,QLoRA 再传 BitsAndBytesConfig(load_in_4bit=True)。不要复制旧教程中已变化的构造参数。
简化示意:
from peft import LoraConfig
from transformers import BitsAndBytesConfig
from trl import SFTConfig, SFTTrainer
trainer = SFTTrainer(
model="your-model-id",
args=SFTConfig(output_dir="out"),
peft_config=LoraConfig(
r=32,
lora_alpha=32,
target_modules="all-linear",
),
quantization_config=BitsAndBytesConfig(load_in_4bit=True),
train_dataset=train_ds,
)
这是 API 形态示意;模型、依赖版本、dtype 和参数需按官方当前文档验证。
三、对齐技术:RLHF、DPO 与在线 RL
Q7: 什么是 RLHF?为什么需要对齐?
经典 RLHF 流程:
- SFT 获得可用策略模型。
- 收集同一 prompt 的回答偏好。
- 训练 reward model。
- 用 PPO 等 RL 方法优化策略,同时用 KL 等约束避免偏离参考模型过远。
优势:能利用标量奖励和在线采样。难点:奖励模型偏差、reward hacking、训练不稳定、系统复杂且成本高。
2026 的“对齐”不只等于 RLHF。工程上按监督信号选择:
- gold completion → SFT。
- paired preference → DPO / IPO / ORPO 等。
- unpaired good/bad label → KTO 类方法。
- 可程序验证奖励或环境反馈 → GRPO/RLOO/PPO 等在线方法。
- 多目标、安全约束 → 分项 reward、约束优化和独立红队评测。
Q8: 什么是 DPO?它和 RLHF 有什么区别?
DPO 直接在 chosen/rejected 对上优化策略相对参考策略的偏好,不单独训练奖励模型,也不需要 PPO rollout loop。
适合:
- 已有同 prompt 的偏好对。
- 需要比 PPO 更简单、稳定的离线偏好训练。
限制:
- 质量上限受偏好数据覆盖和噪声制约。
- 离线数据难覆盖新策略生成的分布。
beta、reference model、长度偏好和 chat template 处理会显著影响结果。
不能说“DPO 一定优于 RLHF”。在线 RL 可探索新轨迹;DPO 更像从固定偏好数据学习。
Q9: RLHF/DPO 的数据怎么标注?成本高吗?
数据单元至少包括:
{
"prompt": "...",
"chosen": "...",
"rejected": "...",
"rubric_version": "v3",
"annotator_or_judge": "...",
"metadata": {
"domain": "support", "risk": "low"}
}
质量控制:
- 用明确 rubric 分解正确性、相关性、安全、风格和工具使用。
- 随机交换 A/B 位置,减少位置偏差。
- 计算标注者一致性;争议样本复审。
- LLM 预标注可降成本,但必须抽样人工校验,并防止同源模型偏差。
- 保留失败类型和来源,不只保留单一总分。
- 训练/测试按来源、时间、用户或文档隔离,防止近重复泄漏。
2026 补充:GRPO 何时使用?
TRL 与 Axolotl GRPO 都支持 GRPO 工作流。其核心是同一 prompt 生成一组候选,用组内相对奖励估计优势。
适合:
- 数学答案、代码测试、格式约束等可验证奖励。
- 可以在线生成并接受较高计算成本。
风险:
- 奖励函数漏洞会被模型利用。
- 同组奖励方差过低时学习信号弱。
- rollout 引擎与训练权重同步、异步样本陈旧度、重要性修正都属于系统问题。
- “GRPO 是 2026 唯一主流”是错误说法;方法由数据和奖励决定。
四、训练优化
Q10: 训练时遇到 OOM(显存不足)怎么办?
先定位显存组成:参数、梯度、优化器状态、激活、通信 buffer、临时 kernel workspace。
按代价从低到高处理:
- 减少 micro-batch;用 gradient accumulation 保持有效 batch。
- 开启 BF16/FP16;硬件和框架支持时评估 FP8。
- gradient checkpointing:用额外计算换激活显存。
- sequence packing / padding-free:减少 padding 浪费,但确保 loss mask 正确。
- LoRA/QLoRA 或 optimizer state 量化/offload。
- FSDP2 / ZeRO 分片参数、梯度和优化器状态。
- TP/PP/CP/EP 拆分层、深度、长上下文或专家。
- 降低 sequence length 或用课程式长度训练。
不要把“显存减少 30%”“训练变慢 20%”当通用数字;重计算比例、模型结构、内核和互连都会改变结果。
Q11: 如何防止灾难性遗忘?
- 混入经过许可和质量控制的通用 replay 数据。
- 降学习率、减少步数,使用早停和 weight decay 消融。
- 优先 PEFT,但仍要测 adapter 启用后的通用能力。
- 对关键能力建立固定回归集:指令遵循、安全、工具调用、多语言、长上下文。
- 记录基座、chat template、tokenizer 和数据配比;只比较同一解码设置。
- 若是“领域知识更新”,避免用微调代替可追溯 RAG。
“保留率 >95%”不是通用合格线。应按业务定义不可退化项、容忍区间和统计置信度。
Q12: PEFT 方法对比:LoRA、QLoRA、Adapter、Prefix-Tuning
- LoRA:通用首选起点,生态和部署支持较好。
- QLoRA:显存更紧时使用,需承担量化和导出兼容性验证。
- Adapter:模块边界清晰,但会改变网络路径,推理支持不如 LoRA 普遍。
- Prefix/Prompt Tuning:训练参数极少,简单控制任务可用;深层行为迁移能力可能不足。
- DoRA / rsLoRA / AdaLoRA:针对幅度、缩放稳定性或 rank 分配改进;采用前确认当前引擎支持。
选型指标应包括最终质量、训练吞吐、峰值显存、adapter 大小、合并误差、在线切换和服务内核支持。
Q13: 微调数据如何准备?数据质量如何保证?
推荐流水线:
- 定义任务 rubric 和失败 taxonomy。
- 采集并检查授权、隐私、许可证和数据驻留要求。
- 规范角色、tool call、tool result、图像等消息格式。
- 去重、近重复检测、PII/secret 清理、语言和长度分布检查。
- 规则 + 模型 + 人工抽样联合质检。
- 按来源/时间/实体切分 train/dev/test。
- 版本化 dataset、模板、tokenizer、过滤规则和 lineage。
- 做 contamination 检查;测试题和答案不得进入训练。
不要默认 Alpaca 三字段是标准。现代 chat / tool 数据应保留结构化消息和工具 schema,最终模板必须与部署时完全一致。
数据量不是核心 KPI。优先报告:
- 唯一任务覆盖率与失败类型覆盖率。
- 近重复率、截断率、模板解析失败率。
- 人工抽检通过率与标注一致性。
- 按域/难度/安全等级的 eval 结果。
五、2026 训练工具链
Q14: 现代后训练与分布式训练工具链怎么选?
截至 2026-10,可按层次选:
- Transformers + PEFT + TRL:适合 SFT、DPO、GRPO 等标准后训练和快速实验。
- Axolotl / LLaMA-Factory:配置化训练,适合常见模型、数据格式和 PEFT/RL 配方。
- PyTorch FSDP2:原生
fully_shard,按参数分片;官方建议自底向上对层调用,再包根模块。 - TorchTitan:PyTorch 大模型训练参考栈,覆盖 FSDP2、TP/CP/PP 等组合。
- Megatron Core:面向大规模 GPU 训练,覆盖 DP、TP、PP、CP、EP、Megatron-FSDP 与优化内核。
- DeepSpeed:ZeRO、offload、pipeline 等仍常用;应以当前兼容矩阵验证模型与训练器集成。
PyTorch FSDP2 的核心示意:
from torch.distributed.fsdp import fully_shard
for layer in model.layers:
fully_shard(layer, mesh=dp_mesh)
fully_shard(model, mesh=dp_mesh)
Megatron Core 并行指南 的选择逻辑:
- DP/FSDP:沿 batch 维扩展、分片模型状态。
- TP:单层太大或需要层内并行。
- PP:模型深度跨设备。
- CP:长序列。
- EP:MoE experts。
工程验收必须包含:
- 单卡小样本过拟合测试。
- 多卡 loss 与单卡参考一致性。
- checkpoint 保存/恢复和 world-size 变化测试。
- 吞吐、MFU、通信占比、数据加载等待、峰值显存。
- 中断恢复、NaN/Inf、梯度范数和样本重放。
📝 速记卡片
- 知识更新优先 RAG;稳定行为和格式才考虑微调。
- SFT 学示例;DPO 学偏好对;GRPO 学在线可验证奖励。
- LoRA 不是固定
q/v;target modules、rank 和 LR 都要消融。 - QLoRA 是量化冻结基座 + 可训练 adapter,不是全 4-bit 训练。
- OOM 先拆显存组成,再用重计算、分片和并行。
- 训练成功不等于上线成功;必须做通用、安全和工具回归。