能像乐高一样组合,LoraHub挖掘LoRA 模块化特性

简介: 能像乐高一样组合,LoraHub挖掘LoRA 模块化特性


编辑:Panda

低秩自适应(Low-Rank Adaptation, LoRA)是一种常用的微调技术,让基础 LLM 可以高效地适应具体任务。近日,来自新加坡 Sea AI Lab、圣路易斯华盛顿大学和艾伦人工智能研究所的研究者提出了一种新的 LoraHub 学习方法,可让 LLM 通过少量样本就能适应多种前所未见的新任务。研究者发布了 LoraHub 的代码以促进相关研究。

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)在不同数量的任务示例下的表现对比。

相关文章
|
前端开发 JavaScript 数据可视化
推荐! 使用react-cropper-pro实现图片裁切压缩上传
推荐! 使用react-cropper-pro实现图片裁切压缩上传
757 0
|
9月前
|
消息中间件 存储 关系型数据库
消息队列四大核心消息类型深度解析:普通、顺序、事务、定时消息原理与实战
本文深入剖析了分布式系统中消息队列的四大核心消息类型。普通消息作为基础模型实现异步通信;顺序消息通过分区有序机制保证关键业务流程的顺序性;事务消息基于两阶段提交解决分布式事务问题;定时消息则支持延迟任务执行。文章从原理、实现到应用场景,结合RocketMQ实例代码(包括事务消息与MySQL的整合)进行了全面讲解,并提供了选型对比建议。这四种消息类型各具特点,开发者应根据业务需求在解耦、顺序保证、事务一致性和延迟执行等维度进行合理选择,以构建高性能、高可用的分布式系统。
793 1
|
12月前
|
API C++ Windows
DirectX修复工具增强版,DirectXRepair最新修复工具增强版下载
DirectX修复工具免费版是一款专为解决Windows系统DirectX问题而设计的实用工具,支持智能检测、一键修复缺失或损坏的DLL文件,配备齐全的DLL库,兼容多种系统与游戏环境,操作简单,完全免费。
945 0
【Python 基础】如何将一个字符串转化为全大写和全小写?
【5月更文挑战第8天】【Python 基础】如何将一个字符串转化为全大写和全小写?
layui表单select框同时支持下拉和输入的解决方案
layui表单select框同时支持下拉和输入的解决方案
1294 0
|
人工智能 自然语言处理 前端开发
OpenAI 12天发布会全解析 | AI大咖说
OpenAI近日宣布将在12个工作日内每天进行一场直播,展示一系列新产品和样品。首日推出GPT-o1正式版,性能大幅提升;次日展示Reinforcement Fine-Tuning技术,提高模型决策质量;第三天推出Sora,实现高质量视频生成;第四天加强Canvas,提升多模态创作效率;第五天发布ChatGPT扩展功能,增强灵活性;第六天推出ChatGPT Vision,实现多模态互动;第七天推出ChatGPT Projects,优化项目管理。这些新技术正改变我们的生活和工作方式。
2227 9
|
数据采集 Web App开发 存储
基于Python的51job(前程无忧)招聘网站数据采集,通过selenium绕过网站反爬,可以采集全国各地数十万条招聘信息
本文介绍了一个使用Python和Selenium库实现的51job(前程无忧)招聘网站数据采集工具,该工具能够绕过网站的反爬机制,自动化登录、搜索并采集全国各地的招聘信息,将数据保存至CSV文件中。
1362 1
|
存储 网络协议 Linux
三次握手时,客户端发送的 SYN 报文为什么会被丢弃?
三次握手时,客户端发送的 SYN 报文为什么会被丢弃?
725 12
|
并行计算 TensorFlow 算法框架/工具
tensorflow安装
tensorflow安装——GPU版
566 2
|
Java 关系型数据库 DataX
DATAX数据同步
DATAX数据同步
3945 0