模型概述
模型特點
模型能力
使用案例
🚀 LLaVA-Med:在VQA-Rad上微調
面向生物醫學領域,通過課程學習方法將LLaVA模型適配到生物醫學領域,以構建具備GPT - 4水平能力的大語言與視覺模型。
[論文,NeurIPS 2023數據集與基準測試賽道(亮點展示)] | [LLaVA - Med GitHub倉庫]
Chunyuan Li*、Cliff Wong*、Sheng Zhang*、Naoto Usuyama、Haotian Liu、Jianwei Yang、Tristan Naumann、Hoifung Poon、Jianfeng Gao (*同等貢獻)
*由 GLIGEN 使用基於文本的圖像修復模式生成,包含三個提示框:“白色醫生外套”、“聽診器”、“帶有紅十字標誌的白色醫生帽”。*
*LLaVA - Med以通用領域的LLaVA為基礎進行初始化,然後以課程學習的方式進行持續訓練(首先進行生物醫學概念對齊,然後進行全面的指令微調)。我們在標準的視覺對話和問答任務上對LLaVA - Med進行了評估。*
⚠️ 重要提示
數據、代碼和模型檢查點僅用於研究目的,並且還需遵守LLaMA、Vicuna和GPT - 4各自的使用條款所規定的額外限制。數據遵循CC BY NC 4.0許可協議。數據、代碼和模型檢查點可用於非商業目的,並且使用該數據集訓練的任何模型都只能用於研究目的。嚴禁將基於此數據訓練的模型用於臨床護理或任何臨床決策目的。
🚀 快速開始
本項目為生物醫學領域的大語言與視覺模型LLaVA - Med,以下將為你介紹其安裝、使用和評估的相關步驟。
✨ 主要特性
- 領域適配:通過課程學習方法將LLaVA模型適配到生物醫學領域,提升在生物醫學領域的問答性能。
- 基於大規模數據:基於PMC - 15M數據集構建,該數據集包含1500萬對從生物醫學研究文章中提取的圖 - 文對。
- 多任務評估:在多個生物醫學視覺問答任務上進行了評估,如VQA - Rad、SLAKE、Pathology - VQA等。
📦 安裝指南
克隆倉庫
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
💻 使用示例
獲取LLaVA - Med權重
由於模型權重為增量權重,需要通過以下步驟獲取完整的LLaVA - Med權重:
- 下載增量權重。
- 按照此處的說明,以Hugging Face格式獲取原始LLaMA權重。
- 使用以下腳本應用增量權重:
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
📚 詳細文檔
模型描述
大語言與視覺生物醫學助手(LLaVA - Med)是一個使用課程學習方法訓練的大語言與視覺模型,旨在將LLaVA適配到生物醫學領域。它是一個開源版本,僅用於研究目的,以促進相關論文結果的可重複性。該模型在開放式生物醫學問答任務上表現出了改進的性能,包括常見的視覺問答(VQA)基準數據集,如PathVQA和VQA - RAD。
模型用途
預期用途
數據、代碼和模型檢查點僅用於(I)未來的視覺 - 語言處理研究和(II)復現參考論文中報告的實驗結果。不應用於臨床護理或任何臨床決策目的。
主要預期用途
主要用於支持AI研究人員復現和擴展本工作。LLaVA - Med及其相關模型有助於探索各種生物醫學視覺 - 語言處理(VLP)和視覺問答(VQA)研究問題。
非預期用途
模型的任何部署用例(商業或其他用途)均不在預期範圍內。儘管我們使用了廣泛的公開研究基準對模型進行了評估,但模型和評估僅用於研究目的,不適合部署使用。更多詳細信息請參考相關論文。
數據
該模型基於PMC - 15M數據集構建,這是一個用於生物醫學視覺 - 語言處理的大規模並行圖像 - 文本數據集。它包含從PubMed Central的生物醫學研究文章中提取的1500萬對圖 - 文對,涵蓋了多種生物醫學圖像類型,如顯微鏡圖像、放射圖像、組織學圖像等。
侷限性
- 語言限制:該模型使用英文語料庫開發,因此可能僅適用於英文。
- 任務侷限性:該模型僅在有限的生物醫學基準任務上進行了評估,不適合在任何臨床環境中使用。在某些情況下,模型可能會做出不準確的預測並表現出侷限性,可能需要額外的緩解策略。
- 數據偏差:該模型部分基於PMC - 15M數據集開發,該數據集的圖 - 文對可能存在反映當前學術出版實踐的偏差。例如,相應的論文可能更傾向於正面結果,包含極端案例,並且不能代表其他生物醫學數據源的分佈。
信息表格
屬性 | 詳情 |
---|---|
模型類型 | 大語言與視覺生物醫學模型,通過課程學習方法將LLaVA適配到生物醫學領域 |
訓練數據 | PMC - 15M數據集,包含1500萬對從生物醫學研究文章中提取的圖 - 文對 |
🔧 技術細節
醫學視覺聊天(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
評估生成的回覆
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 倉庫設置數據集。
- 為LLaVA - Med對話風格格式生成VQA - Rad數據集(與指令微調格式相同)。對於每個數據集,將其處理為三個組件:
train.json
、test.json
、images
。
微調
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回覆
- 多GPU推理
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
- 單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
評估生成的回覆
- 評估所有三個VQA數據集
python llava/eval/run_eval_batch.py \
--pred_file_parent_path /path/to/llava-med \
--target_test_type test-answer-file
- 評估一個特定的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
📄 許可證
本項目遵循Microsoft Research License,具體請參考許可證鏈接。
致謝
如果你發現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}
}
相關項目









