微调量化第一章,资料地址:https://datawhalechina.github.io/base-llm/#/chapter11/01_PEFT

前情提要

BERT模型发布以来,预训练-微调 范式在NLP领域取得了重大成功
但是之前使用的全量微调会因为模型参数规模的跃升变得不合适,挑战包括训练成本(巨大的计算资源)、存储压力(保存参数用的存储成本高)、灾难性遗忘(在对特定任务微调时,模型可能会忘记在预训练阶段学到的海量通用知识)、训练不稳定性(大模型网络结构的宽度和深度都很大,其训练过程对学习率等超参极为敏感,很容易出现梯度消失/爆炸等问题,导致训练失败)
上述困境使得研究者们迫切需要一种新范式,即能有效利用大模型的强大能力,又能避免全量微调带来的高昂成本
2020年GPT-3论文提出In-Context Learning,这是一种无需训练的范式,在不调整任何模型参数的情况下,仅通过在输入中提供一些任务示例,就能引导大模型完成特定任务。这一发现催生了“提示工程”的繁荣。这种人工的、离散的文本指令我们称为硬提示。硬提示也存在三个明显的缺陷,一是找到最优提示词需要大量的试错和经验,过程繁琐且不稳定;二是离散的文本在提示表达能力上存在上限,很难充分激发和精确控制大模型的潜力;提示在模型间可能不具备迁移性
于是催生出了参数高效微调,该思想借鉴了计算机视觉领域的迁移学习。在CV任务中我们通常会冻结预训练模型如ResNet负责提取通用特征的卷积层,仅微调后面的全连接层来适应新的分类任务。PEFT将这一思想应用于Transformer架构,并发展出多条技术路线

PEFT技术

参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)
即冻结预训练模型99%以上的参数,只调整其中的极小一部分参数,或者额外增加一些参数,从而使模型以极低的成本适应下游任务。这样既能有效利用大模型能力,又不必承受全量微调高昂成本
PEFT有多条技术路线

Adapter Tuning

Google在2019年为BERT模型设计,在Transformer的每个块中插入小型的“适配器”模块(Adapter)
如下图所示,Adapter被插入到每个子层(注意力层和前馈网络)内部,并与主干网络形成残差连接,在训练时只有Adapter模块的参数会被更新
![[Pasted image 20260124171555.png]]
右侧是Adapter模块自身结构:
降维的全连接层(Feedforward down-project):将高维特征映射到低维空间
非线性激活函数(Nonlinearity)
升维的全连接层(Feedfroward up-project):将特征映射回原始维度
贯穿该模块的残差连接:将模块的输出与原始输入相加,保证信息流的稳定
通过这种结构,Adapter模块可以用极少的参数量来模拟特定任务的知识,而且性能上接近全量微调
但是由于各层插入了额外的模块,训练时仍会带来一定的激活内存与算力开销

Prefix Tuning

核心机制:

  • 前缀激活值(Prefix Activations):图中PREFIX部分对应的激活值hih_ihi是从一个专门的可训练矩阵PθP_\thetaPθ中提取的,这部分参数就是微调的对象
  • 模型计算的激活值:而原始输入x和y对应的激活值,是由冻结的Transformer模型正常计算得出的
    下图的上下两部分分别是在自回归语言模型和编码器-解码器模型中的应用
    ![[Pasted image 20260124192753.png]]
    通过这种方式,模型在不改变原有参数的情况下,学会利用这些可控的前缀引导后续内容的生成,从而适应新任务。Prefix Tuning不仅在输入层添加前缀,还在Transformer的每一层都添加了对应的可学习Prefix,并通过一个小型的前馈网络(MLP)来生成这些参数
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