PEFT 参数高效微调 · 图文并茂详解

全景架构:三种数学策略

冻结基座 W₀(预训练,不更新) │ ▼ 可训练适配模块 Θ ├── 低秩分解:ΔW ≈ BA(r ≪ d) │ ├── LoRA ├── Compacter(二阶低秩) │ └── rsLoRA(α/√r 缩放) ├── 稀疏参数:仅 bias / scaling │ ├── BitFit(仅偏置向量) │ └── IA³(激活缩放向量) └── 输入扩展:soft prompt ├── Prompt Tuning(仅输入层) └── Prefix Tuning(每层 K/V 前) 推理时:可合并 → 零额外延迟(LoRA 系) 或:旁路保留(Adapter/Prefix)

LoRA 架构与梯度流

【架构】 输入 x ──→ [W₀ 冻结] ──→ 输出 y │ └──→ + (α/r)·BA ──→ 合并 │ ┌──────────┴──────────┐ │ 低秩适配器 BA │ │ B ∈ R^(d×r) ← 训练 │ │ A ∈ R^(r×k) ← 训练 │ │ r ≪ min(d,k) │ └─────────────────────┘ 【梯度流】 损失 L │ ▼ ∂L/∂y ├──→ ∂L/∂W₀ = 0(冻结) └──→ ∂L/∂(BA) = ∂L/∂y · xᵀ ├──→ ∂L/∂B = (α/r) · ∂L/∂y · xᵀ · Aᵀ │ └── 秩 ≤ r! └──→ ∂L/∂A = (α/r) · Bᵀ · ∂L/∂y · xᵀ └── 秩 ≤ r! 关键:梯度秩被 r 限制 → 即使 d=12288,梯度只在 r 维子空间更新

rsLoRA:梯度坍缩 vs 秩稳定化

【标准 LoRA:γ_r = α/r】 r=4: 0.250α → 正常 r=16: 0.063α → 降至 25% r=64: 0.016α → 降至 6% r=256: 0.004α → 降至 1.6% ← 梯度坍缩! 【rsLoRA:γ_r = α/√r】 r=4: 0.500α → 正常 r=16: 0.250α → 50% r=64: 0.125α → 25% r=256: 0.063α → 12.5%(标准 LoRA 的 16 倍) 为什么 √r? BA 每元素 = r 个独立随机变量之和 → 方差 r·σ²,标准差 √r·σ → 谱范数 E[‖BA‖₂] ∝ √r → γ_r ∝ 1/√r 补偿,使 γ_r·‖BA‖₂ = 常数

QLoRA NF4 量化

【均匀量化 int4】 -4σ───-3σ───-2σ───-σ───0───+σ───+2σ───+3σ───+4σ │ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ q₁ q₂ q₃ q₄ q₅ q₆ q₇ q₈ q₉ q₁₀ 问题:零附近级别太稀 → 精度不足;尾部级别太密 → 浪费 【NF4 分位数量化】 ← 密集区(高精度)→ ← 尾部(低精度)→ q₁ q₂ q₃ q₄ q₅ q₆ q₇ q₈ q₉ q₁₀ q₁₁ q₁₂ q₁₃ q₁₄ q₁₅ q₁₆ 每级别概率质量相等(各 1/16),与正态分布匹配 公式:qᵢ = Φ⁻¹((2i-1)/32);q₈ ≈ -0.13(密集),q₁₆ ≈ +1.82 【双重量化】65B:FP16 ~148GB → NF4+双重量化 ~3.3GB

Adapter 瓶颈结构

Transformer 层(冻结) │ ▼ h(d=768) ├── Attention(h) → h_attn └── FFN(h) → h_ffn │ ▼ ┌─────────────────┐ │ Adapter(可训练) │ │ h → W_up(d×r) → σ → W_down(r×d) → Δh │ │ ↑ ↑ │ │ r=8~64(瓶颈) r=8~64(瓶颈) │ └─────────────────┘ │ ▼ h' = h + Δh(残差连接)→ LayerNorm → 下一层 参数量:|Θ| ≈ 2rd;r=8: ~12K/层(默认),r=768: ~1.2M/层

Prompt vs Prefix Tuning

【Prompt Tuning(仅输入层)】 [P; X] ─→ 冻结的 LLM ─→ 输出 P ∈ R^(k×d) ← 可训练(k=10~100) 参数量 = k·d;推理延迟 = 0 【Prefix Tuning(每层)】 输入 X → [P_k; K] → Attention → 输出 [P_v; V] → Attention → 输出 参数量 = 2·p·d·L;推理延迟 = 有 区别:Prompt = Prefix 简化(只在输入层),但依赖大模型(>10B)

信息论视角 & 统一框架

信息效率 = I(task; Θ) / |Θ| 低秩分解(LoRA):|Θ| = O(rdL) 效率高 稀疏参数(BitFit):|Θ| = O(dL) 效率中 输入扩展(Prompt):|Θ| = O(kd) 效率高(大模型下)
θ* = argmin_θ L(f(x; W₀, Θ(θ))) W₀ 冻结,Θ(θ) 是低秩(BA)/ 稀疏(bias)/ 输入扩展(soft prompt)的参数化。 设计选择决定了参数效率、表达能力和推理开销的权衡。