モデル概要
モデル特徴
モデル能力
使用事例
🚀 LLaVA-Med: VQA-Radでファインチューニングされたモデル
バイオメディカル分野において、GPT-4レベルの能力を持つ大規模言語とビジョンモデルを構築するためのビジュアル命令チューニング
[論文、NeurIPS 2023 Datasets and Benchmarks Track (Spotlight)] | [LLaVA-MedのGitHubリポジトリ]
Chunyuan Li*, Cliff Wong*, Sheng Zhang*, Naoto Usuyama, Haotian Liu, Jianwei Yang, Tristan Naumann, Hoifung Poon, Jianfeng Gao (*同等の貢献)
GLIGEN のgrounded inpaintingモードを使用して生成。3つのボックス: 白い医師服
, 聴診器
, 赤十字の印のある白い医師帽
.
LLaVA-Medは、一般ドメインのLLaVAで初期化され、その後カリキュラム学習方式で継続的に学習されます(まずはバイオメディカル概念のアライメント、その後フルスケールの命令チューニング)。我々は、標準的なビジュアル会話と質問応答タスクでLLaVA-Medを評価しました。
使用とライセンスに関する注意: データ、コード、およびモデルチェックポイントは、研究目的のみを意図し、その使用が許可されています。また、それぞれLLaMA、Vicuna、およびGPT-4の利用規約による追加の制限の対象となります。データはCC BY NC 4.0の下で提供されます。データ、コード、およびモデルチェックポイントは非商用目的で使用でき、このデータセットを使用して学習されたモデルは研究目的のみで使用する必要があります。このデータで学習されたモデルを臨床ケアや臨床決定の目的で使用することは明示的に禁止されています。
🚀 クイックスタート
このモデルは、バイオメディカル分野のビジュアル言語処理に特化した大規模言語とビジョンモデルです。以下の手順でインストールや使用が可能です。
✨ 主な機能
- バイオメディカル分野のビジュアル質問応答タスクに特化した学習
- 大規模な並列画像テキストデータセットを利用した学習
- カリキュラム学習方式による効率的な学習
📦 インストール
- LLaVA-MedのGitHubリポジトリをクローンし、LLaVA-Medフォルダに移動します。
https://github.com/microsoft/LLaVA-Med.git
cd LLaVA-Med
- パッケージをインストールし、conda環境を作成します。
conda create -n llava-med python=3.10 -y
conda activate llava-med
pip install --upgrade pip # PEP 660サポートを有効化
- トレーニングケース用の追加パッケージをインストールします。
pip uninstall torch torchvision -y
pip install torch==2.0.0+cu117 torchvision==0.15.1+cu117 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu117
pip install openai==0.27.8
pip uninstall transformers -y
pip install git+https://github.com/huggingface/transformers@cae78c46
pip install -e .
pip install einops ninja open-clip-torch
pip install flash-attn --no-build-isolation
💻 使用例
基本的な使用法
モデルの重みを取得する
モデルの重みはdelta重みです。LLaVA-Medのチェックポイントの使用は、ベースのLLMのモデルライセンス: LLaMAに準拠する必要があります。
- delta重みをダウンロードします。
- ここの手順に従って、huggingface形式の元のLLaMA重みを取得します。
- 以下のスクリプトを使用して、deltaを適用してLLaVA-Medの重みを取得します。以下のスクリプトでは、
--delta
引数を解凍したllava_med_in_text_60k_delta
ディレクトリのパスに設定します。--delta
引数を変更することで、他のdelta重みにも適用できます(必要に応じてbase/targetも変更します)。
python3 -m llava.model.apply_delta \
--base /path/to/llama-7b \
--target /output/path/to/llava_med_in_text_60k \
--delta path/to/llava_med_in_text_60k_delta
高度な使用法
評価
医療ビジュアルチャット(GPT支援評価)
マルチモーダルモデリングのためのGPT支援評価パイプラインを提供しています。詳細は論文を参照してください。
- LLaVA-Medの応答を生成します。
python model_vqa.py \
--model-name ./checkpoints/LLaVA-7B-v0 \
--question-file data/eval/llava_med_eval_qa50_qa.jsonl \
--image-folder data/images/ \
--answers-file /path/to/answer-file.jsonl
- 生成された応答を評価します。我々の場合、
llava_med_eval_qa50_qa.jsonl
には、質問、コンテキスト(キャプションとインラインメンション)、およびテキストのみのGPT-4 (0314)によって生成された応答が含まれており、これを正解として扱います。
python llava/eval/eval_multimodal_chat_gpt_score.py \
--question_input_path data/eval/llava_med_eval_qa50_qa.jsonl \
--input_path /path/to/answer-file.jsonl \
--output_path /path/to/save/gpt4-eval-for-individual-answers.jsonl
- 評価結果を要約します。
python summarize_gpt_review.py
医療VQA
我々の実験では、VQA-Rad、SLAKE、Pathology-VQAの3つの医療VQAデータセットを考慮しています。ここでは、VQA-Radを例に、LLaVA-Medが下流のシナリオにどのように適用されるかを説明します。
-
データの準備
- データセットのセットアップについては、VQA-Radのリポジトリを参照してください。
- LLaVA-Medの会話形式(命令チューニングと同じ形式)用にVQA-Radデータセットを生成します。各データセットは、
train.json
、test.json
、images
の3つのコンポーネントに処理されます。
-
ファインチューニング 下流のデータセットでより高い性能を達成するために、命令チューニングと同じ全モデルチューニングスクリプトを使用して、LLaVA-Medを継続的に学習させます。
下流のデータセットをファインチューニングする詳細なスクリプト: LLaVA-Med-7B、8x A100 (40G)。 時間: ~1時間。
torchrun --nnodes=1 --nproc_per_node=8 --master_port=25001 \
llava/train/train_mem.py \
--model_name_or_path /path/to/checkpoint_llava_med_instruct_60k_inline_mention \
--data_path /path/to/eval/vqa_rad/train.json \
--image_folder /path/to/eval/vqa_rad/images \
--vision_tower openai/clip-vit-large-patch14 \
--mm_vision_select_layer -2 \
--mm_use_im_start_end True \
--bf16 True \
--output_dir /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad \
--num_train_epochs 3 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 4 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 5000 \
--save_total_limit 3 \
--learning_rate 2e-5 \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--tf32 True \
--fsdp "full_shard auto_wrap" \
--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
--model_max_length 2048 \
--gradient_checkpointing True \
--lazy_preprocess True \
--report_to wandb
- 評価 評価で使用するチェックポイントに応じて、医療命令チューニング済みのチェックポイント(例: LLaVA-Med-7B)ではゼロショット性能が報告され、下流のデータセットのトレーニングセットでさらにチューニングされたチェックポイント(例: LLaVA-Med-7B-VQA-Rad)ではファインチューニング後の性能が報告されます。
(a) ScienceQAデータセットでLLaVAの応答を生成します。
- [オプション1] マルチGPU推論 複数のGPUを使用して評価することができ、生成されたjsonlファイルを結合します。バッチ評価のスクリプトを参照してください。
python llava/eval/run_med_datasets_eval_batch.py --num-chunks 8 --model-name /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad \
--question-file path/to/eval/vqa_rad/test.json \
--image-folder path/to/eval/vqa_rad/images \
--answers-file /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad/test-answer-file.jsonl
- [オプション2] シングルGPU推論
python llava/eval/model_vqa_med.py --model-name /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad \
--question-file path/to/eval/vqa_rad/test.json \
--image-folder path/to/eval/vqa_rad/images \
--answers-file /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad/test-answer-file.jsonl
(b) 生成された応答を評価します。
- [オプション1] 3つのVQAデータセットすべての評価
python llava/eval/run_eval_batch.py \
--pred_file_parent_path /path/to/llava-med \
--target_test_type test-answer-file
このスクリプトは、プロジェクトパス内のすべての予測ファイルのデコード結果を収集し、対応する評価指標を計算し、結果を"eval_results_med_datasets.jsonl
"に出力します。スコアを分析するために、ipythonノートブックrun_eval_metrics.ipynbを提供しています。
- [オプション2] 特定のVQAデータセットの評価
python llava/eval/run_eval.py \
--gt /path/to/eval/vqa_rad/test.json \
--pred /path/to/checkpoint_llava_med_instruct_60k_inline_mention/eval/fine_tuned/vqa_rad/test-answer-file.jsonl
LLaVA-Medの性能については、llava_med_performance.mdまたは論文を参照してください。
📚 ドキュメント
モデルの説明
大規模言語とビジョンアシスタントforバイオメディスン(すなわち、“LLaVA-Med”)は、LLaVAをバイオメディカルドメインに適応させるためにカリキュラム学習方法を使用して学習された大規模言語とビジョンモデルです。これは、対応する論文の再現性を促進するために研究目的のみで公開されたオープンソースのモデルで、オープンエンドのバイオメディカル質問応答タスク(PathVQAやVQA-RADなどの一般的なビジュアル質問応答(VQA)ベンチマークデータセットを含む)の性能向上を主張しています。
モデルの用途
意図された用途
データ、コード、およびモデルチェックポイントは、(I) ビジュアル言語処理に関する将来の研究と (II) 参照論文に報告された実験結果の再現性のみを目的として使用されることを意図しています。これらは、臨床ケアや臨床決定の目的で使用することを意図していません。
主な意図された用途
主な意図された用途は、AI研究者がこの研究を再現し、その上に構築することを支援することです。LLaVA-Medとその関連モデルは、様々なバイオメディカルビジョン言語処理(VLP)およびビジョン質問応答(VQA)の研究課題を探求するのに役立つはずです。
想定外の用途
モデルのすべての展開されたユースケース(商用またはその他)は想定外です。我々は、広範な公開された研究ベンチマークを使用してモデルを評価しましたが、モデルと評価は研究目的のみを意図しており、展開されたユースケースを想定していません。詳細については、関連する論文を参照してください。
データ
このモデルは、PMC-15Mデータセットをベースに構築されています。これは、バイオメディカルビジョン言語処理のための大規模な並列画像テキストデータセットで、PubMed Centralのバイオメディカル研究論文から抽出された1500万の図とキャプションのペアを含んでいます。これは、顕微鏡画像、放射線画像、組織学画像など、多様なバイオメディカル画像タイプをカバーしています。
制限事項
このモデルは英語のコーパスを使用して開発されているため、英語のみのモデルと見なされる場合があります。このモデルは、LLaVA-Med論文に記載されている限られたバイオメディカルベンチマークタスクで評価されています。したがって、臨床設定での使用には適していません。一部の条件下では、モデルは不正確な予測を行い、制限事項を示すことがあり、追加の緩和策が必要になる場合があります。特に、このモデルは、派生元のモデルであるLLaVAの多くの制限事項を引き継いでいる可能性があります。
さらに、このモデルは部分的にPMC-15Mデータセットを使用して開発されています。このデータセットを構成する図とキャプションのペアは、現在の学術出版の慣行を反映したバイアスを含んでいる可能性があります。たとえば、対応する論文は肯定的な結果が豊富で、極端なケースの例を含んでいる可能性があり、その他のバイオメディカルデータのソースを代表していない分布を反映している可能性があります。
🔧 技術詳細
- 学習方法: カリキュラム学習方式を使用して、一般ドメインのLLaVAからバイオメディカルドメインに適応させています。
- データセット: PMC-15Mデータセットを使用して学習されています。
- 評価: バイオメディカル分野のビジュアル質問応答タスクで評価されています。
📄 ライセンス
- ライセンス: other
- ライセンス名: microsoft-research-license
- ライセンスリンク: https://github.com/microsoft/LLaVA-Med/blob/main/Research%20License.docx
謝辞
LLaVA-Medがあなたの研究やアプリケーションに役立つ場合、以下のBibTeXを使用して引用してください。
@article{li2023llavamed,
title={Llava-med: Training a large language-and-vision assistant for biomedicine in one day},
author={Li, Chunyuan and Wong, Cliff and Zhang, Sheng and Usuyama, Naoto and Liu, Haotian and Yang, Jianwei and Naumann, Tristan and Poon, Hoifung and Gao, Jianfeng},
journal={arXiv preprint arXiv:2306.00890},
year={2023}
}
関連プロジェクト









