你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体

发布于 2024-11-11 10:56
浏览
0收藏

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

论文链接:https://arxiv.org/pdf/2410.18035


低秩适应(LoRA)及其专家混合(MOE)变体是非常有效的参数高效微调(PEFT)方法。然而,由于在Transformer层中添加了LoRA模块和MOE routers,这些方法在多租户环境中引入了显著的延迟。为了解决这个问题,本文提出了低秩适应的混合(MiLoRA),一种新颖且高效的LoRA变体。MiLoRA与之前的MOE风格LoRA方法不同之处在于将每个LoRA模块视为一个专家,并采用了一种基于提示的router机制。该机制在生成第一个新标记之前计算专家路由结果,并将这些结果用于后续标记,从而减少延迟。在常识推理任务、数学推理任务和广泛使用的LLM评估基准上进行的广泛实验和分析表明,MiLoRA始终优于具有可比可调参数预算的强大PEFT基线。此外,与之前基于LoRA的方法相比,MiLoRA在多租户环境中显著减少了延迟。

亮点直击

  • 提出了一种新颖的LoRA变体,MiLoRA,它以高效的方式将MOE机制与LoRA结合起来。
  • 在MiLoRA中,将每个LoRA模块视为一个专家。
  • 提出了一种基于提示的路由机制,以避免 token-wise 的计算。
  • 进行了广泛的实验和分析,结果表明MiLoRA框架在实际应用中优于基线模型,并在可比的参数预算下表现更佳;在大语言模型推理过程中高效。

总结速览

解决的问题

  1. 多租户环境中的延迟:在Transformer层中添加LoRA模块和MOE router导致显著的延迟,影响性能。
  2. 参数高效微调(PEFT)方法的局限性:现有的LoRA和MOE变体在多租户设置中效率不高。

提出的方案

  1. MiLoRA框架:一种新颖且高效的LoRA变体,将MOE机制与LoRA结合。
  2. 基于提示的router机制:在生成第一个新标记之前计算专家结果,避免逐个token的router计算。

应用的技术

  1. 低秩适应(LoRA):用于有效的参数微调。
  2. 专家混合(MOE):通过将每个LoRA模块视为一个专家,优化模型选择。
  3. 提示机制:用于高效计算和。

达到的效果

  1. 性能提升:在常识推理、数学推理任务和LLM评估基准上,MiLoRA优于强大的PEFT基线。
  2. 显著减少延迟:MiLoRA在多租户环境中表现出更高的效率,相较于传统LoRA方法降低了延迟。
  3. 可比的参数预算下的优越表现:在相同的参数预算下,MiLoRA框架在实际应用中表现更佳。

方法

本节首先介绍LoRA和MoE的基础概念,然后详细阐述MiLoRA的架构设计。

初步

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

动机

正如下表4所示,现有的MOE风格LoRA研究在推理过程中显著减慢了LLM骨干网络的速度,使每秒处理的tokens(tps)减少约20%。这些研究中,每个LoRA模块被分解为多个专家,并且需要调用一个routers来确定哪些专家被激活。在生成每个token时,每层的多个LoRA模块和多个 router的计算被执行,导致的延迟不可忽视。为了提高这种MOE LoRA方法的效率,需要研究以下研究问题:

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

RQ1. 能否将LoRA模块视为一个专家,使得每个Transformer层只有一个LoRA router,并且每层只激活一个这样的专家?


RQ2. LoRA router能否在输入提示时仅调用一次?

即时感知的 LoRA router

为了调查RQ1RQ2,现在尝试提出MiLoRA方法的细节。MiLoRA的核心是提示感知路由机制。在该机制下,LoRA router将输入提示的隐藏状态作为输入,并输出当前层的激活LoRA专家。与之前的工作不同,本文的工作:(a)仅在输入提示首次通过Transformer骨干网络并在生成第一个新标记之前计算LoRA router一次。 router的激活决策将在后续生成步骤中重复使用。(b)在Transformer的层级上确定激活的LoRA专家,选择哪个Transformer模块由其对应的LoRA模块进行修改。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

可学习激活函数

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

实验

数据集和评估指标

