🚀 WiNGPT2
WiNGPT 是一個基於GPT的醫療垂直領域大模型,旨在將專業的醫學知識、醫療信息、數據融會貫通,為醫療行業提供智能化的醫療問答、診斷支持和醫學知識等信息服務,提高診療效率和醫療服務質量。
🚀 快速開始
推理
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, '')
提示
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]
企業服務
13B模型平臺測試(直接申請密鑰)
✨ 主要特性
核心功能
- 醫學知識問答:可以回答關於醫學、健康、疾病等方面的問題,包括但不限於症狀、治療、藥物、預防、檢查等。
- 自然語言理解:理解醫學術語、病歷等醫療文本信息,提供關鍵信息抽取和歸類
- 多輪對話:可扮演各種醫療專業角色如醫生與用戶進行對話,根據上下文提供更加準確的答案。
- 多任務支持:支持32項醫療任務,八大醫療場景18個子場景。
模型架構
基於Transformer的70億/140億參數規模大語言模型, 採用RoPE相對位置編碼、SwiGLU激活函數、RMSNorm,訓練採用Qwen-7b1作為基礎預訓練模型。
主要特點
- 高準確度:基於大規模醫療語料庫訓練,具有較高的準確率和較低的誤診可能性。
- 場景導向:針對不同的醫療場景和真實需求進行專門優化和定製,更好的服務應用落地。
- 迭代優化:持續蒐集和學習最新的醫學研究,不斷提高模型性能和系統功能。
📚 詳細文檔
介紹
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/14B版本。我們的初衷是希望通過更多的開源項目加速醫療語言大模型技術與行業的共同發展,最終惠及我們人類健康。
訓練數據
數據總覽
-
醫療專業數據
| 來源 | 類型 | 數量 |
| ---------------- | ------ | ------------------- |
| 藥品說明書 | 知識庫 | 15000 條 |
| 多病種知識庫 | 知識庫 | 9720 項 |
| 醫療專業書籍 | 教材 | 300 本 |
| 臨床路徑知識庫 | 知識庫 | 1400 條 |
| 檢查檢驗知識 | 知識庫 | 110 萬條 |
| 多學科臨床指南 | 書籍 | 18 個科室共 1100 份 |
| 醫療知識圖譜 | 知識庫 | 256 萬三元組 |
| 人工標註數據集 | 指令 | 5 萬條 |
| 醫學資格考試試題 | 試題 | 30 萬條 |
| 醫療病例、報告 | 知識庫 | 100 萬條 |
-
其他公開數據
| 來源 | 類型 | 數量 |
| -------------------- | ------ | -------- |
| 醫學科普書籍 | 書籍 | 500 本 |
| 其他多學科書籍 | 書籍 | 1000 本 |
| 代碼 | 指令 | 20 萬條 |
| 通用類試題 | 試題 | 300 萬條 |
| 多種自然語言處理任務 | 指令 | 90 萬條 |
| 互聯網文本 | 互聯網 | 300 萬條 |
| 醫療問答、對話 | 指令 | 500 萬條 |
繼續預訓練
擴充模型的醫療知識庫:預訓練數據+部分指令數據。
指令微調
- 從書籍、指南、病例、醫療報告、知識圖譜等數據中自動化構建醫療指令集。
- 人工標註指令集,數據來源包括:電子病歷系統、護理病歷系統、PACS系統、臨床科研系統、手術管理系統、公共衛生場景、醫務管理場景以及工具助手場景。
- 採用 FastChat2、Self-Instruct3、Evol-Instruct4 等方案,對指令集進行擴展以及豐富指令集多樣化形式。
數據工程
- 數據分類:根據訓練階段和任務場景進行分類。
- 數據清洗:去除無關信息,更正數據中的拼寫錯誤,提取關鍵信息以及去隱私處理。
- 數據去重:採用 embedding 方法剔除重複數據。
- 數據採樣:根據數據集的質量與分佈需求進行有針對性的採樣。
模型卡
訓練配置與參數
名稱 |
長度 |
精度 |
學習率 |
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 |
分佈式訓練策略與參數
- deepspeed + cpu_offload + zero_stage3
- gradient_checkpointing
評測
中文基礎模型評估 C-EVAL(Zero-shot/Few-shot)
中文醫療專業評估 MedQA-MCMLE(Zero-shot)
** 目前公開測評存在一定侷限性,結果僅供參考;
** 更多專業測評敬請期待。
侷限性與免責聲明
(a) WiNGPT2 是一個專業醫療領域的大語言模型,可為一般用戶提供擬人化AI醫生問診和問答功能,以及一般醫學領域的知識問答。對於專業醫療人士,WiNGPT2 提供關於患者病情的診斷、用藥和健康建議等方面的回答的建議僅供參考。
(b) 您應理解 WiNGPT2 僅提供信息和建議,不能替代醫療專業人士的意見、診斷或治療建議。在使用 WiNGPT2 的信息之前,請尋求醫生或其他醫療專業人員的建議,並獨立評估所提供的信息。
(c) WiNGPT2 的信息可能存在錯誤或不準確。衛寧健康不對 WiNGPT2 的準確性、可靠性、完整性、質量、安全性、及時性、性能或適用性提供任何明示或暗示的保證。使用 WiNGPT2 所產生的結果和決策由您自行承擔。第三方原因而給您造成的損害結果承擔責任。
📄 許可證
-
本項目授權協議為 Apache License 2.0,模型權重需要遵守基礎模型Qwen-7B相關協議及許可證,詳細內容參照其網站。
-
使用本項目包括模型權重時請引用本項目:https://github.com/winninghealth/WiNGPT2
🔗 參考資料
- https://github.com/QwenLM/Qwen-7B
- https://github.com/lm-sys/FastChat
- https://github.com/yizhongw/self-instruct
- https://github.com/nlpxucan/evol-instruct
📞 聯繫我們
- 網站:https://www.winning.com.cn
- 郵箱:wair@winning.com.cn