Bootstrap

【Linux】环境下部署MedicalGPT模型及成果展示

一、Medical概述

MedicalGPT 是一个基于ChatGPT训练流程的医疗行业语言模型项目,主要包括增量预训练、有监督微调和RLHF(奖励建模、强化学习训练)。项目旨在通过不同的训练阶段,优化模型以更好地适应医疗数据,提高问答和文本生成的准确性和质量。此外,该项目还引入了直接偏好优化(DPO),使得模型在无需复杂的强化学习框架下,能够有效学习并适应人类偏好。项目通过多种数据集和训练策略,实现了模型的持续进化和功能扩展。

二、项目地址

注意:模型地址需要通过代理才能访问。

Github地址:https://github.com/shibing624/MedicalGPT/blob/main/README.md

模型地址:https://huggingface.co/shibing624/vicuna-baichuan-13b-chat

github项目地址中文档很详细(包括全阶段串起来的训练示例、训练参数、支持的模型、模型显存)。

三、硬件条件

服务器环境:Linux

操作系统:ubuntu 22.04

架构:x86_64

实例规格:GPU 24G显存 CPU 16+60G

四、MedicalGPT部署步骤

1. 准备工作

(1)安装Anaconda软件

注意:Anaconda无版本要求,主要和Linux的架构保持一致。

        ① 下载地址:https://repo.anaconda.com/archive/

下载完成并上传到服务器。

        ② 设置可执行权限

chmod +x Anaconda3-2024.06-1-Linux-x86_64.sh

        ③ 安装Anaconda 

说明:如果不指定Anaconda安装目录默认在/root/anaconda3下,可以通过命令指定安装目录

bash Anaconda3-2024.06-1-Linux-x86_64.sh -b -p 安装路径

        ④ 配置环境变量 

在/etc/profile 文件中添加anaconda的环境变量

export PATH=/xx/anaconda3/bin:$PATH

        ⑤ 刷新环境变量 

source /etc/profile

        ⑥ 验证

conda -V

        ⑦ 初始化anaconda

conda init

        ⑧ 刷新anaconda的配置

 source /root/.bashrc
(2)创建MedicalGPT需要的python环境并激活 

        ① 创建MedicalGPT环境

conda create -n medicalgpt python=3.10

        ② 激活环境

conda activate medicalgpt

2.拉取MedicalGPT项目代码

(1)切换到磁盘挂载目录

cd /data/

(2)拉取代码并切换到对应目录

git clone https://github.com/shibing624/MedicalGPT

cd MedicalGPT

(3)下载依赖

pip install -r requirements.txt --upgrade

如果下载过程中出现下载不了的情况,可以通过命令 -i 指定下载文件的镜像地址(Simple Index)。

3.下载MedicalGPT模型

说明:如果不能直接通过服务器上下载,可以通过windows上挂载代理软件访问抱脸地址:https://huggingface.co/shibing624/vicuna-baichuan-13b-chat 把Files and versions 下文件全部下载,模型下载时间比较长,耐心等待。

下载完成后并将下载好模型传到服务器的MedicalGPT目录下(上传的位置必须是刚刚拉取克隆下github的目录下新建一个shibing624目录,再在shibing624下创建一个vicuna-baichuan-13b-chat目录)这是因为运行的时候需要指定模型目录。

4. 运行MedicalGPT(GPU)

官方提供的命令如下:

CUDA_VISIBLE_DEVICES=0 python gradio_demo.py --model_type base_model_type --base_model path_to_llama_hf_dir --lora_model path_to_lora_dir

切换到MedicalGPT目录运行如下命令(根据官方提供的运行命令进行修改):

CUDA_VISIBLE_DEVICES=0 python gradio_demo.py --model_type baichuan --base_model shibing624/vicuna-baichuan-13b-chat

参数说明:

        --model_type {base_model_type}:预训练模型类型,如llama、bloom、chatglm等。
        --base_model {base_model}:存放HF格式的LLaMA模型权重和配置文件的目录,也可使用HF Model Hub模型调用名称。
        --lora_model {lora_model}:LoRA文件所在目录,也可使用HF Model Hub模型调用名称。若lora权重已经合并到预训练模型,则删除--lora_model参数。
        --tokenizer_path {tokenizer_path}:存放对应tokenizer的目录。若不提供此参数,则其默认值与--base_model相同。
      --template_name:模板名称,如vicuna、alpaca等。若不提供此参数,则其默认值是vicuna。
       --only_cpu: 仅使用CPU进行推理。
       --resize_emb:是否调整embedding大小,若不调整,则使用预训练模型的embedding大小,默认不调整。

运行成功如下图所示:

5. 运行MedicalGPT(CPU)

注意:修改gradio_demo.py中,由于模型是默认采用GPU运行,因此需要调整gradio_demo.py中的 device_map='auto' 改为  device_map = {"": "cpu"}

如果不修改可能会报错:ValueError: The current `device_map` had weights offloaded to the disk. Please provide an `offload_folder` for them. Alternatively, make sure you have `safetensors` installed if the model you are using offers the weights in this format.

 切换到MedicalGPT目录运行如下命令(根据官方提供的运行命令进行修改):

 python gradio_demo.py --only_cpu --model_type baichuan --base_model shibing624/vicuna-baichuan-13b-chat

6. 成果展示

注意:开放8081端口。

推理速度较慢(应该和硬件环境有关),在GPU显存为24G的机器上,大概一分钟多种推理完成,GPU显存占到22G左右。 

7.问题

(1)找不到gradio库

解决方案:下载gradio 命令:pip install gradio

(2)找不到transforms生成器

解决方案:下载 transforms 生成器 命令:pip install transformers_stream_generator

 

;