专栏
天翼云开发者社区

groundingDINO lora微调和adapter微调

2024-03-27 11:02:07 81阅读

lora微调

原理

lora的优势
  • 预训练的模型可以共享,并用于为不同的任务构建许多小型LoRA模块。通过替换图1中的矩阵A和B,可以冻结共享模型参数并高效地切换任务,从而显著降低存储需求和任务切换开销。
  • 当使用自适应优化器时,LoRA使训练更有效,并将硬件需求降低3倍,因为不需要计算梯度或维护大多数参数的优化器状态。相反,只优化注入的小得多的低秩矩阵。
  • 简单的线性设计允许在部署时将可训练矩阵与冻结权重合并,与完全微调的模型相比,通过构造,不会引入推理延迟。
完全微调时,模型初始化为预训练的权重 Φ0 ,微调后更新为 Φ0+ΔΦ ,这期间最大化条件语言模型目标。
lora微调:将特定与任务的参数增量 ΔΦ=ΔΦ(Θ) 由一组更小的参数 Θ |Θ|≪|Φ0| 进一步编码。因此,求 ΔΦ 的任务变为在Θ上进行优化。
神经网络层中很多权重矩阵通常具有全秩。当适应特定任务时,预训练的语言模型具有较低的“内在维度”。对于预训练的权重矩阵$$W_0 ∈ R^{d×k}$$ , 用低秩分解$$W_0 + ∆W = W_0 + BA$$来约束其更新,其中$$B ∈ R^{d×r} , A ∈ R^{r×k},$$$$r\ll min(d, k)$$,训练期间$$W_0 $$被冻结,对A使用随机高斯初始化,对B使用零初始化,因此 ΔW=BA在训练开始时为零。然后,用$$\frac{\alpha}{r}$$缩放 ΔWx, 其中α是r中的常数。当使用Adam进行优化时,如果适当缩放初始化,则调整α与调整学习率大致相同。因此,我们只需将α设置为尝试的第一个r,而不进行调整。当改变r时,这种缩放有助于减少重新调整超参数的需要。
当需要切换到另一个下游任务时,可以通过减去 BA 来恢复 W0,然后添加不同的 B'A'.

实现

目前lora只支持nn.Linear, nn.Embedding, and nn.Conv2d。提供了 MergedLinear 以支持在单个 nn.Linear 代表多个层的情况,例如注意力机制中的qkv的实现。LoRA建议冻结预训练模型的权重并在每个Transformer块中注入可训练层(秩-分解矩阵)。对于groundingDINO的encoder-decoder部分增加lora微调。

adapter微调

以原始的groundingDINO-t预训练模型为主干网络,针对不同的任务进行增加adapter微调,检测时,对于不同的任务,加载对应的adapter参数和主干网络参数进行推理。对于任务之外的检测目标采用不加adapter的主干网络进行检测。

原理

 
在预训练模型每一层(或某些层)中添加 Adapter 模块,微调时冻结预训练模型主体,由 Adapter 模块学习特定下游任务的知识。每个 Adapter 模块由两个前馈子层组成,第一个前馈子层将 Transformer 块的输出作为输入,将原始输入维度 d 投影到 m,通过控制 m 的大小来限制 Adapter 模块的参数量,通常情况下 m<<d。在输出阶段,通过第二个前馈子层还原输入维度,将 m 重新投影到 d,作为 Adapter 模块的输出(如上图右侧结构)。通过添加 Adapter 模块来产生一个易于扩展的下游模型,每当出现新的下游任务,通过添加 Adapter 模块来避免全模型微调与灾难性遗忘的问题。Adapter 方法不需要微调预训练模型的全部参数,通过引入少量针对特定任务的参数,来存储有关该任务的知识,降低对模型微调的算力要求。

实现

在decoder的每一层加一个adapter,只微调adapter和box head。

微调后通用类别检测

通过实验验证了大模型微调后会减弱甚至失去对其他通用类别的检测能力,使用通用类别微调后会提高对应类别的检测效果,但是会降低原来微调类别检测效果;
解决:将groundingDINO作为base模型,在不同的任务上分别使用lora微调或adapter微调。
 

adapter微调与lora微调

在每一层dencoder layer后面加一个adapter。对encoder和decoder的attention和FFN进行lora微调。其中adapter微调的参数量占全参的0.9%, lora微调的参数量占全参的5.7%。
从实验结果可以看出,在不同任务上lora和adapter相比全参微调性能略有降低,选择adapetr或者lora需要根据具体的任务进行判断,需要针对两种微调方式进行超参实验对比。
 
 

总结

1.大模型在泛化性和开集检测能力方面显著优于传统小模型,但是对于特定任务进行微调后会显著降低模型的泛化性

2.采用加lora和加adapter的微调方式可以显著提高训练的效率,但是具体谁更好需要增加对比试验和超参实验进行判断

  • 1
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
张****青

张****青

1 篇文章 0 粉丝
关注

