用自有数据微调大模型时,全量微调和 LoRA 微调应该怎么选?请从成本、效果、灾难性遗忘三个角度谈谈你的判断。

模型微调

答案要点 全量微调更新模型全部参数,效果上限高但成本极高;LoRA 只训练少量新增的低秩矩阵,成本低、易部署 显存是第一道门槛:全量微调 7B 模型往往需要多卡 A100,LoRA 单卡 24G 显存即可起步 灾难性遗忘:全量微调容易「学了新的忘了旧的」,LoRA 因为冻结原模型权重,遗忘风险天然更小 大多数业务场景(风格调整、领域问答)LoRA 足够;只有数据量大、任务与预训练差异极大时才考虑全量 给出「默认 LoRA,必要才全量」的决策框架,比背参数更加分 核心概念 全量微调(Full Fine-tuning)是指用新数据更新模型的全部参数;LoRA(Low-Rank Adaptation,低秩适配)则冻结原模型权重,只在部分权重矩阵旁边插入两个很小的低秩矩阵进行训练,训练参数量通常不到原模型的 1%。打个比方:全量微调像把整本教材重写一遍,LoRA 像在教材上贴便利贴——原文不动,只补充重点。 三个角度对比 | 维度 | 全量微调 | LoRA | |------|---------|------| | 成本 | 要存全部参数的梯度和优化器状态,7B 模型动辄多卡 A100 | 只训练不到 1% 的参数,消费级显卡可跑 | | 效果 | 上限更高,适合大数据量、任务差异大的场景 | 中小数据量下与全量接近,多数场景够用 | | 灾难性遗忘 | 风险高,原有通用能力可能被新任务覆盖 | 原权重冻结,通用能力保留更好,适配器可随时摘掉还原 | 决策建议 数据几千到几万条、任务偏风格或领域适配 → 首选 LoRA 数据百万级、任务与预训练分布差异极大(如全新语言)→ 才考虑全量微调 一个基座模型要服务多个业务 → LoRA 适配器可按需插拔,全量做不到 入门之后,可以继续深入 QLoRA(量化 + LoRA 进一步省显存),以及 LoRA 的秩 r、alpha 等超参数怎么设置。

口语版讲法(约2分钟)

  • 一句话结论:默认 LoRA,必要才全量
  • 成本:LoRA 训练参数不到 1%,单卡能跑
  • 效果:中小数据量下两者接近
  • 遗忘:LoRA 冻结原权重,天然抗遗忘
  • 埋钉子:多业务共用基座时适配器可插拔,还能上 QLoRA

这道题我先说结论:大多数情况下默认选 LoRA,只有特殊场景才考虑全量微调。先解释两者是什么。全量微调就是拿新数据把模型所有参数都更新一遍;LoRA 是冻结原模型,只在关键权重旁边插入两个很小的低秩矩阵去训练,训练的参数量通常不到原模型的百分之一。打个比方,全量微调像把整本教材重写一遍,LoRA 像在教材上贴便利贴,原文不动,只补充重点。 具体从三个角度看。第一是成本。全量微调不光要存模型参数,还要存梯度和优化器状态,一个 7B 模型全量微调往往要多张 A100 才跑得动;而 LoRA 只训练很小一部分参数,一张 24G 的消费级显卡就能起步,训练时间和费用都能省一个量级。第二是效果。如果数据量只有几千到几万条,做的又是风格调整、领域问答这类任务,LoRA 的效果和全量非常接近;全量的优势要在数据量非常大、任务和原模型差异极大的时候才体现,比如教模型一门它几乎没见过的语言。第三是灾难性遗忘,就是模型学了新任务,把原来的通用能力忘掉了。全量微调动了所有参数,很容易出这个问题;LoRA 的原模型权重是冻结的,新知识都存在外挂的小矩阵里,遗忘风险天然小很多,而且随时可以把适配器摘掉,恢复成原模型。 另外还有一个工程上的好处很关键:如果公司要用一个基座模型服务多个业务,LoRA 可以给每个业务单独训练一个几十兆的适配器,按需加载切换,这是全量微调做不到的。如果显存还是紧张,还可以再往前走一步用 QLoRA,把基座模型量化成 4bit 再训 LoRA,显存能再降一大截,这块的原理我也可以展开讲讲。

关键一句:LoRA 冻结原模型权重、只训练不到 1% 的低秩参数,所以成本低,且天然更抗灾难性遗忘。

面试官可能的追问

  1. 【场景切入】假设你们组要基于开源 7B 模型做一个法律领域问答助手,手里有 2 万条标注数据和一张 A100,你会选全量微调还是 LoRA?为什么?
  2. 【追问边界】你说 LoRA 大多数场景够用,那有没有 LoRA 明显不行、必须上全量微调的情况?你判断的依据是什么?

同模块相关题目