本項目開源了經過中文醫學指令精調/指令微調(Instruct-tuning) 的ChatGLM-6B模型。我們通過醫學知識圖譜和GPT3.5 API構建了中文醫學指令數據集,並在此基礎上對ChatGLM-6B進行了指令微調,提高了ChatGLM在醫療領域的問答效果。
基於相同的數據,我們還訓練了醫療版本的LLaMA模型: 華駝
Update: 由於chatglm更新很快,推薦使用chatglm官方的微調方案:https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md
首先安裝依賴包,python環境建議3.9+
pip install -r requirements.txt
訓練好的模型參數可以通過如下方式下載:
| 模型名稱 | 大小 | 模型下載地址 |
|---|---|---|
| ChatGLM-6B-Med | 約13.4GB | [百度網盤] [GoogleDrive] |
在安裝好環境後,即可進行交互式測試:
python infer.py
我們採用了公開和自建的中文醫學知識庫,主要參考了cMeKG。 醫學知識庫圍繞疾病、藥物、檢查指標等構建,字段包括並發症,高危因素,組織學檢查,臨床症狀,藥物治療,輔助治療等。知識庫示例如下:
{"中心词": "偏头痛", "相关疾病": ["妊娠合并偏头痛", "恶寒发热"], "相关症状": ["皮肤变硬", "头部及眼后部疼痛并能听到连续不断的隆隆声", "晨起头痛加重"], "所属科室": ["中西医结合科", "内科"], "发病部位": ["头部"]}
我們利用GPT3.5接口圍繞醫學知識庫構建問答數據,設置了多種Prompt形式來充分利用知識。
指令微調的訓練集數據示例如下:
"问题:一位年轻男性长期使用可卡因,突然出现胸痛、呕吐、出汗等症状,经检查发现心电图反映心肌急性损伤,请问可能患的是什么疾病?治疗方式是什么?"
回答: 可能患的是心肌梗塞,需要进行维拉帕米、依普利酮、硝酸甘油、ß阻滞剂、吗啡等药物治疗,并进行溶栓治疗、低分子量肝素、钙通道阻滞剂等辅助治疗。此外需要及时停用可卡因等药物,以防止病情加重。"
指令微調數據集質量仍有限,後續將進行不斷迭代,同時醫學知識庫和數據集構建代碼還在整理中,整理完成將會發布。
請參照https://github.com/THUDM/ChatGLM-6B,並將下載的模型放入model目錄下。
sh scripts/sft_medchat.sh
請根據實際情況調整batch size等超參,默認為我們使用的參數。
如果想用自己的數據集繼續指令微調/指令精調(Instruct-tuning)ChatGLM,可以構建與data目錄中訓練集類似的文件格式進行。或參照ChatGLM-Instruct-Tuning倉庫。
我們在一張A100-SXM-80GB顯卡上進行了訓練,根據經驗,訓練顯存建議選擇32G及以上。
| 測試輸入 | ChatGLM-6B輸出 | ChatGLM-6B-Med輸出 |
|---|---|---|
| 谷氨酰轉肽酶水平會因吸毒或飲酒而升高嗎? | 吸毒和飲酒都會對身體的健康產生負面影響,包括對肝臟和心臟的影響。 飲酒可能導致肝臟損傷和心臟疾病,因為酒精會破壞肝臟和心臟的功能。長期飲酒還可能導致脂肪肝、肝硬化、心髒病等健康問題。 吸毒會對肝臟和心臟產生嚴重的損傷,導致肝臟纖維化、肝硬化、心臟血管疾病等。吸毒還可能導致精神障礙、社會退縮、暴力和犯罪等問題。 因此,無論是飲酒還是吸毒,都會對健康產生負面影響,應該避免過度使用。 | 谷氨酰轉肽酶升高的原因有很多,包括感染、消化性潰瘍、感染、藥物副作用等,而吸毒或飲酒等不良行為可能會導致谷氨酰轉肽酶的升高。 |
| 小李最近出現了心動過速的症狀,伴有輕度胸痛。體檢發現PR間期延長,伴有T波低平和ST段異常 | 非常抱歉,我不理解您的問題。請提供更多背景信息或上下文,以便我更好地回答您的問題。謝謝! | 小李出現了心動過速的症狀,並且伴有胸痛,需要考慮是否有心肌病、冠狀動脈粥樣硬化等心血管疾病,建議進行心電圖檢查、血液檢查、心臟超聲檢查等 |
| ...... | ...... | ...... |
Q: 報錯ValueError: 130001 is not in list / ValueError: 150001 is not in list
A: 由於相關依賴更新較快,版本的不同會導致一些bug
(1) 如果報錯為150001 is not in list,請將倉庫更新至最新版本
(2) 如果報錯為130001 is not in list,請將倉庫回退至commit為cb9d827的版本,鏈接為https://github.com/SCIR-HI/Med-ChatGLM/tree/cb9d82738021ec6f82b307d6031e8595a49dcb00
Q: 模型效果有限
A: 由於ChatGLM本身訓練策略沒有開源,本倉庫內提供的指令微調訓練方法可能會對ChatGLM的基礎能力帶來負面影響。出於版權等因素考慮,未來我們的模型迭代會側重開源模型。
本項目由哈爾濱工業大學社會計算與信息檢索研究中心健康智能組王昊淳、劉馳完成,指導教師為趙森棟副教授,秦兵教授以及劉挺教授。
本項目參考了以下開源項目,在此對相關項目和研究開發人員表示感謝。
本項目相關資源僅供學術研究之用,嚴禁用於商業用途。使用涉及第三方代碼的部分時,請嚴格遵循相應的開源協議。模型生成的內容受模型計算、隨機性和量化精度損失等因素影響,本項目無法對其準確性作出保證。本項目數據集絕大部分由模型生成,即使符合某些醫學事實,也不能被用作實際醫學診斷的依據。對於模型輸出的任何內容,本項目不承擔任何法律責任,亦不對因使用相關資源和輸出結果而可能產生的任何損失承擔責任。
如果你使用了本項目的數據或者代碼,請聲明引用
@misc{ChatGLM-Med,
author={Haochun Wang, Chi Liu, Sendong Zhao, Bing Qin, Ting Liu},
title = {ChatGLM-Med: 基于中文医学知识的ChatGLM模型微调},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/SCIR-HI/Med-ChatGLM}},
}