R

LoRA

创建 2026-06-03 更新 2026-06-03 10 条双链 共创

PEFT / LoRA 微调

一句话定义

LoRA = 冻结大模型原始权重,只训练一对低秩矩阵 BA,让”微调”的参数量从亿级降到百万级。LoRA 是 2026 时仍最主流的 PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)方案。

核心数学

冻结原始权重 W₀(不更新),在每层注入两个低秩矩阵:

W = W₀ + BA
其中 B ∈ ℝ^(d×r),A ∈ ℝ^(r×d),r ≪ d
  • r 是秩 (rank),通常取 8 / 16 / 32 / 64
  • 可训练参数 = 2 × d × r,仅占总参数 0.1%–1%
  • 推理时:要么保留旁路计算(α × BA × x),要么把 BA 合并回 W₀(部署 0 延迟代价)

为什么 LoRA 能 work

经验观察:大模型微调时的”权重变化矩阵 ΔW”实际是低秩的。这意味着真正承载微调信号的”自由度”远低于全量参数。LoRA 直接建模这个低秩假设。

理论解释(部分):

  • 大模型已经在预训练中学到大量通用表示
  • 微调本质上是在已有表示空间内做”方向调整”
  • 方向调整不需要修改整个表示空间

PEFT 方案光谱

方法可训练参数显存推理代价适用场景
全量微调100%极高0重大领域迁移 / 大幅行为重塑
LoRA0.1%–1%中-低0(可合并)垂直领域适配、风格调优、最常用
QLoRA同 LoRA极低(4-bit 基础模型)中等(量化推理)消费级 GPU 上跑 70B 微调
DoRA(Weight-Decomposed LoRA)略高于 LoRA接近 LoRA接近 LoRALoRA 表现不够时的进阶
Prefix Tuning<0.1%极低0简单任务适配
P-Tuning v2<0.1%极低0中文社区曾流行
Adapter1%–5%多任务热切换
IA³<0.01%极低0极致 PEFT

QLoRA:让消费级 GPU 玩家入场

QLoRA(2023)= 4-bit 量化基础模型 + LoRA 微调。

  • 把 70B 模型从 140GB FP16 压到 ~40GB 4-bit
  • 单张 A100/H100 80GB 可微调 70B
  • 单张 4090 24GB 可微调 13B
  • 训练速度比全量微调快 3-5×

对独立开发者意义:本来”只有大公司能玩的微调”变成”个人电脑能完成的工艺”。Hugging Face PEFT 库 + Unsloth 优化 + Axolotl 训练框架是当前主流工具链。

何时用 LoRA vs SFT vs RAG vs Prompt 工程

想要的能力推荐方案原因
注入新知识RAG知识可更新;可追溯;不引发遗忘
学习专有领域格式 / 输出风格LoRA风格类信号 LoRA 表现良好
学习特定 Agent 决策 / 工具调用模式LoRA行为模式适配
学习全新能力(如从通用 → 代码专精)大规模 LoRA 或全量微调LoRA 容量可能不够
多步对齐塑形RLHF / DPO偏好信号比 SFT 信号更细
一次性 / 演示性能力Prompt 工程 + Few-shot不要为一次性需求训练
端侧部署的专家模型QLoRA + 量化显存 / 算力受限

多 LoRA 部署架构

LoRA 的部署优势是大模型权重共享:

  • 同一个基础模型 + N 个 LoRA adapter,可服务 N 个垂直场景
  • adapter 文件通常 < 1GB,热加载切换快
  • S-LoRA / Punica 这类系统可在同一 GPU 上同时服务多个 LoRA adapter,按 request 路由

这让 SaaS 厂商可以为每个客户训练专属 LoRA,但共享基础模型推理基础设施 — 成本结构远优于 per-customer 全量微调。

常见失败模式与陷阱

  1. r 选过小:信号不够,loss 不降 → 调大 r 到 16/32/64
  2. r 选过大:训练数据不够,过拟合 → 减小 r 或加正则
  3. 学习率与全量微调一致:LoRA 通常需要 5-10× 更高的学习率(典型 1e-4 ~ 5e-4)
  4. target_modules 只选 q,v:对 LLM 通常需要覆盖 q/k/v/o/gate/up/down 才能稳定
  5. 不冻结 base model 的小心:peft 库默认行为已对,但自定义训练循环时容易踩坑
  6. 多 LoRA 合并时干扰:LoRA 算术(task vector)听起来很美,实际任务间会互扰
  7. 量化后训练的精度损失:QLoRA 训练时 base 是 4-bit,inference 用 16-bit 时行为可能不一致
  8. 数据规模过小:< 1000 条样本时 LoRA 容易学到噪声 / 表面模式

对 AI PM / 独立开发者的设计 Checklist

  1. 真的需要训练吗?:先试 Prompt + Few-shot + RAG。能不训练就不训练(迭代成本高 10×)。
  2. 微调数据从哪来?:用户日志 (脱敏)?人工标注?合成数据?质量决定一切。
  3. 训练成本 vs 推理成本:训练一次但部署百万次 — 成本平衡点在哪?
  4. 多客户场景:要不要让每个客户有自己的 LoRA?热加载架构要不要提前准备?
  5. 演化路径:v1 LoRA → v2 LoRA 时,旧 adapter 是否还能用?切换策略?
  6. 可逆性:LoRA 是可逆的(去掉 adapter 回到 base model),全量微调不可逆 — 对早期实验性产品更友好
  7. 评估:不能只看训练 loss,业务 A/B 测试是金标准
  8. 法律/合规:用户数据训练 LoRA 涉及数据 ownership,提前明确

与训练 Pipeline 的位置

预训练 (Pre-training) → 上百 B token / 数千 GPU 卡天

SFT (Supervised Fine-Tuning) → 数 K~M 高质对 / 全量或 LoRA

PEFT / LoRA 微调 ← 我们在这里
    ↓ 或
RLHF / DPO 对齐 → 偏好数据 / 全量或 LoRA

部署 (Inference + Serving)

详见 c04 - 模型训练全阶段 Pipeline

相关章节与节点