模型简介
模型特点
模型能力
使用案例
🚀 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)









