Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

    • Survey

    • LoRA

      • LoRA
      • LoRA综述
      • LoRA-GA
      • LoRA-Pro
      • LoRA+
      • MoSLoRA
      • AM-LoRA
      • MiLoRA
        • MiLoRA: Effcient Mixture of Low-Rank Adaptation for Large Language Models Fine-tuning
        • 1 简介
        • 2 本文方法
          • 2.1 Preliminaries
          • 2.2 动机
          • 2.3 Prompt-aware LoRA router
          • 2.4 学习激活函数
        • 3 实验
          • 3.1 数据集和评估指标
          • 3.2 Baselines
          • 3.3 消融研究和进一步分析
        • 4 结论
        • 5 限制
        • 参考
    • PrefixTuning

    • PromptTuning

    • P-Tuning

    • Adapter

    • Propulsion
  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • PEFT
  • LoRA
Geeks_Z
2024-11-20
目录

MiLoRA

MiLoRA: Effcient Mixture of Low-Rank Adaptation for Large Language Models Fine-tuning

低秩自适应(LoRA)及其混合专家(MOE)变体是高参数效率微调(PEFT)方法的有效途径。然而,由于在Transformer层中添加多个线性模块的LoRA模块和MOE路由器,它们在Multi-Tenant设置中引入了显著的延迟。

为了解决这个问题,作者提出了混合低秩自适应(MiLoRA),这是一种新颖且高效的LoRA变体。与先前的MOE-LoRA方法不同,MiLoRA将每个LoRA模块视为专家,并采用 Prompt 感知路由机制。这种机制在生成第一个新 Token之前计算专家路由结果,并重复使用这些结果为后续 Token ,从而减少延迟。

在常识推理任务、数学推理任务和广泛使用的LLM评估基准测试上的大量实验和分析表明,与具有可比可调参数预算的强PEFT Baseline相比,MiLoRA始终优于他们。此外,与先前的基于LoRA的方法相比,MiLoRA在 Multi-Tenant设置中的延迟显著降低。

1 简介

大语言模型(LLMs)在各种NLP任务上已经实现了最先进(SOTA)的结果,同时在许多具有挑战性的评估任务上也有显著表现,如问答、推理、数学、安全性和指令遵循等。尽管LLMs正在发展成为通用任务解决者,但微调仍然对于高效的LLM推理和生成内容的风格控制至关重要。然而,由于需要大量的GPU内存和计算资源,对这种大型模型的全参数微调是不切实际的。因此,参数高效的微调(PEFT)已经引起了研究界的广泛关注,因为它通常只需要调整不到1%的LLMs的参数,从而大大降低了计算成本。

许多基于PEFT的AI方法中,基于重参化适应的低秩自适应(LoRA)方法被认为是用于LLM等模型最有效的方法之一。虽然LoRA有效,并能在原始设置下带来稳定性能,但在Multi-Tenant设置下仍然存在不便之处:它需要将LoRA模块添加到Transformer层的多个权重中,并在 Multi-Tenant设置下的每个生成步骤中引入显著的额外延迟。

近年来,混合专家(MOE)风格LoRA方法迅速崛起,进一步推动了LoRA微调性能的提高。然而,它们引入了MOE路由器的计算,进一步增加了推理延迟。因此,有必要开发一种引入生成期间最小延迟的LoRA方法,同时仍然能够在下游任务中具有竞争力的新变体。

在本研究中,作者提出了一种名为混合低秩自适应(MiLoRA)的新颖策略。MiLoRA方法与先前的MOE风格低秩自适应(LoRA)方法的不同之处在于以下两个方面。

  • 首先,在MiLoRA中,整个LoRA模块被视为LoRA专家,LoRA路由器负责确定要激活哪个LoRA专家。
  • 其次,作者提出了一种 Prompt 感知路由机制,而不是为每个新 Token 计算专家路由结果。

给定一个输入 Prompt ,专家路由结果仅计算一次,即在生成第一个新 Token 之前。后续生成步骤将重用专家路由结果。在 Prompt感知路由机制下,作者的LoRA路由器包括池化操作、可学习的激活函数和稀疏MOE路由器。

