模型概述
模型特點
模型能力
使用案例
🚀 狐獴-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
。



