《XrayGLM:基于VisualGLM-6B微调训练对X光胸片进行医学诊断》学习分享与本地项目微调部署实践

news2024/9/28 11:25:15

XrayGLM据说是首个会看胸部X光片的中文多模态医学大模型,我最近也是因为关注这个所以就找时间学习了一下,顺便把学习资料对应记录分享一下。

官方提供了开源的项目,地址在这里,如下所示:

 最近,通用领域的大语言模型 (LLM),例如 ChatGPT,在遵循指令和产生类似人类响应方面取得了显著的成功,这种成功间接促进了多模态大模型的研究和发展,如通用领域的多模态大模型MiniGPT-4、mPLUG-Owl、Multimodal-GPT和LLaVA ,然而,此类多模态大模型却很少出现在医学领域的研究中,阻碍了相关研究发展。visual-med-alpaca虽然在医学多模态大模型方面做出了一些很有成效的工作,然而其数据为英文诊断报告,不利于促进中文领域医学多模态大模型的研究发展。为此,我们开发了XrayGLM以解决上述问题。XrayGLM在医学影像诊断和多轮交互对话上显示出了非凡的潜力。

为了帮助大家上手学习掌握,官方也提供了对应的视频讲解,地址在这里,如下所示:

 项目主要完成了两个贡献:

  • 借助ChatGPT以及公开的数据集,我们构造了一个X光影像-诊断报告对的医学多模态数据集;
  • 我们将构建的中文胸部X光片诊断数据集在VisualGLM-6B进行微调训练,并开放了部分训练权重用于学术研究;

下面是报告内容详情:

 官方项目使用的数据集是开源的数据如下:

  • MIMIC-CXR是一个公开可用的胸部X光片数据集,包括377,110张图像和227,827个相关报告。
  • OpenI是一个来自印第安纳大学医院的胸部X光片数据集,包括6,459张图像和3,955个报告。

在上述工作中,报告信息都为非结构化的,不利于科学研究。为了生成合理的医学报告,我们对两个数据集进行了预处理,并最终得到了可以用于训练的英文报告。除此之外,为了更好的支持中文社区发展,借助ChatGPT的能力,我们将英文报告进行了中文翻译,并最终形成了可用于训练的数据集。

 环境安装部署如下:

安装环境
# 安装依赖
pip install -r requirements.txt
# 国内换源安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
此时默认会安装deepspeed库(支持sat库训练),此库对于模型推理并非必要,同时部分Windows环境安装此库时会遇到问题。 如果想绕过deepspeed安装,我们可以将命令改为:

# 安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements_wo_ds.txt
# 安装SwissArmyTransformer
pip install -i https://mirrors.aliyun.com/pypi/simple/ --no-deps "SwissArmyTransformer>=0.3.6"

checkpoints-XrayGLM-300模型权重地址在这里,如下所示:

 checkpoints-XrayGLM-3000模型权重地址在这里,如下所示:

 可以看到:模型体积将近16GB。

运行启动只需要终端执行下面的命令即可:

python web_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000

实例影像诊断效果如下所示:

 多轮对话实例:

 感兴趣的话都是可以自己训练实验体验一下的:

硬件资源
* 实验在A100 (4X, 80GB)上进行

(1)准备诊疗报告(中文)和X光影像在data/Xray文件夹下;
(2)开始训练:
# 设置CUDA变量,主要是为了解决有时候直接训练而出现无法正确加载到显卡问题
export CUDA_VISIBLE_DEVICES=0,1,2,3

# 开始训练
bash finetune_XrayGLM.sh
这里的复现过程非常简单,主要是很多过程我们都为大家准备好了,大家可以随时复现一个自己的XrayGLM。

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

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

相关文章

MySQL - 第6节 - MySQL表的增删查改

1.MySQL表的增删查改概述 • 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。 • CRUD的操作对象是对…

抖音小店有哪些常见扣分原因?如何避免在抖音小店中被扣分?

抖音小店现在已经成为了很多商家的首选电商平台,但是在使用抖音小店的过程中,也会出现一些扣分的情况。接下来,四川不若与众将为大家介绍抖音小店扣分的原因和避免办法。 一、抖音小店扣分原因 1. 服务不到位:商家没有及时回复用户…

2023-01-06 VMWare桥接网络配置.md

VMWare16 桥接网络配置 一 环境清单 VMWare 16虚拟机:Centos7宿主机:Windows 10 二 配置过程 查看宿主机的IP相关信息 ipconfig -all 配置虚拟网络编辑器 2.1 打开VMware Workstation Pro,点击左上角编辑-->虚拟网络编辑器 2.2 点击更改配…

