全参数 vs 参数高效微调怎么选?
LoRA、Adapter 等方法对比,适用场景与优缺点详解
原题:请详细解释大模型微调的基本机制,包括全参数微调与参数高效微调的主要方法,并说明它们各自的适用场景和优缺点。
模型训练 · 得物真题
回答与解析
核心判断
全参数微调更新全部权重,容量最大但训练状态昂贵;PEFT只训练小部分新增或选定参数,常见有Adapter、Prefix Tuning、Prompt Tuning、LoRA,QLoRA还让梯度穿过冻结的4bit基座训练LoRA。选择要看数据规模、任务偏移、部署方式和质量门槛。7B模型做混合精度Adam时,光两个FP32一阶、二阶矩状态就约560亿字节,也就是56GB,不是14GB。
机制与边界
完整显存账本不能只算优化器。7B权重若以BF16或FP16保存约14GB,梯度再约14GB;常见混合精度实现还可能保留FP32主权重约28GB,Adam的m和v各约28GB,合计56GB,外加激活、临时缓冲和碎片。具体总量会随优化器实现、参数精度、checkpointing、ZeRO或FSDP分片而变。ZeRO通过跨数据并行进程分片优化器状态、梯度和参数,改变单卡账本。A100是数据中心加速器,不能称为消费级GPU。
PEFT的收益来自减少可训练参数与相关梯度、优化器状态,而基座权重和前向激活仍要占空间。LoRA把更新写成低秩矩阵乘积,可合并到权重,常见部署没有额外串行层;Adapter会插入小网络,Prefix或Prompt方法训练虚拟token或前缀表示。QLoRA冻结4bit基座并反向传播到LoRA,论文展示了大模型单卡微调的可行性,但质量与显存结果依赖任务和实现。任务与基座差异很大、数据充足时,全参微调仍可能更有上限。
工程验证
先做参数级显存预算,明确权重、梯度、主权重、优化器、激活和通信缓冲的dtype与分片方式,再用框架峰值显存校准。对全参、LoRA和QLoRA固定数据、token、训练步和评测集,扫学习率、rank、target modules与量化配置。质量侧看目标任务、通用能力和安全回归;系统侧看训练吞吐、峰值显存、checkpoint大小、加载和多租户成本。若PEFT满足质量门槛且需要多任务适配,它通常更经济;不能只凭参数比例下结论。
还要分清checkpoint大小与训练峰值显存。LoRA文件可能只有几十或几百MB,但前向仍需加载完整基座;长序列激活甚至会超过适配器相关状态。使用量化基座时,部分算子会临时反量化或采用更高精度计算,峰值不能只按4bit权重估算。多卡全参训练通过ZeRO或FSDP降低单卡常驻,却会增加通信与恢复复杂度,选型应同时看吞吐、故障恢复和最终部署。
显存结论必须注明dtype、优化器、分片阶段和序列长度。
口语版讲法(约4分钟(先30秒,再90秒,可继续展开))
- 30秒:全参、PEFT与56GB优化器账本
- 90秒:逐项拆显存和分片
- 边界:不同PEFT的计算与部署差异
- 验证:同数据同token对比质量和成本
如果只给我三十秒,我会这样回答:全参数微调更新全部权重,容量最大但训练状态昂贵;PEFT只训练小部分新增或选定参数,常见有Adapter、Prefix Tuning、Prompt Tuning、LoRA,QLoRA还让梯度穿过冻结的4bit基座训练LoRA。选择要看数据规模、任务偏移、部署方式和质量门槛。7B模型做混合精度Adam时,光两个FP32一阶、二阶矩状态就约560亿字节,也就是56GB,不是14GB。
如果有九十秒,我会把机制讲清楚。完整显存账本不能只算优化器。7B权重若以BF16或FP16保存约14GB,梯度再约14GB;常见混合精度实现还可能保留FP32主权重约28GB,Adam的m和v各约28GB,合计56GB,外加激活、临时缓冲和碎片。具体总量会随优化器实现、参数精度、checkpointing、ZeRO或FSDP分片而变。ZeRO通过跨数据并行进程分片优化器状态、梯度和参数,改变单卡账本。A100是数据中心加速器,不能称为消费级GPU。
继续展开时,我会补上容易混淆的边界。PEFT的收益来自减少可训练参数与相关梯度、优化器状态,而基座权重和前向激活仍要占空间。LoRA把更新写成低秩矩阵乘积,可合并到权重,常见部署没有额外串行层;Adapter会插入小网络,Prefix或Prompt方法训练虚拟token或前缀表示。QLoRA冻结4bit基座并反向传播到LoRA,论文展示了大模型单卡微调的可行性,但质量与显存结果依赖任务和实现。任务与基座差异很大、数据充足时,全参微调仍可能更有上限。
落地时我会这样验证。先做参数级显存预算,明确权重、梯度、主权重、优化器、激活和通信缓冲的dtype与分片方式,再用框架峰值显存校准。对全参、LoRA和QLoRA固定数据、token、训练步和评测集,扫学习率、rank、target modules与量化配置。质量侧看目标任务、通用能力和安全回归;系统侧看训练吞吐、峰值显存、checkpoint大小、加载和多租户成本。若PEFT满足质量门槛且需要多任务适配,它通常更经济;不能只凭参数比例下结论。
还要分清checkpoint大小与训练峰值显存。LoRA文件可能只有几十或几百MB,但前向仍需加载完整基座;长序列激活甚至会超过适配器相关状态。使用量化基座时,部分算子会临时反量化或采用更高精度计算,峰值不能只按4bit权重估算。多卡全参训练通过ZeRO或FSDP降低单卡常驻,却会增加通信与恢复复杂度,选型应同时看吞吐、故障恢复和最终部署。
显存结论必须注明dtype、优化器、分片阶段和序列长度。
关键一句:为什么LoRA参数只占很小比例,训练显存仍可能远高于适配器文件大小?
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设你有个电商客服场景,用户问“订单什么时候发货”,你想用大模型来回答。但直接调用基座模型效果不好,你打算微调。你会怎么选?是全参数微调还是LoRA之类的?说说你的理由。
- 问法 2 · 层层追问
大模型微调你了解吧?……通常有哪几种方式?……全参数和LoRA这些方法各自怎么做的?……什么情况下你会选全参数,什么情况下选LoRA?
- 问法 3 · 直球架构
解释一下大模型微调的基本机制,包括全参数微调和参数高效微调的主要方法,并说明各自的适用场景和优缺点。