作者在各种具有挑战性的任务上进行了广泛实验和分析,包括五个常识推理任务,两个数学推理任务,以及三个广泛使用的LLM评估基准。MiLoRA可以在具有可比的可调参数预算的情况下,始终优于强大的PEFT Baseline ,特别是最近的LoRA变体。此外,MiLoRA方法在 Multi-Tenant设置下的延迟显著低于具有可比的可调参数的前一代基于LoRA的方法。

MiLoRA总结如下:

1. 提出了一种新颖的LoRa变体MiLoRA,该变体将MOE机制与LoRa高效地结合在一起。 

2. 在 MiLoRA 中,作者将每个 LoRA 模块视为专家。 

3. 提出一个 Prompt 感知路由机制,以避免按字段的路由器计算。 

4. 进行了广泛的实验和分析,结果表明MiLoRA框架在(a)实际应用中表现出色,并在可比参数预算下优于 Baseline 。此外,(b)在LLM推理过程中具有高效性。 

2 本文方法

在本节中,作者首先介绍了LoRA和MoEs的基础概念,然后详细阐述了MiLoRA的架构设计。

2.1 Preliminaries

Transformer模型 如图1所示,LLM(如LlaMA-2)中的每个Transformer层包括多头自注意力(MHA)子层和全连接前馈(FFN)子层。

MHA包含四个线性模块,分别是 Query (Q)、Key(K)、Value(V)和输出(O)模块。FFN包含三个线性模块:Gate(G)、Up(U)和Down(D)。

为了便于表示,作者将Transformer块中的模块数量表示为 Nmod 。因此,在LlaMA-2中,Nmod=7 。

对于Transformer模块中的任意一个 m∈{Q,K,V,O,G,U,D} ,LoRA方法在其权重上增加一对低秩矩阵进行重参化。具体地,使用LoRA计算模块 的前向过程如下:

x′=xWm+xWmAWmB+bm

其中 Wm∈Rd1×d2 是模块 m 的权重矩阵,bm 是其偏置项。WmA∈Rd1×r 和 WmB∈Rr×d2 是 LoRA 模块的低秩矩阵,且 r≪min(d1,d2) 。r 是两个矩阵的秩,也将被称为 LoRA 模块的秩。

2.2 动机

现有的MOE风格LoRA工作显著降低了LLM Backbone在推理过程中的tokens每秒(tps),约降低了20%。在这些工作中,每个LoRA模块都被分解为多个专家,并且需要一个路由器来确定哪些专家被激活。当生成每个新token时,每层都会执行多个LoRA模块和多个路由器,导致延迟不可忽视。

为了提高这种MOE LoRA方法的效率,作者需要研究以下研究问题:

1. 能否将LoRA模块视为专家,使得每个Transformer层只有一个LoRA路由器,并且仅激活每个层的一个这样的专家? 
2. LoRA路由器可以被调用一次用于输入 Prompt 吗? 

2.3 Prompt-aware LoRA router

试图探究 RQ1 和 RQ2,作者现在试图提出 MiLoRA 方法的具体细节。MiLoRA 的核心是 Prompt 感知路由机制。在这个机制下,LoRA路由器将输入 Prompt 的隐藏状态作为输入,并输出当前层的激活 LoRA 专家。

与之前的工作不同,MiLoRA:

1. 在输入 Prompt 通过 Transformer Backbone 网络第一次经过并即将生成第一个新 Token 时,只计算一次 MiLoRA 路由器。路由器的激活决策将在随后的生成步骤中重复使用。 
2. 在 Transformer 层 Level 确定激活的 LoRA 专家,选择由其对应 LoRA 模块修改的 Transformer 模块。 

如图1所示,为了生成响应,输入 Prompt 必须经过LLM Backbone 网以获取隐藏表示。在Transformer层 l 之前,将输入 Prompt的隐藏状态表示为 Hl∈Rnp×d 。然后进行一个池化操作 Pooler ,将 Hl 中的语义信息聚合为 hl∈R1×d :

Pooler操作可以是以下几种:

