DISC-MedLLM 医疗健康模型

登录后查看价格

DISC-MedLLM 是一个专门针对医疗健康对话式场景而设计的医疗领域大模型,由复旦大学数据智能与社会计算实验室 (Fudan-DISC) 开发并开源。

该项目包含下列开源资源:

您可以通过访问这个链接来试用我们的模型。

概述

 

DISC-MedLLM 是一个专为医疗健康对话场景而打造的领域大模型,它可以满足您的各种医疗保健需求,包括疾病问诊和治疗方案咨询等,为您提供高质量的健康支持服务。

DISC-MedLLM 有效地对齐了医疗场景下的人类偏好,弥合了通用语言模型输出与真实世界医疗对话之间的差距,这一点在实验结果中有所体现。

得益于我们以目标为导向的策略,以及基于真实医患对话数据和知识图谱,引入LLM in the loop 和 Human in the loop的多元数据构造机制,DISC-MedLLM 有以下几个特点:

  • 可靠丰富的专业知识,我们以医学知识图谱作为信息源,通过采样三元组,并使用通用大模型的语言能力进行对话样本的构造。
  • 多轮对话的问询能力,我们以真实咨询对话纪录作为信息源,使用大模型进行对话重建,构建过程中要求模型完全对齐对话中的医学信息。
  • 对齐人类偏好的回复,病人希望在咨询的过程中获得更丰富的支撑信息和背景知识,但人类医生的回答往往简练;我们通过人工筛选,构建符合人类偏好的高质量的小规模行为微调样本,对齐病人的需求。

data-construction

模型效果演示

 

疾病问诊

 

sample1

治疗方案咨询

 

sample2

数据集

 

为了训练 DISC-MedLLM ,我们构建了一个高质量的数据集,命名为 DISC-Med-SFT,其中包含了超过47万个衍生于现有的医疗数据集重新构建得到的样本。我们采用了目标导向的策略,通过对于精心选择的几个数据源进行重构来得到SFT数据集。这些数据的作用在于帮助模型学习医疗领域知识,将行为模式与人类偏好对齐,并对齐真实世界在线医疗对话的分布情况。

数据集 数据来源 样本量
重构AI医患对话 MedDialog 400k
cMedQA2 20k
知识图谱问答对 CMeKG 50k
行为偏好数据集 人为筛选 2k
其他 MedMCQA 8k
MOSS-SFT 33k
Alpaca-GPT4-zh 1k

 

下载

 

我们总共发布了近47万条训练数据,其中包括重构AI医患对话和知识图谱问答对。您可以访问这个链接下载数据集。

 

部署

 

当前版本的 DISC-MedLLM 是基于Baichuan-13B-Base训练得到的。您可以直接从 Hugging Face 上下载我们的模型权重,或者根据下列代码样例中的方式自动获取。

首先,您需要安装项目的依赖环境。

pip install -r requirements.txt

利用Hugging Face的transformers模块来进行推理

 

