Me LLaMA 推出了一套突破性的開源醫學大語言模型 (LLM),包括基礎模型 Me LLaMA 13B/70B 及其聊天增強版本 Me LLaMA 13B-chat/70B-chat。這些模型透過 LLaMA2 創新的持續預訓練和指令調整而開發,利用了龐大的醫學語料庫。該語料庫包含精選的 PubMed 論文和摘要、國際公認的醫學指南的新穎數據集以及通用領域語料庫,使 Me LLaMA 處於醫學人工智慧研究的前沿。
憑藉其特定領域的進步,Me LLaMA 為廣泛的醫學推理任務樹立了新的基準。這使得 Me LLaMA 成為醫學 NLP 應用和研究的重要資產。
程式碼、資料集和模型可用於非商業用途。
本軟體和模型是「原樣」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。在任何情況下,作者、貢獻者或版權持有者均不對因本軟體或本軟體或本軟體或本軟體或本軟體而引起、或與之相關的任何索賠、損害或其他責任負責,無論是合約訴訟、侵權訴訟或其他訴訟。
Me LLaMA 模型是用於計算語言學和醫學領域的研究工具。未經適當的驗證和監管批准,它們不得用作診斷工具或用於臨床決策。 Me LLaMA 模型的使用者應了解自己的責任,以確保以合乎道德且適當的方式使用該技術,包括遵守任何適用的法律和監管要求。
模型提供的內容和數據不能取代醫療保健專業人員的專業知識。醫療保健專業人員應運用他們的專業判斷來評估 Me LLaMA 模型的輸出。在未諮詢合格的醫療保健提供者的情況下,患者不應使用模型輸出進行自我診斷或治療。這些資訊並非用於臨床決策,無意用於患者的診斷或治療,並且可能對任何臨床目的沒有用處或不合適。
此外,未經作者明確許可,明確禁止使用者分享或重新分發 Me LLaMA 模型產生的任何輸出。這包括但不限於以任何形式發布、分發或將產生的輸出提供給第三方,無論是否用於商業目的。制定此限制是為了確保負責任地使用該技術並尊重與模型及其輸出相關的智慧財產權。違反這些條款可能會導致法律訴訟並撤銷對模型的存取權。
Me LLaMA 的開發涉及 LLaMA2 模型的持續預訓練和指令調整的細緻過程,包含來自各種普通、生物醫學和臨床領域的廣泛 129B 令牌和 214K 指令調整樣本。這種綜合方法旨在平衡特定領域的知識與對一般背景的更廣泛的理解,從而有效地減輕災難性遺忘問題。
混合連續預訓練資料集包含 129B 個標記,包括廣泛的生物醫學文獻、臨床記錄和一般領域資料。此資料集旨在確保深度關注醫學領域知識,同時融入廣泛的常識。此資料集的組成包括:
預訓練對生物醫學、臨床和一般領域數據採用了 15:1:4 的比例,旨在保持對醫學的強烈關注,同時拓寬模型的理解。
Me LLaMA 模型 13B 和 70B 是在配備 160 個 A100 80GB GPU 的佛羅裡達大學 HiPerGator 超級電腦上透過持續預訓練和指令調整而開發的。該過程旨在調整 LLaMA2 模型,以增強對醫學相關文本的理解和生成。訓練方案涉及:
在預訓練階段之後,Me LLaMA 模型使用 8 個 H100 GPU 進行了 3 個週期的指令調優,學習率為 1e-5。此階段的重點在於完善模型遵循指令和泛化醫療任務的能力,利用基於 LoRA 的參數高效微調來增強效能。
這個詳細的訓練程序強調了開發 Me LLaMA 模型時所採用的綜合方法,利用先進的計算資源和方法來實現醫療領域最先進的性能。
要在本地使用 Me LLaMA 模型,請先從我們的 PhysioNet 專案取得必要的模型檔案。
首先,請確保您的 Python 環境中安裝了torch
和transformers
庫。使用模型需要這些函式庫。
對於基本文字生成,您將使用transformers
庫中的管道。此方法簡化了生成文字的過程。設定方法如下:
from transformers import pipeline
# Ensure you replace "FOLDER_PATH_TO_MODEL" with the actual path to your model files.
pipe = pipeline ( "text-generation" , model = "FOLDER_PATH_TO_MODEL" )
# Example usage for generating text.
generated_text = pipe ( "The medical condition is characterized by" , num_return_sequences = 1 )
print ( generated_text )
此程式碼片段示範如何根據提示產生文字。 num_return_sequences=1
參數指定您要產生一個文字序列。
對於需要更多自訂或微調功能的任務,您可能更喜歡直接載入分詞器和模型。這種方法使您可以更好地控製文字生成過程,讓您可以調整生成文字的最大長度等參數。這是一個更詳細的範例:
from transformers import AutoTokenizer , AutoModelForCausalLM
# Load the tokenizer and model from your local model directory.
# Don't forget to replace "FOLDER_PATH_TO_MODEL" with the actual path to your model files.
tokenizer = AutoTokenizer . from_pretrained ( "FOLDER_PATH_TO_MODEL" )
model = AutoModelForCausalLM . from_pretrained ( "FOLDER_PATH_TO_MODEL" )
# Tokenizing input text for the model.
input_ids = tokenizer ( "[INPUT SENTENCE]" , return_tensors = "pt" ). input_ids
# Generating output based on the input_ids.
# You can adjust the max_length parameter as necessary for your use case.
generated_tokens = model . generate ( input_ids , max_length = 50 )
# Decoding the generated tokens to produce readable text.
generated_text = tokenizer . decode ( generated_tokens [ 0 ], skip_special_tokens = True )
print ( generated_text )
此設定允許與模型進行更細緻的交互,例如對特定資料集進行微調或修改不同輸出的生成參數。請記住將“[INPUT SENTENCE]”替換為您希望模型擴展或回應的句子或提示。
git clone [email protected]:BIDS-Xu-Lab/Me-LLaMA.git --recursive
cd Me-LLaMA
pip install poetry
poetry install
cd src/medical-evaluation
poetry run pip install -e .[multilingual]
poetry run python -m spacy download en_core_web_lg
在評估之前,請將 BART 檢查點下載到src/metrics/BARTScore/bart_score.pth
。
對於自動評估,請遵循以下說明:
抱臉變壓器
若要評估 HuggingFace Hub 上託管的模型(例如 llama2-7b-hf),請在scripts/run_evaluation.sh
中變更此指令:
poetry run python src/eval.py
--model " hf-causal-vllm "
--model_args " use_accelerate=True,pretrained=meta-llama/Llama-2-7b-chat-hf,use_fast=False "
--tasks " PUBMEDQA,MedQA,MedMCQA,EmrQA,i2b2,DDI2013,hoc,MTSample,PUBMEDSUM,MimicSum,BioNLI,MedNLI "
然後運行bash命令:
bash scripts/run_evaluation.sh
更多詳細資訊可以在 lm_eval 文件中找到。
執行與開源模型相同的步驟,首先使用以下命令更改 bash 檔案:
export OPENAI_API_SECRET_KEY=YOUR_KEY_HERE
poetry run python src/eval.py
--model gpt-4
--tasks " PUBMEDQA,MedQA,MedMCQA,EmrQA,i2b2,DDI2013,hoc,MTSample,PUBMEDSUM,MimicSum,BioNLI,MedNLI "
請注意,對於 NER 等任務,自動評估是基於特定模式的。這可能無法在零樣本設定中提取相關信息,從而導致與先前的人工註釋結果相比性能相對較低。
@misc{xie2024llama, title={Me LLaMA:醫療應用的基礎大型語言模型}, 作者={謝倩倩、陳慶宇、陳奧坤、彭程、胡彥、林鳳慈、彭學清、黃濟民、張杰弗裡、Vipina Keloth、何歡、Lucila Ohno-Machido、吳永輝、徐華、邊江} , 年={2024}, eprint={2402.12749}, archivePrefix={arXiv}, PrimaryClass={cs.CL} }