1. 最后一个 Token 池化,即将 Prompt 的最后一个 Token 的向量表示作为  。这种池化器在解码器基础的模型执行句子分类任务时广泛使用。 
2. 平均池化。 
3. 最大池化。 
4. 自注意力池化 

然后, 将在 层之前经过一个激活函数 ,并传入LoRA路由器 。 将当前输入 Prompt 分配给最合适的LoRA专家。该路由器包含

1. 一个线性层,计算  被路由到每个LoRA专家LoRA  的概率; 
2. 一个softmax函数,模拟LoRA专家上的概率分布; 
3. 一个Top-  函数,选择概率质量最高的Top-  个专家。 

形式上,

其中 是路由器的权重。LoRa 路由器在推理过程中动态地为每个输入 Prompt 选择最佳 个专家。请注意,路由器仅在生成新 Token 之前调用一次。激活的 LoRa 专家在整个生成过程中都被使用。

作者在训练损失函数中添加了负载均衡损失。考虑一个训练批次B,包含N_B个样本,令 表示第 层中第 个LoRA专家分配到的 Prompt 的比例。

是专家 的概率,由路由器 计算得出。令 为第 个专家接收到的概率质量的平均值,即 。然后,负载均衡损失由以下公式给出:

损失项被添加到交叉熵损失中,其系数为 。

2.4 学习激活函数

之前的PEFT文献通常将PEFT模块中的激活函数设置为ReLU,并不过多讨论这种设置是否最优。此外,PEFT模块中不同Transformer层的激活函数通常设置为相同的。如将在表5中展示的,深度不同的LoRA路由器的激活函数应具有不同的设置。因此,如何找到LoRA路由器激活函数的最优设置?穷举超参数搜索需要时间和GPU。因此,作者鼓励在训练过程中将激活函数设置为可学习的。

作者采用可学习的有理激活函数,它们可以逼近常见的激活函数,并学习新的激活函数。具有阶数m和n的有理激活函数 定义如下:

参数 和 是可学习的。有理激活函数在图像分类和序列建模中成功应用。

受上述文献的启发,作者提出了一种在微调下游任务时,通过有理激活函数学习LoRa路由器中的激活函数的方法。将可学习的激活函数的参数集表示为 ,LoRa路由器和LoRa专家中的其他参数集表示为 。遵循DARTS的做法,作者将 视为架构参数,并与 一起通过双层优化进行优化。

3 实验

在本节中,作者进行了一系列实验和分析来评估MiLoRA方法。

3.1 数据集和评估指标

作者将MiLoRA与基准对比在一批具有挑战性的任务上:

1. 五项基准常识性问题回答任务,包括 ARC-e 和 ARC-c , OBQA, PIQA , BoolQ。 
2. 两项数学推理任务,包括 AQuA和 GSM8k。作者使用用于这些数学任务的思维链(COT)推理。所有推理都是通过零样本 CoT在 GPT-3.51 上,但未经任何错误过滤。 
3. MT-Bench, MMLU。由于这些任务没有训练数据,作者使用 Alpaca Taori 等人(2023 年)的数据集进行指令调整。详细的统计数据和评估指标可以在附录 B 中找到。 

3.2 Baselines

作者将MiLoRA框架与当前最先进的SOTA PEFT Baseline 方法进行了比较。

作者考虑以下LoRA变体作为基准:

1. 原始LoRA; 
2. 自适应调整不同Transformer模块中的LoRA参数的AdaLoRA; 
3. 将每个LoRA模块视为单秩LoRA专家的混合的MOELoAIA; 
4. 最新LoRA变体之一DoRA,将预训练权重分解为两个部分,即幅度和方向,用于微调,具体采用LoRA进行方向性更新。 

此外,作者还考虑了以下最新的PEFT方法:

(a)Parallel-Adapter

(b)Learned-Adapter

(c)P-tuning v2

(d)IAPT

(e)BitFit

(f)IA,在Transformer层的不同模块中,将可学习向量乘以隐藏状态

(g)自适应系统结合不同PEFT方法的代表作,包括LoRA和BitFit

