task04 参数高效微调

微调量化第一章,资料地址: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)来生成这些参数
相关推荐
空堂与归18 小时前
序列数据怎么喂给神经网络?用循环神经网络RNN拆开一个时间步
人工智能·rnn·神经网络·nlp
空堂与归1 天前
RNN记不住长序列怎么办?用 LSTM 三门一通道接旁路
人工智能·rnn·nlp·lstm
DevOpenClub1 天前
多语言内容审核如何避免误翻译:语种检测、纠错与情感分析编排
nlp
Jialu.3 天前
中文 BERT 多任务分类项目:从模型结构到训练细节
人工智能·pytorch·分类·微软·nlp·bert
AIGC大时代3 天前
知网 AIGC 检测在罚什么:均匀句长、低指代、零口癖,并不等于「用过 ChatGPT」
人工智能·chatgpt·nlp·aigc·论文·知网·学术规范
Jialu.3 天前
从 102M 到 34M:BERT 到 BiLSTM 的完整知识蒸馏实现
深度学习·nlp·bert
LlmCraft|大模型工程实践3 天前
03 文本向量化:词袋模型与 TF-IDF
自然语言处理·nlp·tf-idf
傲笑风3 天前
【openvino】tinybert基于openvino服务化部署(四)
人工智能·python·自然语言处理·nlp·bert·openvino
啊阿狸不会拉杆4 天前
《自然语言处理:基于大语言模型的方法》第1章 绪论 读书笔记
人工智能·自然语言处理·nlp·easyui·智能体