模型简介
模型特点
模型能力
使用案例
🚀 狐獴-7B(版本1.0)
狐獴-7B v1.0是一个经过指令微调的医疗人工智能系统,在所有70亿参数模型中,首次超越了美国执业医师考试(USMLE)60%的及格线。该模型使用了我们新的合成数据集进行训练,该数据集包含从18本医学教科书中提取的高质量思维链推理路径,以及各种遵循指令的数据集。这使得模型具备解决复杂医学问题所需的高级医学推理能力。如需深入了解我们的模型,请参阅我们的论文!
🚀 快速开始
输入查询时,应始终以“ASSISTANT:”结尾,如下所示:
query = "USER: 我感冒了该怎么办?ASSISTANT:"
我们可以使用 apply_chat_template 函数来使用我们的模型,如下所示:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # cuda 或 cpu
checkpoint = "dmis-lab/meerkat-7b-v1.0"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(
checkpoint,
torch_dtype=torch.bfloat16, # 当GPU内存不足时可以选择使用。
)
# 多轮对话示例
messages = [
{"role": "system", "content": "你是一位乐于助人的医生或医疗专业人员。引导对话,为用户的问题提供有用、完整且有科学依据的答案。如果用户的输入全面,足以提供准确答案,你可以选择进行简洁的单轮对话。然而,如果缺少必要细节,你应该进行多轮对话,提出后续问题以收集全面的病史和记录。\n\n"},
{"role": "user", "content": "你好,医生。我非常担心我10岁的儿子。我们最近发现他的左侧睾丸有一个无痛肿块,所以我们带他去看了儿科医生。"},
{"role": "assistant", "content": "我理解你的担忧。让我们收集更多信息。除了肿块,你的儿子还有其他症状吗?"},
{"role": "user", "content": "除了肿块,我儿子没有其他症状。他一切正常,照常玩耍和吃饭。"}
]
encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt")
model_inputs = encodeds.to(device)
model.to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True, pad_token_id=tokenizer.eos_token_id)
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # cuda 或 cpu
checkpoint = "dmis-lab/meerkat-7b-v1.0"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(
checkpoint,
torch_dtype=torch.bfloat16, # 当GPU内存不足时可以选择使用。
)
# 多轮对话示例
messages = [
{"role": "system", "content": "你是一位乐于助人的医生或医疗专业人员。引导对话,为用户的问题提供有用、完整且有科学依据的答案。如果用户的输入全面,足以提供准确答案,你可以选择进行简洁的单轮对话。然而,如果缺少必要细节,你应该进行多轮对话,提出后续问题以收集全面的病史和记录。\n\n"},
{"role": "user", "content": "你好,医生。我非常担心我10岁的儿子。我们最近发现他的左侧睾丸有一个无痛肿块,所以我们带他去看了儿科医生。"},
{"role": "assistant", "content": "我理解你的担忧。让我们收集更多信息。除了肿块,你的儿子还有其他症状吗?"},
{"role": "user", "content": "除了肿块,我儿子没有其他症状。他一切正常,照常玩耍和吃饭。"}
]
encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt")
model_inputs = encodeds.to(device)
model.to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True, pad_token_id=tokenizer.eos_token_id)
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
高级用法
# 可根据不同的医学场景,调整messages中的内容,以实现不同的对话功能。
# 例如,在处理不同类型的医学问题时,修改system的提示信息和user的问题内容。
📚 详细文档
提示详情
为了复现我们论文中报告的结果,建议使用模型训练期间使用的相同系统消息。请参考以下指南。
USMLE或临床案例
在解决USMLE风格的问题(如 MedQA 和 MedBullets)或处理复杂的临床案例(如 JAMA临床挑战)时,使用以下系统消息:
messages = [
{"role": "system", "content": "以下是一个关于医学知识的多项选择题。请逐步解决这个问题,首先总结可用信息。从给定选项中输出一个选项作为最终答案。强烈要求你遵循指定的输出格式;在回复结尾加上“the answer is ([选项ID]) [答案字符串]”。\n\n"},
{"role": "user", "content": "一名61岁男性在因不稳定型心绞痛接受紧急心脏导管插入术和支架置入术后两周,尿量减少且感到不适。他患有2型糖尿病和髋骨关节炎。入院前,他的药物治疗包括胰岛素和萘普生。冠状动脉介入治疗后,他还开始服用阿司匹林、氯吡格雷和美托洛尔。他的体温为38°C(100.4°F),脉搏为93次/分钟,血压为125/85 mmHg。检查发现双脚有斑驳的网状紫色变色。实验室检查显示:\n血红蛋白计数14 g/dL\n白细胞计数16,400/mm³\n中性粒细胞56%\n嗜酸性粒细胞11%\n淋巴细胞31%\n单核细胞2%\n血小板计数260,000/mm³\n红细胞沉降率68 mm/h\n血清\n尿素氮25 mg/dL\n肌酐4.2 mg/dL\n肾活检显示血管内纺锤形空泡。以下哪项是该患者症状的最可能原因?” (A) 肾乳头坏死 (B) 胆固醇栓塞 (C) 嗜酸性肉芽肿性多血管炎 (D) 结节性多动脉炎"},
]
模型会生成推理路径来解决问题,然后依次提供预测答案。由于模型的回复以“the answer is”结尾,因此可以轻松提取预测答案并与实际答案进行比较。
多项选择题考试
对于其他类型的多项选择题考试(如 MedMCQA 或 MMLU),使用以下简单的系统消息:
messages = [
{"role": "system", "content": "回答关于医学知识的多项选择题。\n\n"},
{"role": "user", "content": "在罗伯逊易位中,融合发生在:(A) 端粒。(B) 着丝粒。(C) 组蛋白。(D) 长臂末端。"},
]
其他用例
我们的模型使用了包含52000个示例的 AlpaCare 指令数据集进行训练,以增强其在各种用户提示下的泛化能力。你可以自由设计和测试你的提示,并与我们分享你的想法,无论模型表现超出预期还是未达预期!
🔧 技术细节
评估
我们在七个医学基准测试中对模型进行了测试:MedQA、USMLE样本测试、Medbullets-4、Medbullets-5、MedMCQA、MMLU-医学 和 JAMA临床挑战。
模型 | 平均得分 | MedQA | USMLE | Medbullets-4 | Medbullets-5 | MedMCQA | MMLU-医学 | JAMA |
---|---|---|---|---|---|---|---|---|
GPT-4 | 75.2 | 81.4 | 86.6 | 68.8 | 63.3 | 72.4 | 87.1 | 67.1 |
GPT-3.5 | 54.1 | 53.6 | 58.5 | 51.0 | 47.4 | 51.0 | 67.3 | 50.1 |
MediTron-70B(集成,5次运行) | - | 70.2 | - | - | - | 66.0 | 78.0 | - |
开源(7B) | ||||||||
MediTron-7B | 50.8 | 50.2 | 44.6 | 51.1 | 45.5 | 57.9 | 56.7 | 49.3 |
BioMistral-7B | 54.4 | 54.3 | 51.4 | 52.3 | 48.7 | 61.1 | 64.6 | 48.6 |
狐獴-7B | 62.4 | 70.6 | 70.3 | 58.7 | 52.9 | 60.6 | 70.5 | 53.1 |
狐獴-7B(集成,5次运行) | 64.2 | 74.3 | 71.4 | 61.0 | 55.3 | 60.7 | 72.4 | 54.0 |
请注意,MMLU-医学的分数是根据原始MMLU基准中六个医学相关科目的平均准确率计算得出的,每个单一科目的结果如下所示。
模型 | 平均得分 | 临床知识 | 医学遗传学 | 解剖学 | 专业医学 | 大学生物学 | 大学医学 |
---|---|---|---|---|---|---|---|
GPT-4 | 87.1 | 86.4 | 92.0 | 80.0 | 93.8 | 93.8 | 76.3 |
GPT-3.5 | 67.3 | 68.7 | 68.0 | 60.7 | 69.9 | 72.9 | 63.6 |
MediTron-70B(集成,5次运行) | 78.0 | 75.5 | 85.9 | 69.4 | 82.3 | 86.7 | 68.0 |
开源(7B) | |||||||
MediTron-7B | 56.7 | 57.7 | 63.8 | 56.9 | 56.0 | 57.1 | 48.9 |
BioMistral-7B | 64.6 | 59.9 | 64.0 | 56.5 | 60.4 | 59.0 | 54.7 |
狐獴-7B | 70.5 | 71.6 | 74.8 | 63.2 | 77.3 | 70.8 | 65.2 |
狐獴-7B(集成,5次运行) | 72.4 | 74.1 | 79.4 | 64.1 | 78.8 | 75.8 | 62.4 |
模型架构
我们的模型基于 Mistral-7B-v0.1 构建,因为它具有较高的准确性和运行效率。
训练数据
我们的数据可在 此仓库 中获取。
📄 许可证
本项目采用CC BY-NC 4.0许可证。
🔖 引用
请参考以下信息引用我们的论文:
@article{kim2025small,
title={Small language models learn enhanced reasoning skills from medical textbooks},
author={Kim, Hyunjae and Hwang, Hyeon and Lee, Jiwoo and Park, Sihyeon and Kim, Dain and Lee, Taewhoo and Yoon, Chanwoong and Sohn, Jiwoong and Park, Jungwoo and Reykhart, Olga and Fetherston, Thomas and Choi, Donghee and Kwak, Soo Heon and Chen, Qingyu and Kang, Jaewoo},
journal={npj Digital Medicine},
volume={8},
number={1},
pages={240},
year={2025},
publisher={Nature Publishing Group UK London}
}
📞 联系我们
如果您有任何问题,请随时发送电子邮件至 hyunjae-kim@korea.ac.kr
和 hyunjae.kim@yale.edu
。



