Skip to content
🔗 分享本题
查看我的学习进度 →

🧠 图解记忆:不碰原始权重,只加一个小插件——这就是PEFT的核心思想。

为什么要PEFT?

全量微调(Full Fine-Tuning)一个7B参数的模型需要:

  • ~14GB 显存存放权重 + 优化器状态 + 梯度 ≈ 56GB+ 显存(FP16)
  • 大量GPU和时间成本

PEFT的目标:冻结大部分预训练权重,只训练极少量参数就能适配新任务。

三大主流方案对比

方法可训练参数占比显存需求效果特点
Full FT100%极高最佳需要多卡/A100集群
LoRA0.1~1%低(可单卡)接近全量最流行、工业界首选
P-Tuning v20.01~0.1%极低中等只需优化embedding层前缀
Prefix-Tuning<0.1%极低中等在每层前加可学习prefix
Adapter1~5%较低中等偏上在网络层间插入小型模块
QLoRA同LoRA更低(量化后)接近LoRA4bit量化+LoRA,消费级显卡可用

LoRA核心原理

标准Transformer层的权重变换:h = Wx
LoRA的做法:h = Wx + ΔWx = Wx + BAx

其中:
- W: 预训练权重(冻结,不更新)
- B × A: 低秩分解矩阵,A是(r×d),B是(d×r),r远小于d(通常r=8~64)
- 训练中只更新B和A,W不变

为什么叫"低秩"? 假设权重矩阵的变化方向在一个低维子空间内——我们不需要改整个矩阵,只需要在这个子空间里找最优偏移。

QLoRA:LoRA的进阶版

python
# QLoRA流程
# 1. 将模型量化为4-bit(使用NF4量化)
# 2. 加入双量化机制(Double Quantization)减少额外开销
# 3. 在量化后的模型上加载LoRA适配器
# 结果:在单张RTX 3090(24GB)上也能微调7B模型!

量化带来的好处:

  • 7B模型从14GB降到约3.5GB(INT4)
  • LoRA适配器在此基础上训练,总显存占用约12-16GB

选择指南

场景推荐方案
资源充足(多卡A100)Full FT 或 LoRA
单卡消费级GPUQLoRA(4bit量化+LoRA)
快速实验/原型P-Tuning v2
生产环境需要兼容旧系统LoRA(适配器可合并回原权重)

面试话术

"PEFT的关键洞察是:预训练模型已经学会了通用语言能力,适配新任务只需要微调一小部分参数。LoRA通过低秩分解实现这个目标——冻结原始权重,只训练两个小矩阵的乘积。在实际项目中,我用QLoRA在单卡3090上调出了媲美全量微调的效果,显存从14GB压到12GB以下。关键参数rank选8就够用了,再大边际效益递减。"