模型简介
模型特点
模型能力
使用案例
许可证: 其他 许可证名称: 微软研究许可证 许可证链接: https://github.com/microsoft/LLaVA-Med/blob/main/Research%20License.docx 标签:
- 医疗
此模型由Hugging Face团队添加。
注意:此“增量模型”无法直接使用。 用户需将其应用于原始LLaMA权重之上,才能获得实际的LLaVA权重。
LLaVA-Med:基于VQA-Rad微调
通过视觉指令调优,构建生物医学领域具备GPT-4级别能力的大型语言与视觉模型。
[论文,NeurIPS 2023数据集与基准测试赛道(焦点论文)] | [LLaVA-Med GitHub仓库]
李春元*, Cliff Wong*, 张胜*, Naoto Usuyama, 刘昊天, 杨建伟, Tristan Naumann, Hoifung Poon, 高剑峰 (*同等贡献)
由GLIGEN使用基于框的修复模式生成,包含三个框:白色医生外套
、听诊器
、带有红十字标志的白色医生帽
。
LLaVA-Med初始化为通用领域的LLaVA,随后通过课程学习方式持续训练(先进行生物医学概念对齐,再进行全面的指令调优)。我们在标准视觉对话和问答任务上评估了LLaVA-Med。
使用与许可声明:数据、代码和模型检查点仅限研究用途,并受LLaMA、Vicuna和GPT-4各自使用条款的额外限制。数据基于CC BY NC 4.0许可开放。数据、代码和模型检查点可用于非商业目的,任何基于此数据集训练的模型应仅用于研究目的。明确禁止将基于此数据训练的模型用于临床护理或任何临床决策。
模型描述
生物医学大型语言与视觉助手(即“LLaVA-Med”)是通过课程学习方法将LLaVA适配至生物医学领域的大型语言与视觉模型。此开源版本仅供研究使用,以促进对应论文的可复现性,该论文声称在开放式生物医学问答任务(包括PathVQA和VQA-RAD等常见视觉问答基准数据集)上性能有所提升。
模型用途
预期用途
数据、代码和模型检查点仅用于(I)未来视觉语言处理研究及(II)参考论文中实验结果的复现。数据、代码和模型检查点不适用于临床护理或任何临床决策。
主要预期用途
主要用途是支持AI研究人员复现并在此工作基础上构建。LLaVA-Med及其相关模型应有助于探索各类生物医学视觉语言处理(VLP)和视觉问答(VQA)研究问题。
超出范围用途
任何模型部署用例(无论商业与否)均超出范围。尽管我们使用广泛的公开研究基准评估模型,但模型及评估仅供研究,不适用于部署用例。详情请参阅相关论文。
数据
此模型基于PMC-15M数据集,这是一个用于生物医学视觉语言处理的大规模并行图文数据集,包含从PubMed Central生物医学研究文章中提取的1500万图表-标题对,涵盖显微镜、放射学、组织学等多样化的生物医学图像类型。
局限性
此模型基于英语语料库开发,可能被视为仅限英语。模型在LLaVA-Med论文描述的狭窄生物医学基准任务集上评估,因此不适用于任何临床环境。在某些条件下,模型可能做出不准确预测并显示局限性,需额外缓解策略。特别是,此模型可能继承其衍生模型LLaVA的许多限制。
此外,此模型部分使用PMC-15M数据集开发。构成此数据集的图表-标题对可能包含反映当前学术出版实践的偏见,例如对应论文可能富含阳性结果、极端案例样本,或反映不代表其他生物医学数据源的分布。
安装
- 克隆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
服务
上述模型权重为增量权重。LLaVA-Med检查点的使用需遵守基础LLM的模型许可:LLaMA。
步骤:
- 下载增量权重。
- 按此处说明获取HuggingFace格式的原始LLaMA权重。
- 使用以下脚本应用我们的增量获取LLaVA-Med权重。在脚本中,将--delta参数设置为解压后的
llava_med_in_text_60k_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数据集:VQA-Rad、SLAKE、Pathology-VQA。以VQA-Rad为例说明如何将LLaVA-Med应用于下游场景。
- 准备数据
- 请参阅VQA-Rad仓库设置数据集。
- 为LLaVA-Med对话式格式(与指令调优相同格式)生成VQA-Rad数据集。每个数据集处理为三个部分:
train.json
、test.json
、images
。
- 微调
为在下游数据集上实现更高性能,使用与指令调优相同的全模型调优脚本继续训练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响应
(a.1). [选项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
(a.2). [选项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) 评估生成响应
(b.1). [选项1] 所有三个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。
(b.2). [选项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或论文。
致谢
如果您发现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}
}
相关项目









