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

news2024/9/20 14:38:10

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

在医疗场景中,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来完成指定的任务。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
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.coloradmin.cn/o/2095619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx 维护与应用:最佳实践

文章目录 引言安装与基础维护macOS 上安装 NginxUbuntu 上安装 NginxCentOS 上安装 NginxWindows 上安装 Nginx查看 Nginx 运行状态与日志信息(Linux)版本升级与配置备份(Linux) Nginx 应用场景Web 服务器反向代理动静分离负载均衡…

“线程池中线程异常后:销毁还是复用?”

目录 一、验证execute提交线程池中 测试 结论 二、验证submit提交线程池中 测试 结论 三、源码解析 查看submit方法的执行逻辑 查看execute方法的执行逻辑 为什么submit方法,没有创建新的线程,而是继续复用原线程? 四、总结 需要说…

Android AOSP定制默认输入法为讯飞输入法

Android AOSP定制默认输入法为讯飞输入法 前言: ​ 最近在公司的项目中发现默认的输入法非常不好用,而且默认输入法中英文切换非常麻烦,被用户吐槽定制的AOSP镜像体验不好,于是查找资料,研究了一番,尝试了…

【C++】日期类函数(时间计数器)从无到有实现

欢迎来到HarperLee的学习笔记&#xff01; 博主主页传送门&#xff1a;HarperLee的博客主页 个人语录&#xff1a;他强任他强&#xff0c;清风拂山岗&#xff01; 一、前期准备 1.1 检查构造的日期是否合法 bool Date::CheckDate() {if (_month < 1 || _month > 12|| _d…

vercel免费在线部署TodoList网页应用

参考&#xff1a; TodoList网页应用&#xff1a;https://blog.csdn.net/weixin_42357472/article/details/140909096 1、项目首先上传github 直接vscode自带的上传项目&#xff0c;commit后在创建项目上传即可 2、vercel部署项目 1&#xff09;先注册 2&#xff09;impor…

基于PHP评论区的存储型XSS漏洞

评论区的XSS漏洞是指攻击者在评论区输入恶意脚本&#xff0c;当其他用户浏览该页面时&#xff0c;这些恶意脚本会被执行&#xff0c;从而造成安全威胁。这种漏洞通常出现在网站没有对用户输入进行充分过滤和转义的情况下&#xff0c;为存储型XSS。存储型XSS攻击是指攻击者在目标…

【MCAL】TC397+EB-tresos之SPI配置实战 - (同步/异步)

本篇文章首先从理论讲起&#xff0c;从AUTOSAR规范以及MCAL手册两个不同角度&#xff08;前者偏理论&#xff0c;后者偏实践&#xff09;介绍了SPI模块的背景概念与理论&#xff0c;帮助读者在实际配置之前能有个理论的框架。然后详细的介绍了在TC397平台使用EB tresos对SPI驱动…

数智化粮仓综合监控管理系统设计方案WORD-2023

关注智慧方案文库&#xff0c;学习9000多份智慧城市智慧医院&#xff0c;智慧水利&#xff0c;智能制造&#xff0c;数字化转型&#xff0c;智慧工厂&#xff0c;智慧矿山&#xff0c;智慧交通&#xff0c;智慧粮仓&#xff0c;工业互联网&#xff0c;数字孪生......持续更新热…

SpringCloud Alibaba】(十三)学习 RocketMQ 消息队列

目录 1、MQ 使用场景与选型对比1.1、MQ 的使用场景1.2、引入 MQ 后的注意事项1.3、MQ 选型对比 2、下载、安装 RocketMQ 及 RocketMQ 控制台2.1、下载安装 RocketMQ2.2、测试 RocketMQ 环境2.3、RocketMQ 控制台【图形化管理控制台】2.3.1、下载、安装2.3.2、验证 RocketMQ 控制…

【困难】 猿人学web第一届 第14题 备而后动-勿使有变

调试干扰 进入题目 打开开发者工具会进入一个无限 debugger; 向上查看堆栈&#xff0c;可以找到生成 debugger 的代码段 手动解混淆后可以知道 debugger 生成的方式 (function () {// 函数内的代码是不需要的&#xff0c;因为里面的代码不会执行 }[constructor](debugger)[call…