将本文的方法与基线进行比较,涉及一系列具有挑战性的任务:(a)五个基准常识问答任务,ARC-e 和 ARC-c,OBQA,PIQA,BoolQ。 (b)两个数学推理任务,AQuA和 GSM8k。利用 Hu et al.(2023)提供的链式思维(COT)推理来训练这些数学任务的样本。所有推理都是通过zero-shot CoT在 GPT-3.5 上生成的,但没有经过任何错误过滤。 (c)MT-Bench,MMLU,和 BBH。由于这些任务不提供训练数据,利用 Alpaca数据集进行指令调优。详细的统计数据和评估指标可以在附录 B 中找到。

基线

将 MiLoRA 框架与当前的 SOTA PEFT 基线方法进行比较。


LoRA 及其变体: 考虑以下 LoRA 变体作为基线:(a)原始 LoRA;(b)AdaLoRA,它在不同的 Transformer 模块之间自适应调整 LoRA 参数;(c)MOELoRA,它将每个 LoRA 模块视为单秩 LoRA 专家的混合;(d)DoRA,这是 LoRA 的最新变体之一,它将预训练权重分解为两个组件:幅度和方向,用于微调,特别采用 LoRA 进行方向更新。

其他 PEFT 方法: 我们还考虑了最新的 PEFT 方法:(a)He et al.(2021)提出的 Parallel-Adapter;(b)Learned-Adapter;(c)P-tuning v2;(d)IAPT;(e)BitFit;(f)(IA)3,它将可学习向量乘到 Transformer 层中不同模块的隐藏状态上。

(g) SSP,这是一个结合不同PEFT方法的代表性工作,包括LoRA和BitFit。基线使用他们的开源代码进行实现。我们仅调整与可调参数数量相关的超参数,以公平比较基线方法和我们的MiLoRA方法。

实验设置

计算基础设施 在NVIDIA A40(48GB)GPU上运行所有实验。

预训练骨干模型 主要实验使用最新开源的LLM,LlaMA-2 7B作为预训练骨干模型。在消融研究中,我们还将使用最近发布的LlaMA-2 13B和Gemma 2B。


预测头 在微调LlaMA-2 7B时,我们仅考虑监督微调(SFT)设置。在接收到提示或指令后,所有预测均使用语言建模头(LM head)生成。没有安装额外的预测头来进行分类或数值预测。在推理期间的解码中,我们使用束搜索,束大小为3。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

可重复性 在五个不同的随机种子下运行每个任务,并报告每个任务在测试集上的中位性能。

主要结果

单任务设置。在这个设置中,我们通过采用这些方法对单个任务进行微调,将MiLoRA与基线PEFT方法进行比较。五个常识推理任务和两个数学推理任务的实验结果见下表1。我们在第二列中展示了可调参数的数量,在第三列中展示了平均激活参数。表1显示,我们的MiLoRA方法在所有七个任务中均优于基线方法,具有可比的可调参数和更少的激活参数。特别是,MiLoRA在可比参数下超越了之前的SOTA LoRA风格基线,如AdaLoRA、DoRA和MOELoRA。这些结果表明,我们的方法在大语言模型的下游任务适应方面表现良好。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

多任务设置。下表2展示了在多任务学习中,使用LLaMA2-7B的LoRA、DoRA、MOELORA和MiLoRA的结果。与表1中的单任务设置相比,在多任务学习期间,我们混合了来自ARC、BoolQ、OBQA和PIQA的训练数据来训练模型,然后进行单独评估以调查每种方法的泛化能力。结果表明:(a) 与单任务学习相比,LoRA和DoRA在多任务学习中平均准确率有所下降(LoRA:-2.0%,DoRA:-2.25%)。与此同时,MOELORA和MiLoRA几乎保持相同的平均准确率。MiLoRA在平均得分方面几乎没有性能损失。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

通用指令调优的结果。在使用我们的MiLoRA方法或MOELoRA方法对LLaMA-2 7B模型进行在Alpaca 数据集上的微调后,我们利用了具有挑战性的基准测试,如MT-Bench、MMLU和BBH进行评估。我们报告了在MT-Bench上的平均GPT-4得分(gpt4-score)。下表3展示了结果。与之前的实验(表1和表2)一致,我们的MiLoRA方法在这三个基准测试中优于MOELoRA方法,证明了MiLoRA在提升大语言模型指令调优质量方面的优越性。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

消融研究与进一步分析

推理效率分析

