大模型---大模型的参数微调

张开发
2026/4/19 4:20:06 15 分钟阅读

分享文章

大模型---大模型的参数微调
目录一.全参微调二.PERT1.LoRA/QLoRA(1)LoRA(2)QLoRA2.Prompt Tuning/Prefix Tuning/P-Tuning v2(1)Prompt Tuning(2)Prefix Tuning(3)P-Tuning v2(4)与LoRA的区别三.微调方式的选择四.MPT(Multitask Prompt Tuning)微调(Fine-tuning)是指在预训练模型的基础上,使用特定任务的数据集对模型进行进一步训练的过程。其核心思想是利用大规模通用数据上预先训练好的模型,通过少量特定领域数据的继续训练,使模型快速适应新的任务,同时避免从头训练所需的大量计算和数据。一.全参微调全参微调就是基座模型所有可训练参数都参与更新。它的优点是表达能力最强,不受适配器容量上限约束;缺点是训练和存储都最贵,所以一般不作为微调出发点。二.PERT参数高效微调(Parameter-Efficient Fine-Tuning,简称PEFT)是一种针对大型预训练模型(如大语言模型)的微调技术,它旨在减少训练参数的数量,从而降低计算和存储成本,同时保持或提升模型性能。PEFT通过仅微调模型中的一小部分参数,而不是整个模型,来适应特定的下游任务。这种方法特别适用于硬件资源受限的情况,以及需要快速适配多种任务的大型模型。PERT大概分为四路:① 重新参数化冻结预训练权重,只训练注入的低秩矩阵。也就是,不直接改原权重,而是在原线性层旁边挂一个低秩更新。代表就是LoRA。② 增加小模块在层间插入小瓶颈模块,只训练这些模块;在多个下游任务场景下,比每个任务都复制一整套模型更省参数。代表就是Adapter Tuning。③ 软提示/前缀代表是Prompt Tuning / Prefix Tuning / P-Tuning v2。尽量保持主模型冻结,只训练一小段可学习的连续提示。差别主要在“提示加在输入前面”还是“深入到每层/每个注意力块里”。④ 选择性训练一小部分原参数这类做法也存在,但最常见的主线仍然是LoRA / QLoRA。1.LoRA/QLoRA(1)LoRALoRA的观点是模型从通用能力到某个具体任务,所需的权重改动,往往落在一个相对低维的子空间里。LoRA不直接更新原始权重矩阵W,而是把更新写成一个低秩分解=BA。训练时冻结W,只训练低秩矩阵;部署时把这部分合并回原权重,从推理角度看,最后还是一层普通线性变换,因此理论上不会额外增加推理延迟。具体来说,在训练阶段,原始权重W冻结不动,LoRA分支A,B参与前向和反向,梯度只更新A,B。所以,模型参数总数虽然很大,但可训练参数量很小,优化器状态也主要只为LoRA参数维护,这也是为什么 LoRA 在大模型上能显著降低训练成本。LoRA有个关键的超参数r(rank),这是低秩分解的秩,直接控制适配器容量。rank越大,表达能力一般越强,但显存和训练成本也会上升。LoRA的设计目标就是通过更少参数逼近全参效果,但如果rank太小,目标层选得不对,数据分布变化太大时,它会受限于适配器容量。捋一下LoRA训练流程:(1) 加载基座模型;(2) 配置LoRA,核心配置大概包括:① r:低秩分解的秩,可以看作LoRA适配器的容量旋钮,r越小,可训练参数更少,显存更省,正则化更强,但表达能力受限;r大,适配器容量更强,更接近全参微调,但成本会上升;② lora_alpha:缩放因子,控制LoRA分支的更新幅度,不让低秩分支一上来就把原模型行为改得太猛。③ lora_dropout:LoRA 层的 dropout 概率,对LoRA分支做正则化,防止适配器在小数据场景下过拟合;(3) 冻结主模型,只训练adaper;(4)训练,优化器只更新可训练adapter 参数,所以训练更轻。(5)在任务切换时,只换adapter,而不是换整个模型;部署时还可以 merge 到主权重里。

更多文章