模型微调、LoRA 与蒸馏
这一组问题关注“如何让模型更适合特定任务”,常见于算法、AI 应用工程和大模型平台岗位。
核心知识点
需要掌握:
- Fine-tuning:用任务数据继续训练模型。
- SFT:监督微调,使用输入输出样本训练。
- PEFT:参数高效微调,只训练少量新增参数。
- LoRA:冻结原模型权重,训练低秩适配矩阵。
- QLoRA:结合量化进一步降低显存成本。
- Distillation:用大模型输出训练小模型。
- 数据质量:微调效果高度依赖数据质量和覆盖面。
- 评估:微调前后要用固定评估集比较。
模型定制方案选择
模型微调是什么?
模型微调是在预训练模型基础上,用特定任务或领域数据继续训练,让模型更适合目标场景。
适合场景:
- 固定格式输出
- 特定语气或风格
- 领域任务模式
- 分类、抽取、改写等稳定任务
- 小模型能力增强
不适合把频繁变化的知识硬塞进模型。知识更新通常更适合 RAG。
微调和 RAG 怎么选?
优先 RAG 的场景:
- 知识经常变化
- 需要引用来源
- 数据量大且可检索
- 企业私有知识问答
优先微调的场景:
- 输出格式固定
- 模型总是不按要求表达
- 任务模式稳定
- 希望降低 prompt 长度
- 希望小模型具备特定能力
组合方案也很常见:RAG 提供知识,微调让模型更会按业务格式回答。
LoRA 是什么?
LoRA 是 Low-Rank Adaptation,属于参数高效微调方法。
它的思路是:
- 冻结原模型大部分权重。
- 在部分层中加入低秩矩阵。
- 训练这些少量新增参数。
- 推理时把 LoRA 权重和原模型结合使用。
优点:
- 训练参数少
- 显存需求低
- 多任务适配方便
- 可以为不同任务保存不同 adapter
LoRA 和全量微调有什么区别?
全量微调会更新模型大量参数,成本高,显存要求高,也更容易破坏原模型能力。
LoRA 只训练少量低秩适配参数,更轻量。
对比:
- 全量微调:能力强但成本高。
- LoRA:成本低、部署灵活,适合多数任务适配。
- Prompt:成本最低,但复杂格式和稳定性可能不足。
QLoRA 是什么?
QLoRA 可以理解为在量化模型基础上进行 LoRA 微调。
它通过降低基础模型存储和计算精度,进一步减少显存占用,让较大模型能在较小硬件上微调。
面试时可以说:QLoRA 解决的是大模型微调的显存成本问题,但量化和训练稳定性也需要关注。
模型蒸馏是什么?
蒸馏是用大模型或强模型作为 teacher,生成训练数据或软标签,再训练一个更小的 student 模型。
目标:
- 降低推理成本
- 降低延迟
- 便于私有化部署
- 在特定任务上接近大模型效果
常见流程:
- 准备任务输入。
- 用大模型生成答案或推理过程。
- 清洗和过滤数据。
- 训练小模型。
- 用评估集对比 teacher 和 student。
微调数据怎么准备?
关键原则:
- 数据要覆盖真实场景。
- 输入输出格式要稳定。
- 错误样本要清理。
- 高质量少量数据通常比大量脏数据更好。
- 训练集、验证集、测试集要拆开。
- 要保留难例和边界情况。
数据质量往往比训练技巧更重要。
高频面试题
微调和 RAG 有什么区别?
RAG 是把外部知识检索出来交给模型回答,适合知识经常变化、需要引用来源、企业私有文档问答。微调是改变模型行为或能力,适合固定风格、固定格式、特定任务模式。
面试时可以说:知识问题优先 RAG,行为和格式问题考虑微调,两者也可以组合使用。
LoRA 为什么能降低训练成本?
LoRA 不更新模型全部参数,而是在部分权重旁边加入低秩矩阵,只训练这些新增的小参数。这样显存、训练时间和存储成本都会降低。
它适合在有限资源下做领域适配。缺点是能力提升受基础模型和数据质量限制,不是万能增强。
LoRA 和全量微调怎么选?
LoRA 成本低、训练快、容易保存多个 adapter,适合大多数业务微调。全量微调成本高,但可调整空间更大,适合数据充足、目标明确、预算足够的深度定制。
实际项目通常先用 Prompt、RAG 和 LoRA 验证价值,除非有强需求和足够评估体系,否则不轻易全量微调。
QLoRA 解决什么问题?
QLoRA 通过量化基础模型,进一步降低显存占用,让更大的模型可以在较低硬件资源上微调。它通常结合 LoRA,只训练少量适配参数。
需要注意量化可能带来精度损失,所以要用验证集评估效果,而不是只看训练能跑起来。
蒸馏适合什么场景?
蒸馏适合把大模型能力迁移到小模型,用来降低推理成本、减少延迟或部署到资源受限环境。常见做法是用大模型生成高质量样本或软标签,再训练小模型。
它适合任务边界清晰、输出格式稳定的场景,例如分类、抽取、改写。开放式复杂推理任务蒸馏难度更高。
如何评估微调是否有效?
要先准备固定测试集和业务指标,再比较微调前后的准确率、格式稳定性、人工满意度、拒答率、幻觉率、延迟和成本。
不能只看几个示例效果好。成熟流程应该包含离线评估、人工评审、灰度上线和 bad case 回流。
微调会不会让模型遗忘原有能力?
可能会,这叫灾难性遗忘。尤其是数据单一、训练轮次过多、学习率过大时,模型可能过度拟合新数据,导致通用能力下降。
解决思路包括控制训练强度、混入通用样本、保留验证集、使用 LoRA 等参数高效微调方式,并持续评估通用能力。
微调数据应该怎么构造?
数据要贴近真实业务输入输出,覆盖常见场景、边界场景和失败场景。格式要统一,错误样本要清理,不能把错误答案喂给模型。
如果目标是格式稳定,要提供严格格式样本;如果目标是领域问答,要保证答案可信。数据质量通常比数据数量更重要。
什么时候不应该微调?
知识频繁变化、需要引用来源、数据量很少或问题可以通过 Prompt/RAG/规则解决时,不应该急着微调。
如果没有评估集,也不清楚成功标准,微调只会增加成本和不确定性。面试时可以强调:先定义目标和评估,再决定是否微调。
成熟回答要强调:先明确目标,再选方案。不要为了“看起来高级”而微调,很多业务问题用 RAG、Prompt、规则和评估就能解决。