模型概述
模型特點
模型能力
使用案例
🚀 LLaVA-Med:生物醫學領域的大型語言與視覺助手
LLaVA-Med是專為生物醫學領域打造的大型語言與視覺模型。它藉助課程學習方法,將LLaVA模型適配到生物醫學場景,在開放式生物醫學問答任務中表現出色,能有效處理如PathVQA和VQA - RAD等常見視覺問答基準數據集。
🚀 快速開始
本模型由Hugging Face團隊添加。 注意:此“增量模型”不能直接使用,用戶需要將其應用於原始LLaMA權重之上,才能得到實際的LLaVA權重。
✨ 主要特性
- 領域適配:通過課程學習方法,將通用領域的LLaVA模型適配到生物醫學領域,提升在生物醫學問答任務中的性能。
- 多模態處理:能夠處理生物醫學領域的圖像和文本信息,實現視覺問答等多模態任務。
- 研究導向:數據、代碼和模型檢查點僅用於研究目的,有助於推動生物醫學視覺語言處理和視覺問答研究的發展。
📦 安裝指南
- 克隆[LLaVA - Med Github倉庫](https://github.com/microsoft/LLaVA - Med)並進入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 # enable PEP 660 support
- 安裝訓練所需的額外包
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
📚 詳細文檔
模型用途
- 預期用途:數據、代碼和模型檢查點僅用於(I)未來視覺語言處理研究和(II)復現參考論文中的實驗結果,不用於臨床護理或臨床決策。
- 主要預期用途:支持AI研究人員復現和拓展本工作,有助於探索各種生物醫學視覺語言處理(VLP)和視覺問答(VQA)研究問題。
- 超出範圍的用途:模型的任何部署用例(商業或其他)都超出了範圍。模型和評估僅用於研究,不用於實際部署。更多詳情請參考[相關論文](https://aka.ms/llava - med)。
數據
本模型基於[PMC - 15M數據集](https://aka.ms/biomedclip - paper)構建,這是一個用於生物醫學視覺語言處理的大規模並行圖像 - 文本數據集,包含從PubMed Central生物醫學研究文章中提取的1500萬對圖 - 文對,涵蓋多種生物醫學圖像類型,如顯微鏡圖像、放射圖像、組織學圖像等。
侷限性
- 語言限制:該模型使用英文語料庫開發,可能僅適用於英文場景。
- 任務範圍:僅在[LLaVA - Med論文](https://aka.ms/llava - med)中描述的少量生物醫學基準任務上進行了評估,不適合在臨床環境中使用。
- 預測準確性:在某些情況下,模型可能會做出不準確的預測,存在一定侷限性,需要額外的緩解策略。此外,該模型可能繼承了其派生模型[LLaVA](https://llava - vl.github.io/)的許多侷限性。
🔧 技術細節
服務
模型權重為“增量”權重,LLaVA - Med檢查點的使用應遵循基礎大語言模型的許可協議:LLaMA。 操作步驟如下:
- 下載增量權重。
- 按照此處說明以Hugging Face格式獲取原始LLaMA權重。
- 使用以下腳本應用增量權重以獲得LLaVA - Med權重。在以下腳本中,將
--delta
參數設置為解壓後的llava_med_in_text_60k_delta
目錄的路徑。可以通過更改--delta
參數(並相應更改基礎/目標路徑)來適配其他增量權重。
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 - Rad、SLAKE和Pathology - VQA。我們以VQA - Rad為例,說明如何將LLaVA - Med應用於下游場景。
- 準備數據
- 請參考VQA - Rad [倉庫](https://paperswithcode.com/dataset/vqa - rad)設置數據集。
- 為LLaVA - Med對話風格格式生成VQA - Rad數據集(與指令調優格式相同)。對於每個數據集,我們將其處理為三個部分:
train.json
、test.json
、images
。
- 微調 為了在給定的下游數據集上獲得更高的性能,使用與指令調優相同的全模型調優腳本繼續訓練LLaVA - Med。
對下游數據集進行微調的詳細腳本:LLaVA - Med - 7B,8x A100(40G)。 時間:約1小時。
```Shell 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 ```📄 許可證
屬性 | 詳情 |
---|---|
許可證類型 | 其他 |
許可證名稱 | microsoft - research - license |
許可證鏈接 | https://github.com/microsoft/LLaVA-Med/blob/main/Research%20License.docx |
使用和許可聲明:數據、代碼和模型檢查點僅用於研究目的,同時還需遵守LLaMA、Vicuna和GPT - 4各自的使用條款規定的額外限制。數據根據CC BY NC 4.0許可協議提供,數據、代碼和模型檢查點可用於非商業目的,使用該數據集訓練的任何模型也應僅用於研究目的,嚴禁將基於此數據訓練的模型用於臨床護理或任何臨床決策目的。
致謝
- 我們的項目基於[LLaVA](https://github.com/lm - sys/FastChat)和[Vicuna](https://github.com/lm - sys/FastChat)構建,它們分別為我們的基礎模型提供了出色的多模態和語言能力!
如果您發現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}
}
相關項目
- [LLaVA](https://llava - vl.github.io/)
- [BioMed CLIP](https://huggingface.co/microsoft/BiomedCLIP - PubMedBERT_256 - vit_base_patch16_224)
- [Instruction Tuning with GPT - 4](https://github.com/Instruction - Tuning - with - GPT - 4/GPT - 4 - LLM)









