当前位置: 首页 > news >正文

多模态——基于XrayGLM的X光片诊断的多模态大模型

0.引言

近年来,通用领域的大型语言模型(LLM),如ChatGPT,已在遵循指令和生成类似人类的响应方面取得了显著成就。这些成就不仅推动了多模态大模型研究的热潮,也催生了如MiniGPT-4、mPLUG-Owl、Multimodal-GPT和LLaVA等多模态大模型的诞生。然而,在医学领域,尤其是针对中文医学数据的研究,多模态大模型的发展相对滞后,这在一定程度上限制了该领域研究的深度和广度。

尽管模型如visual-med-alpaca在医学多模态大模型方面取得了一定的进展,但其使用的英文诊断报告数据限制了其在中文医学领域的应用和推广。为了解决这一问题,我们开发了XrayGLM,旨在填补中文医学多模态大模型研究的空白,并推动相关技术的发展。

XrayGLM在医学影像诊断和多轮交互对话方面展现出了巨大的潜力。通过利用先进的深度学习技术和大量的中文医学影像数据,XrayGLM不仅能够准确解读医学影像,还能与用户进行有效的多轮对话,提供更加个性化和精准的医疗建议。这一创新不仅有助于提高医疗服务的效率和质量,也为医学研究和实践开辟了新的可能性。

XrayGLM的开发是医学人工智能领域的重要一步,它标志着我们向实现智能化、个性化医疗服务的目标又迈进了一步。随着技术的不断进步和数据集的日益丰富,我们有理由相信,XrayGLM将在未来发挥更加重要的作用,为医学领域带来更多的创新和价值。

1.XrayGLM

1.1 XrayGLM的潜力

XrayGLM作为一个专门分析X光片的多模态大模型,其核心价值在于能够快速、准确地辅助医生进行诊断。通过上传X光片,模型能够自动解读并给出诊断结果,这无疑将极大提高诊断效率,减轻医生的工作负担,同时让病人不必长时间等待诊断结果。

1.2 当前的限制

尽管XrayGLM的演示效果令人印象深刻,但它目前还只是一个演示(Demo),不能直接用于实际诊断。主要问题在于:

  1. 过拟合:模型在训练时使用的测试数据集和训练数据集是同一套数据,这导致模型可能在训练集上表现良好,但在新的、未见过的数据上表现不佳。
  2. 缺乏专业评估:模型的诊断结果尚未经过专业医生的评估和验证,因此其准确性和可靠性还有待进一步确认。

1.3 未来展望

尽管存在上述限制,但XrayGLM的设计理念是非常前瞻的。未来,随着技术的不断进步和数据集的不断扩大,这类模型有望成为医生的得力助手,提高诊断的效率和准确性。

2.环境安装

2.1 GPU环境

要本地部署AnomalyGPT 需要用到GPU加速,GPU的显存要大于等于8G,我这里部署的环境是系统是win10,GPU是3090ti 24G显存,cuda版本是11.8,cudnn版本是8.9。
在这里插入图片描述
在这里插入图片描述

2.2 创建环境

# 创建并配置环境依赖
conda create -n agpt python=3.10
conda activate xglm

2.3 下载源码

git clone https://github.com/WangRongsheng/XrayGLM.git

2.4 安装依赖

2.4.1 pytorch

这里pytorch建议单独安装,可以找到cuda对应的版本进行安装:

conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia

2.4.2 安装deepspeed

官方给的环境默认会安装deepspeed库(支持sat库训练),此库对于模型推理并非必要,同时部分Windows环境安装此库的某些版本时会遇到问题。 这里可以使用deepspeed 0.3.16这个版本:

pip install deepspeed==0.3.16

2.4.3 安装requirements.txt文件内其他依赖

打开源码里面的requirements_wo_ds.txt文件,把torch和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"

3.模型推理

3.1 模型下载

可以从官员提供的链接下载模型:https://huggingface.co/wangrongsheng/XrayGLM-3000/tree/main :
在这里插入图片描述
在这里插入图片描述
放到指定目录:
在这里插入图片描述

3.2 模型推理

3.2.1 命令行推理

python cli_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000 --prompt_zh '详细描述这张胸部X光片的诊断结果'

在这里插入图片描述

3.2.2WebUI运行

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

在这里插入图片描述

3.3 官方示例

在这里插入图片描述
在这里插入图片描述

4.报错解决

4.1 torch._six

主要原因是因为 torch 升级到2.0之后,这个api不能用了,以下是解决方法,将from torch._six import inf调整为下面

from torch import inf

在这里插入图片描述

from torch._six import inf
ModuleNotFoundError: No module named ‘torch._six’

在这里插入图片描述
在这里插入图片描述

4.2 web ui报端口问题

在这里插入图片描述

ValueError: When localhost is not accessible, a shareable link must be created. Please set share=True or check your proxy settings to allow access to localhost.

在web_demo.py添加前面加这两行代码:

import os
os.environ["no_proxy"] = "localhost,127.0.0.1,::1"

然后gradio的版本尽量是3.50.0。

4.3 依赖

下面是我部署成功完全依赖:

