低秩自适应(Low-Rank Adaptation, LoRA)是一种常用的微调技术,让基础 LLM 可以高效地适应具体任务。
OpenAI GPT、Flan-T5 和 LLaMA 等大型预训练语言模型(LLM)极大的推动了自然语言处理(NLP)领域的发展。这些模型在许多 NLP 任务上都有绝佳表现。但是,由于这些模型都有大量参数,因此在微调时会涉及计算效率和内存使用量等问题。
低秩自适应(LoRA)就是一种可以缓解这些问题的高效微调技术。它能降低内存需求和计算成本,从而提升 LLM 训练速度。
LoRA 的做法是冻结基础模型(即 LLM)的参数,然后训练一个轻量级的辅助模块,并且这个模块通常在目标任务上能取得优良表现。
尽管之前已有研究探索过使用 LoRA 来提升效率,但少有人探究 LoRA 模块固有的模块化特性和可组合性。大体而言,之前的方法训练的 LoRA 模块都是专精于各个任务和领域。然而,LoRA 模块固有的模块化特性本身就具备一个有趣的研究问题:能否将 LoRA 模块用于将 LLM 高效地泛化用于未曾见过的任务?
这篇论文挖掘了 LoRA 的模块化特性在广泛围任务泛化方面的潜力,使之不再局限于单任务训练,通过精心构建 LoRA 模块使之在未知任务上也能取得一定性能。最重要的是,这种方法据称能实现 LoRA 模块的自动组合,从而无需再依赖人工设计或人类专家。只需从未曾见过的任务取少量示例,这种新方法就能自动编排兼容的 LoRA 模块,而无需人类干预。研究者并没有预设在具体任务上训练的哪些 LoRA 模块可以组合,而是符合规范(例如使用相同的 LLM)的模块都可以灵活地合并进来。由于该方法使用了多种可用的 LoRA 模块,因此研究者将其命名为 LoraHub,将新的学习方法称为 LoraHub 学习。
论文地址:https://arxiv.org/abs/2307.13269
代码地址:https://github.com/sail-sg/lorahub
他们也通过实验验证了新方法的效率,其中使用的基础 LLM 是 Flan-T5,评估基准是被广为认可的 BBH 基准。结果表明,通过一些少样本 LoraHub 学习过程,LoRA 模块组合就能高效地用于未曾见过的任务。值得注意的是,新方法获得的分数非常接近于少样本上下文学习的表现。
此外,相比于上下文学习,新方法还能显著降低推理成本,消除了 LLM 对示例输入的需求。这个学习过程还体现出了另一个重要优势,即计算效率;其使用了一种无梯度方法来获取 LoRA 模块的系数,并且对于未见过的任务只需少量推理步骤。举个例子,当在 BBH 基准上评估时,新方法使用单块 A100 在一分钟内就能取得更优的表现。
图 1:零样本学习、少样本上下文学习和新提出的少样本 LoraHub 学习。注意组合过程是基于每个任务执行的,而不是基于每个示例。新方法的推理吞吐量与零样本学习相近,而在 BIG-Bench Hard(BBH)基准上的性能表现接近上下文学习。
需要重点指出的是,LoraHub 学习在只有 CPU 的计算机上也能完成,毕竟它只需要熟练处理 LLM 推理。这种方法凭借其多功能性和稳健的性能表现,有望催生出一个平台,让用户可以毫不费力地共享和获取训练好的 LoRA 模块并将其用于新任务。研究者设想,通过这样一个平台,可培育一个包含无数功能的可复用 LoRA 模块库。这也能为协作式 AI 开发提供舞台,让社区能够通过动态 LoRA 组合来共同丰富 LLM 的能力。这种共享和复用模块的潜力可望实现在不同任务上的资源最优利用。
方法
如图 2 所示,研究者首先在多种上游任务上训练 LoRA 模块。具体来说,对于 N 个不同的上游任务,首先分别训练 N 个 LoRA 模块。然后,对于新任务(如图 2 中的布尔表达式),就使用该任务的示例来引导 LoraHub 学习过程。
图 2:新方法包含两个阶段:组合阶段(COMPOSE)和适应阶段(ADAPT)
组合阶段是通过一组权重系数将已有的 LoRA 模块整合成一个统一模块。适应阶段是使用未曾见过的任务的少量示例对合并得到的 LoRA 模块进行评估。然后,使用一个无梯度算法来优化上述权重。执行过几轮迭代后,会产生一个经过高度适应的 LoRA 模块,其可被集成到 LLM 中,用以执行目标任务。对该方法的详细数学描述请参阅原论文。
评估
研究者对新提出的方法进行了评估,其使用的 LLM 是 Flan-T5。
表 1 给出了实验数据,可以看到,新方法的功效接近零样本学习,同时在少样本场景中的性能表现又接近上下文学习。这一观察结论基于五次不同实验的平均结果。
表 1:零样本学习(Zero)、少样本上下文学习(ICL)和新提出的少样本 LoraHub 学习的性能表现对比。
需要重点指出,实验中,使用新方法的模型使用的 token 数量与零样本方法一样,明显少于上下文学习所用的 token 数。尽管性能表现偶尔会有波动变化,但新方法的表现在大多数实例中都优于零样本学习。新方法真正出彩的地方是其最优表现超越了上下文学习,但使用的 token 却更少。在 LLM 时代,推理成本与输入长度成正比,因此 LoraHub 能经济地利用输入 token 达到接近最佳性能的能力会越来越重要。
如图 3 所示,当未曾见过的任务的示例数量低于 20 时,新方法的表现大体上都优于 LoRA 微调。
图 3:传统微调(FFT)、LoRA 微调(LoRA)和新提出的 LoraHub 学习(Ours)在不同数量的任务示例下的表现对比。