Home

Awesome

🇨🇳中文 | 🌐English

ChiMed-GPT

ChiMed-GPT 是一款基于 Ziya-v2 的中文医疗大型语言模型(LLM)。在Ziya-v2的基础上,综合进行了预训练、监督式微调(SFT)和来自人类反馈的强化学习(RLHF)。模型支持的最大上下文长度为4096。

更多关于该模型的信息即将发布。

如您有任何问题,或者对 ChiMed-GPT 未来的版本有任何建议,请在 issue 中留言。

引用

如果您使用或扩展我们的工作,请引用以下论文

@article{USTC-ChiMed-GPT,
  title="{ChiMed-GPT: A Chinese Medical Large Language Model with Full Training Regime and Better Alignment to Human Preferences}",
  author={Yuanhe Tian, Ruyi Gan, Yan Song, Jiaxing Zhang, Yongdong Zhang},
  journal={arXiv preprint arXiv:2311.06025},
  year={2023},
}

训练过程

ChiMed-GPT 的训练过程包括了预训练、监督微调、人类反馈强化学习。具体流程和使用的数据集如下图所示。

结果

我们在信息提取、问答(QA)和多轮对话上评估了 ChiMed-GPT。

信息抽取

我们在命名实体识别(NER)任务上,在 CCKS2019 和 ChiMST 上的结果为

模型CCKS-2019ChiMST
GPT-3.5-Turbo31.4232.15
GPT-441.3741.25
Ziya-v125.3122.26
Ziya-v227.8425.76
Baichuan24.1421.20
Taiyi30.9030.55
MedicalGPT (Z)29.5928.12
MedicalGPT (B)23.8026.16
CHiMed-GPT40.8241.04

QA

C-Eval、CMMLU 和 MedQA 上的结果为

模型C-EvalCMMLUMedQA
GPT-3.5-Turbo56.5849.9144.50
GPT-471.2969.5567.99
Ziya-v136.5929.0712.50
Ziya-v239.0249.0613.00
Baichuan41.4645.2813.00
Taiyi48.7845.2039.20
MedicalGPT (Z)48.7834.5625.99
MedicalGPT (B)39.0243.8218.50
CHiMed-GPT68.2952.9244.50

以及在 ChiMed 上的结果为

模型BLEU-1BLEU-2ROUGE-1ROUGE-2ROUGE-L
GPT-3.5-Turbo39.1532.8526.617.3116.84
GPT-433.6128.2726.517.1316.63
Ziya-v16.185.7718.593.9412.66
Ziya-v238.4131.9026.917.9018.67
Baichuan5.815.2516.913.0111.30
Taiyi11.739.9621.765.2615.46
MedicalGPT (Z)39.0232.3526.768.1018.16
MedicalGPT (B)5.825.2616.612.9411.11
CHiMed-GPT44.5837.2227.118.8919.86

多轮对话

MC 上的结果

模型B-1B-2R-1R-2R-L
GPT-3.5-Turbo24.2920.1720.648.3917.14
GPT-418.5815.7618.926.6214.55
Ziya-v115.8511.759.923.049.02
Ziya-v214.2110.9912.204.4510.61
Baichuan3.441.613.870.343.49
Taiyi5.814.6714.234.5511.99
MedicalGPT (Z)20.2616.4217.515.4214.21
MedicalGPT (B)3.942.194.340.133.50
CHiMed-GPT33.1430.8643.4334.9142.16

下载

1.0 版本已在 Hugging Face 发布。

使用方法

安装根据官网的教程安装 PyTrochTransformers 并使用下面的代码运行

from transformers import AutoTokenizer
from transformers import LlamaForCausalLM
import torch

query="[human]:感冒怎么处理?\n[bot]:"
model = LlamaForCausalLM.from_pretrained('SYNLP/ChiMed-GPT-1.0', torch_dtype=torch.float16, device_map="auto").eval()
tokenizer = AutoTokenizer.from_pretrained(ckpt)
input_ids = tokenizer(query, return_tensors="pt").input_ids.to('cuda:0')
generate_ids = model.generate(
            input_ids,
            max_new_tokens=512, 
            do_sample=True, 
            top_p=0.9)
output = tokenizer.batch_decode(generate_ids)[0]
print(output)

注:请使用最新版本的 transformers (我们使用的版本为4.35.2)

免责声明

请注意,ChiMed-GPT 提供的所有内容,包括建议和推荐等,都不代表我们的立场。我们不对大型语言模型做出的回答承担任何责任。用户应明白,ChiMed-GPT并不是专业的医生。用户应依据自己的判断使用大型语言模型生成的信息。若有必要,应及时前往医院就诊并咨询专业医生的意见。