Me LLaMA は、基礎モデル Me LLaMA 13B/70B とそのチャット強化バージョンである Me LLaMA 13B-chat/70B-chat を含む、オープンソースの医療大規模言語モデル (LLM) の画期的なスイートを導入します。 LLaMA2 の革新的な継続的な事前トレーニングと指導調整を通じて開発されたこれらのモデルは、膨大な医療コーパスを活用しています。このコーパスには、厳選された PubMed 論文と抄録、国際的に認められた医療ガイドラインの新しいデータセット、および一般ドメイン コーパスが含まれており、Me LLaMA を医療 AI 研究の最前線に位置づけています。
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 モデルは 3 エポックで 8 つの H100 GPU を使用し、1e-5 の学習率を採用して命令チューニングを受けました。このフェーズでは、パフォーマンスを向上させるために LoRA ベースのパラメーター効率の高い微調整を利用して、指示に従い、医療タスク全体に汎用化するモデルの能力を洗練することに焦点を当てました。
この詳細なトレーニング手順は、高度な計算リソースと方法論を活用して医療分野で最先端のパフォーマンスを達成する、Me LLaMA モデルの開発に採用された包括的なアプローチを強調しています。
Me LLaMA モデルをローカルで利用するには、まず PhysioNet プロジェクトから必要なモデル ファイルを取得します。
まず、 torch
とtransformers
ライブラリの両方が Python 環境にインストールされていることを確認します。これらのライブラリは、モデルを操作するために必要です。
基本的なテキスト生成には、 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
引数は、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: 医療アプリケーションのための財団大規模言語モデル}, author={Qianqian Xie、Qingyu Chen、Aokun Chen、Cheng Peng、Yan Hu、Fongci Lin、Xueqing Peng、Jimin Huang、Jeffrey Zhang、Vipina Keloth、Huan He、Lucila Ohno-Machido、Yonghui Wu、Hua Xu、Jiang Bian} 、 年={2024}、 eprint={2402.12749}、 archivePrefix={arXiv}、 プライマリクラス={cs.CL} }