MiniGPT-4使用 LLM 增强视觉语言理解

联合创作 · 2023-09-25 22:56

MiniGPT-4 可使用高级大型语言模型增强视觉语言理解。


MiniGPT-4 仅使用一个投影层将来自 BLIP-2 的冻结视觉编码器与冻结 LLM Vicuna 对齐。MiniGPT-4 的训练分两个阶段:



  • 第一个传统预训练阶段使用 4 个 A100 在 10 小时内使用大约 500 万个对齐的图像-文本对进行训练。在第一阶段之后,Vicuna 能够理解图像。但是Vicuna的生成能力受到了很大的影响。为了解决这个问题并提高可用性,开发团队提出了一种通过模型本身和 ChatGPT 一起创建高质量图像文本对的新方法。基于此,随后创建了一个小型(总共 3500 对)但高质量的数据集。

  • 第二个微调阶段在对话模板中对该数据集进行训练,以显着提高其生成可靠性和整体可用性。这个阶段的计算效率很高,使用单个 A100 只需大约 7 分钟。MiniGPT-4 产生了许多新兴的视觉语言功能,类似于 GPT-4 中展示的功能。



在线演示


从以下八个链接中选取一个任务排队较少的 demo 进行聊天。


Link1 / Link2 / Link3 / Link4 / Link5 / Link6 / Link7 / Link8


先上传图像,然后围绕您的图像与 MiniGPT-4 聊天



示例




入门


安装


1.准备代码和环境


Git 克隆我们的存储库,创建一个 python 环境并通过以下命令激活它




git clone https://github.com/Vision-CAIR/MiniGPT-4.git cd MiniGPT-4 conda env create -f environment.yml conda activate minigpt4


2.准备预训练的Vicuna权重


当前版本的 MiniGPT-4 建立在 Vicuna-13B 的 v0 版本之上。请参考说明来准备 Vicuna 砝码。最终权重将位于具有以下结构的单个文件夹中:




vicuna_weights ├── config.json ├── generation_config.json ├── pytorch_model.bin.index.json ├── pytorch_model-00001-of-00003.bin ...


然后,在第 16 行的模型配置文件中设置 vicuna 权重的路径 。


3.准备预训练的MiniGPT-4检查点


要使用官方预训练模型,请在此处下载预训练检查点。


然后,在第 11 行的 eval_configs/minigpt4_eval.yaml 中的评估配置文件中设置预训练检查点的路径。


在本地启动演示


通过运行在本地计算机上试用演示 demo.py




python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0


这里默认将 Vicuna 加载为 8 位以节省一些 GPU 内存使用量。此外,默认的波束搜索宽度为 1。


在此设置下,该演示耗费了大约 23G GPU 内存。如果有一个更强大的 GPU 和更大的 GPU 内存,你可以通过在配置文件minigpt4_eval.yaml中将 low_resource 设置为 False ,并使用更大的波束搜索宽度来以 16 位运行模型 。


训练


MiniGPT-4 的训练包含两个对齐阶段。


1. 第一预训练阶段


在第一个预训练阶段,模型使用来自 Laion 和 CC 数据集的图像文本对进行训练,以对齐视觉和语言模型。


要下载和准备数据集,请查看第一阶段数据集准备说明。第一阶段之后,视觉特征被映射,可以被语言模型理解。要启动第一阶段训练,请运行以下命令:(实验中使用 4 个 A100)


可以在配置文件 train_configs/minigpt4_stage1_pretrain.yaml中更改保存路径




torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage1_pretrain.yaml


可以在此处下载只有第一阶段训练的 MiniGPT-4 检查点 。


与第二阶段之后的模型相比,这个检查点经常生成不完整和重复的句子。


2. 第二次微调阶段


在第二阶段,使用自己创建的小型高质量图文对数据集,并将其转换为对话格式以进一步对齐 MiniGPT-4。


要下载和准备第二阶段数据集,请查看第二阶段数据集准备说明要启动第二阶段比对,首先在 train_configs/minigpt4_stage1_pretrain.yaml 中指定第 1 阶段训练的检查点文件的路径 ,在此还可以同时指定输出路径。


然后,运行以下命令:(实验中使用 1 个 A100)




torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage2_finetune.yaml

在第二阶段对齐之后,MiniGPT-4 能够连贯地和用户友好地谈论图像。


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报