今天跟大家分享一篇来自西安交通大学、香港城市大学、腾讯优图实验室天衍研究中心、南方科技大学和中国科学技术大学的论文,该论文已被SIGIR2024接收。这篇文章提出了一种新颖的结合MOE和LoRA的参数高效微调框架,用于多任务医疗应用,名为MOELoRA。
论文地址:https://arxiv.org/abs/2310.18339
代码链接:https://github.com/Applied-Machine-Learning-Lab/MOELoRA-peft
1. 简介
在医疗领域,LLMs的应用对患者和医生都有巨大的好处。对于患者,LLMs驱动的在线问诊系统可以为其提供获取医疗知识的方便途径。对于医生,LLMs驱动的CDSS系统可以缓解工作负担。已有的一些方法利用in-context learning的方法使得ChatGPT这一类通用的大语言模型可以完成医疗任务,但是其缺乏相应的专业医疗知识。另一些专门为医疗领域训练的超大规模LLMs虽然可以很好地完成医疗任务,但是其是闭源的,并且微调和推理成本对于一般的医疗机构来说是难以接受的。因此,为医疗任务微调一个开源的大语言模型是必要的。
然而,为医疗任务微调大模型存在两个挑战:(1)任务多样性挑战:在真实世界的临床环境中,LLMs 需要应对各种任务,如诊断预测、药物推荐、临床报告生成等。由于这些任务具有不同的特性,为所有任务微调一个统一的模型具有难度。(2)高微调成本挑战:由于LLMs的参数规模极其庞大,这使得对其进行微调非常具有挑战性。LLMs中大量的参数会导致实际中微调的时间和计算开销都非常高。因此,迫切需要参数高效的微调方法。综上所述,一个多任务的高效参数微调方法对于将LLMs用于医疗领域具有重要的意义。
2. 问题定义
通常情况下,需要修改LLM的输入和输出格式。以医学命名实体识别为例。传统模型直接从医学文本中输出实体。相反,LLMs需要一个指令模板进行指导。并且我们需要从LLMs输出的文本答案中提取实体。因此,LLMs是通过提示文本和文本答案的配对进行微调,而不是直接通过医学文本和实体。
3. 方法
3.1 框架
本文所设计的框架分为三方面:(1)参数高效微调:我们所设计的高效微调layer在微调时分别与LLMs的dense,keys,queries和values层结合。(2)MOELoRA层:结合多个共享的专家网络来学习不同医学任务的公有和特有的知识。(3)任务驱动的门控函数:用于决定每个专家的贡献权重。
3.2 MOELoRA层
MOELoRA由多个专家网络构成。每个专家网络又由一组低秩参数矩阵组成。由此,其前向传播公式如下式所示:
此外,MOELoRA实际上与LoRA具有相同的可微调参数量,说明其微调效率是很高的。MOELoRA的可微调参数量如下式,其中N是MOELoRA所含有的专家个数,r是MOELoRA的秩。
3.3 任务驱动的门控函数
任务驱动的门控函数主要通过一个任务嵌入矩阵和一个线性转换层,来为每个任务获得其特有的专家权重,从而可以为每个任务生成其特有的微调参数。我们设计了两个版本的门控函数,分别是稠密的和稀疏的。
因为每个任务中不同的样本具有相同的专家权重,因此我们可以为每个任务恢复其特有的微调后的大模型权重参数。恢复过程如下:
4. 实验
4.1 实验设置
我们在一个中文的医疗多任务数据集PromptCBLUE上进行了充分的实验。对比了四组baselines:(1)没有微调的LLMs:ChatGPT和Huatuo。(2)微调的LLMs:P-Tuning,LoRA。(3)模型编辑:Task-Arithmetic。(4)跨任务泛化方法:LoRAHub和MoLoRA。
4.2 整体实验效果
本文所提出的方法在大部分任务上都具有最佳的表现。并且,我们方法的平均表现显著高于所对比的所有baseline方法。
4.3 消融实验
实验结果表明我们所提出的MOE策略和任务驱动的门控函数都是有效的。此外,我们验证了当MOELoRA只结合LLMs中的attention层时,其一致地好于LoRA,说明了方法的鲁棒性。
4.4 效率实验
实验表明我们的方法在训练参数量和推理速度上都可以与LoRA持平。
5. 总结
针对医疗领域微调LLMs时会出现的医疗任务多样性问题和大参数量导致的微调消耗巨大挑战,我们提出一种新颖的参数高效微调框架,用于多任务医疗应用,名为MOELoRA。设计的框架结合了混合专家(MOE)用于多任务学习和低秩适应(LoRA)用于参数高效微调的优势。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。