>>> import torch
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from transformers.generation.utils import GenerationConfig
>>> tokenizer = AutoTokenizer.from_pretrained("Flmc/DISC-MedLLM", use_fast=False, trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("Flmc/DISC-MedLLM", device_map="auto", torch_dtype=torch.float16, trust_remote_code=True)
>>> model.generation_config = GenerationConfig.from_pretrained("Flmc/DISC-MedLLM")
>>> messages = []
>>> messages.append({"role": "user", "content": "我感觉自己颈椎非常不舒服,每天睡醒都会头痛"})
>>> response = model.chat(tokenizer, messages)
>>> print(response)

运行命令行Demo

 

python cli_demo.py

运行网页版Demo

 

streamlit run web_demo.py --server.port 8888

此外,由于目前版本的 DISC-MedLLM 是以 Baichuan-13B 作为基座的,您可以参考 Baichuan-13B 项目的介绍来进行 int8 或 int4 量化推理部署。然而需要注意的是,使用模型量化可能会导致性能的下降。

对模型进行微调

 

您可以使用与我们的数据集结构相同的数据对我们的模型进行微调。我们的训练代码在 Firefly 的基础上进行了修改,使用了不同的数据结构和对话格式。这里我们只提供全参数微调的代码:

deepspeed --num_gpus={num_gpus} ./train/train.py --train_args_file ./train/train_args/sft.json

请您在开始进行模型训练前检查 sft.json 中的设置。

如果您想使用其他训练代码来微调我们的模型,请使用如下对话格式。

<\b><$user_token>content<$assistant_token>content<\s><$user_token>content ...

我们使用的 user_token 和 assistant_token 分别为 195 and 196,这和 Baichuan-13B-Chat 是相同的。

模型评测

 

我们从两个角度评估了模型的性能,包括在单轮QA问题中提供准确答案的能力以及在多轮对话中完成系统性问诊、解决咨询需求的能力。

  • 在单轮对话评测中,我们构建了一个基准测试数据集,其中包含从两个公开医疗数据集中收集的多项选择题,并评估模型回答的准确性。
  • 对于多轮对话评测,我们首先构建了一些高质量的诊疗对话案例,然后让 GPT-3.5 扮演这些案例中的患者角色,并与扮演医生角色的模型进行对话。我们利用 GPT-4 来评估整段每段对话的主动性准确性帮助性语言质量

您可以在 eval/ 目录下查看测试数据集、各个模型生成的对话结果以及 GPT-4 提供的打分结果。

单轮QA评测

 

我们在评测中选用了 MLEC-QA 和考研306(西医综合)的单项选择题。

Few-shot

 

模型 MLEC-QA 临床 MLEC-QA 中西医结合 MLEC-QA 公共卫生 MLEC-QA 口腔 MLEC-QA 中医 考研306西医综合 平均
GPT-3.5 58.63 45.9 53.51 51.52 43.47 44.81 49.64
Baichuan-13b-Chat 31.25 37.69 28.65 27.27 29.77 24.81 29.91
Huatuo(13B) 31.85 25 32.43 32.95 26.54 24.44 28.87
DISC-MedLLM 44.64 41.42 41.62 38.26 39.48 33.33 39.79

Zero-shot

 

模型 MLEC-QA 临床 MLEC-QA 中西医结合 MLEC-QA 公共卫生 MLEC-QA 口腔 MLEC-QA 中医 考研306西医综合 平均
GPT-3.5 47.32 33.96 48.11 39.77 38.83 33.33 40.22
Baichuan-13b-Chat 44.05 43.28 39.92 31.06 41.42 32.22 38.66
Huatuo(13B) 27.38 21.64 25.95 25.76 24.92 20.37 24.34
DISC-MedLLM 44.64 37.31 35.68 34.85 41.75 31.11 37.56

多轮对话能力评测

 

我们的评测基于三个不同的数据集:Chinese Medical Benchmark (CMB-Clin)、Chinese Medical Dialogue Dataset (CMD) 和 Chinese Medical Intent Dataset (CMID),其中 CMB-Clin 模拟了现实世界的问诊过程,而 CMD 和 CMID 则分别着重从科室专业性和用户意图的角度进行评估。

CMB-clin数据集的评测结果:

 

模型 主动性 准确性 帮助性 语言质量 平均
GPT3.5 4.30 4.53 4.55 5.00 4.60
GPT4 4.15 4.70 4.75 4.96 4.64
Baichuan-13b-Caht 4.30 4.58 4.73 4.95 4.64
BianQue-2 3.97 4.36 4.37 4.81 4.38
Huatuo(13B) 4.40 4.62 4.74 4.96 4.68
DISC-MedLLM 4.64 4.47 4.66 4.99 4.69

CMD数据集的评测结果

 

cmd

CMID数据集的评测结果

 

cmid

模型链接:https://github.com/FudanDISC/DISC-MedLLM?tab=readme-ov-file

免责声明

对于该模型的言论,我们不承担任何责任。使用者在使用该模型时,需要自行承担潜在的风险,并始终保持审慎。我们建议用户在使用模型输出的信息时,进行独立的验证和判断,并根据个人的需求和情境进行决策。我们希望通过该的开源发布,为学术界和工业界提供一个有益的工具。 我们鼓励大家积极探索和创新,以进一步拓展和应用该模型的潜力,并共同促进人工智能在该模型领域的研究和实践。

 

供应商信息

供应商:hzzlss