论文阅读笔记——Adapter,AdapterFusion,AdapterDrop

Adapter

Adapter 论文

Adapter 是一组轻量级的参数,被添加到模型的中间层,以保护原有预训练模型的参数。

Adapter:少量参数近似恒等初始化 。注意:仍然增加了网络深度!!!

Adapter模块由两个前馈子层构成。第一个子层接收 Transformer 块的输出,并将原始输入维度 d 映射到较小的维度 m(通常m远小于d),以此限制模块的参数量。第二个子层则负责将维度m重新映射回d,作为模块的最终输出。这种设计使得 Adapter 模块能够在不调整整个模型参数的情况下,灵活适应新的下游任务,有效避免了全模型微调带来的计算负担和灾难性遗忘问题。通过引入少量任务特定的参数,Adapter 方法能够高效存储任务相关知识,显著降低模型微调所需的计算资源。

AdapterFusion

AdapterFusion 论文

将 Adapter 扩展到了多任务


AdapterFusion 将学习过程划分为两个阶段:

  1. 知识提取阶段:在此阶段,训练Adapter模块以捕捉下游任务的特定知识,并将这些知识编码到 Adapter 模块的参数中。
  2. 知识组合阶段:在此阶段,固定预训练模型参数和特定任务的 Adapter 参数,同时引入新的参数 Ψ,用于学习如何融合多个 Adapter 模块中的知识,从而提升模型在目标任务上的性能。

具体而言,首先针对 N 个不同的下游任务 分别训练 N 个独立的 Adapter 模块。随后,AdapterFusion 通过固定预训练参数 Θ 和所有 Adapter 参数 Φ,并引入新参数 Ψ,利用 N 个下游任务的数据集进行训练,学习如何组合这些 Adapter 模块以解决特定任务 。参数Ψ在每一层中包含 Key、Value和Query(如右侧架构所示)。在 Transformer 的每一层中,前馈网络子层的输出作为 Query,而各个 Adapter 模块的输出分别作为 Key 和 Value。通过计算 Query 与 Key 的点积并输入 SoftMax 函数,AdapterFusion 能够根据上下文动态加权不同的 Adapter 模块。在给定上下文中,AdapterFusion 学习如何混合已训练 Adapter 模块的参数,并根据输入激活最相关的 Adapter 模块。

优势与挑战

  • 通过将Adapter的训练分为知识提取和知识组合两个阶段,AdapterFusion 有效解决了灾难性遗忘、任务间干扰和训练不稳定的问题。
  • 然而,Adapter模块的引入增加了模型的整体参数量,可能会对推理性能产生一定影响。

AdapterDrop

AdapterDrop 论文

Adapter 和 AdapterFusion 推理加速版

为了提升推理效率,可以在推理时对某些层的 Adapter 进行剪枝。作者提出了一种策略,即在推理时剪掉最靠近输入的前 n 层 Adapter。为了尽可能减少性能损失,作者设计了两种训练方案:

  1. Specialized AdapterDrop:在训练时固定剪枝层数 n,推理时也固定剪掉前 n 层 Adapter。
  2. AdapterDrop(Robust AdapterDrop :在训练时,每个 batch 随机选择不同的 n 值进行训练,使得训练后的模型能够适应多种剪枝配置。
    由于模型的其他参数在训练过程中是固定的,梯度只需回传到保留的最早一层 Adapter 即可。这种设计不仅减少了计算量,还能在推理时灵活调整 Adapter 的使用,从而在加速推理的同时尽可能保持模型性能。

对于 AdapterFusion 进行剪枝:

  • 去除前几层 AdapterFusion(AF)层对模型性能的影响因任务而异。例如,在 RTE 任务中,去除 AF 层对性能影响较小,而在 CoLA 任务中,模型对去除 AF 层非常敏感。这表明,直接去除 AF 层并不是一种通用的优化方法。
  • 为了更有效地提升推理速度,作者提出了一种基于贡献度的剪枝策略:通过测量每个 Adapter 在训练集上的平均激活水平(即加权后的输出),识别出每层中对输出贡献较小的 Adapter。具体实现中,每层仅保留两个贡献最高的 Adapter,其余 Adapter 被剪枝。实验表明,这种方法在几乎不损失模型性能的情况下,可以将推理速度提升 68%。这种策略不仅显著加速了推理过程,还保持了模型的整体性能,是一种更为精细和高效的优化方法。*
相关推荐
cooldream20097 分钟前
华为云Flexus+DeepSeek征文|基于华为云Flexus X实例的小说转语音助手应用构建实录
人工智能·华为云·dify
唐小码9 分钟前
AI学习二、通过anythingLLM搭建本地知识库
人工智能
越轨13 分钟前
【Pytorch学习笔记】模型模块08——AlexNet模型详解
人工智能·pytorch·笔记·深度学习·学习·机器学习
AI设计小站17 分钟前
AI 赋能名片设计:告别模板化,创造独特视觉风格
大数据·人工智能·设计规范
12960045226 分钟前
简单transformer运用
人工智能·深度学习·transformer
RFID舜识物联网30 分钟前
RFID测温芯片助力新能源产业安全与能效提升
大数据·人工智能·嵌入式硬件·物联网·安全
__星辰大海__42 分钟前
NeRF PyTorch 源码解读 - 体渲染
人工智能
自在的LEE42 分钟前
当 AI 大模型遇上企业级架构:LLMProxy 实战指南
人工智能·后端·容器
思绪漂移1 小时前
DataAgent产品经理(数据智能方向)
人工智能·产品经理
点云SLAM1 小时前
Python中os模块详解
开发语言·前端·人工智能·python·计算机视觉