openmedlab / PULSE

PULSE: Pretrained and Unified Language Service Engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PULSE

MOSS

Code License Model License Open in OpenXLab

[中文版] [English]

目录


模型

主要功能

  • 中文医疗大语言模型
  • 大规模训练:PULSE模型使用约4,000,000个中文医学领域和通用领域的指令微调数据进行进一步调优。
  • 全面的中文医学自然语言处理任务:PULSE支持医学领域的各种自然语言处理任务,包括健康教育、医师考试问题、报告解读、医疗记录结构化以及模拟诊断和治疗。

下载地址

局限性

  • 本开源模型仅供医疗领域研究使用,尽管我们努力提供准确和最新的信息,但我们不能保证所提供信息的准确性、完整性或相关性,如使用本项目所含模型及其修改版本提供服务产生误导性或有害性言论,造成不良影响,与本项目无关。
  • 由于模型参数量较小和自回归生成范式,尽管模型提供了有关疾病诊断和治疗的推理结果,但这些结果不能代替线下职业医生的建议和治疗方案。所有回答仅供参考,不应作为诊断或治疗的依据。我们强烈建议用户在需要诊断或治疗疾病时,寻求专业医生的帮助和建议。

Elo评测

Model Name AVG Rank MedQA-USMLE MedQA-Mainland PromptCBLUE WebMedQA CheckupQA MedicineQA DialogSumm MedTriage (F1)
GPT-4 1.25 1129 1117 1110 1116 1096 1098 1109 0.65
PULSE-Pro 1.75 1089 1092 1088 1119 1105 1083 1096 0.63
ChatGPT 4.00 1086 1057 1064 1053 1020 1029 1080 0.43
PULSE-20b 4.12 1042 1024 1039 1059 1049 1069 1076 0.40
Baichuan2 4.50 1024 1041 1065 1044 1062 1035 1069 0.33
ChatGLM3 5.62 1038 1062 997 1012 1003 1024 1021 0.06
HuatuoGPT2 7.62 955 993 985 963 983 1003 980 0.01
QiZhenGPT 8.38 955 959 945 989 1039 932 921 0.00
BenTsao 8.75 961 921 936 910 927 986 920 0.02
BianQue2 10.12 913 928 919 988 974 900 908 0.00
MING 10.75 902 909 924 867 862 960 918 0.01
DoctorGLM 11.12 906 896 930 879 880 880 905 0.00

评估方法

  • 为了平衡成本,我们主要采用GPT4进行评估。如QLoRA 论证,单纯GPT4打分进行模型的对比随机波动性较大。这与我们的观察一致。因此采用了QLoRA 推荐的,现在比较普遍采用的Elo Rating tournament评测方法。

评估数据集

公开数据集 [eval/data]

  • MedQA_USMLE: 从MedQA的USMLE/test子集中抽150条
  • MedQA_Mainland: 从MedQA的Mainland/test子集中抽150条
  • PromptCBLUE: 从PromptCBLUE的test子集中抽150条
  • webMedQA: 从webMedQA的test子集中抽150条

私有数据集

  • CheckupQA: 体检场景下的数值类咨询数据集,测试模型对于医疗相关数值的理解和分析能力。
  • MedicineQA: 给定标准参考文献时的用药咨询数据集,测试RAG(retrieval-augmented generation)场景下的模型能力。
  • DialogSumm: 从医患对话中生成五史一诉,测试模型的长文本能力。
  • MedTriage: 根据用户信息给出导诊建议,测试模型在可变候选科室条件下选择正确科室的能力。

评测模型

超参选择

  • 出于成本考虑,我们选择每个数据集进行360轮随机评估,随机选择模型PK的先后顺序以抵消先后顺序的影响,随机种子为:42。Elo rating的实现代码和其他超参参照Vicuna的Elo代码: K=4, init rating=1000。

开源仓库

  • 关于Elo评测,更详细的测评结果,可下载的数据、代码,请移步PULSE-EVAL
  • 我们也在OpenCompass上线了MedBench,提供了更多的评测指标和数据集用来进行医疗领域大语言模型的评测。

微调

基于LLaMA-Factory 项目,我们提供了可以快速微调PULSE的代码PULSE-tuner

量化

推理

硬件要求

下表提供了一个batch size=1时本地部署PULSE进行推理所需的显存大小。

模型参数 量化等级 加载模型
7B FP16 14GB
7B INT4 6GB
20B FP16 40GB
20B INT4 12GB

下载安装

  1. 下载本仓库内容至本地/远程服务器
git clone https://github.com/openmedlab/PULSE
cd PULSE
  1. 创建conda环境安装依赖
conda env create -f llm.yml
conda activate llm

其中torchtransformers版本不建议低于推荐版本。

使用示例

网页Demo

Gradio

python web_demo_gradio.py

命令行Demo

您可以运行仓库中的cli_demo.py来启动一个简单的命令行Demo:

python cli_demo.py

简单用例

健康科普

image

医师考题

image

报告解读

image

病历结构化

image

模拟诊疗

image

医学无关问题无害处理

image

友情链接

如果您有其他开源项目使用或改进PULSE,欢迎提交Pull Request添加到README或在Issues中联系我们。

XrayPULSE

一款将医疗大语言模型PULSE与X-ray图像模型结合的应用,实现了多模态会话功能。

openmedlab/XrayPULSE

image

PULSE-COVID-19

一个基于PULSE微调且结合了广州实验室内部COVID-19知识数据库语料库的模型。

openmedlab/PULSE-COVID-19

image

病历结构化

一个基于PULSE模型的结构化工具,旨在帮助用户处理和分析文本数据。它提供了单选、多选、信息提取等功能。

JuneYaooo/llm_structure_tool

image

术语归一化

一个基于PULSE模型的医疗术语归一化的应用,归一化的任务是将临床上同一种诊断、手术、药品、检查、症状等各种不同的说法对应到标准用词上。

JOHNNY-fans/NormPULSE

image

知识库问答

一款基于PULSE开发的聊天机器人,用户可以自己添加相关知识库,以开发更丰富的应用场景。

JuneYaooo/medical_kb_chatbot

image

致谢

  • 上海人工智能实验室
  • 上海交通大学-清源研究院
  • 华东理工大学-自然语言处理与大数据挖掘实验室

引用

@article{pulse2023,
      title={PULSE: Pretrained and Unified Language Service Engine}, 
      author={Xiaofan Zhang, Kui Xue, Shaoting Zhang},
      year={2023},
      url={https://github.com/openmedlab/PULSE}
}

开源协议

本项目所含代码采用Apache 2.0协议,模型权重采用GNU AGPL 3.0协议。

About

PULSE: Pretrained and Unified Language Service Engine

License:Apache License 2.0


Languages

Language:Python 100.0%