引言
随着大语言模型(LLM)如LLaMA、Qwen、ChatGLM等开源模型的出现,如何在有限的计算资源上对这些庞大模型进行微调,成为了一个关键的技术挑战。参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术应运而生,它通过只训练一小部分参数就能实现接近全量微调的效果。
1. 全量微调的困境
以13B参数的模型为例,全量微调(Full Fine-Tuning)面临以下挑战:
- 存储需求:13B参数 × 4字节(FP32) = 52GB显存(仅模型权重)
- 优化器状态:Adam需要维护一阶和二阶动量,额外需要约104GB
- 梯度:与模型权重等量,52GB
- 总计:超过200GB显存,需要A100 80GB × 3以上
这使得全量微调对大多数研究者和开发者来说是不可承受的。PEFT方法将可训练参数从13B降低到数百万级别,实现了数量级的资源节约。
2. LoRA:低秩分解适配
LoRA(Low-Rank Adaptation)的核心洞察是:模型在微调过程中的权重变化ΔW具有低秩特性。具体来说,ΔW = BA,其中B ∈ Rd×r,A ∈ Rr×d,r ≪ d。
数学表达:
- 原始前向传播:h = W₀x
- LoRA前向传播:h = W₀x + ΔWx = W₀x + BAx
- 初始化策略:A使用Kaiming初始化,B初始化为0,确保训练初期ΔW=0
以d=4096的典型模型为例,当r=8时,可训练参数仅为 4096×8×2 = 65,536,相对于全量参数,训练参数量降低了约百万分之一。
3. QLoRA:量化基础上的LoRA
QLoRA(Quality LoRA)在LoRA的基础上进一步压缩基础模型,使用4-bit NormalFloat(NF4)量化:
- NF4量化和Double Quantization:将基础模型从16-bit压缩到4-bit,内存占用减少约75%
- Paged Optimizer:利用NVIDIA统一内存的自动溢出机制,防止梯度检查点期间的OOM
- 训练精度:计算时使用BF16(在4-bit量化块上反量化)
这意味着单个48GB GPU就可以微调65B参数模型。
4. Adapter方法
Adapter在每个Transformer层之间插入小型前馈网络子层:
- 结构:Down-Projection → Non-linearity → Up-Projection + Residual Connection
- 瓶颈宽度(bottleneck)通常设为64或128
- Prompt Tuning:在输入端添加10-100个可训练的前缀token
- Prefix Tuning:在各层K/V投影前加入可训练的前缀
- Merging多个LoRA适配器:B = B₁ + B₂, A = A₁ + A₂在intra-task场景可行
- 推理延迟:LoRA无额外延迟(权重可融合);Adapter每层增加约1ms
- 显存效率:QLoRA > LoRA > Prefix Tuning > Full FT (最低最高)
- 极端低秩适配(r=1-4):LoRA表现尚可;QLoRA在r=16时最佳
- 领域差距大:LoRA稍优;Prefix Tuning适合in-domain适配
- 资源极度受限(消费级GPU):选择QLoRA + NF4 + paged optimizer
- 需要最高精度:使用LoRA(r=64或128)针对Q/K/V/O四个投影矩阵
- 多任务部署:使用LoRA-Adapter进行任务切换,避免维护多个完整模型
- 指令微调偏好:将LoRA应用于attention层通常优于全部线性层
Adapter参数量约为原始模型的3%-5%,但引入了推理延迟(因为增加了额外的计算层)。
5. Prompt Tuning与Prefix Tuning
这些方法不改动模型权重,而是添加可学习的软提示(soft prompt) tokens:
6. 方法对比与选型指南
关键技术指标对比:
7. 实战建议
总结
PEFT技术已经让大型语言模型的微调从不可能变为可能。LoRA/QLoRA组合提供了最佳的性能-效率平衡,正在成为行业标准实践。随着MoE-LoRA、DoRA等新一代方法的出现,参数高效微调仍在快速演进。

发表评论 取消回复