WiNGPT 是一个基于GPT的医疗垂直领域大模型,旨在将专业的医学知识、医疗信息、数据融会贯通,为医疗行业提供智能化的医疗问答、诊断支持和医学知识等信息服务,提高诊疗效率和医疗服务质量。
WiNGPT(卫宁健康医疗语言大模型,以下简称WiNGPT)的研发和训练工作开始于2023年1月。
3月,卫宁健康人工智能实验室已完成了WiNGPT-001可行性验证并开始内测。WiNGPT-001采用通用的GPT架构、60亿参数,实现了从预训练到微调的全过程自研。
今年5月,WiNGPT-001训练的数据量已达到9720项药品知识、 18个药品类型、7200余项疾病知识、 2800余项检查检验知识、53本书籍知识、1100余份指南文档,总训练Token数达37亿。
7月,WiNGPT升级到7B并采用最新的模型架构,新增检索式增强生成能力,同时开始了13B模型的训练和行业邀测。
9月,WiNGPT迎来最新版本迭代,推出了全新的WiNGPT2,新版本可以被轻松扩展和个性化并用于下游各种应用场景。
为了回馈开源社区我们尝试开源了WiNGPT2-7B版本。我们的初衷是希望通过更多的开源项目加速医疗语言大模型技术与行业的共同发展,最终惠及我们人类健康。
核心功能
模型架构
主要特点
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
model_path = "WiNGPT2-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
model = model.eval()
generation_config = GenerationConfig(
num_beams=1,
top_p=0.75,
top_k=30,
repetition_penalty=1.1,
max_new_tokens=1024
)
text = 'User: WiNGPT, 你好<|endoftext|>\n Assistant: '
inputs = tokenizer.encode(text, return_tensors="pt").to(device)
outputs = model.generate(inputs, generation_config=generation_config)
output = tokenizer.decode(outputs[0])
response = output.replace(inputs, '')
## 输出结果:你好!今天我能为你做些什么?<|endoftext|>
WiNGPT2-7B-Chat使用了自定义的提示格式:
用户角色:User/Assistant
提示模板:User:[此处有空格]WiNGPT, 你好<|endoftext|>\n[此处有空格]Assistant:;多轮对话按此模板进行拼接,例如:
"User: WiNGPT, 你好<|endoftext|>\n Assistant:你好!今天我能为你做些什么?<|endoftext|>\n User: 你是谁?<|endoftext|>\n Assistant:"
解码时推荐使用repetition_penalty=1.1 [greedy search]
数据总览
医疗专业数据
| 来源 | 类型 | 数量 |
|---|---|---|
| 药品说明书 | 知识库 | 15000 条 |
| 多病种知识库 | 知识库 | 9720 项 |
| 医疗专业书籍 | 教材 | 300 本 |
| 临床路径知识库 | 知识库 | 1400 条 |
| 检查检验知识 | 知识库 | 110 万条 |
| 多学科临床指南 | 书籍 | 18 个科室共 1100 份 |
| 医疗知识图谱 | 知识库 | 256 万三元组 |
| 人工标注数据集 | 指令 | 5 万条 |
| 医学资格考试试题 | 试题 | 30 万条 |
| 医疗病例、报告 | 知识库 | 100 万条 |
其他公开数据
| 来源 | 类型 | 数量 |
|---|---|---|
| 医学科普书籍 | 书籍 | 500 本 |
| 其他多学科书籍 | 书籍 | 1000 本 |
| 代码 | 指令 | 20 万条 |
| 通用类试题 | 试题 | 300 万条 |
| 多种自然语言处理任务 | 指令 | 90 万条 |
| 互联网文本 | 互联网 | 300 万条 |
| 医疗问答、对话 | 指令 | 500 万条 |
继续预训练
指令微调
数据工程
训练配置与参数
| 名称 | 长度 | 精度 | 学习率 | Weight_decay | Epochs | GPUs |
|---|---|---|---|---|---|---|
| WiNGPT2-7B-Base | 2048 | bf16 | 5e-5 | 0.05 | 3 | A100*8 |
| WiNGPT2-7B-Chat | 4096 | bf16 | 5e-6 | 0.01 | 3 | A100*8 |
分布式训练策略与参数
| 平均 | 平均(Hard) | STEM | 社会科学 | 人文科学 | 其他 | |
|---|---|---|---|---|---|---|
| bloomz-mt-176B | 44.3 | 30.8 | 39 | 53 | 47.7 | 42.7 |
| Chinese LLaMA-13B | 33.3 | 27.3 | 31.6 | 37.2 | 33.6 | 32.8 |
| ChatGLM-6B* | 38.9 | 29.2 | 33.3 | 48.3 | 41.3 | 38 |
| baichuan-7B | 42.8 | 31.5 | 38.2 | 52 | 46.2 | 39.3 |
| Baichuan-13B | 53.6 | 36.7 | 47 | 66.8 | 57.3 | 49.8 |
| Qwen-7B | 59.6 | 41 | 52.8 | 74.1 | 63.1 | 55.2 |
| WiNGPT2-7B-Base | 57.4 | 42.7 | 53.2 | 69.7 | 55.7 | 55.4 |
| 模型名称 | 平均 | 血液系统疾病 | 代谢、内分泌系统疾病 | 精神神经系统疾病 | 运动系统疾病 | 风湿免疫性疾病 | 儿科疾病 | 传染病、性传播疾病 | 其他疾病 |
|---|---|---|---|---|---|---|---|---|---|
| Baichuan-7B | 23.1 | 25.6 | 20.2 | 25.8 | 17.9 | 26.5 | 20.6 | 26.1 | 17.1 |
| Baichuan-13B-Base | 37.2 | 34.4 | 36.2 | 40.7 | 38.4 | 57.1 | 31.6 | 30.8 | 34.3 |
| Baichuan2-7B-Base | 46.4 | 46.9 | 41.4 | 53.8 | 48.3 | 50.0 | 38.6 | 52.7 | 42.9 |
| Baichuan2-13B-Base | 62.9 | 68.8 | 64.4 | 69.7 | 64.9 | 60.3 | 50.9 | 61.2 | 62.9 |
| HuatuoGPT-7B | 22.9 | 14.6 | 17.2 | 31.2 | 25.8 | 14.3 | 22.4 | 23.1 | 17.1 |
| MedicalGPT | 17.9 | 21.9 | 15.5 | 19.5 | 9.3 | 7.1 | 16.7 | 20.9 | 9.5 |
| qwen-7b-Base | 59.3 | 55.2 | 56.9 | 57.0 | 60.9 | 60.3 | 50.4 | 60.4 | 61.0 |
| WiNGPT2-7B-Base | 82.3 | 83.3 | 82.8 | 86.0 | 81.5 | 85.7 | 75.1 | 78.0 | 80 |
** 目前公开测评存在一定局限性,结果仅供参考; ** 更多专业测评敬请期待。
(a) WiNGPT2 是一个专业医疗领域的大语言模型,可为一般用户提供拟人化AI医生问诊和问答功能,以及一般医学领域的知识问答。对于专业医疗人士,WiNGPT2 提供关于患者病情的诊断、用药和健康建议等方面的回答的建议仅供参考。
(b) 您应理解 WiNGPT2 仅提供信息和建议,不能替代医疗专业人士的意见、诊断或治疗建议。在使用 WiNGPT2 的信息之前,请寻求医生或其他医疗专业人员的建议,并独立评估所提供的信息。
(c) WiNGPT2 的信息可能存在错误或不准确。卫宁健康不对 WiNGPT2 的准确性、可靠性、完整性、质量、安全性、及时性、性能或适用性提供任何明示或暗示的保证。使用 WiNGPT2 所产生的结果和决策由您自行承担。第三方原因而给您造成的损害结果承担责任。
本项目授权协议为 Apache License 2.0,模型权重需要遵守基础模型Qwen-7B相关协议及许可证,详细内容参照其网站。
使用本项目包括模型权重时请引用本项目:https://github.com/winninghealth/WiNGPT2
4 commits
1 commits
WiNGPT 是一个基于GPT的医疗垂直领域大模型,旨在将专业的医学知识、医疗信息、数据融会贯通,为医疗行业提供智能化的医疗问答、诊断支持和医学知识等信息服务,提高诊疗效率和医疗服务质量。
WiNGPT(卫宁健康医疗语言大模型,以下简称WiNGPT)的研发和训练工作开始于2023年1月。
3月,卫宁健康人工智能实验室已完成了WiNGPT-001可行性验证并开始内测。WiNGPT-001采用通用的GPT架构、60亿参数,实现了从预训练到微调的全过程自研。
今年5月,WiNGPT-001训练的数据量已达到9720项药品知识、 18个药品类型、7200余项疾病知识、 2800余项检查检验知识、53本书籍知识、1100余份指南文档,总训练Token数达37亿。
7月,WiNGPT升级到7B并采用最新的模型架构,新增检索式增强生成能力,同时开始了13B模型的训练和行业邀测。
9月,WiNGPT迎来最新版本迭代,推出了全新的WiNGPT2,新版本可以被轻松扩展和个性化并用于下游各种应用场景。
为了回馈开源社区我们尝试开源了WiNGPT2-7B版本。我们的初衷是希望通过更多的开源项目加速医疗语言大模型技术与行业的共同发展,最终惠及我们人类健康。
核心功能
模型架构
主要特点
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
model_path = "WiNGPT2-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
model = model.eval()
generation_config = GenerationConfig(
num_beams=1,
top_p=0.75,
top_k=30,
repetition_penalty=1.1,
max_new_tokens=1024
)
text = 'User: WiNGPT, 你好<|endoftext|>\n Assistant: '
inputs = tokenizer.encode(text, return_tensors="pt").to(device)
outputs = model.generate(inputs, generation_config=generation_config)
output = tokenizer.decode(outputs[0])
response = output.replace(inputs, '')
## 输出结果:你好!今天我能为你做些什么?<|endoftext|>
WiNGPT2-7B-Chat使用了自定义的提示格式:
用户角色:User/Assistant
提示模板:User:[此处有空格]WiNGPT, 你好<|endoftext|>\n[此处有空格]Assistant:;多轮对话按此模板进行拼接,例如:
"User: WiNGPT, 你好<|endoftext|>\n Assistant:你好!今天我能为你做些什么?<|endoftext|>\n User: 你是谁?<|endoftext|>\n Assistant:"
解码时推荐使用repetition_penalty=1.1 [greedy search]
数据总览
医疗专业数据
| 来源 | 类型 | 数量 |
|---|---|---|
| 药品说明书 | 知识库 | 15000 条 |
| 多病种知识库 | 知识库 | 9720 项 |
| 医疗专业书籍 | 教材 | 300 本 |
| 临床路径知识库 | 知识库 | 1400 条 |
| 检查检验知识 | 知识库 | 110 万条 |
| 多学科临床指南 | 书籍 | 18 个科室共 1100 份 |
| 医疗知识图谱 | 知识库 | 256 万三元组 |
| 人工标注数据集 | 指令 | 5 万条 |
| 医学资格考试试题 | 试题 | 30 万条 |
| 医疗病例、报告 | 知识库 | 100 万条 |
其他公开数据
| 来源 | 类型 | 数量 |
|---|---|---|
| 医学科普书籍 | 书籍 | 500 本 |
| 其他多学科书籍 | 书籍 | 1000 本 |
| 代码 | 指令 | 20 万条 |
| 通用类试题 | 试题 | 300 万条 |
| 多种自然语言处理任务 | 指令 | 90 万条 |
| 互联网文本 | 互联网 | 300 万条 |
| 医疗问答、对话 | 指令 | 500 万条 |
继续预训练
指令微调
数据工程
训练配置与参数
| 名称 | 长度 | 精度 | 学习率 | Weight_decay | Epochs | GPUs |
|---|---|---|---|---|---|---|
| WiNGPT2-7B-Base | 2048 | bf16 | 5e-5 | 0.05 | 3 | A100*8 |
| WiNGPT2-7B-Chat | 4096 | bf16 | 5e-6 | 0.01 | 3 | A100*8 |
分布式训练策略与参数
| 平均 | 平均(Hard) | STEM | 社会科学 | 人文科学 | 其他 | |
|---|---|---|---|---|---|---|
| bloomz-mt-176B | 44.3 | 30.8 | 39 | 53 | 47.7 | 42.7 |
| Chinese LLaMA-13B | 33.3 | 27.3 | 31.6 | 37.2 | 33.6 | 32.8 |
| ChatGLM-6B* | 38.9 | 29.2 | 33.3 | 48.3 | 41.3 | 38 |
| baichuan-7B | 42.8 | 31.5 | 38.2 | 52 | 46.2 | 39.3 |
| Baichuan-13B | 53.6 | 36.7 | 47 | 66.8 | 57.3 | 49.8 |
| Qwen-7B | 59.6 | 41 | 52.8 | 74.1 | 63.1 | 55.2 |
| WiNGPT2-7B-Base | 57.4 | 42.7 | 53.2 | 69.7 | 55.7 | 55.4 |
| 模型名称 | 平均 | 血液系统疾病 | 代谢、内分泌系统疾病 | 精神神经系统疾病 | 运动系统疾病 | 风湿免疫性疾病 | 儿科疾病 | 传染病、性传播疾病 | 其他疾病 |
|---|---|---|---|---|---|---|---|---|---|
| Baichuan-7B | 23.1 | 25.6 | 20.2 | 25.8 | 17.9 | 26.5 | 20.6 | 26.1 | 17.1 |
| Baichuan-13B-Base | 37.2 | 34.4 | 36.2 | 40.7 | 38.4 | 57.1 | 31.6 | 30.8 | 34.3 |
| Baichuan2-7B-Base | 46.4 | 46.9 | 41.4 | 53.8 | 48.3 | 50.0 | 38.6 | 52.7 | 42.9 |
| Baichuan2-13B-Base | 62.9 | 68.8 | 64.4 | 69.7 | 64.9 | 60.3 | 50.9 | 61.2 | 62.9 |
| HuatuoGPT-7B | 22.9 | 14.6 | 17.2 | 31.2 | 25.8 | 14.3 | 22.4 | 23.1 | 17.1 |
| MedicalGPT | 17.9 | 21.9 | 15.5 | 19.5 | 9.3 | 7.1 | 16.7 | 20.9 | 9.5 |
| qwen-7b-Base | 59.3 | 55.2 | 56.9 | 57.0 | 60.9 | 60.3 | 50.4 | 60.4 | 61.0 |
| WiNGPT2-7B-Base | 82.3 | 83.3 | 82.8 | 86.0 | 81.5 | 85.7 | 75.1 | 78.0 | 80 |
** 目前公开测评存在一定局限性,结果仅供参考; ** 更多专业测评敬请期待。
(a) WiNGPT2 是一个专业医疗领域的大语言模型,可为一般用户提供拟人化AI医生问诊和问答功能,以及一般医学领域的知识问答。对于专业医疗人士,WiNGPT2 提供关于患者病情的诊断、用药和健康建议等方面的回答的建议仅供参考。
(b) 您应理解 WiNGPT2 仅提供信息和建议,不能替代医疗专业人士的意见、诊断或治疗建议。在使用 WiNGPT2 的信息之前,请寻求医生或其他医疗专业人员的建议,并独立评估所提供的信息。
(c) WiNGPT2 的信息可能存在错误或不准确。卫宁健康不对 WiNGPT2 的准确性、可靠性、完整性、质量、安全性、及时性、性能或适用性提供任何明示或暗示的保证。使用 WiNGPT2 所产生的结果和决策由您自行承担。第三方原因而给您造成的损害结果承担责任。
本项目授权协议为 Apache License 2.0,模型权重需要遵守基础模型Qwen-7B相关协议及许可证,详细内容参照其网站。
使用本项目包括模型权重时请引用本项目:https://github.com/winninghealth/WiNGPT2
4 commits
1 commits