PEFT 是什么?为什么需要 PEFT?
- 标签:大模型、AI、微调、PEFT
🏛 业务架构师
PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)指冻结预训练模型主体、只训练极少量新增参数的微调技术族。
为什么需要它——三笔账算下来就清楚:
成本账:全量微调 7B 模型需要上百 GB 显存的多卡 A100/H100 集群;PEFT(如 QLoRA)24GB 消费级卡就能跑,训练成本从几万美元降到几百元人民币,让"业务团队自己微调"从奢望变成日常。
存储账:全量微调每个场景存一整份模型副本(7B 模型约 15GB);LoRA 只存几十 MB 的适配器,一个基座+几十个业务适配器按需热插拔——多业务线复用同一基座的模式在运营上极其优雅。
质量账:冻结主干天然限制了参数漂移,灾难性遗忘比全量微调轻,且可随时回退(摘掉适配器即恢复原模型),试错风险可控。
业务视角:PEFT 把微调从"战略级投资"变成"战术级工具",使领域模型可以随业务快速迭代。2026 年的共识:企业微调默认从 LoRA/QLoRA 起步,全量微调只在基座能力确实不够时才考虑——这不是技术妥协,是投入产出的理性选择。
🏗 系统架构师
PEFT = Parameter-Efficient Fine-Tuning,参数高效微调:冻结预训练主干,只训练极少量新增(或重参数化)参数,通常 <1% 的参数量达到接近全量微调的效果。
为什么需要——三个硬约束:
- 显存约束:全量微调的显存不只权重——Adam 优化器要存两份动量状态,加上梯度,7B 模型训练态要 70~100GB+,70B 要 600GB+(多机才装得下);QLoRA 把主干压到 4bit,7B 单卡 24GB、70B 单卡 48GB 可训,硬件门槛降一个数量级;
- 成本与效率:训练参数少 99%+,计算量、时间、电费同步下降;LoRA 微调 7B 消费级卡数小时完成;
- 工程价值(常被低估):一个共享底座 + N 个轻量 LoRA 适配器的架构,让"一个模型服务多业务"成为可能——底座固定,每个业务一个小 LoRA 文件(几十 MB),热加载切换,存储和迭代成本极低,这是多租户 AI 平台的经典部署形态。
原理直觉:预训练模型已学到通用能力,领域适配只需在权重空间做一个"低秩小扰动",Intrinsic Dimension 研究证明这个扰动的本征维度很低——所以低参数量就够。
限制:注入大量新知识不是 PEFT 强项(那是继续预训练的活),行为和格式适配才是它的主场。
💻 全栈开发专家
PEFT(Parameter-Efficient Fine-Tuning)= 冻结预训练主干,只训练极少量附加参数的一类微调方法。
为什么需要,三个账:
- 显存账:全量微调的显存 ≈ 16 字节/参数(权重 2 + 梯度 2 + Adam 动量 4 + 方差 4,混合精度再加 FP32 主副本)。7B 模型训练态要 100GB+;LoRA 把可训练参数压到 0.1%,优化器状态随之缩千倍,单张消费级卡就能跑。
- 存储账:每个任务只存几十 MB 的 LoRA 权重(vs 全量的 14GB),一个基座 + N 个任务插件,生产上 vLLM 还能一卡多 LoRA 热切换(S-LoRA),这是多租户场景的刚需。
- 效果账:主流任务上 LoRA 能达到全量 95%+ 的效果,且天然不容易灾难性遗忘(主干没动)。
python
from peft import LoraConfig, get_peft_model
config = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=["q_proj", "v_proj"])
model = get_peft_model(base_model, config) # 可训练参数占比 <1%一句话:PEFT 让「微调」从大厂专属变成了应用团队的标准动作——我给业务做领域模型,默认起点永远是 LoRA/QLoRA,全量只在验证确实有 5% 以上的效果差距时才考虑。