groundingDINO lora微调和adapter微调

2024-03-27 11:02:07 81阅读

lora微调

原理

lora的优势
  • 预训练的模型可以共享,并用于为不同的任务构建许多小型LoRA模块。通过替换图1中的矩阵A和B,可以冻结共享模型参数并高效地切换任务,从而显著降低存储需求和任务切换开销。
  • 当使用自适应优化器时,LoRA使训练更有效,并将硬件需求降低3倍,因为不需要计算梯度或维护大多数参数的优化器状态。相反,只优化注入的小得多的低秩矩阵。
  • 简单的线性设计允许在部署时将可训练矩阵与冻结权重合并,与完全微调的模型相比,通过构造,不会引入推理延迟。
完全微调时,模型初始化为预训练的权重 Φ0 ,微调后更新为 Φ0+ΔΦ ,这期间最大化条件语言模型目标。
lora微调:将特定与任务的参数增量 ΔΦ=ΔΦ(Θ) 由一组更小的参数 Θ |Θ|≪|Φ0| 进一步编码。因此,求 ΔΦ 的任务变为在Θ上进行优化。
神经网络层中很多权重矩阵通常具有全秩。当适应特定任务时,预训练的语言模型具有较低的“内在维度”。对于预训练的权重矩阵$$W_0 ∈ R^{d×k}$$ , 用低秩分解$$W_0 + ∆W = W_0 + BA$$来约束其更新,其中$$B ∈ R^{d×r} , A ∈ R^{r×k},$$$$r\ll min(d, k)$$,训练期间$$W_0 $$被冻结,对A使用随机高斯初始化,对B使用零初始化,因此 ΔW=BA在训练开始时为零。然后,用$$\frac{\alpha}{r}$$缩放 ΔWx, 其中α是r中的常数。当使用Adam进行优化时,如果适当缩放初始化,则调整α与调整学习率大致相同。因此,我们只需将α设置为尝试的第一个r,而不进行调整。当改变r时,这种缩放有助于减少重新调整超参数的需要。
当需要切换到另一个下游任务时,可以通过减去 BA 来恢复 W0,然后添加不同的 B'A'.

实现

目前lora只支持nn.Linear, nn.Embedding, and nn.Conv2d。提供了 MergedLinear 以支持在单个 nn.Linear 代表多个层的情况,例如注意力机制中的qkv的实现。LoRA建议冻结预训练模型的权重并在每个Transformer块中注入可训练层(秩-分解矩阵)。对于groundingDINO的encoder-decoder部分增加lora微调。

adapter微调

以原始的groundingDINO-t预训练模型为主干网络,针对不同的任务进行增加adapter微调,检测时,对于不同的任务,加载对应的adapter参数和主干网络参数进行推理。对于任务之外的检测目标采用不加adapter的主干网络进行检测。

原理

 
在预训练模型每一层(或某些层)中添加 Adapter 模块,微调时冻结预训练模型主体,由 Adapter 模块学习特定下游任务的知识。每个 Adapter 模块由两个前馈子层组成,第一个前馈子层将 Transformer 块的输出作为输入,将原始输入维度 d 投影到 m,通过控制 m 的大小来限制 Adapter 模块的参数量,通常情况下 m<<d。在输出阶段,通过第二个前馈子层还原输入维度,将 m 重新投影到 d,作为 Adapter 模块的输出(如上图右侧结构)。通过添加 Adapter 模块来产生一个易于扩展的下游模型,每当出现新的下游任务,通过添加 Adapter 模块来避免全模型微调与灾难性遗忘的问题。Adapter 方法不需要微调预训练模型的全部参数,通过引入少量针对特定任务的参数,来存储有关该任务的知识,降低对模型微调的算力要求。

实现

在decoder的每一层加一个adapter,只微调adapter和box head。

微调后通用类别检测

通过实验验证了大模型微调后会减弱甚至失去对其他通用类别的检测能力,使用通用类别微调后会提高对应类别的检测效果,但是会降低原来微调类别检测效果;
解决:将groundingDINO作为base模型,在不同的任务上分别使用lora微调或adapter微调。
 

adapter微调与lora微调

在每一层dencoder layer后面加一个adapter。对encoder和decoder的attention和FFN进行lora微调。其中adapter微调的参数量占全参的0.9%, lora微调的参数量占全参的5.7%。
从实验结果可以看出,在不同任务上lora和adapter相比全参微调性能略有降低,选择adapetr或者lora需要根据具体的任务进行判断,需要针对两种微调方式进行超参实验对比。
 
 

总结

1.大模型在泛化性和开集检测能力方面显著优于传统小模型,但是对于特定任务进行微调后会显著降低模型的泛化性

2.采用加lora和加adapter的微调方式可以显著提高训练的效率,但是具体谁更好需要增加对比试验和超参实验进行判断

文章来自专栏

大模型groundingDINO

1 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 1
    点赞
  • 0
    收藏
  • 0
    评论