CRM商机管理:提升客户体验和销售效率

如何利用CRM系统提升商机管理? 花点时间思考一下你的企业管理商机的方法,是否有以下情况: ● 不知道渠道中的商机是否可行。 ● 不知道应该关注哪些商机。 ● 花了几个小时或几天的时间来跟进商机。 ● 不知道赢得商机与失去商机的比例。 如…

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决 目录 前言 一、错误发生的原因 二、问题如何解决 前言 今天在运行kafka时,出现了如下图的报错Suppressed: java.nio.file.AccessDeniedException,怎么启动也启动不起来。那此问…

C/C++的命令执行分析

背景 最近发现一个命令执行风险; 一开始提供修复建议,是对特殊字符进行过滤,但是业务侧没有办法过滤,因为输入点是没有办法限制的,然后提供另一个方案是将用户的输入写到配置文件中,然后再进行操作&#x…

LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1…

蓝牙 - 抓包工具BPA600介绍

BPA 600开箱后,先把天线(antenna)装在后面的SMA接口上。 SMA connectors: SMA(SubMiniature version A)连接器是在20世纪60年代开发的半精密同轴射频连接器,是一种用于同轴电缆的最小连接器接口,具有螺旋式耦合机制。…

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

近日,复旦大学高校专区在飞桨人工智能学习与实训社区AI Studio上线,双方将携手搭建人工智能教学实训平台专区,汇集优质教学实训资源,校企共同培育复合型 AI 人才,为国家输送高质量人才,促进国家智能化进程。…

【机器学习】Kullback-Leibler散度实现数据监控

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence 一、说明 本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通…

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程: 解密过程: 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

qt 时间编程之时钟

这里写目录标题 开启time格式自动 QTIM打点 qtime qt的时间类 qtimer qt的定时类 头文件包含以及定义 #include<QTime> #include<QTimer>QTime * time; QTimer * timer;开启 右键槽 timer start&#xff08;50&#xff09; 到达50毫米的时候会触发 time out信号…

Unreal 5 实现场景环境控制组件

我在场景中发现了一个环境控制器&#xff0c;这个场景实现了雨天天气和晴天风沙天气&#xff0c;接下来我分析一下这个天气控制器是如何实现。 实现流程&#xff1a; 将环境控制器拖入场景&#xff0c;在配置项上面设置相应的雾&#xff0c;主光源&#xff0c;天空光。在环境控…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 自定义Loadbalancer微服务注册元信息修改自定义LoadBalancer使用 测试代码放到了github上[地址]() 灰…

STM32F4_CAN详解

目录 1. CAN简介 2. CAN协议的物理层 2.1 CAN协议中的差分信号 3. CAN协议的协议层 3.1 CAN的报文种类及结构 4. STM32的CAN外设 4.1 CAN框图 5. CAN相关结构体 6. CAN相关寄存器 7. 硬件设计 7.1 TJA1050芯片 8. 库函数配置CAN初始化 9. 实验代码 9.1 main.c 9…

SpringBoot问题-----------可以同时处理多少个请求

SpringBoot之可以同时处理多少个请求 SpringBoot的运行方式springBoot中tomcat的位置最小、最多工作线程数最大连接数等待数 SpringBoot的运行方式 SpringBoot项目中内嵌了tomcat 程序的运行就是通过tomcat来实现的&#xff1b;springBoot可以同时处理多少个请求其实就是在说 …

图像生成—使用GANs给出代码示例

文章目录 图像生成简单介绍—使用GANs给出代码示例1. 什么是生成对抗网络&#xff08;GANs&#xff09;2. 准备数据集3. 构建生成器和判别器4. 训练GAN模型5. 生成新图像6. 总结 图像生成简单介绍—使用GANs给出代码示例 图像生成是指使用计算机算法生成图像的过程。这些图像可…

C++ | 多线程使用vector

多线程使用vector 文章目录 多线程使用vector场景描述原因分析解决代码测试不扩容和提前扩容 size 与 capacity 变化欢迎关注公众号【三戒纪元】 场景描述 最近在看代码优化&#xff0c;看到有这样的代码&#xff1a; std::vector<int> valid_indices;void SimbaSegmen…

APP测试面试题快问快答(五)

21. App自动化你用的什么工具&#xff1f; 框架&#xff1a;Appium 编译环境和工具&#xff1a;python3.7和PyCharm 环境&#xff1a;Android sdk 第三方模拟器&#xff1a;夜神、蓝叠等模拟器 定位工具&#xff1a;uiautomatorviewer 实时日志查看&#xff1a;ddms 22.…