全参数微调是什么?更新模型所有参数来适配新任务
全参数微调(Full Parameter Tuning),也叫全量微调,是在预训练模型的基础上更新全部参数来适应特定任务的方法。它是迁移学习和领域适应中最直接、最传统的做法:拿一个已经在海量通用数据上训练好的模型,再用特定任务或特定领域的数据继续训练,模型中的每一个参数都会根据新数据进行调整。
它是怎么做的
以大语言模型为例:先有一个预训练好的基础模型,它已经具备了通用的语言能力和大量知识。如果要让它成为一个医疗问答助手,就准备大量的医疗问答数据,用这些数据继续训练模型。训练过程和预训练类似:前向计算得到输出,和标准答案比较算出损失,反向传播计算所有参数的梯度,再用优化器更新所有的参数。因为是在预训练的基础上继续训练,通常使用比预训练小得多的学习率,以免把模型原有的知识“冲掉”。
优点
效果上限高:所有参数都可以调整,模型有最大的自由度去适应新任务,通常能获得最好的效果,尤其是当新任务与预训练差异很大、需要学习大量新知识或新能力时,比如让模型掌握一门新语言、适应一个专业性很强的领域。很多模型的指令微调、对齐训练,以及专门的领域模型训练,都采用全参数微调。
代价
计算资源需求大:训练时不仅要在显存中存放模型参数,还要存放每个参数的梯度,以及优化器的状态,比如 Adam 优化器要为每个参数额外存两份统计量。粗略估算,用常规的混合精度训练一个模型,所需的显存可能是模型参数本身大小的好几倍。微调一个 70 亿参数的模型,往往需要多张高端显卡。存储成本高:每针对一个任务微调一次,就得到一个和原模型一样大的新模型,任务多了,存储开销很大。灾难性遗忘:如果微调的数据单一,模型可能在学会新任务的同时,丢掉原有的一些通用能力。
怎么选
资源充足、对效果要求最高、任务和预训练差异大时,全参数微调是首选;资源有限、任务较多、只需要适度调整模型行为时,参数高效微调(比如 LoRA)往往更划算。DeepSpeed ZeRO、FSDP 等分布式训练技术,以及梯度检查点等节省显存的方法,能显著降低全参数微调的门槛。