Aquila-Med LLM:开创性的全流程开源医疗语言模型

​论文链接:https://arxiv.org/pdf/2406.12182

开源链接:https://huggingface.co/BAAI/AquilaMed-RL

http://open.flopsera.com/flopsera-open/details/AquilaMed_SFT

http://open.flopsera.com/flopsera-open/details/AquilaMed_DPO

近年来,闭源大语言模型(LLMs)和开源社区在通用领域取得了显著进展,甚至在某些方面超越了人类。然而,在专业领域,特别是医学领域,语言模型的表现仍然不足。为了支持语言模型在行业领域的发展,智源研究院提出了IndustryCorpus行业数据集,并在今年的智源大会上发布了1.0版本,其中就包含了医疗模型的训练数据,同时也提出了从通用模型到行业模型的训练范式。为了验证我们的训练范式和数据集的有效性,智源研究院基于上述数据和范式训练了Aquila-Med,一种基于Aquila的大规模双语医疗语言模型,也是第一个全流程开源持续预训练、监督微调(SFT)以及强化学习(RLHF)技术的医疗语言模型。

IndustryCorpus行业数据集链接:

http://open.flopsera.com/flopsera-open/details/BAAI-IndustryCorpus

一、简介

Aquila-Med是智源研究院针对医疗领域复杂性提出的解决方案,通过构建大规模的中英双语医疗数据集进行持续预训练,并开发高质量的SFT和DPO数据集,以提升模型在单轮、多轮对话以及医疗选择题中的表现。目前,智源研究院开源了Aquila-Med的模型权重,数据集和整个训练过程,旨在为研究社区提供有价值的资源。

二、方法

Aquila-Med的训练分为三个阶段:持续预训练、监督微调(SFT)和从人类反馈中强化学习(RLHF)。每个阶段都包括数据构建和模型训练的详细过程。

2.1 持续预训练

2.1.1 数据收集与去污染

为了构建持续预训练数据集Aquila-Med-cpt,智源从大规模通用预训练数据库中收集医学相关语料,包括从通用预训练语料库中提取医学相关的内容,并采用基于规则和大模型的语料质量过滤技术。

2.1.2 训练策略

持续预训练分为两个阶段。阶段一使用规则过滤的医学领域数据和一定比例的通用数据进行训练,数据量约为60B tokens。阶段二使用LLM质量模型过滤的高质量医学领域数据和开源医学SFT合成数据,数据量约为20B tokens。

2.1.3 训练细节

我们基于Aquila-7B模型进行训练,该模型具有70亿参数,最大长度为4096。第一阶段使用3*8 NVIDIA A100-40G GPU,batch size为768,学习率为1e-4,训练一个epoch。第二阶段保持其他设置不变,将batch size减少到384,学习率减少到1e-5,训练一个epoch。

2.2 监督微调(SFT)

为了提高语言模型的自然对话能力,首先进行监督微调(SFT),使预训练的LLM适应聊天风格的数据。SFT数据集包括多种问题类型,如医疗考试选择题、单轮疾病诊断、多轮健康咨询等。

2.2.1 数据构建

SFT数据集来自六个公开可用的数据集,包括Chinese Medical Dialogue Data、Huatuo26M、MedDialog、ChatMed Consult Dataset、CMB-exam和ChatDoctor。我们采用Deita方法 [1] 对数据进行自动过滤,确保从大量数据中筛选出高质量单轮数据。同时在Deita的基础上创新性地使用Context Relevance来筛选高质量多轮对话数据。

2.2.2 训练细节

Aquila-Med训练过程的超参数包括序列长度为2048,batch size为128,峰值学习率为2e-6,使用cosine learning rate scheduler。我们使用8个NVIDIA Tesla A100 GPU进行训练,AdamW优化器,bf16精度和ZeRO-3,并保留10%的训练集用于验证。

2.2.3 数据集统计

通过以上数据过滤方法,我们选择了320,000个高质量的SFT医疗数据集,其中中文和英文的比例为86%:14%。数据集包括单轮中文医疗对话、单轮英文医疗对话、多轮中文医疗对话和医疗主题知识选择题。

2.3 强化学习(RLHF)

在SFT阶段后使用RLHF算法(DPO) [2] 进一步增强模型的能力。为了确保模型输出与人类偏好一致,同时保证模型在预训练和SFT阶段获得的基础能力,我们构建了主观偏好数据和客观偏好数据。

2.3.1 数据构建

我们构建了12,727个DPO偏好对,其中包括9,019个主观数据和3,708个客观数据样本。主观偏好数据通过GPT-4生成和评估,客观偏好数据通过已知的正确答案构建。

2.3.2 训练细节

我们在8个NVIDIA Tesla A100 GPU上训练模型,设置学习率为2e-7,batch size为64,并使用cosine learning rate scheduler进行优化。

三、评估

