LLaVA-Med: 生物医学大型语言和视觉助手
通过视觉指令微调,朝着在生物医学领域构建具有GPT-4级别能力的大型语言和视觉模型迈进。
[论文,NeurIPS 2023数据集和基准测试赛道(聚焦报告)]
LLaVA-Med:一天内训练生物医学大型语言-视觉助手
Chunyuan Li*,Cliff Wong*,Sheng Zhang*,Naoto Usuyama,Haotian Liu,Jianwei Yang,Tristan Naumann,Hoifung Poon,Jianfeng Gao (*贡献相同)
由GLIGEN使用定位修复模式生成,包含三个框:"白色医生外套"、"听诊器"、"带红十字标志的白色医生帽"。
发布
- [2024年5月13日] 🔥LLaVA-Med v1.5发布!它不仅显著更好(参见评估结果),而且使用起来更加简单:不再需要delta权重!现在你可以直接从🤗 Hub加载我们的模型。原始LLaVA-Med(即v1.0.0)代码库已移至Archive。
- [2023年11月8日] LLaVA-Med根据MSR发布政策开源。非常感谢团队的付出和社区的耐心等待。
- [2023年9月] LLaVA-Med被NeurIPS 2023数据集和基准测试赛道接收,并作为聚焦报告。
- [2023年6月1日] 🔥我们发布了LLaVA-Med:生物医学大型语言和视觉助手,这是朝着构建具有GPT-4级别能力的生物医学领域大型语言和视觉模型迈出的一步。查看论文
LLaVA-Med初始化为通用领域的LLaVA,然后以课程学习的方式持续训练(首先进行生物医学概念对齐,然后进行全面的指令微调)。我们在标准视觉对话和问答任务上评估了LLaVA-Med。
使用和许可声明:数据、代码和模型检查点仅供研究使用。它们还受到LLaMA、Vicuna和GPT-4各自使用条款规定的额外限制。数据以CC BY NC 4.0许可提供。数据、代码和模型检查点可用于非商业目的,使用该数据集训练的任何模型只能用于研究目的。明确禁止将在此数据上训练的模型用于临床护理或任何临床决策目的。
目录
安装
- 克隆此仓库并进入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 install -e .
模型下载
模型描述 | 🤗 Huggingface Hub |
---|---|
LLaVA-Med v1.5 | microsoft/llava-med-v1.5-mistral-7b |
服务
Web UI
启动控制器
python -m llava.serve.controller --host 0.0.0.0 --port 10000
启动模型工作进程
python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path microsoft/llava-med-v1.5-mistral-7b --multi-modal
等待进程完成加载模型,直到看到"Uvicorn running on ..."。
启动模型工作进程(多GPU,当GPU VRAM <= 24GB)
如果你的GPU VRAM小于24GB(例如RTX 3090、RTX 4090等),你可以尝试使用多个GPU运行。
python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path microsoft/llava-med-v1.5-mistral-7b --multi-modal --num-gpus 2
等待进程完成加载模型,直到看到"Uvicorn running on ..."。
发送测试消息
python -m llava.serve.test_message --model-name llava-med-v1.5-mistral-7b --controller http://localhost:10000
启动gradio web服务器
python -m llava.serve.gradio_web_server --controller http://localhost:10000
现在你可以打开浏览器与模型聊天了。
评估
医学视觉对话(GPT辅助评估)
我们提供了用于多模态建模的GPT辅助评估管道,以全面了解视觉-语言模型的能力。有关更多详细信息,请参阅我们的论文。
1. Azure OpenAI连接信息
打开llava/eval/llm.py并插入你的Azure OpenAI端点和API密钥
openai_cxn_dict = {
'default': {
'endpoint': "在此插入你的AZURE OPENAI端点",
'api_key': "在此插入你的AZURE OPENAI API密钥",
},
}
- GPT-4推理仅使用Azure OpenAI API进行测试。如果你使用OpenAI API,需要将llava/eval/llm.py (第55行)中的AsyncAzureOpenAI替换为AsyncOpenAI。
2. 部署ID
在llava/eval/eval_multimodal_chat_gpt_score.py (第55行)中,如有必要,替换为你的GPT-4模型部署ID:
3. 下载图像
wget https://hanoverprod.z21.web.core.windows.net/med_llava/multimodal_chat_eval/llava_med_test_image_urls.jsonl -P data/
python llava/data/download_images.py \
--input_path data/llava_med_test_image_urls.jsonl \
--pmc_output_path data/pmc \
--images_output_path data/images
4. 多模态对话推理
在我们的案例中,llava_med_eval_qa50_qa.jsonl
包含问题、上下文(标题和行内提及)以及由纯文本GPT-4(0314)生成的响应,我们将其视为真实标准。
PYTHONPATH=. python llava/eval/model_vqa.py \
--conv-mode mistral_instruct \
--model-path microsoft/llava-med-v1.5-mistral-7b \
--question-file data/eval/llava_med_eval_qa50_qa.jsonl \
--image-folder data/images \
--answers-file /path/to/answer-file.jsonl \
--temperature 0.0
5. GPT-4对生成答案的评估
python llava/eval/eval_multimodal_chat_gpt_score.py \
--answers-file /path/to/answer-file.jsonl \
--question-file data/eval/llava_med_eval_qa50_qa.jsonl \
--scores-file /path/to/scores-file.jsonl
6. 总结评估结果
python llava/eval/summarize_gpt_review.py \
--scores-file /path/to/scores-file.jsonl
数据下载
LLaVA-Med数据集
生物医学多模态指令遵循数据的统计信息:(a,b)指令和响应的词根动词-名词对,其中图的内圈代表输出响应的词根动词,外圈代表直接名词。(c)五个领域的图像和问答对分布,每个领域显示一张图像。
数据下载
对齐数据文件 | 大小 |
---|---|
llava_med_alignment_500k.json | 341.52 MiB |
指令微调数据文件 | 大小 |
---|---|
llava_med_instruct_10k.json | 19.24 MiB |
llava_med_instruct_60k.json | 84.65 MiB |
llava_med_instruct_60k_inline_mention.json | 83.61 MiB |
llava_med_instruct_fig_captions.json | 161.39 MiB |
评估文件 | 大小 |
--- | ---: |
llava_med_eval_qa50_qa.jsonl | 256.18 KiB |
llava_med_eval_qa50_fig_captions.json | 51.82 KiB |
llava_med_qa50_instruct_caption_in_text_cleaned-60k-3epoch.json | 100.97 KiB |
图片URL | 大小 |
---|---|
llava_med_image_urls.jsonl | 122.82 MiB |
download_images.py用于使用上述image_urls文件下载PMC文章并提取图片
要下载我们的语言-图像多模态指令跟随数据集,请运行以下脚本:
sh download_data.sh
存档
模型描述
生物医学大型语言与视觉助手(即"LLaVA-Med")是一个使用课程学习方法训练的大型语言和视觉模型,用于将LLaVA适应到生物医学领域。这是一个开源发布,仅用于研究用途,以促进相应论文的可复现性。该论文声称在开放式生物医学问答任务中表现有所提升,包括常见的视觉问答(VQA)基准数据集,如PathVQA和VQA-RAD。
模型用途
预期用途
数据、代码和模型检查点仅用于(I)未来的视觉语言处理研究和(II)复现参考论文中报告的实验结果。数据、代码和模型检查点不应用于临床护理或任何临床决策制定目的。
主要预期用途
主要预期用途是支持人工智能研究人员复现并在此基础上进行研究。LLaVA-Med及其相关模型应有助于探索各种生物医学视觉语言处理(VLP)和视觉问答(VQA)研究问题。
超出范围的使用
模型的任何部署使用情况——无论是商业还是其他用途——都超出了范围。尽管我们使用一系列公开可用的研究基准对模型进行了评估,但这些模型和评估仅供研究使用,不适用于部署场景。更多详情请参阅相关论文。
数据
该模型基于PMC-15M数据集构建,这是一个用于生物医学视觉语言处理的大规模平行图像-文本数据集。它包含从PubMed Central的生物医学研究文章中提取的1500万个图像-标题对。它涵盖了多种生物医学图像类型,如显微镜、X射线、组织学等。
局限性
该模型使用英语语料库开发,因此可能被视为仅支持英语。该模型在LLaVA-Med论文中描述的一系列狭窄的生物医学基准任务上进行了评估。因此,它不适合在任何临床环境中使用。在某些条件下,该模型可能会做出不准确的预测并显示局限性,这可能需要额外的缓解策略。特别是,该模型可能会带有许多源自其衍生模型LLaVA的局限性。
此外,该模型的部分开发使用了PMC-15M数据集。构成该数据集的图像-标题对可能包含反映当前学术出版实践的偏见。例如,相应的论文可能富含阳性发现、包含极端案例的示例,并以其他方式反映不能代表其他生物医学数据来源的分布。
致谢
如果您发现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}
}