S4·模型训练

LoRA

训练与微调4 分钟

LoRA(低秩适配)是让微调变得"便宜"的魔法——只训练极少的新参数,就能让大模型适配新任务。一张消费级显卡就能微调 7B 模型。

① 一句话定义

LoRA(Low-Rank Adaptation,低秩适配)是最流行的参数高效微调(PEFT)方法之一:在预训练模型的权重矩阵旁插入低秩分解矩阵(两个小矩阵的乘积),微调时冻结原模型所有参数,只训练这些新增的小矩阵。这样做可以将可训练参数量减少 100-10000 倍,使普通 GPU 也能微调大模型。

② 为什么重要

LoRA 是 AI 微调"民主化"的关键推动者:

  • 显存需求大降:全量微调 7B 模型需要 100GB+ 显存(A100 集群),LoRA 微调同一模型只需 16-24GB(一张消费级 RTX 4090)。
  • 存储成本极低:LoRA 适配器通常只有几 MB 到几十 MB,而全量微调的模型副本是几十 GB。一个基座模型可以挂载多个 LoRA 适配器,在不同任务间快速切换。
  • 不破坏原模型:基座模型参数完全不变,LoRA 适配器可以随时卸载,模型回到原始状态。这避免了"全量微调后发现通用能力下降"的不可逆问题。
  • 开源生态基础:Hugging Face 上的大量社区微调模型(医疗、法律、代码)都是 LoRA 适配器。

③ 核心机制

LoRA 的核心数学思想是低秩假设——模型权重在微调时的更新量(ΔW)虽然是高维矩阵,但其"本质信息"可以用低维空间表示:

1. 矩阵分解:对于原始的权重矩阵 W(维度 d×k),LoRA 不直接学习 ΔW,而是学习两个小矩阵 A(d×r)和 B(r×k),使得 ΔW = A × B。其中 r(秩/Rank)远小于 d 和 k,通常在 4-64 之间。

2. 为什么有效:虽然 ΔW 的原始维度很大,但微调的本质是"在这个特定任务方向上做小幅度偏移",这个偏移的信息量并不需要高维空间来表达。低秩分解正好抓住了这个"信息瓶颈"。

3. 推理时融合:训练完成后,可以将 LoRA 权重"融合"(Merge)回原始权重:W_final = W + A×B。融合后推理速度与原始模型完全一致,零额外开销。

4. LoRA Rank 选择:r=8 是常用起点。r 越高,适配器表达能力越强但参数越多。对于简单任务,r=4 足够;对于复杂领域迁移,r=32 或 64 效果更好。

④ 典型应用场景

个人开发者微调:在消费级 GPU(RTX 3090/4090、MacBook M3)上微调 7B-70B 模型。

多任务服务:一个基座模型 + 多个 LoRA 适配器(写代码的、写文案的、写法律文书的),按需加载。

快速实验:尝试不同的 rank、学习率、数据集,成本远低于全量微调。

开源模型定制:下载 LLaMA/Qwen 基座模型 + 社区 LoRA 适配器,获得特定领域能力。

⑤ 常见误区

误区:LoRA = 微调的廉价替代品
✅ 实际上:在大多数场景下,LoRA 的效果与全量微调几乎持平(差距通常在 1-3% 以内),且更不容易过拟合。它不是"退而求其次",而是很多场景下的"首选方案"。

误区:LoRA 只能用在 Transformer 的 Q/V 矩阵上
✅ 实际上:原始论文只对 Attention 的 Q 和 V 矩阵施加 LoRA,但实践中可以应用于任何线性层(FFN、Embedding 层等)。QLoRA(Quantized LoRA)进一步结合了 4-bit 量化,将 65B 模型微调降至 48GB 显存。

LoRA 是微调的"插件化"——不用重装整个系统,装个小插件就能让模型学会新技能,不用时随时拔掉。