MOELoRA —— 多任务医学应用中的参数高效微调方法

人工智能咨询培训老师叶梓 转载标明出处

在医疗场景中,LLMs可以应用于多种不同的任务,如医生推荐、诊断预测、药物推荐、医学实体识别、临床报告生成等。这些任务的输入和输出差异很大,给统一模型的微调带来了挑战。而且LLMs的参数众多,导致微调过程中时间和计算资源的消耗巨大。针对这些问题,来自西安交通大学、香港城市大学、腾讯YouTu Lab等机构的研究者们提出了一种新颖的参数高效微调框架——MOELoRA。它结合了多任务学习和参数高效微调的优点,通过设计多个专家(Experts)作为可训练参数,每个专家由一对低秩矩阵组成,以保持可训练参数的数量较小。研究者还提出了一种任务驱动的门控函数,用于调节每个专家的贡献,并为不同任务生成不同的参数。

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

项目链接: https://github.com/liuqidong07/MOELoRA-peft

方法

图3 为使用MOELoRA进行LLMs参数高效微调和推理过程。在参数高效微调领域,LoRA方法引入了仅训练两个低秩矩阵来替代密集层更新的概念。基于此本方法将MOELoRA层集成到每个密集层中,使它们能够获取键、查询和值,同时促进前馈网络(FNN)的运作。图3中以FNN为例进行说明。该方法的一个显著优势是,研究者只为不同任务微调MOELoRA层的参数,而保持原始LLMs的其他参数不变。另外每个MOELoRA层包含多个专家,这些专家旨在捕获不同医学任务的多样化知识。研究者引入了一个任务驱动的门控函数,以确保为每个任务学习到独特的参数集。这个函数决定了所有MOELoRA层中专家的贡献权重,从而生成针对不同任务量身定制的独特更新参数。研究者为所有MOELoRA层使用单个门控函数,而不是让门控函数与MOELoRA层一一对应。在微调过程中,研究者更新来自所有任务混合数据的MOELoRA层。然后,在推理过程中,MOELoRA可以为每个任务派生出不同的微调权重。

LoRA方法在LLMs的微调中展示了其有效性和效率。它受到低内在维度特性的启发,将LLMs中的参数微调过程重新定义为低秩分解。具体而言方程式W_0​+ΔW=W+BA捕捉了这种分解。这里,​代表预训练LLMs的参数矩阵,而​表示在微调过程中更新的矩阵。矩阵B∈是低秩且可训练的。给定这样的设置,与LoRA层配对的线性层的前向过程可以表示为:

其中,x代表维度为d_in​的输入向量,ℎ是维度为d_out​的输出向量。可训练低秩矩阵的秩由r表示,它决定了可训练参数的数量。常数超参数α促进了秩r的调整。在LoRA微调过程中,LLMs中的所有参数保持不变。只有低秩矩阵A和B会进行微调。鉴于r≪d_in​且r≪d_out​,A和B中的参数总数比W_0​中的要少得多。这样的特性使得微调过程实现了参数效率。然而,原始LoRA中所有任务的集成参数微调会导致学习医学知识各个方面的困难。一个潜在的解决方案是将整个参数集分割成几个部分,并为各种任务得出不同的组合。专家混合模型(MOE)建议使用多个专家网络来捕获多任务信息的不同方面,这与组合概念相符。这一洞见引导研究者设计了MOELoRA,它无缝集成了LoRA和MOE的优势。为了协调LoRA和MOE的不同前向过程,研究者引入了一组专家来学习更新矩阵ΔW。由于MOELoRA使用来自所有任务的数据对专家进行微调,它内在地捕获了共享任务知识。为了保持紧凑的参数大小,MOELoRA层中的每个专家都构建为两个分解的低秩矩阵。基于这种结构,对于来自任务T_j​的样本,与MOELoRA层配对的线性层的前向过程表示为:

其中,h_j​和x_j​代表来自T_j​的中间LLM层的输入和输出。矩阵形成专家E_i​。超参数N表示MOELoRA中的专家数量,对于每个专家,矩阵A和B的秩是r/N​。在方程(4)中,术语调节这些贡献权重,用于任务T_j​。这个权重由研究者提出的门控函数确定。这里,研究者将讨论LoRA和MOELoRA的可训练参数数量。就LoRA而言,两个低秩矩阵​包含所有可训练参数。因此,LoRA的可训练参数数量是​=。至于MOELoRA,有N个可训练专家,每个专家拥有,所以总数计算为。总之,MOELoRA具有与LoRA相同数量的可训练参数,这表明了高效率。

如前所述,每个专家的贡献应该针对特定任务进行定制。为了调节这些贡献,研究者引入了一个门控函数。由于这些权重本质上是任务特定的,研究者的门控函数被设计为将任务身份作为输入。研究者采用了一个任务嵌入矩阵,记为​,其中d_T​代表任务嵌入的维度。确定任务T_j​后,研究者提取E的第j列,作为该任务的表示向量,记为​。为了确定任务T_j​的贡献权重,研究者应用线性变换。这一计算被以下方程捕获:

这里,代表为任务T_j​量身定制的贡献权重向量。变换矩阵记为。为了防止权重过大,研究者采用softmax操作来归一化贡献权重。图3中提到的门控自然是一个密集设计,以结合所有专家。研究者还设计了一个稀疏版本的任务驱动门控,以探索哪种设计更有效。设计的稀疏门控如下公式:

与传统的MOE设计直接将输入向量x输入门控函数不同,研究者的方法不同。研究者仅将任务身份输入门控函数,如图3所示,旨在为每个任务产生一组独特的模型参数。例如,如果某人希望恢复任务T_j​的微调参数,则该过程可以表述为:

如果门控函数由输入向量x驱动,权重向量将因样本而异。这意味着每个样本将拥有其独特的ω_j​,导致特定于样本的微调参数矩阵。这种设计将使参数无法按任务恢复。能够为每个任务恢复参数提供了两个主要优势:

1) 任务定制:每个任务都使用一组参数进行微调,这有助于学习更多任务特定的信息并缓解数据不平衡问题。

2) 推理效率:恢复的微调LLMs表现出降低的推理延迟。这归因于消除了与MOELoRA层相关的额外前向计算的需要。

研究者也在算法1中总结了整个过程:

微调:研究者首先根据LLMs中指定的层和几个超参数配置MOELoRA(第1-3行)。然后,对于参数高效微调,所有预训练的LLMs中的参数(第4行)都被冻结。在微调过程中,研究者迭代地从所有任务中随机抽取一批数据,而不是像一些多任务研究那样将来自同一任务的样本分到一个批次中。研究者通过实验中的性能比较选择了随机抽样批次。使用这批数据,研究者可以进行前向过程并计算微调的损失(第6-7行)。对于参数更新,研究者只微调MOELoRA和任务驱动门控函数的参数,即

推理:MOELoRA可以通过方程(8)为每个任务恢复微调的参数矩阵。对于推理,首先恢复每个任务的微调参数(第10-13行),这表明每个任务都有自己的LLMs参数。可以应用相应的LLMs来完成指定的任务。

想要掌握如何将大模型的力量发挥到极致吗?2024年10月26日叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。

留言“参加”即可来叶老师的直播间互动,1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

实验

研究者在PromptCBLUE数据集上进行实验,这是一个多任务中文医疗数据集,在天池竞赛平台上提供。该数据集包含16个不同的医疗任务,每个任务都使用特定的提示转换为纯文本格式,确保与LLMs兼容。由于计算限制,研究者随机选择了8个任务进行实验。在预处理中,他们从原始数据集中删除了重复样本。由于竞赛中使用的测试集尚未发布,研究者选择使用开发集作为测试集。然后,实验的验证集从竞赛的训练集中得出,其大小与测试集匹配。数据集的统计信息在表1中总结。

研究者将MOELoRA与四组不同的基线进行比较:

  • 未微调的LLMs:使用In-Context Learning来指导LLMs完成任务。
  • 微调的LLMs:包括P-Tuning、LoRA (Full)、LoRA (Single)和LoRA (Full+TP)等策略。
  • 模型编辑:Task-Arithmetic方法。
  • 跨任务泛化:评估LoRAHub和MoLoRA方法。