Java并发编程面试必备:如何创建线程池、线程池拒绝策略

一、线程池 1. 线程池使用 1.1 如何配置线程池大小 如何配置线程池大小要看业务系统执行的任务更多的是计算密集型任务&#xff0c;还是I/O密集型任务。大家可以从这两个方面来回答面试官。 &#xff08;1&#xff09;如果是计算密集型任务&#xff0c;通常情况下&#xff…

模型 ACT心理灵活六边形

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。接纳现实&#xff0c;灵活行动&#xff0c;追求价值。 1 ACT心理灵活六边形的应用 1.1 应对工作压力 背景&#xff1a; 在高压的工作环境中&#xff0c;员工经常面临巨大的工作压力&#xff0c;这可…

在VScode中使用Git将本地已有文件夹提交到Github仓库以便于使用版本控制进行项目开发

前置软件 VScode、Git。 Linux系统中安装Git工具请自行百度。可以通过git --version查看对应Git版本号。 Github创建空白仓库 一定要注意创建空白仓库&#xff0c;不要包含任何文件&#xff0c;包括Readme.md文件也不能有。 上面的仓库名&#xff08;Repository name&#xff…

Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例

文章目录 前言一、Kaggle克隆仓库1、克隆项目2、查看目录 二、安装依赖三、文件的上传、复制、转移操作1.上传.pth文件到input目录2、将权重文件从input目录转移到工作目录 三、修改工作目录里的文件内容1、修改demo_camera.py内容 四、运行&#xff01; 前言 想跑一些深度学习…

【网络安全】条件竞争绕过电子邮件验证

未经许可,不得转载。 文章目录 正文正文 目标:xxx.com 使用电子邮件注册该网站并登录。接着,进入帐户设置,进入更改电子邮件功能: 请求包如下: 接着,发送两个相同的请求包到repeater,第一个中添加攻击者邮件: 第二个中添加正常的邮件: 创建组,以便能够同时发送两个…

手把手教你如果安装激活CleanMyMac X 4.15.6中文破解版

CleanMyMac X 4.15.6中文破解版可以为Mac腾出空间&#xff0c;软件已经更新到CleanMyMac X 4.15.6中文版支持最新版Macos 10.14系统。CleanMyMac X 4.15.6中文破解版具有一系列巧妙的新功能&#xff0c;可让您安全&#xff0c;智能地扫描和清理整个系统&#xff0c;删除大量未使…

NeRF: Representing Scenes asNeural Radiance Fields for View Synthesis 论文解读

目录 一、导言 二、NeRF 1、渲染和反渲染 2、NeRF的基本原理 3、采样点 4、位置编码 5、NeRF网络结构 6、体渲染 三、分层采样 1、均匀采样 2、基于σ的采样 四、损失函数 一、导言 该论文来自于ECCV2020&#xff0c;主要提到一种NeRF的方法来合成复杂场景下的新视…

创建 AD9361 的 vivado 工程,纯FPGA配置,不使用ARM程序

前言 AD9361 的配置程序&#xff0c;如果使用官方的&#xff0c;就必须用ps进行配置&#xff0c;复杂不好使&#xff0c;如果直接使用FPGA配置&#xff0c;将会特别的简单。 配置软件 创建一份完整的寄存器配置表 //*******************************************************…

续:docker 仓库数据传输加密

上一个实验&#xff1a;非加密的形式在企业中是不被允许的。 示例&#xff1a;【为Registry 提供加密传输】 因为传输也是https&#xff0c;所以与ssh一样的加密。 ## 这种方式就不用写这个了。 [rootdocker ~]# cat /etc/docker/daemon.json #{ # "insecure-registrie…

GoodSync Business - 企业级服务器同步与备份工具

现在越来越多公司会搭建服务器&#xff0c;或自建文件共享中心。那么如何才能实现对这些终端的高效管理、安全备份&#xff0c;以保障企业数据的安全呢&#xff1f; GoodSync Business 就是一款企业服务器同步与备份工具&#xff0c;适用于 Win / Mac 工作站&#xff0c;以及 …