多任务设置。 表2展示了LLaMA2-7B在多任务学习中的LoRA、DoRA、MOELORA和MiLoRA的结果。

与表1中的单任务设置相比,在多任务学习中,作者将ARC、BoolQ、OBQA和PIQA的训练数据混合以训练模型,然后分别评估以研究每个方法的一般化能力。

结果表明:(a)与单任务学习相比,LoRA和DoRA在多任务学习中的平均准确性有所下降(LoRA:-2.0%,DoRA:-2.25%)。同时,MOELORA和MiLoRA的平均准确性保持 nearly 相同。MiLoRA在平均得分方面几乎没有性能损失。

通用指令调优结果。 在使用作者的 MiLoRA 方法或 MOELoRA 方法对 LlaMA-2 7B 在 Alpaca数据集进行微调之后,作者利用具有挑战性的基准测试,如 MT-Bench,MMLU和 BBH进行评估。作者在 MT-Bench 上报告了 GPT-4 平均分数(gpt4-score)。

表3 呈现了结果。与之前的实验(表1 和 2)一致,MiLoRA 方法在三个基准测试中优于 MOELoRA 方法,这表明 MiLoRA 在提高大语言模型的指令调优质量方面具有优势。

3.3 消融研究和进一步分析

分析推理效率 为了展示MiLoRA方法的推理效率,作者 now 比较了在不同的波束大小下,MiLoRA、DoRA 和 MOELoRA在波束搜索中的GPU内存和译码速度。在这个实验中,LoRA参数并未合并到 Backbone 网络中,以模拟单LLM Multi- Tenant设置。作者提出了两个衡量效率的指标:(a)峰值内存成本(以 MiB 计)。(b)每秒生成的 Token 数(tps)。结果如表4所示。

从表4中,在光束大小1和3下,MiLoRA方法具有与MOELoRA和DoRA相当的内存成本。然而,在以tps为单位的生成速度方面,MiLoRA显著高于MOELoRA和DoRA。在光束大小1下,MiLoRA比MOELoRA快21.7%,比DoRA快19.7%。

采用光束大小3时,MiLoRA比MOELORA快17.9%,比DoRA快13.2%。MiLoRA的速度优势来自于以下几个因素:(a) MiLoRA在输入 Prompt 首次经过LLM并即将生成第一个新 Token 之前,只在每个Transformer层调用一次LoRa路由器。相比之下,MOELORA和几乎所有现有的基于MOE的LoRa变体在生成每个新 Token 时,都需要调用多个路由器。(b) MiLoRA显著减少了每个解码步骤中激活的LoRa模块数量,从而提高了生成新 Token 的效率。

激活LoRA专家的分布 现在作者比较了在MT- Bench、BoolQ和PIQA任务上的所有Transformer层中激活的LoRA专家的分布,如图2所示。

作者可以观察到:

1. 不同的Transformer层通过其相应的路由器选择不同的LoRA专家进行激活,而一个LoRA专家能够达到的最大比例小于30%。结果很直观,因为不同深度的Transformer层代表不同的知识,需要不同的LoRA专家来表达。 

2. 不同任务上的LoRA分布是不同的。例如,在MT-Bench和BoolQ任务上,几层会激活LoRA Q或LoRA K,而这两个LoRA专家在PIQA任务上经常被选择。 

以下是对MiLoRA框架的消融研究:作者考虑了以下几种MiLoRA的变体:

1. MiLoRA-1用平均池化替代了自注意力池化; 
2. MiLoRA-2用最后 Token 池化替代了自注意力池化; 
3. MiLoRA-3在LoRA路由器中使用了GeLU激活函数g; 
4. MiLoRA-4在前16层使用了ReLU,而在更深层的16层使用了GeLU; 
5. MiLoRA-5在前16层使用了GeLU,而在更深层的16层使用了ReLU。BoolQ、PIQA和MMLU任务上的实验结果如表5所示。 

