论文阅读笔记——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%。这种策略不仅显著加速了推理过程,还保持了模型的整体性能,是一种更为精细和高效的优化方法。*
相关推荐
我不是QI9 分钟前
周志华《机器学习—西瓜书》二
人工智能·安全·机器学习
操练起来21 分钟前
【昇腾CANN训练营·第八期】Ascend C生态兼容:基于PyTorch Adapter的自定义算子注册与自动微分实现
人工智能·pytorch·acl·昇腾·cann
大白的编程日记.27 分钟前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
KG_LLM图谱增强大模型37 分钟前
[500页电子书]构建自主AI Agent系统的蓝图:谷歌重磅发布智能体设计模式指南
人工智能·大模型·知识图谱·智能体·知识图谱增强大模型·agenticai
声网42 分钟前
活动推荐丨「实时互动 × 对话式 AI」主题有奖征文
大数据·人工智能·实时互动
caiyueloveclamp42 分钟前
【功能介绍03】ChatPPT好不好用?如何用?用户操作手册来啦!——【AI溯源篇】
人工智能·信息可视化·powerpoint·ai生成ppt·aippt
q***48411 小时前
Vanna AI:告别代码,用自然语言轻松查询数据库,领先的RAG2SQL技术让结果更智能、更精准!
人工智能·microsoft
LCG元1 小时前
告别空谈!手把手教你用LangChain构建"能干活"的垂直领域AI Agent
人工智能
IMPYLH1 小时前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua
想你依然心痛2 小时前
视界无界:基于Rokid眼镜的AI商务同传系统开发与实践
人工智能·智能硬件·rokid·ai眼镜·ar技术