我们在多个开源中英医疗基准测试上评估了模型的性能,包括单轮对话、多轮对话和医疗选择题。

3.1 医疗知识基准

我们从MMLU和C-Eval基准中提取了医疗相关的问题,并利用CMB-Exam、MedQA、MedMCQA和PubMedQA测试集评估模型的医疗知识水平。

3.2 医疗对话基准

我们评估了模型解决实际患者问题的能力,涵盖单轮对话场景如Huatuo MedicalQA和多轮对话场景如CMtMedQA和CMB-Clin。

四、实验结果

4.1 持续预训练的结果

实验结果表明,Aquila-Med在多个基准测试上表现良好,特别是在MMLU上的表现显著提升。

4.2 模型对齐的结果

在对齐效果方法,我们从医学主题问题和医生-患者咨询两个方面进行评估。结果显示,Aquila-Med-Chat在指令跟随能力方面表现出色,Aquila-Med-Chat (RL)在C-Eval上以及单轮多轮对话能力的表现尤为突出。

五、结论

本文提出了Aquila-Med,这是一种双语医疗LLM,旨在通过持续预训练、SFT和RLHF应对医学领域的挑战。我们的数据集构建和训练过程显著提升了模型处理单轮和多轮医疗咨询以及医疗选择题的能力。Aquila-Med在多个基准测试上的强大表现验证了方法的有效性。通过开源数据集和训练过程,智源希望推动医疗LLM的发展,为研究社区提供更多支持。后续我们会持续进行数据和模型迭代,研究更高效的数据策略,在更多的基础模型进行验证,请持续关注我们的发布。

Reference:

[1] Liu W, Zeng W, He K, et al. What makes good data for alignment? a comprehensive study of automatic data selection in instruction tuning[J]. arXiv preprint arXiv:2312.15685, 2023.

[2] Rafailov R, Sharma A, Mitchell E, et al. Direct preference optimization: Your language model is secretly a reward model[J]. Advances in Neural Information Processing Systems, 2024, 36.

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

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

相关文章

Java比较运算符

关系运算符和比较运算符适用于条件判断类型。 相当于布尔值,只有True和False两个 符号 说明ab,判断a的值是否等于b的值,条件成立为true,不成立为false ! a!b,判断a和b的值是否不相等,条件成立为true,不成立为false > …

MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法

目录 一、漏洞简介 漏洞原理 影响版本 二、漏洞复现 三、复现过程 1、扫描局域网内的C段主机(主机发现) 扫描结果: 2.使用MSF的永恒之蓝漏洞模块 3.对主机进行扫描,查看其是否有永恒之蓝漏洞 4.准备攻击 四、漏洞利用 …

C#健康体检信息管理系统成品源码,医院体检中心管理系统

健康体检信息管理系统覆盖体检中心的所有业务,完成从预约、登记、收费、检查、检验、出报告、分析、报表等所有工作,规范了体检流程,提高了工作效率。 体检系统开发环境: 技术架构:C/S架构 开发语言:C# …

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

前提:nvidia、cuda、nvidia-fabricmanager等相关的组件已经在宿主机正确安装,如果没有安装可以参考我之前发的文章GPU A800 A100系列NVIDIA环境和PyTorch2.0基础环境配置【建议收藏】_a800多卡运行环境配置-CSDN博客文章浏览阅读1.1k次,点赞8…

leetcode 动态规划(基础版)三角形最小路径和

题目&#xff1a; 题解&#xff1a; 一种可行的方案是从下到上&#xff0c;避免了从上到下的下标特判。走到每一个位置的最小值等于该位置的上两个位置中的最小值加上该位置的值。 int minimumTotal(vector<vector<int>>& triangle) {int dp[205][205]{0};f…

Desoutter智能拧紧中枢Connect过压维修

马头智能拧紧中枢过压维修是马头拧紧设备维护中的重要环节。当出现马头拧紧设备中枢过压现象时&#xff0c;会导致设备性能下降&#xff0c;甚至损坏设备&#xff0c;因此及时对过压中枢进行维修是保障设备正常运转的关键。 Desoutter电动螺丝刀控制器过压的原因可能有很多&am…

Vue60-TodoList案例-全局事件总线

一、全局事件总线的适用场景 虽然全局事件总线使用于任意组件之间的通信&#xff0c;但是没有必要处处用它。 数据在哪里&#xff0c;操作数据的方法就在哪里&#xff01; 二、TodoList案例-全局事件总线 适用于全局总线的场景&#xff1a;Item和App&#xff08;爷孙关系&…

FFmpeg+javacpp+javacv使用

FFmpegjavacppjavacv使用 Bytedeco官网案例1、导入opencv、ffmpeg依赖包2、FFmpeg 数据结构2.1 AVFormatContext 格式化I/O上下文2.1.1 metadata2.1.2 Duration、start、bitrate等其他信息2.1.3 dump信息 Bytedeco GitHub&#xff1a;javacpp Bytedeco官网案例 FFmpeg – [示例…

