PEFT 方法横向对比:LoRA、AdaLoRA、DoRA、IA³

02-01 LoRA 是默认首选;当 rank 消融 plateau、或需极致省参时,可对比其他 PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)变体。本篇做工程向横向对比,不展开完整推导。

系列索引:微调技术路线导读


一、总览

方法 可训练对象 相对参数量 TRL/peft 支持 典型场景
LoRA 低秩 (BA) 旁路 最好 通用默认
QLoRA LoRA + 4bit 基座 中(显存更低) 单卡大模型
AdaLoRA 动态 rank 分配 peft 同预算提效果
DoRA 幅度-方向分解 中+ peft LoRA 效果瓶颈时
IA³ 逐通道缩放 极低 peft 极轻量适配
Prefix Tuning 前缀向量 peft 少样本、老基座
Prompt Tuning soft prompt 极低 部分 嵌入层适配

二、LoRA / QLoRA

  • 机制:(\Delta W = BA),冻结 (W_0)。
  • 优点:生态最成熟、SFTTrainer 一键集成、可 merge 部署。
  • 缺点:rank 与 target 选择影响大。

详见 02-0102-02 QLoRA


三、AdaLoRA

  • 机制:训练过程中动态调整各层 rank,把预算分给重要层。
  • 优点:固定总参数量下,常优于均匀 rank 的 LoRA。
  • 缺点:超参多、训练略复杂;小数据集收益不确定。
1
2
3
4
5
6
7
from peft import AdaLoraConfig

config = AdaLoraConfig(
init_r=12, target_r=8, tinit=200, tfinal=1000, deltaT=10,
lora_alpha=32, target_modules=["q_proj", "v_proj"],
task_type="CAUSAL_LM",
)

选型:LoRA rank 扫过仍 underfit,且愿调 schedule 时尝试。


四、DoRA

  • 机制:将权重更新分解为幅度(magnitude)与方向(direction),分别适配。
  • 优点:部分 benchmark 上优于同参 LoRA。
  • 缺点:略增计算与实现复杂度。
1
2
3
4
5
6
7
from peft import LoraConfig

config = LoraConfig(
r=16, lora_alpha=32, use_dora=True,
target_modules=["q_proj", "v_proj", "o_proj"],
task_type="CAUSAL_LM",
)

选型:LoRA 与 QLoRA 效果到顶、仍差 few points 时 A/B。


五、IA³

  • 机制:对激活乘可学习标量(常注入 k/v 或 FFN)。
  • 优点:参数量极少(常 <0.01%)。
  • 缺点:容量有限,复杂生成任务易 underfit。

选型:极窄分类、路由开关类任务;不推荐作为通用 SFT 首选。


六、Prefix / Prompt Tuning

  • 机制:在输入前拼接可训练连续向量,不改权重。
  • 优点:切换任务只换 prefix;多任务 serving 有趣。
  • 缺点:长上下文占 token;大模型上常弱于 LoRA。

选型:研究或多 adapter 切换;生产 SFT 仍优先 LoRA。


七、选型决策

1
2
3
4
5
默认 → LoRA(+ QLoRA 若 OOM)
├─ OOM → QLoRA → [07-01 显存优化](./07-训练工程-01-显存优化栈.md)
├─ 同 rank LoRA underfit → AdaLoRA 或 提 rank / 扩 target_modules
├─ LoRA plateau → DoRA A/B
└─ 极轻量 / 少样本 → IA³ 或 Prompt Tuning(验证任务指标)

实验纪律:同一 test 集、同一数据清洗;只改 PEFT 方法,对比 04 任务指标


八、小结

生产环境 LoRA/QLoRA 覆盖 90%+;AdaLoRA/DoRA 作增强实验;IA³/Prefix 作特殊轻量场景。数学细节见 Math-03/20 LoRA

下一步:02-04 Adapter 合并与续训

-------------本文结束感谢您的阅读-------------