aiofiles                  23.2.1
aiohappyeyeballs          2.4.0
aiohttp                   3.10.5
aiosignal                 1.3.1
altair                    5.4.1
annotated-types           0.7.0
anyio                     4.4.0
async-timeout             4.0.3
attrs                     24.2.0
bitsandbytes              0.39.0
boto3                     1.35.24
botocore                  1.35.24
braceexpand               0.1.7
Brotli                    1.0.9
certifi                   2024.8.30
charset-normalizer        3.3.2
click                     8.1.7
contourpy                 1.3.0
cpm-kernels               1.0.11
cycler                    0.12.1
datasets                  3.0.0
deepspeed                 0.3.16
dill                      0.3.8
docker-pycreds            0.4.0
einops                    0.8.0
exceptiongroup            1.2.2
fastapi                   0.115.0
ffmpy                     0.4.0
filelock                  3.13.1
fonttools                 4.53.1
frozenlist                1.4.1
fsspec                    2024.6.1
gitdb                     4.0.11
GitPython                 3.1.43
gmpy2                     2.1.2
gradio                    3.50.0
gradio_client             0.6.1
h11                       0.14.0
hjson                     3.1.0
httpcore                  1.0.5
httpx                     0.27.2
huggingface-hub           0.25.0
idna                      3.7
importlib_resources       6.4.5
Jinja2                    3.1.4
jmespath                  1.0.1
jsonschema                4.23.0
jsonschema-specifications 2023.12.1
kiwisolver                1.4.7
latex2mathml              3.77.0
Markdown                  3.7
markdown-it-py            3.0.0
MarkupSafe                2.1.3
matplotlib                3.9.2
mdtex2html                1.3.0
mdurl                     0.1.2
mkl_fft                   1.3.10
mkl_random                1.2.7
mkl-service               2.4.0
mpmath                    1.3.0
multidict                 6.1.0
multiprocess              0.70.16
narwhals                  1.8.2
networkx                  3.2.1
ninja                     1.11.1.1
numpy                     1.26.4
nvidia-cublas-cu12        12.1.3.1
nvidia-cuda-cupti-cu12    12.1.105
nvidia-cuda-nvrtc-cu12    12.1.105
nvidia-cuda-runtime-cu12  12.1.105
nvidia-cudnn-cu12         9.1.0.70
nvidia-cufft-cu12         11.0.2.54
nvidia-curand-cu12        10.3.2.106
nvidia-cusolver-cu12      11.4.5.107
nvidia-cusparse-cu12      12.1.0.106
nvidia-nccl-cu12          2.20.5
nvidia-nvjitlink-cu12     12.6.68
nvidia-nvtx-cu12          12.1.105
orjson                    3.10.7
packaging                 24.1
pandas                    2.2.2
pillow                    10.4.0
pip                       24.2
platformdirs              4.3.3
protobuf                  3.20.1
psutil                    6.0.0
py-cpuinfo                9.0.0
pyarrow                   17.0.0
pydantic                  2.9.2
pydantic_core             2.23.4
pydub                     0.25.1
Pygments                  2.18.0
pyparsing                 3.1.4
PySocks                   1.7.1
python-dateutil           2.9.0.post0
python-multipart          0.0.9
pytz                      2024.2
PyYAML                    6.0.2
referencing               0.35.1
regex                     2024.9.11
requests                  2.32.3
rich                      13.8.1
rpds-py                   0.20.0
ruff                      0.6.6
s3transfer                0.10.2
safetensors               0.4.5
semantic-version          2.10.0
sentencepiece             0.2.0
sentry-sdk                2.14.0
setproctitle              1.3.3
setuptools                75.1.0
shellingham               1.5.4
six                       1.16.0
smmap                     5.0.1
sniffio                   1.3.1
starlette                 0.38.5
SwissArmyTransformer      0.3.6
sympy                     1.13.2
tensorboardX              1.8
tokenizers                0.13.3
tomlkit                   0.12.0
torch                     2.0.0
torchaudio                2.0.0
torchvision               0.15.0
tqdm                      4.66.5
transformers              4.27.1
triton                    3.0.0
typer                     0.12.5
typing_extensions         4.11.0
tzdata                    2024.1
urllib3                   2.2.2
uvicorn                   0.30.6
wandb                     0.18.0
webdataset                0.2.100
websockets                11.0.3
wheel                     0.44.0
xxhash                    3.5.0
yarl                      1.11.1

相关文章:

  • MYSQL(学习笔记)
  • STM32F407之Flash
  • 3.4 爬虫实战-爬去智联招聘职位信息
  • 演示:基于WPF的DrawingVisual开发的频谱图和律动图
  • 【分布式微服务云原生】10分钟打造坚不可摧的系统:深入探索系统的鲁棒性
  • 在树莓派上基于 LNMP 搭建 Nextcloud
  • 图灵完备-奇数个信号
  • 百度智能体创建:情感领域的创新力量
  • 【大模型对话 的界面搭建-Open WebUI】
  • 【C++算法】5.双指针_乘最多水的容器
  • OIDC9-OIDC集成登录功能(SpringBoot3.0)
  • 【Linux网络】详解TCP协议(3)
  • GitLab CI/CD脚本入门
  • JAVA工具类——Collections
  • AI学习指南深度学习篇-丢弃法Python实践
  • [数据结构]链表的实现在PHP中
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Hibernate最全面试题
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Vue全家桶实现一个Web App
  • zookeeper系列(七)实战分布式命名服务
  • 后端_MYSQL
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 如何学习JavaEE,项目又该如何做?
  • 问题之ssh中Host key verification failed的解决
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 在Unity中实现一个简单的消息管理器
  • 《码出高效》学习笔记与书中错误记录
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #13 yum、编译安装与sed命令的使用
  • #Linux(帮助手册)
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (TOJ2804)Even? Odd?
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)linux使用docker容器运行mysql
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)N皇后问题
  • (五)MySQL的备份及恢复
  • (一)SpringBoot3---尚硅谷总结
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 指南:抽象化实现的基类
  • .NET/C# 使窗口永不获得焦点
  • .NET单元测试
  • .net流程开发平台的一些难点(1)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /*在DataTable中更新、删除数据*/
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [000-01-022].第06节:RabbitMQ中的交换机介绍