实验使用PyTorch 1.12.0和Python 3.9.5进行模拟,代码在Tesla V100 32G GPU上运行以加速。ChatGLM-6B作为微调的基础模型。对于所有LoRA微调基线和提出的MOELoRA,指定了可训练层。输入和输出长度分别配置为1,024和196。批量大小设置为64,最多8,000个训练步骤。LoRA的秩𝑟固定为16,LoRA dropout 𝛼 = 0.1。对于MOELoRA,专家数量设置为8。

研究者采用多种指标来评估每个任务的性质。例如,CMeIE任务使用Micro-F1,而CHIP-CTC和KUAKE-QIC任务使用Macro-F1。对于文本生成任务,如IMCS-V2-MRG和MedDG,应用Rouge-L。所有任务的平均分数用于评估整体性能。

表2展示了MOELoRA与竞争基线的整体实验结果。MOELoRA(D)和MOELoRA(S)分别代表MOELoRA的密集和稀疏门控设计。分析所有任务的平均分数,MOELoRA(D)在所有方法中表现最佳:

  • 未微调的LLMs:明显落后于其他组,突出了微调LLMs以融入特定任务医学知识的重要性。
  • 参数高效微调策略:LoRA基础方法明显优于P-Tuning。LoRA (Full)和LoRA (Full+TP)都利用所有任务的数据,但LoRA (Full+TP)略逊一筹,可能归因于任务提示的添加,导致输入文本的扩展,可能由于输入长度限制而截断信息词。
  • 模型编辑:Task-Arithmetic明显落后于所有微调竞争对手。
  • 跨任务泛化:尽管在跨任务泛化设置中表现令人印象深刻,但它们需要大量任务数据,这与多任务设置相冲突。

表3中展示了消融研究的结果。没有MOE架构的变体(即LoRA(Full))表现较差,强调了MOE架构的重要性。同样,没有门控功能的变体也落后于MOELoRA,突出了门控功能的有效性。多个门控功能的变体由于过度参数化而表现稍差。

为了回答RQ3,研究者探讨了超参数对MOELoRA(D)性能的影响。特别是,专家数量𝑁和LoRA秩𝑟的变化如何影响结果。发现随着𝑁从0增加到8,性能得到改善,但当𝑁增加到16时,性能略有下降。同时,增加𝑟可以提高性能,但也会导致可训练参数数量的增加。

为了评估训练和推理效率,研究者在图5中比较了可调参数的比例和推理延迟。MOELoRA在训练和推理效率方面与LoRA (Full)相当,通过训练不超过LLMs的0.48%参数来节省资源。MoLoRA和MOELoRA(M)需要更多的可训练参数,因为它们为每个可训练的低秩层设置了额外的门控。在推理方面,所有模型都需要相同的推理延迟,除了MoLoRA,因为它无法像方程(8)那样恢复微调参数,所以需要在推理时伴随MoLoRA层,导致额外的前向计算引起的更多推理延迟。

为了回答RQ5,图6中展示了四个任务的专家权重。每个任务中不同颜色的条形长度代表相应专家的权重。这表明不同专家在不同医疗任务中专门捕获特定方面的知识,强调了MOELoRA在利用共享知识以惠及相关任务方面的熟练程度。

实验结果表明,MOELoRA在性能上超越了现有的参数高效微调方法。这一研究成果不仅为医疗领域的LLMs应用提供了新的思路,也为其他领域的多任务学习提供了参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887422.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS3渐变

一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法: linear-gradient(direction,color1,color2, . . ) direction:渐变方向,默认从上到下,可选值: 简单选取: ① to right&…

SpringBoot框架下的教育系统开发全解析

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理微服务在线教育系统的相关信息成为必然。开…

文章资讯职场话题网站源码整站资源自带2000+数据

介绍: 数据有点多,数据资源包比较大,压缩后还有250m左右。值钱的是数据,网站上传后直接可用,爽飞了 环境:NGINX1.18 mysql5.6 php7.2 代码下载

Jetson 开发系列:如何用GPU跑本地大模型?

