Adapter Tuning轻量级参数高效微调法论文地址:https://arxiv.org/pdf/1902.00751什么是 Adapter Tuning适配器调整Adapter Tuning是一种参数高效微调方法通过在预训练模型的各层中插入轻量级的适配器模块Adapter Module仅训练这些模块来适配下游任务同时冻结原始模型的大部分参数 。其核心目标是以极低的参数量通常为全量微调的0.5%~5%实现模型性能的快速适配显著降低计算与存储开销 。适配器调整的设计主要基于以下几个关键想法 参数隔离预训练模型已经包含了很多通用知识微调时不用大改只需要局部调整一下特定的特征表示就行 。轻量添加在模型各层之间插入小型神经网络模块也就是适配器把它们当成任务相关特征的“插件”这样就不用直接修改模型原来的权重了 。逐层适应适配器一般放在 Transformer 的多头注意力和前馈网络中间这样能一层一层地捕捉任务的相关信号 。不影响推理训练完成后适配器就成了模型的一部分直接参与推理不用再额外调整模型结构 。Adapter Tuning 的训练过程标准适配器模块由下投影Down-Projection和上投影Up-Projection构成中间引入非线性激活函数 A d a p t e r ( x ) x W u p ⋅ σ ( W d o w n ⋅ x ) Adapter(x)xW_{up}\cdot\sigma(W_{down}\cdot x)Adapter(x)xWup⋅σ(Wdown⋅x)其中各部分含义如下 W d o w n ∈ R d × r W_{down}\in\mathbb{R}^{d\times r}Wdown∈Rd×r负责将高维输入x ∈ R d x\in\mathbb{R}^{d}x∈Rd压缩到低维瓶颈空间满足r ≪ d r\ll dr≪d即瓶颈维度远小于原始维度 。σ \sigmaσ非线性激活函数常用如 ReLU、GELU用于引入非线性变换 。W u p ∈ R r × d W_{up}\in\mathbb{R}^{r\times d}Wup∈Rr×d把经过瓶颈层的低维特征重新映射回原始维度d并通过残差连接即公式中x . . . x...x...部分与原始输入融合 。在实际的训练流程中包含以下几个关键步骤训练中先对预训练模型的主干权重如Transformer主体参数进行完全冻结使其不参与梯度更新以保留通用知识 。接着仅针对适配器专属参数{ W d o w n , W u p } \{W_{down},W_{up}\}{Wdown,Wup}以及可能涉及的任务特定组件如分类头、回归头开展局部优化 。最后通过在Transformer每个子层如多头注意力层、前馈网络层(FFN)之后插入 Adapter让模型能够逐层适配任务特征进而构建起层级化的任务适配能力 。Adapter Tuning 的特点它参数高效可训练参数量仅为全量微调的0.1%-5% 。采用模块化设计适配器可独立增删支持多任务共享主干模型并动态切换任务 。不存在推理延迟问题作为模型固有结构推理时无额外计算分支效率和原始模型一致 。架构兼容性佳天然适配 Transformer 架构还能扩展到视觉、多模态模型像ViT、CLIP这类 。LoRA低秩适配高效微调技术论文地址:https://arxiv.org/pdf/2106.09685什么是 LoRALoRA全称是 Low-Rank Adaptation是一种高效的模型微调技术 。它的主要目标是在不影响模型性能的前提下减少训练参数的数量、降低计算和存储成本 。传统的微调方法直接修改模型的全部参数或大部分参数这样做虽然能适应新任务但带来高昂的计算成本和显存占用 。LoRA 的破局思路不去直接修改原始模型的大型权重矩阵LoRA 会为每一个被微调的矩阵引入一对低秩矩阵的补丁A和B并训练它们而不修改原始权重 。怎么进行低秩矩阵分解我们可以通过一个具体的数学例子来理解其降参效果假设原参数矩阵维度为 N*d例如句长 512 * 维度 1024 。如果进行全参微调需要更新的参数量为512 * 1024 524,288个参数 。使用 LoRA 时可以使用两个小矩阵进行模拟大矩阵例如矩阵 A 为 5124矩阵 B 为 41024此时仅要更新512*4 4*1024 6,144个参数降参效果显著6144 / 524288 ≈ 1.2%更新参数量降为全参微调的 1.2% 。核心逻辑通过将原始矩阵低秩矩阵分解成两个低秩矩阵冻结原始模型参数仅训练低秩矩阵 A 与 B其中秩r rr远小于原来维度 。实际中如何进行 LoRA更新公式模型参数的更新遵循以下公式W u p d a t e d W o r i g i n a l B ⋅ A W_{updated}W_{original}B\cdot AWupdatedWoriginalB⋅A初始化策略矩阵 A随机初始化 。矩阵 B必须全零初始化。这是为了保证模型能够基于原来性能进一步学习不至于直接训歪导致模型坍塌 。微调与合并过程微调阶段实际使用时所有线性层都可以用 LoRA 进行微调 。选定模型中需要插入 LoRA 的对应的层的矩阵把这些矩阵分别“补充”一对新的小矩阵 A 和 B维度分别是[ r , d ] [r, d][r,d]和[ d , r ] [d, r][d,r]其中 r 是秩d 是原始矩阵的层数 。然后保持原始模型不变即冻结参数只微调这两个小矩阵 A 和 B 。合并与推理在小矩阵训练完成后将B ⋅ A B \cdot AB⋅A相乘的结果直接与原参数矩阵相加这不改变原来模型的结构与计算效率 。局部生效这个操作只合并你插入过 LoRA 的位置没插过的地方比如你没选的矩阵或层保持不变 。所以合并后的模型参数结构基本不变效果上相当于你用 LoRA 完整调好了那几个关键的螺丝 。
大模型入门-大模型蒸馏与微调2
发布时间:2026/5/18 13:41:21
Adapter Tuning轻量级参数高效微调法论文地址:https://arxiv.org/pdf/1902.00751什么是 Adapter Tuning适配器调整Adapter Tuning是一种参数高效微调方法通过在预训练模型的各层中插入轻量级的适配器模块Adapter Module仅训练这些模块来适配下游任务同时冻结原始模型的大部分参数 。其核心目标是以极低的参数量通常为全量微调的0.5%~5%实现模型性能的快速适配显著降低计算与存储开销 。适配器调整的设计主要基于以下几个关键想法 参数隔离预训练模型已经包含了很多通用知识微调时不用大改只需要局部调整一下特定的特征表示就行 。轻量添加在模型各层之间插入小型神经网络模块也就是适配器把它们当成任务相关特征的“插件”这样就不用直接修改模型原来的权重了 。逐层适应适配器一般放在 Transformer 的多头注意力和前馈网络中间这样能一层一层地捕捉任务的相关信号 。不影响推理训练完成后适配器就成了模型的一部分直接参与推理不用再额外调整模型结构 。Adapter Tuning 的训练过程标准适配器模块由下投影Down-Projection和上投影Up-Projection构成中间引入非线性激活函数 A d a p t e r ( x ) x W u p ⋅ σ ( W d o w n ⋅ x ) Adapter(x)xW_{up}\cdot\sigma(W_{down}\cdot x)Adapter(x)xWup⋅σ(Wdown⋅x)其中各部分含义如下 W d o w n ∈ R d × r W_{down}\in\mathbb{R}^{d\times r}Wdown∈Rd×r负责将高维输入x ∈ R d x\in\mathbb{R}^{d}x∈Rd压缩到低维瓶颈空间满足r ≪ d r\ll dr≪d即瓶颈维度远小于原始维度 。σ \sigmaσ非线性激活函数常用如 ReLU、GELU用于引入非线性变换 。W u p ∈ R r × d W_{up}\in\mathbb{R}^{r\times d}Wup∈Rr×d把经过瓶颈层的低维特征重新映射回原始维度d并通过残差连接即公式中x . . . x...x...部分与原始输入融合 。在实际的训练流程中包含以下几个关键步骤训练中先对预训练模型的主干权重如Transformer主体参数进行完全冻结使其不参与梯度更新以保留通用知识 。接着仅针对适配器专属参数{ W d o w n , W u p } \{W_{down},W_{up}\}{Wdown,Wup}以及可能涉及的任务特定组件如分类头、回归头开展局部优化 。最后通过在Transformer每个子层如多头注意力层、前馈网络层(FFN)之后插入 Adapter让模型能够逐层适配任务特征进而构建起层级化的任务适配能力 。Adapter Tuning 的特点它参数高效可训练参数量仅为全量微调的0.1%-5% 。采用模块化设计适配器可独立增删支持多任务共享主干模型并动态切换任务 。不存在推理延迟问题作为模型固有结构推理时无额外计算分支效率和原始模型一致 。架构兼容性佳天然适配 Transformer 架构还能扩展到视觉、多模态模型像ViT、CLIP这类 。LoRA低秩适配高效微调技术论文地址:https://arxiv.org/pdf/2106.09685什么是 LoRALoRA全称是 Low-Rank Adaptation是一种高效的模型微调技术 。它的主要目标是在不影响模型性能的前提下减少训练参数的数量、降低计算和存储成本 。传统的微调方法直接修改模型的全部参数或大部分参数这样做虽然能适应新任务但带来高昂的计算成本和显存占用 。LoRA 的破局思路不去直接修改原始模型的大型权重矩阵LoRA 会为每一个被微调的矩阵引入一对低秩矩阵的补丁A和B并训练它们而不修改原始权重 。怎么进行低秩矩阵分解我们可以通过一个具体的数学例子来理解其降参效果假设原参数矩阵维度为 N*d例如句长 512 * 维度 1024 。如果进行全参微调需要更新的参数量为512 * 1024 524,288个参数 。使用 LoRA 时可以使用两个小矩阵进行模拟大矩阵例如矩阵 A 为 5124矩阵 B 为 41024此时仅要更新512*4 4*1024 6,144个参数降参效果显著6144 / 524288 ≈ 1.2%更新参数量降为全参微调的 1.2% 。核心逻辑通过将原始矩阵低秩矩阵分解成两个低秩矩阵冻结原始模型参数仅训练低秩矩阵 A 与 B其中秩r rr远小于原来维度 。实际中如何进行 LoRA更新公式模型参数的更新遵循以下公式W u p d a t e d W o r i g i n a l B ⋅ A W_{updated}W_{original}B\cdot AWupdatedWoriginalB⋅A初始化策略矩阵 A随机初始化 。矩阵 B必须全零初始化。这是为了保证模型能够基于原来性能进一步学习不至于直接训歪导致模型坍塌 。微调与合并过程微调阶段实际使用时所有线性层都可以用 LoRA 进行微调 。选定模型中需要插入 LoRA 的对应的层的矩阵把这些矩阵分别“补充”一对新的小矩阵 A 和 B维度分别是[ r , d ] [r, d][r,d]和[ d , r ] [d, r][d,r]其中 r 是秩d 是原始矩阵的层数 。然后保持原始模型不变即冻结参数只微调这两个小矩阵 A 和 B 。合并与推理在小矩阵训练完成后将B ⋅ A B \cdot AB⋅A相乘的结果直接与原参数矩阵相加这不改变原来模型的结构与计算效率 。局部生效这个操作只合并你插入过 LoRA 的位置没插过的地方比如你没选的矩阵或层保持不变 。所以合并后的模型参数结构基本不变效果上相当于你用 LoRA 完整调好了那几个关键的螺丝 。