为了展示MiLoRA方法的推理效率,现在比较MiLoRA、DoRA和MOELoRA在不同beam size下进行beam search时的GPU内存和解码速度。在这个实验中,LoRA参数没有合并到主干中,以模拟单一大语言模型的多租户设置。我们提供了两个用于衡量效率的指标:(a) 峰值内存成本(以MiB为单位)。(b) 每秒生成的tokens数量(tps)。结果如表4所示。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

从表4可以看出,在beam size为1和3的情况下,MiLoRA方法的内存成本与MOELoRA和DoRA相当。然而,其在tps方面的生成速度显著更高。对于beam size为1,MiLoRA比MOELoRA快21.7%,比DoRA快19.7%。


在beam size为3的情况下,MiLoRA比MOELoRA快17.9%,比DoRA快13.2%。MiLoRA的速度优势来自以下因素:(a) 我们的方法仅在输入提示首次经过大语言模型(LLM)并在生成第一个新token之前的每个Transformer层调用LoRA router。相比之下,MOELoRA和几乎所有现有的基于MOE的LoRA变体在生成每个新token时需要在每层调用多个 router。(b) 我们的方法显著减少了在每个解码步骤中激活的LoRA模块数量,使得生成新token更加高效。

激活的LoRA专家的分布

我们现在比较MT-Bench、BoolQ和PIQA任务中所有Transformer层上的LoRA专家分布,如图2所示。我们可以观察到:(a) 不同的Transformer层通过其对应的 router选择激活不同的LoRA专家,且单个LoRA专家的最大比例不到30%。结果是直观的,因为不同深度的Transformer层表示不同的知识,需要不同的LoRA专家来表达。(b) 不同任务上的LoRA分布是不同的。例如,在MT-Bench和BoolQ任务中,少数层激活LoRA Q或LoRA K,而在PIQA任务中,这两个LoRA专家被频繁选择。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

MiLoRA框架的消融研究

我们现在考虑以下MiLoRA的变体:(a) MiLoRA-1将自注意力池化替换为平均池化。(b) MiLoRA-2将自注意力池化替换为最后一个token池化。(c) MiLoRA-3为LoRA router使用GeLU激活函数。(d) MiLoRA-4在前16层的LoRA router中使用ReLU,在更深的16层中使用GeLU。(e) MiLoRA-5在前16层的LoRA router中使用GeLU,在更深的16层中使用ReLU。BoolQ、PIQA和MMLU任务的实验结果如表5所示。

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

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

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

你的LoRA需要更新了!科大讯飞等提出MiLoRA:新颖且高效的LoRA变体-AI.x社区

关于预训练骨干网络的消融实验

我们的主要实验是在LlaMA-2 7B模型上进行的。为了展示我们方法的广泛适用性,现在在LlaMA-2 13B和Gemma 2B上进行实验。结果在附录E的表7中报告可以看到,我们的MiLoRA方法在这两个骨干网络上也能优于基线方法。

结论

这项工作介绍了LoRA混合(MiLoRA)方法,一种用于大语言模型参数高效微调的新方法。与以前关于MOE风格LoRA方法的文献不同,MiLoRA:(a)在Transformer层级激活LoRA专家,决定激活哪个Transformer模块的LoRA。(b)激活哪个LoRA专家的决策依赖于输入提示。(c)对于给定的提示,LoRA router只调用一次。后续的tokens生成步骤重用 router的决策。为了提高我们框架的下游性能,建议在微调期间为不同深度的LoRA router学习不同的激活函数。我们的方法易于实现且现成可用。在各种任务上的实验表明,MiLoRA方法在推理效率的同时优于基线方法。


限制本文证明了提出的方法可以提高参数高效微调在多种任务和不同预训练模型(如LlaMA-2 7B、LlaMA-2 13B、Gemma 2B)上的性能。然而,我们也承认以下局限性:(a)由于计算资源有限,我们没有对更大规模的开源大语言模型(如LlaMA-2 70B)进行实验。(b)自然语言处理中的其他任务,如信息抽取,也未被考虑。不过,我们的框架可以轻松转移到其他主干架构和不同类型的任务上。研究我们的方法是否在其他大规模主干模型和其他类型的任务上仍然具有优越性将会很有趣。将在未来的工作中探索这一点。


本文转自AI生成未来 ,作者:AI生成未来


原文链接:​​https://mp.weixin.qq.com/s/-10BeAOFUzsN9JkXfmQegQ​

收藏
回复
举报
回复
相关推荐