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.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