PEFT 工程取舍:省参数只是入口,部署路径才是边界
PEFT 常被理解成“少训练一些参数”。这句话没错,但它只说了训练成本,没有说清楚工程边界。真正的选择不是参数越少越好,而是训练显存、适配能力、推理开销、上下文占用、版本管理和回滚方式之间的取舍。
如果不把这些约束写清楚,LoRA、Prefix-Tuning、P-Tuning、QLoRA 很容易被比较成一张简单榜单,而不是可复用的工程组件。
要解决的问题
全量微调成本高、版本重、回滚慢。PEFT 的目标是让模型在较低训练成本下适配新任务,同时尽量不破坏基础模型能力。
但“低成本”有不同含义。LoRA 省的是可训练参数和显存;Prefix-Tuning 省的是模型权重改动,但占用上下文或 attention 前缀;QLoRA 降低训练显存,但引入量化配置和稳定性问题。
所以 PEFT 选择的第一步不是问哪个方法更先进,而是问当前瓶颈在哪里:训练显存、数据规模、推理延迟、多任务切换,还是上线回滚。
主线判断
PEFT 方法本质上是在选择训练图和部署形态,而不只是选择更少的可训练参数。
LoRA、Prefix-Tuning、P-Tuning、QLoRA 的差异不只在参数量,而在它们如何改变显存、上下文窗口、推理路径、adapter 管理、合并策略和回滚方式。省参数只是入口,部署边界才是决策依据。
最小抽象
可以把 PEFT 方法按“改哪里”来理解。
LoRA 在权重矩阵旁边加入低秩更新。它生态成熟、训练稳定、容易合并到基础模型,也适合多 adapter 管理。它的主要变量是 rank、target modules、alpha、dropout、学习率和数据规模。
Prefix-Tuning 和 P-Tuning 把可训练信息放到输入或注意力前缀里。它们和模型主体解耦更强,但会改变上下文窗口和缓存形态。如果任务本身已经依赖长上下文,前缀成本不能忽略。
QLoRA 把量化和 LoRA 结合,让较小显存也能训练大模型。它降低了进入门槛,但 dtype、量化方式、优化器状态和梯度检查点都会影响收敛稳定性。
工程闭环
PEFT 实验不能只记录最终指标。每个 adapter 都应该进入 registry:
1 | base_model |
这个 registry 的价值在部署阶段才会显现。多 adapter 是否动态加载,是否共享 batch,是否合并权重,合并后如何版本化,推理框架是否支持对应 dtype,都会影响线上复杂度。
如果没有 registry,团队很容易把 prompt 改动、数据变更和 adapter 行为混在一起,最后无法复现实验结果。
反直觉点
参数更少不一定更简单。Prefix-Tuning 和 P-Tuning 看起来不改模型主体,但会占用上下文或改变 attention 前缀形态。对长上下文任务来说,前缀消耗的是最稀缺的资源。
LoRA 往往是更稳的默认起点,不是因为它永远最好,而是因为训练、合并、分发、回滚和多 adapter 管理更成熟。QLoRA 能降低显存门槛,但 dtype、量化配置、优化器状态和梯度检查点都会影响稳定性。
所以选型不要从方法名开始,而要从瓶颈开始:训练显存不足、数据较少、推理延迟敏感、多任务切换频繁、还是上线回滚成本高。
评测设计
PEFT 对照实验至少固定四件事:同一个 base model、同一批训练数据、同一套 eval set、同一套推理模板。否则方法差异会被数据和 prompt 差异掩盖。
指标要拆成两组。训练侧看显存、训练时长、收敛稳定性、目标任务提升和通用能力保持。部署侧看推理延迟、上下文占用、adapter 加载方式、合并后效果、版本化和 rollback path。
排障路径
PEFT 失败常见于三个地方。第一,target modules 选错,adapter 没有作用到关键路径。第二,数据太少或太窄,adapter 只记住格式。第三,评测没有区分基础能力保持和目标任务提升,导致模型在目标样本上看似变好,却牺牲了通用能力。
因此,每次实验都要保留 adapter registry:base model、dataset version、target modules、rank、alpha、dropout、learning rate、quantization config、eval set、merge status、serving runtime 和 rollback path。没有 registry,就无法复现一次看似成功的微调。
小样本推演
如果任务依赖长上下文,Prefix-Tuning 看起来参数少,实际上可能把上下文预算吃掉,导致有效输入被挤压。如果部署要求频繁切换多个轻量任务,LoRA 的 adapter 管理和动态加载能力就比单次训练分数更重要。如果训练显存是唯一瓶颈,QLoRA 可以先验证方向,但不能跳过精度和稳定性复核。
所以 PEFT 选型应该像系统设计,而不是像排行榜。先写清楚当前限制:显存、延迟、上下文、切换频率、合并策略、回滚成本。再用小规模实验验证方法,而不是先选一个热门方法再解释它为什么合适。
直接结论
PEFT 是一组工程组件,不是一个统一算法。LoRA、Prefix-Tuning、P-Tuning、QLoRA 的核心差异,不只是训练参数量,而是它们如何改变训练图、上下文窗口、推理路径和版本管理。
选型时先写清楚瓶颈,再做小规模对照实验;上线前先确认 adapter registry、评测集、合并策略和回滚路径。否则省下的训练成本会在部署和排障阶段还回去。