最近刚入手一台 Jetson Ori Nano 开发板,前两篇把开发前的准备工作做了: 搭建本地环境:Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式&物联网开发板管理音频设备:Jetson 开发系列:Linu…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比,Buildpacks为构建应用程序提供了更高层次的抽象。具体来说,Buildpacks: * 提供一个平衡的控制,…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,嵌入式硬…

【AIGC半月报】AIGC大模型启元:2024.10(上)

【AIGC半月报】AIGC大模型启元:2024.10(上) (1) YOLO11(Ultralytics新作) (1) YOLO11(Ultralytics新作) 2024.10.01 Ultralytics在 YOLO Vision 2024 活动上宣布发布其新的计算机视觉模型 YOLO…

无人机电力巡检:点亮电力巡检新视野!

一、无人机电力巡查的优势 提高巡检效率:无人机可以搭载高清摄像头、红外热像仪等先进设备,实时拍摄和传输图像,帮助巡检人员快速发现潜在问题,如电线破损、绝缘子污损、设备过热等,从而大大缩短了巡检周期。 降低人…

Vue+NestJS项目实操(图书管理后台)

一、项目搭建 前端基于vben进行二次开发 在Github下载vben框架,搜索vben即可 下载地址:https://github.com/vbenjs/vue-vben-admin 下载完成后,进行安装依赖,使用命令: // 下载依赖 pnpm install// 运行项目 pnpm …

开源的云平台有哪些?

开源云平台为用户提供了构建、管理和运行云基础设施及应用的能力,同时允许社区参与开发和改进。以下是一些知名的开源云平台: 1. OpenStack 简介:OpenStack:一个广泛使用的开源云平台,它由多个组件组成,提…

HTML+CSS - 表单交互(一)

1. 前言 ​​​​​​​ Web 表单是用于和用户交互的强大工具——其常用于收集用户数据和控制用户界面。 web 表单是用户和 web 站点或应用程序之间交互的主要内容之一。它们允许用户输入数据,大多数情况下会将数据发送到 web 服务器进行处理和存储 2. form标签 …

Redis篇(Redis原理 - RESP协议)

目录 一、简介 二、Redis通信协议 基于Socket自定义Redis的客户端 三、Redis内存回收 1. 过期key处理 1.1. 惰性删除 1.2. 周期删除 1.3. 知识小结 2. 内存淘汰策略 一、简介 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub&a…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么,视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式,主要用于流媒体播放。 一、文件格式特点 1. 文本文件:M3U8是一个采用 UTF-8 编码的文本文件,这意味着它可…

【STM32开发之寄存器版】(三)-详解NVIC中断

一、前言 STM32F103ZET6具备强大的中断控制能力,其嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断。NVIC主要具备以下特性: 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线)&#xf…

经典文献阅读之--WiROS(用于机器人的WiFi感知工具箱)

0. 简介 近期的许多研究探索了使用基于WiFi的感知技术来改善SLAM(同时定位与地图构建)、机器人操控或探索。此外,WiFi的广泛可用性使其成为最具优势的射频信号。但WiFi传感器缺乏一个准确、易处理、多功能的工具箱,这限制了它们与…

VUE2常见问题以及解决方案汇总(不断更新中)

解决vue项目中 el-table 的 row-click 事件与行内点击事件冲突,点击事件不生效(表格行点击事件和行内元素点击事件冲突)需要阻止事件冒泡 问题描述 1.点击列的编辑按钮,会触发按钮本身事件,同时会触发行点击事件 2.点…

SaaS 应用如何助长网络犯罪

过去十年,软件即服务 (SaaS)的采用呈爆炸式增长,彻底改变了我们的工作方式。 从电子邮件平台到通信和协作应用程序,再到文件存储和共享服务,这些工具有望为我们的日常工作生活带来更大的灵活性和效率,尤其是在当今的远…

Linux环境基础开发工具使用(2)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Linux环境基础开发工具使用(2) 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. Li…

VS开发 - 静态编译和动态编译的基础实践与混用

目录 1. 基础概念 2. 直观感受一下静态编译和动态编译的体积与依赖项目 3. VS运行时库包含哪些主要文件(从VS2015起) 4. 动态库和静态库混用的情况 5. 感谢清单 1. 基础概念 所谓的运行时库(Runtime Library)就是WINDOWS系统…