模型简介
模型特点
模型能力
使用案例
license: other license_name: microsoft-research-license license_link: https://github.com/microsoft/LLaVA-Med/blob/main/Research%20License.docx tags:
- 医疗
该模型由Hugging Face团队添加。
注意:此“增量模型”无法直接使用。 用户需将其应用于原始LLaMA权重之上,才能获得实际的LLaVA权重。
LLaVA-Med:生物医学领域的大型语言与视觉助手
通过视觉指令微调,构建在生物医学领域具备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目录
git clone 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
"。我们提供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}
}
相关项目









