缓解大型多模态模型的幻觉问题,通过稳健的指令微调 [ICLR 2024]
Fuxiao Liu,Kevin Lin,Linjie Li,Jianfeng Wang,Yaser Yacoob,Lijuan Wang
你可以在下方对比我们的模型和原始模型。如果在线演示无法工作,请发邮件至 fl3es@umd.edu
。如果你觉得我们的工作有趣,请引用我们的论文。谢谢!
@article{liu2023aligning,
title={Aligning Large Multi-Modal Model with Robust Instruction Tuning},
author={Liu, Fuxiao and Lin, Kevin and Li, Linjie and Wang, Jianfeng and Yacoob, Yaser and Wang, Lijuan},
journal={arXiv preprint arXiv:2306.14565},
year={2023}
}
@article{liu2023hallusionbench,
title={HallusionBench: You See What You Think? Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V (ision), LLaVA-1.5, and Other Multi-modality Models},
author={Liu, Fuxiao and Guan, Tianrui and Li, Zongxia and Chen, Lichang and Yacoob, Yaser and Manocha, Dinesh and Zhou, Tianyi},
journal={arXiv preprint arXiv:2310.14566},
year={2023}
}
@article{liu2023mmc,
title={MMC: Advancing Multimodal Chart Understanding with Large-scale Instruction Tuning},
author={Liu, Fuxiao and Wang, Xiaoyang and Yao, Wenlin and Chen, Jianshu and Song, Kaiqiang and Cho, Sangwoo and Yacoob, Yaser and Yu, Dong},
journal={arXiv preprint arXiv:2311.10774},
year={2023}
}
LRV-V1 和 LRV-V2 都支持在 V100 32GB 上训练。
📺
[LRV-V2(Mplug-Owl) 演示],[mplug-owl 演示]
📺 [LRV-V1(MiniGPT4) 演示],[MiniGPT4-7B 演示]
更新
- [03/13]🔥 我们的论文 "MMC: Advancing Multimodal Chart Understanding with LLM Instruction Tuning" 已被 NAACL 2024 接收。
- [02/26]🔥 我们的论文 "HallusionBench: You See What You Think? Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V(ision), LLaVA-1.5, and Other Multi-modality Models" 已被 CVPR 2024 接收。
- [01/15]🔥 我们的论文已被 ICLR 2024 接收。相机就绪版即将发布!
- [11/15]🔥 我们的论文 "MMC: Advancing Multimodal Chart Understanding with LLM Instruction Tuning" 现已在 Arxiv 上发布。
- [10/24]🔥 请查看我们新的工作对 GPT4V 错误案例的基准测试 "HallusionBench: You See What You Think? Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V(ision), LLaVA-1.5, and Other Multi-modality Models" (repo)。
- [9/20] 🔥 更多知识操控数据即将发布!
- [8/24] 🔥 我们发布了一些具有知识操控的可视化指令数据来增加我们的数据集的多样性。数据 和 图像。
- [8/17] 🔥 LRV-Instruction V2 的模型权重可从 这里 获取。
- [8/16] 🔥 我们发布了由 GPT4 生成的额外 180k 可视化指令微调数据。你可以从 这里 下载。我们的 LRV-Instruction 数据集总共包含 320k 可视化指令数据。
- [8/14] 🔥 我们 手动清理 了数据集。可以从 训练集 和 评估集 下载新版本。
- [8/05] 🔥 LRV-Instruction V2 在 mplug-owl 上微调,在 MME 基准测试中取得了 SOTA (State-of-the-Art) 结果。
- [7/05] 🔥 LRV-Instruction V1 在 MiniGPt4 上微调版本已发布!
- [6/30] 🔥 我们的数据集可在 Hugging Face 获取。(此为 旧版本)
- [6/27] 🔥 我们的论文被 AK 推特发布。
- [6/26] 🔥 我们的技术报告现已在 arxiv 上发布。
模型检查点
指令数据
可视化指令数据 (LRV-Instruction)
我们 更新 了数据集,包含由 GPT4 生成的 300k 可视化指令,涵盖了 16 个视觉和语言任务,提供开放性指令和答案。LRV-Instruction 包含正面指令和负面指令,旨在实现更稳健的可视化指令微调。我们数据集的图像来自 Visual Genome。你可以从 这里 获取我们的数据。
{'image_id': '2392588', 'question': 'Can you see a blue teapot on the white electric stove in the kitchen?', 'answer': 'There is no mention of a teapot on the white electric stove in the kitchen.', 'task': 'negative'}
对于每个实例,image_id
指的是 Visual Genome 中的图像。question
和 answer
是指指令-答案配对。task
指的是任务名称。你可以从 这里 下载图像。
我们提供了 GPT-4 查询的提示以更好地促进该领域的研究。请查看 prompts
文件夹以生成正面和负面实例。negative1_generation_prompt.txt
包含了通过不存在元素操控生成负面指令的提示。negative2_generation_prompt.txt
包含了通过存在元素操控生成负面指令的提示。你可以参考 代码 来生成更多数据。更多详情请参阅我们的论文。
LRV-Instruction 可以使 LMM 能够说“不”,并提供正确的答案,即使在 LRV-Instruction 数据集中没有图表图像。
模型
🐒LRV-Instruction(V1) 设置
- LRV-Instruction(V1) 基于 MiniGPT4-7B。
1. 克隆这个仓库
https://github.com/FuxiaoLiu/LRV-Instruction.git
2. 安装相关包
conda env create -f environment.yml --name LRV
conda activate LRV
3. 准备 Vicuna 权重
我们的模型是在 MiniGPT-4 上与 Vicuna-7B 进行微调的。请参考 这里 的指示准备 Vicuna 权重或从 这里 下载。然后在 MiniGPT-4/minigpt4/configs/models/minigpt4.yaml 的第 15 行设置 Vicuna 权重的路径。
4. 准备我们模型的预训练检查点
从 这里 下载预训练检查点
然后在 MiniGPT-4/eval_configs/minigpt4_eval.yaml 的第 11 行设置预训练检查点的路径。此检查点基于 MiniGPT-4-7B 。未来我们将发布 MiniGPT-4-13B 和 LLaVA 的检查点。
5. 设置数据集路径
获取数据集后在 MiniGPT-4/minigpt4/configs/datasets/cc_sbu/align.yaml 的第 5 行设置数据集路径。数据集文件夹的结构如下:
/MiniGPt-4/cc_sbu_align
├── image(Visual Genome images)
├── filter_cap.json
6. 本地演示
通过运行以下命令在本地电脑上试试我们微调模型的 demo.py 演示
cd ./MiniGPT-4
python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0
你可以试试 这里 的示例。
7. 模型推理
设置推理指令文件的路径 这里,推理图像文件夹 这里 和输出位置 这里。我们在训练过程中不进行推理。
cd ./MiniGPT-4
python inference.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0
🐒LRV-Instruction(V2) 设置
- LRV-Instruction(V2) 基于 plug-Owl-7B。
1. 根据 mplug-owl 安装环境。
我们在 8 个 V100 上微调了 mplug-owl。如果你在 V100 上实现时遇到任何问题,请随时告知我们!
2. 下载检查点 首先从链接下载mplug-owl的检查点,和从这里下载训练的lora模型权重。
3. 编辑代码
对于mplug-owl/serve/model_worker.py
,编辑以下代码并在lora_path中输入lora模型权重的路径。
self.image_processor = MplugOwlImageProcessor.from_pretrained(base_model)
self.tokenizer = AutoTokenizer.from_pretrained(base_model)
self.processor = MplugOwlProcessor(self.image_processor, self.tokenizer)
self.model = MplugOwlForConditionalGeneration.from_pretrained(
base_model,
load_in_8bit=load_in_8bit,
torch_dtype=torch.bfloat16 if bf16 else torch.half,
device_map="auto"
)
self.tokenizer = self.processor.tokenizer
peft_config = LoraConfig(target_modules=r'.*language_model.*\.(q_proj|v_proj)', inference_mode=False, r=8,lora_alpha=32, lora_dropout=0.05)
self.model = get_peft_model(self.model, peft_config)
lora_path = 'Your lora model path'
prefix_state_dict = torch.load(lora_path, map_location='cpu')
self.model.load_state_dict(prefix_state_dict)
4. 本地演示
当你在本地机器上启动演示时,可能会发现没有文本输入区。这是因为python和gradio之间的版本冲突。最简单的解决方法是执行conda activate LRV
python -m serve.web_server --base-model 'the mplug-owl checkpoint directory' --bf16
5. 模型推理
首先从mplug-owl克隆代码,将/mplug/serve/model_worker.py
替换为我们的/utils/model_worker.py
,并添加文件/utils/inference.py
。然后编辑输入数据文件和图片文件夹路径。最后运行:
python -m serve.inference --base-model 'your checkpoint directory' --bf16
评估(GAVIE)
我们引入了GPT4辅助的视觉指令评估(GAVIE),作为一种更灵活和更稳健的方法来衡量LMMs生成的幻觉,而不需要人工标注的地面真实答案。GPT4将带有边界框坐标的密集标题作为图片内容,并比较人类指令和模型响应。然后我们要求GPT4充当一个聪明的老师,根据两个标准给学生的答案打分(0-10):(1) 准确性:响应是否与图片内容产生幻觉。(2) 相关性:响应是否直接遵循指令。prompts/GAVIE.txt
包含GAVIE的提示。
我们的评估集可用here。
{'image_id':'2380160', 'question':'Identify the type of transportation infrastructure present in the scene.'}
对于每个实例,image_id
指的是来自Visual Genome的图片。instruction
指的是指令。answer_gt
指的是来自仅文本的GPT4的地面真实答案,但我们在评估中不使用它们。相反,我们使用仅文本的GPT4来评估模型输出,使用来自Visual Genome数据集的密集标题和边界框作为视觉内容。
要评估你的模型输出,首先从这里下载vg注释。其次根据代码here生成评估提示。第三步,将提示输入GPT4。
排行榜
GPT4(GPT4-32k-0314)作为聪明的老师,根据两个标准给学生的答案打分(0-10)。
(1) 准确性:响应是否与图片内容产生幻觉。 (2) 相关性:响应是否直接遵循指令。
方法 | GAVIE-Accuracy | GAVIE-Relevancy |
---|---|---|
LLaVA1.0-7B | 4.36 | 6.11 |
LLaVA 1.5-7B | 6.42 | 8.20 |
MiniGPT4-v1-7B | 4.14 | 5.81 |
MiniGPT4-v2-7B | 6.01 | 8.10 |
mPLUG-Owl-7B | 4.84 | 6.35 |
InstructBLIP-7B | 5.93 | 7.34 |
MMGPT-7B | 0.91 | 1.79 |
Ours-7B | 6.58 | 8.46 |
致谢
- Vicuna: Vicuna的出色语言能力令人惊叹。
- MiniGPT4, LAVIS和mplug-owl: 非常感谢MiniGPT4、LAVIS和mplug-owl,许多代码基于它们!
- Awesome-Multimodal-Large-Language-Models。LMMs的调查非常有帮助!
引用
如果你发现我们的工作对你的研究和应用有用,请使用以下BibTeX进行引用:
@article{liu2023aligning,
title={Aligning Large Multi-Modal Model with Robust Instruction Tuning},
author={Liu, Fuxiao and Lin, Kevin and Li, Linjie and Wang, Jianfeng and Yacoob, Yaser and Wang, Lijuan},
journal={arXiv preprint arXiv:2306.14565},
year={2023}
}
许可证
该存储库遵循BSD 3-Clause License。 许多代码基于MiniGPT4和mplug-Owl 的BSD 3-Clause License here。