结果显示,在默认设置(如表1所示)下,MiLoRA优于五个变体。此外,将MiLoRA-1与MiLoRA进行比较,发现自注意力池器提供高质量的信息聚合,从而实现正确的LoRA专家选择。将MiLoRA-5与MiLoRA-3和MiLoRA-4进行比较,发现为不同层的路由器使用不同的激活函数可以带来性能提升。然而,MiLoRA优于MiLoRA-3、MiLoRA-4和MiLoRA-5,表明可学习的激活函数可以为每个LoRA路由器提供适当的激活函数,并增强下游适应能力。

** 的影响 ** 在表1和2中,作者将激活的LoRA专家数量 设置为3。现在,作者将 更改为{1, 2, 4, 5, 6, 7},改变激活的LoRA专家的比例。作为比较,作者也改变了激活专家在MOELORA中的比例。BoolQ和PIQA任务的的结果分别如图3(a)和3(b)所示。

结果表明:(a)随着激活专家数量的增加,两种方法的表现首先增加然后减少。当激活专家的比例为1时,两种方法简化为普通的LoRA。(b)MiLoRA始终优于MOELORA方法,这证明了MiLoRA在定位最需要LoRA模块的Transformer模块方面的有效性。

λlb系数的影响 在表1中,作者将路由器损失系数λlb设置为1e-2。现在,作者将 更改为 ,并在BoolQ和PIQA任务上进行实验。结果报告在图4(a)和4(b)中。

结果表明:(a)MiLoRA在系数为1e-2时实现了最高的平均准确率。(b)禁用路由器损失或使用更高的系数会导致平均准确率降低。这些结果表明,一个合理的路由器损失系数可以帮助解决专家的不平衡问题,而更高的系数可以在微调过程中阻碍模型收敛。

在不同的可调参数预算下进行比较 在MiLoRA中通过修改m=32的值来改变可调参数预算,预算值为{8, 16, 64, 128, 256}。作者还改变了可调参数数量。图5(a)和5(b)展示了在BoolQ和PIQA任务上的实验结果。结果表明,在不同可调参数预算下,MiLoRA方法(a)可以持续优于LoRA和LPT方法,同时(b)对可调参数数量减少更为鲁棒。

在预训练的backbone上的消融 作者主要在LlaMA-2 7B模型上进行实验。为了证明MiLoRA的应用范围,作者将在LlaMA-2 13B和Gemma 2B模型上进行实验。

结果已在附录E的表7中报告。作者可以看到,MiLoRA方法在这两个backbone上也可以超过 Baseline 方法。

4 结论

本研究提出了Mixture of LoRA (MiLoRA) 方法,一种用于大规模语言模型参数高效的微调新方法。与先前的MOE风格LoRA方法不同,MiLoRA:

1. 在Transformer层 Level 激活LoRA专家,确定哪个Transformer模块的LoRA被激活。 
2. 激活哪个LoRA专家取决于输入 Prompt 。 
3. 对于给定的 Prompt ,LoRA路由器只调用一次。随后的 Token 生成步骤重用路由器的决策。 

为了提高MiLoRA的下游性能,作者在微调过程中学习不同深度的LoRA路由器的不同激活函数。MiLoRA易于实现且现成。在各种任务上的实验表明,MiLoRA方法在推理效率的同时,超过了基准方法。

5 限制

作者表明,作者提出的这种方法可以提高在各种任务和不同预训练模型(如LlaMA-2 7B,LlaMA-2 13B,Gemma 2B)上的参数有效调优性能。

然而,作者承认以下限制:

1. 由于计算资源有限,没有实验更大规模的超大型开源LLM,如LlaMA-2 70B。 
2. NLP中的其他任务,如信息提取,也没有考虑。但MiLoRA可以轻松地转移到其他 Backbone 架构和不同类型的任务。 

研究MiLoRA在更大规模的 Backbone 模型和其他类型任务上的优越性将很有趣,作者将在未来的工作中进行探索。

参考

  1. LoRA再现高效全新变体MiLoRA | 通过Prompt 感知路由机制让LoRA加速的同时不忘涨点 (opens new window)
  2. 你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体 (opens new window)
上次更新: 2025/06/25, 11:25:50
AM-LoRA
Prefix tuning

← AM-LoRA Prefix tuning→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式