Qt Object:智能即时聊天室项目

目录 1.项目介绍 2.设计思路 3.Pro文件配置 4.项目演示 5.项目开源 项目介绍 智能即时聊天室系统&#xff08;AIChatProject&#xff09;是一个高效、灵活的即时通讯解决方案。它融合了百度的开源大型语言模型——文心一言&#xff0c;通过API接口实现深度集成。系统专为聊天和…

Ubuntu使用 NVIDIA GPU 和 CUDA 设置 LLM 的训练、微调和推理

0.引言 近年来&#xff0c;人工智能领域取得了令人瞩目的进步&#xff0c;其核心是图形处理单元&#xff08;GPU&#xff09;和并行计算平台的强大组合。 大模型如 GPT、BER能够理解和生成具有前所未有的流畅性和连贯性的类人文本。然而&#xff0c;训练这些模型需要大量的数据…

【SAP ME 42】关于SAP ME自定义开发中NWDS中配置JDK

1、NWDS启动配置JDK -vm C:/Java/jdk1.8.0_361/bin 2、开发组件配置JDK

基于Python+Flask+MySQL+HTML的B站数据可视化分析系统

FlaskMySQLVue 基于PythonFlaskMySQLHTML的B站数据可视化分析系统 项目采用前后端分离技术&#xff0c;项目包含完整的前端HTML&#xff0c;以及Flask构成完整的前后端分离系统 爬虫文件基于selenium&#xff0c;需要配合登录账号 简介 主页 登录页面&#xff0c;用户打开浏…

YIA主题侧边栏如何添加3D旋转标签云?

WordPress站点侧边栏默认的标签云排版很一般&#xff0c;而3D旋转标签云就比较酷炫了。下面boke112百科就以YIA主题为例&#xff0c;跟大家说一说如何将默认的标签云修改成3D旋转标签云&#xff0c;具体步骤如下&#xff1a; 1、点此下载3d标签云文件&#xff08;密码&#xf…

氢氧化铝佐剂,完美替代进口品牌明矾佐剂

氢氧化铝佐剂 氢氧化铝佐剂是使用历史最为悠久的疫苗佐剂&#xff0c;已有近百年历史&#xff0c;广泛用于各种人用疫苗和兽用疫苗。氢氧化铝佐剂能够极大地促进体液免疫&#xff08;抗体&#xff09;反应和TH2类细胞免疫反应。 用途 1、免疫各种实验动物制备多克隆或单克隆抗…

数据挖掘与分析——特征选择

数据读取 wine葡萄酒数据集是来自UCI的公开数据集&#xff0c;也scikit-learn库自带的数据集&#xff0c;它是对意大利同一地区种植的葡萄酒进行化学分析的结果&#xff0c;这些葡萄酒来自三个不同的品种。该分析确定了三种葡萄酒中每种葡萄酒中含有的13种成分的数量。 每行代…

【Java面试】二十、JVM篇(上):JVM结构

文章目录 1、JVM2、程序计数器3、堆4、栈4.1 垃圾回收是否涉及栈内存4.2 栈内存分配越大越好吗4.3 方法内的局部变量是否线程安全吗4.4 栈内存溢出的情况4.5 堆和栈的区别是什么 5、方法区5.1 常量池5.2 运行时常量池 6、直接内存 1、JVM Java源码编译成class字节码后&#xf…

Open3D点云处理学习

Color ICP Colored point cloud registration — Open3D 0.11.0 documentation Colored point cloud registration - Open3D 0.18.0 documentation 展示了使用color-icp结果 对比gicp错误处理结果 intel自己的论文 Colored Point Cloud Registration Revisited 优化方程 参…

临时关闭Windows安全中心

在使用WindowsOS是&#xff0c;微软安全中心是我们必不可少的安全防护&#xff0c;但有时我们也会产生想要将其关闭的需求&#xff0c;下面将要介绍如何临时关闭Windows的安全中心 一、打开安全中心、选择“病毒与威胁防护”&#xff0c;点击“管理设置” 之后将其实时保护关闭…

PPT的精细化优化与提升策略

&#x1f44f;&#x1f44f;&#x1f44f;欢迎来到我的博客 ! 亲爱的朋友们&#xff0c;欢迎您们莅临我的博客&#xff01;这是一个分享知识、交流想法、记录生活的温馨角落。在这里&#xff0c;您可以找到我对世界独特视角的诠释&#xff0c;也可以与我一起探讨各种话题&#…

轻量级日志系统——Loki

目录 一、loki简介 二、Loki 快速上手 第一步安装 Loki 第二步安装 Promtail 第三步安装granafa 三、LogQL 语法 四、Loki收集nginx日志 1、修改nginx配置 2、nginx服务器上安装promtail 3、添加doshbarod 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目&am…