XrayGLM复现

XrayGLM大模型本地部署(Linux+SAT库)

什么是XrayGLM

简单来说,XrayGLM是在VisualGLM-6B的基础上,使用公开的胸部X光片数据集进行微调得到的具有智能分析X光片,实现影像诊断,完成医生问诊多轮对话功能的医学诊断大模型。

Xray环境部署

本地环境:Ubantu系统+4090(2X,50G)
Xray开源地址:https://github.com/WangRongsheng/XrayGLM
VisualGLM开源地址:https://github.com/THUDM/VisualGLM-6B
XrayGLM官方提供的requirements.txt文件中没有指定各种库的具体版本,如果直接按照配置文件自动安装均会安装最新版本,从而出现多种环境依赖问题导致项目无法运行,经过多次尝试在使用下文的安装命令安装指定版本后成功运行项目。

conda create -n visualglm python==3.10.6
conda activate visualglm
pip install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
#运行cli_demo.py和web_demo.py所需的组件
pip install gradio==3.5.0 chardet cchardet fastapi uvicorn

安装好Python环境与Pytorch后再运行requirements.txt文件,

#推荐使用国内源
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
#关键步骤:XrayGLM官方提供的微调模型与当前最新的SAT库不兼容,所以需要降低版本才能运行
pip install SwissArmyTransformer==0.3.6

模型推理

先下载官方微调模型(若无法访问国外网址或需要节约流量可以访问抱脸网国内镜像https://hf-mirror.com/wangrongsheng/XrayGLM-3000/tree/main进行下载,记得model_config.json和latest文件也要一并下载)。
下载完成后开始推理

#CLI推理
python cli_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000 --prompt_zh '详细描述这张胸部X光片的诊断结果'
#WEBUI运行
python web_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000
#运行成功后打开浏览器访问http://127.0.0.1:7860即可

模型微调复现

  1. 准备模型
    XrayGLM官方提供的visualglm.py文件中的清华大学云盘下载地址已失效,若使用VisualGLM官方的新地址并通过程序自动下载,非常容易出现下载超时的情况,因此推荐手动下载,下载地址为https://www.wisemodel.cn/models/ZhipuAI/VisualGLM-6B-SAT/file
  2. 准备数据集
    使用原先的数据集微调时出现TypeError: string indices must be integers错误。猜测是版本问题导致的,刚好查到一篇山东大学的博客解决了这个问题。

通过和visual_GLM 的dataset.json对比可知,openi-zh.json 还不是最终的可训练的 json版本。执行./data/build_ch_prompt.py,并把finetune_XrayGLM.sh 里面的 json路径改成刚刚生成的路径。
train_data=“./data/openi-zh-prompt.json”
eval_data=“./data/openi-zh-prompt.json”

3.模型微调
到此只需按照XrayGLM官方教程即可完成微调。

#设置CUDA变量,根据自己的硬件情况进行调整
export CUDA_VISIBLE_DEVICES=0,1
#开始训练
bash finetune_XrayGLM.sh

实际上到这里我意识到XrayGLM只是在VisualGLM基础上修改了训练参数和使用X光数据集进行微调,因此没有必要迁就XrayGLM的低版本环境进行训练,完全可以基于最新的SAT库和VisualGLM代码进行微调得到XrayGLM模型,这样子既适应新的环境配置有利于模型训练(在实验过程中使用XrayGLM官方的文件特别容易出错和爆显存),模型本身后续的可操作性也更高。

#更新SAT库到最新版本
pip install --upgrade SwissArmyTransformer

然后对照finetune_XrayGLM.py和.sh文件修改VisualGLM中相对应的参数即可

#开始训练
bash finetune_XrayGLM.sh

总结

相比于XrayGLM,VisualGLM官方代码库中有更多的issue和解决方案,因此当复现XrayGLM
出现问题时,可以转变思路,将实验当成以自己的数据集对VisualGLM进行微调。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值