Parameter-Efficient Fine-Tuning (PEFT)
参数高效微调 (PEFT) 通过训练少量新增或选定的权重来调整预训练模型。涵盖适配器、LoRA 和冻结参数。
参数高效微调 (PEFT) 通过仅训练一小部分参数,使预训练模型适应新任务;可以训练新增到网络中的少量参数,也可以训练现有参数中选定的子集,而其余模型权重保持冻结。完整微调会更新每个权重;对于一个拥有 70 亿参数的大型语言模型 (LLM),这意味着要为全部 70 亿个值保存梯度和优化器状态,并为每个任务保存一份完整的模型副本。PEFT 方法通常训练不到 1% 的参数,因此可以在单个 GPU 上适配基础模型,并且每个新任务只需增加一个包含已训练参数的小文件,而不是另一份完整检查点。Hugging Face 的 PEFT 库实现了 Transformer 模型最常用的方法。
PEFT 的工作原理#
PEFT 建立在迁移学习之上:在大量数据上预训练的模型已经编码了通用特征,因此将它适配到相关任务所需的改动远少于训练模型时所需的改动。根据训练的参数不同,PEFT 方法分为三类。
加性方法会在冻结的网络中插入新的可训练模块或输入。适配器会在每个 Transformer 块中加入小型瓶颈层;在 GLUE 语言基准测试中,它们的表现与完整微调相差不到 0.4%,同时每个任务只增加 3.6% 的参数。提示调优和前缀调优则会学习少量连续向量,并将它们添加到输入或每一层的激活值之前。
选择性方法会训练现有权重中选定的子集。冻结骨干网络并只训练较后的层是最简单的形式,而 BitFit 只训练偏置项。
重参数化方法会学习对冻结权重矩阵的紧凑更新。LoRA会将每次更新表示为两个低秩矩阵的乘积;与对 GPT-3 175B 进行完整微调相比,它将可训练参数减少了 10,000 倍,并将 GPU 内存用量减少了 3 倍。QLoRA会在 4 位量化基础模型上训练 LoRA 适配器,而 DoRA会将每个权重拆分为幅值和方向,并使用 LoRA 调整方向。
由于不同任务之间只有少量已训练参数不同,一份基础模型副本就可以同时服务多个任务。服务器会将冻结的基础模型保存在内存中,并应用与每个请求匹配的适配器;S-LoRA 等系统就采用这种方式提供数千个 LoRA 适配器服务:
优势与权衡#
只需为已训练参数保存梯度和优化器状态,因此内存用量会大幅降低,不过冻结权重和激活值仍必须能放入 GPU。固定预训练权重还能减少小数据集上的过拟合,并降低模型原有技能发生灾难性遗忘的风险。代价在于模型容量:在一项题为 LoRA Learns Less and Forgets Less 的研究中,LoRA 在编程和数学任务上的表现不如完整微调,但在这些领域之外的任务上更好地保留了基础模型的性能。
计算机视觉中的 PEFT#
视觉 Transformer也可以使用相同方法进行适配。视觉提示调优会为冻结的 ViT 学习额外的输入令牌,训练不到 1% 的参数,并且在许多测试中的表现超过了完整微调;LoRA 适配器则可以让 Stable Diffusion适应新的风格或主题。对于卷积式目标检测模型,冻结是标准的选择性方法。在 Ultralytics YOLO26训练中,freeze 参数会停止前 N 层的梯度更新,并固定这些层的批归一化统计量;freeze=11 会冻结第 0 到第 10 层,也就是整个 YOLO26 骨干网络,因此只有颈部和检测头会参与训练:
from ultralytics import YOLO
# 加载使用 COCO 预训练的 YOLO26n 权重
model = YOLO("yolo26n.pt")
# 冻结第 0 到第 10 层(骨干网络),只训练颈部和检测头
results = model.train(data="coco8.yaml", epochs=5, freeze=11)训练日志会在第一个轮次开始前,通过 Freezing layer 行列出每个被冻结的参数。
PEFT 与相关术语的比较#
- 完整微调:更新每个权重,提供最大的适配能力,但需要最多的内存,并且每个任务都需要一份完整的模型副本。PEFT 是一种限制参数更新范围的微调方法。
- 线性探测:只在冻结的特征上训练线性分类器,是限制最严格的选择性方法,主要用于衡量预训练表示已经捕获了多少信息。
- 提示工程:通过在输入中手动编写文本来改变模型行为,不进行任何训练。提示调优则通过梯度下降学习连续提示向量。
- 知识蒸馏:训练较小的学生模型模仿较大的教师模型,从而压缩模型;PEFT 则是让现有模型适应新任务。
- 模型合并:将已训练的权重或适配器合并到一个模型中。已训练的 LoRA 更新可以加到其适配的冻结权重矩阵中,因此合并后的模型不会产生额外的推理开销。










