启真医学大模型
QiZhenGPT: An Open Source Chinese Medical Large Language Model
本项目利用启真医学知识库构建的中文医学指令数据集,并基于此在Chinese-LLaMA-Plus-7B、CaMA-13B、ChatGLM-6B模型上进行指令精调,大幅提高了模型在中文医疗场景下效果,首先针对药品知识问答发布了评测数据集,后续计划优化疾病、手术、检验等方面的问答效果,并针对医患问答、病历自动生成等应用展开拓展。
更新记录及计划
更新
[2023/06/27] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-12400),旨在提高医学领域疾病、药品知识问答的准确性;
[2023/06/09] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-6000),旨在提高医学领域药品知识问答的准确性;
[2023/06/02] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-3600),旨在提高医学领域药品知识问答的准确性;
[2023/05/30] 开源20k训练数据(该数据集来自于启真医学知识库收集整理的真实医患知识问答数据以及在启真医学知识库的药品文本知识基础上,通过对半结构化数据设置特定的问题模板构造的指令数据);
[2023/05/30] 开源启真医学大模型体验版(QiZhen-ChatGLM-6B- Checkpoint-2500),旨在提高医学领域药品知识问答的准确性;
[2023/05/25] 开源药品适应症评测数据集;
[2023/05/24] 开源启真医学大模型体验版(QiZhen-Chinese-LLaMA-7B- Checkpoint-6000),旨在提高医学领域药品知识问答的准确性;
[2023/05/23] 开源启真医学大模型体验版(QiZhen-Chinese-LLaMA-7B- Checkpoint-3500),旨在提高医学领域药品知识问答的准确性;
计划
- 使用指令数据微调ChatGLM-6B,并对开源模型进行评测,发布评测结果;
- 构造并开源药品知识问答数据集;
- 使用令数据微调CaMA,并对开源模型进行评测,发布评测结果;
- 继续在该指令集训练CaMA,进一步提高模型效果,并将模型进行开源;
- 构造疾病知识指令集,使用该指令集训练新模型,并将模型进行开源;
- 使用启真医学知识库文本对LLaMA继续进行预训练,增强LLaMA在中文医疗领域的自然语言处理的基础能力;
指令数据集构建
目前大多数开源的ChatLLM项目使用的是其他模型(如:ChatGPT)生成的指令数据,其不可避免的存在数据幻想的问题,数据幻想问题将严重影响LLM在实际场景中的应用和拓展。因此,本项目为了提高医疗领域的知识问答的准确性,使用如下方式构造指令数据集:
- 启真医学知识库收录的真实医患知识问答数据(疾病、药品、检查检验、手术、预后、食物等),共计
560K
条指令数据; - 药品知识数据:在启真医学知识库的药品文本知识基础上,通过对半结构化数据设置特定的问题模板(如:“{药品}的适应病症是什么?”)构造指令数据集,共计
180K
条指令数据; - 疾病知识数据:在启真医学知识库的疾病文本知识基础上,通过对半结构化数据设置特定的问题模板(如:“{疾病}的典型症状是什么?”)构造指令数据集,共计
298K
条指令数据;
训练细节
- QiZhen-Chinese-LLaMA-7B- Checkpoint-3500:本项目基于Chinese-LLaMA-Plus-7B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
3500 steps
(训练23h50min) ; - QiZhen-Chinese-LLaMA-7B- Checkpoint-6000:本项目基于Chinese-LLaMA-Plus-7B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
6000 steps
(训练40h56min); - QiZhen-ChatGLM-6B- Checkpoint-2500:本项目基于ChatGLM-6B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
2500 steps
(训练16h20min); - QiZhen-CaMA-13B-Checkpoint-3600:本项目基于CaMA-13B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
3600 steps
(训练37h37min)。 - QiZhen-CaMA-13B-Checkpoint-6000:本项目基于CaMA-13B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
6000 steps
(训练54h30min)。 - QiZhen-CaMA-13B-Checkpoint-12400:本项目基于CaMA-13B进行指令微调,该项目在6张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第
12400 steps
(训练114h46min)。
模型下载
模型 | 指令数据集 | Base Model | LoRA下载 |
---|---|---|---|
QiZhen-Chinese-LLaMA-7B- Checkpoint-3500 | 740K | Chinese-LLaMA-Plus-7B | 百度网盘 |
QiZhen-Chinese-LLaMA-7B- Checkpoint-6000 | 740K | Chinese-LLaMA-Plus-7B | 百度网盘 |
QiZhen-ChatGLM-6B- Checkpoint-2500 | 740K | ChatGLM-6B | 百度网盘 |
QiZhen-CaMA-13B-Checkpoint-3600 | 740K | CaMA | 百度网盘 |
QiZhen-CaMA-13B-Checkpoint-6000 | 740K | CaMA | 百度网盘 |
QiZhen-CaMA-13B-Checkpoint-12400 | 1038K | CaMA | 百度网盘 |
A Quick Start
QiZhen-Chinese-LLaMA-7B
- 环境安装;
pip install -r requirements.txt
-
获取Chinese-LLaMA-Plus-7B,详情见这里;
-
下载LoRA,将模型下载并放在lora目录下;
-
执行scripts/merge_llama_plus.sh 脚本;
sh scripts/merge_llama_plus.sh
- 修改
gradio_chinese-llama_demo.py
里的模型位置参数; - 启动demo;
python gradio_chinese-llama_demo.py
QiZhen-ChatGLM-6B
- 环境安装;
pip install -r requirements.txt
-
获取ChatGLM-6B,详情见这里;
-
下载LoRA,将模型下载并放在lora目录下;
-
修改
gradio_chatglm_demo.py
里的模型位置参数; -
启动demo;
python gradio_chatglm_demo.py
QiZhen-CaMA-13B-Checkpoint-3600
- 环境安装;
pip install -r requirements.txt
-
获取CaMA,详情见这里;
-
下载LoRA,将模型下载并放在lora目录下;
-
修改
gradio_cama_demo.py
里的模型位置参数; -
启动demo;
python gradio_cama_demo.py
预研
启真医学大模型坚持“数据+知识双轮驱动”的技术路线,通过大模型技术和医学知识库的紧密结合,融合医疗应用场景中的实际需求,从医学数据治理、医学推理、医患问答、病历自动生成、临床决策辅助支持系统等方面开展迭代研发,助力大模型技术在医疗行业的落地和应用实践。下图是“启真医学知识库辅助大模型生成答案”的案例,该项技术在测试后择机发布。
模型效果对比
测试1
- input:非布司他能治疗什么疾病
- ChatGLM:非布司他是一种用于治疗哮喘的新药,属于β2受体激动剂。它已经被批准用于治疗以下疾病: 1. 哮喘:非布司他是一种β2受体激动剂,可以刺激β2受体,从而缓解哮喘症状,包括呼吸困难、气促和胸闷。 2. 慢阻肺:非布司他也可以用于缓解慢阻肺引起的症状,包括呼吸急促、气促和咳嗽。 3. 过敏性鼻炎:非布司他可以减轻过敏性鼻炎引起的症状,包括鼻塞、流涕和打喷嚏。 4. 其他疾病:非布司他也被用于治疗其他疾病,如胡萝卜素血症和皮肤划痕症等。 需要注意的是,非布司他是一种药物,其治疗效果和安全性因人而异,最好在医生的指导下使用。