08 - 预训练和微调面试题¶
预训练方法、微调技术、 LoRA 、 QLoRA
📖 章节概述¶
本章将整理预训练和微调相关的面试题,包括预训练方法、微调技术、 LoRA 、 QLoRA 等内容。
🎯 学习目标¶
完成本章后,你将能够:
- 掌握预训练的核心方法
- 了解各种微调技术
- 理解 LoRA 和 QLoRA 的原理
- 能够回答相关面试题
1. 预训练方法¶
Q1: 什么是 MLM 预训练¶
解答: MLM ( Masked Language Modeling )是 BERT 使用的预训练方法。
核心思想: - 随机 mask 输入序列中的部分 token - 预测被 mask 的 token - 学习双向上下文表示
优势: - 学习双向表示 - 适合理解任务 - 可以利用上下文信息
Q2: 什么是 CLM 预训练¶
解答: CLM ( Causal Language Modeling )是 GPT 使用的预训练方法。
核心思想: - 自回归预测下一个 token - 只能看到之前的 token - 学习单向表示
优势: - 适合生成任务 - 自然的语言建模 - 容易实现
Q3: Scaling Law 是什么¶
解答: Scaling Law 描述了模型性能与模型大小、数据量、计算资源之间的关系。
主要发现: 1. 性能与模型大小呈幂律关系 2. 性能与数据量呈幂律关系 3. 性能与计算量呈幂律关系 4. 三者之间存在权衡关系
应用: - 预测模型性能 - 指导模型设计 - 优化资源分配
2. 微调技术¶
Q4: 全量微调和部分微调的区别¶
解答:
| 特性 | 全量微调 | 部分微调 |
|---|---|---|
| 参数更新 | 所有参数 | 部分参数 |
| 数据需求 | 大量数据 | 较少数据 |
| 计算资源 | 高 | 中 |
| 过拟合风险 | 高 | 低 |
| 适用场景 | 数据充足 | 数据有限 |
Q5: 什么是 PEFT¶
解答: PEFT ( Parameter-Efficient Fine-Tuning )是参数高效微调方法。
核心思想: - 只训练少量参数 - 冻结大部分模型参数 - 大幅减少计算和存储需求
常见方法: 1. LoRA ( Low-Rank Adaptation ) 2. Adapter 3. Prefix Tuning 4. Prompt Tuning
3. LoRA¶
Q6: LoRA 的原理是什么¶
解答: LoRA 通过低秩分解来减少可训练参数。
核心思想: - 假设权重更新ΔW 是低秩的 - ΔW = BA ,其中 B 和 A 是低秩矩阵 - 只训练 B 和 A ,参数量大幅减少
公式:
优势: - 参数量少(通常<1%) - 不增加推理开销 - 可以合并到原始权重
Q7: LoRA 相比全量微调的优势¶
解答: LoRA 的优势:
- 参数效率:相对全量微调,很多场景能把可训练参数量压到原模型的很小一部分
- 存储效率:只存储 LoRA 权重
- 训练效率:训练速度快
- 推理效率:不增加推理开销
- 灵活性:可以轻松切换不同任务
4. QLoRA¶
Q8: QLoRA 相比 LoRA 的改进¶
解答: QLoRA ( Quantized LoRA )相比 LoRA 的改进:
- 量化基础模型:将基础模型量化到 4 位
- 低秩适配器:使用 LoRA 进行微调
- 显存大幅降低:显存需求降低约 75%
优势: - 可以在消费级 GPU 上微调大模型 - 精度损失小 - 推理阶段若把 LoRA 权重并回基座,额外开销通常较小;若保留独立适配器实现,仍要看服务框架
Q9: 如何选择 LoRA 的 rank¶
解答: 选择 LoRA rank 需要考虑:
- 任务复杂度:复杂任务需要更高 rank
- 数据量:数据多可以尝试更高 rank
- 计算资源:资源有限选择较低 rank
- 精度要求:高精度选择较高 rank
常见选择: - 小模型(<1B ): rank 8-16 - 中模型( 1-10B ): rank 16-32 - 大模型(>10B ): rank 32-64
4.5 近年常见的 PEFT 延伸方法¶
Q10: DoRA 相比 LoRA 有什么改进?¶
解答: DoRA(Weight-Decomposed Low-Rank Adaptation)将权重分解为幅度和方向两个独立部分进行微调。
核心思想: - LoRA:直接学习 ΔW = BA - DoRA:\(W' = m \cdot \frac{W_0 + BA}{\|W_0 + BA\|}\)(m 为可学习幅度向量)
优势: - 在多任务学习中表现更稳定 - 更接近全量微调的效果 - 参数量增加极少(仅增加幅度向量 m)
Q11: 什么是 GRPO?与 PPO 的区别?¶
解答: GRPO(Group Relative Policy Optimization)是近年公开讨论较多的一类策略优化方法,常用于数学、代码等可验证奖励较强的任务;部分推理模型公开技术报告中采用过相近路线。
核心区别:
| 方面 | PPO | GRPO |
|---|---|---|
| 优势估计 | 需要 Value Network | 组内相对排名,无需额外网络 |
| 模型数量 | 常见实现需要 Actor/Critic/Ref/Reward 等组件 | 常见实现可只保留 Policy/Reference 两类核心模型 |
| 显存占用 | 高 | 通常低于典型 PPO 风格实现 |
| 适用场景 | 通用 RL | 可验证奖励任务(数学/代码) |
GRPO 优势函数: $\(\hat{A}_i = \frac{r_i - \text{mean}(r_{1:G})}{\text{std}(r_{1:G})}\)$
Q12: 什么是 RLOO?¶
解答: RLOO(Reinforce Leave-One-Out)是另一种高效的策略优化方法。
核心思想: - 对每个样本,使用其他样本的平均奖励作为基线 - 无需 Critic 网络,参数效率高
公式: $\(\nabla J = \mathbb{E}\left[(r_i - \frac{1}{K-1}\sum_{j \neq i} r_j) \nabla \log \pi(a_i|s)\right]\)$
与 GRPO 的关系: - 两者都属于“不显式训练价值网络”的一类策略优化路线 - 实际差异仍要看采样方式、归一化方式和实现细节
5. 练习题¶
基础练习¶
- 实现 MLM 预训练
# 练习: 实现MLM预训练
class MLMPretraining(nn.Module):
def __init__(self, model):
# 你的代码
pass
def forward(self, input_ids, attention_mask, labels):
# 你的代码
pass
- 实现 LoRA 层
# 练习: 实现LoRA层
class LoRALayer(nn.Module):
def __init__(self, in_features, out_features, rank=8):
# 你的代码
pass
def forward(self, x):
# 你的代码
pass
进阶练习¶
- 实现 QLoRA
# 练习: 实现QLoRA
class QLoRALayer(nn.Module):
def __init__(self, base_layer, rank=8):
# 你的代码
pass
def forward(self, x):
# 你的代码
pass
- 实现 Prefix Tuning
# 练习: 实现Prefix Tuning
class PrefixTuning(nn.Module):
def __init__(self, model, prefix_length=10):
# 你的代码
pass
def forward(self, x):
# 你的代码
pass
6. 答题建议¶
✅ 面试技巧¶
- 理解原理
- 深入理解核心概念
- 掌握数学公式
-
了解设计决策
-
代码实现
- 准备关键代码
- 理解实现细节
-
能够解释代码
-
对比分析
- 对比不同方法
- 分析优缺点
- 说明适用场景
❌ 避免做法¶
- 死记硬背
- 理解核心原理
- 掌握关键公式
-
灵活应用
-
忽视细节
- 注意技术细节
- 理解设计权衡
-
了解代表性进展与适用边界
-
缺乏实践
- 结合项目经验
- 动手实践验证
- 积累实战经验
7. 总结¶
本章介绍了预训练和微调的面试题:
- 预训练: MLM 、 CLM 、 Scaling Law
- 微调: 全量微调、部分微调、 PEFT
- LoRA: 低秩分解、参数效率
- QLoRA: 量化基础模型、显存优化
这些知识是大模型岗位中较常见的一组考点,但不同公司会按岗位侧重点进行取舍。
8. 下一步¶
继续学习09-推理优化面试题,了解推理优化的相关知识。
⚠️ 核验说明(2026-04-03):本页已完成 2026-04-03 人工复核。LoRA/QLoRA、GRPO/RLOO 等答案已去掉过强结论,改为更符合公开论文与工程实现差异的表述。
最后更新日期: 2026-04-03