MiniGPT-4:使用先进的大型语言模型提升视觉语言理解

MiniGPT-4:使用先进的大型语言模型提升视觉语言理解

前言

为上一篇介绍MiniGPT-4的文章,在ChatGPT兴起的当下,涌现了一大批围绕着ChatGPT建立的应用项目,通过文章的方式把这些进行一个分类梳理。顺便给关注AI的同学科普一下。

地址

GitHub - Vision-CAIR/MiniGPT-4: MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models[1]

介绍

我们现在提供了一个预训练的 MiniGPT-4,与 Vicuna-7B 对齐!现在的演示 GPU 内存消耗可以低至 12GB。

在线演示

点击图片与 MiniGPT-4 聊天,围绕你的图片

picture.image demo

在线演示地址:https://minigpt-4.github.io

示例

picture.image find wild

picture.image write story

picture.image solve problem

picture.image write Poem

来看一个中文的:

picture.image

体验地址:MiniGPT-4 - a Hugging Face Space by Vision-CAIR[2]

中文版布署方式参考:GitHub - RiseInRose/MiniGPT-4-ZH: MiniGPT-4 中文部署翻译 完善部署细节[3]

更多示例可以在 项目页面[4] 找到。

介绍

•MiniGPT-4 使用一个投影层将 BLIP-2 的冻结视觉编码器与冻结的 LLM,Vicuna 对齐。 •我们训练 MiniGPT-4 有两个阶段。第一个传统的预训练阶段使用大约 500 万个对齐的图像文本对,在 4 个 A100s 中使用 10 小时进行训练。在第一阶段之后,Vicuna 能够理解图像。但 Vicuna 的生成能力受到了严重的影响。•为了解决这个问题并提高可用性,我们提出了一种新的方法,由模型本身和 ChatGPT 一起创建高质量的图像文本对。基于此,我们然后创建了一个小型(总共 3500 对)但高质量的数据集。•第二个微调阶段在这个数据集上以对话模板进行训练,以显著提高其生成可靠性和整体可用性。令我们惊讶的是,这个阶段的计算效率很高,使用单个 A100 只需大约 7 分钟。•MiniGPT-4 显示出许多与 GPT-4 类似的新兴视觉语言能力。

picture.image overview

入门

安装

1. 准备代码和环境 通过以下命令克隆我们的仓库,创建一个 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 版本上的。请参考我们的指导 这里[5] 准备 Vicuna 权重。最终的权重将在一个类似于以下结构的单个文件夹中:

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

然后,在模型配置文件 这里[6] 的第 16 行设置 Vicuna 权重的路径。 3. 准备预训练的 MiniGPT-4 检查点 根据你准备的 Vicuna 模型下载预训练的检查点。

| 与 Vicuna 13B 对齐的检查点 | 与 Vicuna 7B 对齐的检查点 | | 下载[7] | 下载[8] |

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

本地启动演示

在你的本地机器上运行 demo.py 来尝试我们的演示

`python demo .

py

cfg

path eval_configs / minigpt4_eval .

yaml

gpu

id 0`

为了节省 GPU 内存,Vicuna 默认以 8 位加载,搜索宽度为 1。这种配置对于 Vicuna 13B 需要大约 23G 的 GPU 内存,对于 Vicuna 7B 需要 11.5G 的 GPU 内存。对于更强大的 GPU,你可以通过在配置文件 minigpt4_eval.yaml[10] 中设置 low_resource 为 False 来以 16 位运行模型,并使用更大的搜索宽度。感谢 @WangRongsheng[11] ,你也可以在 Colab[12] 上运行我们的代码

训练

MiniGPT-4 的训练包含两个对齐阶段。 1. 第一阶段预训练 在第一阶段预训练中,模型使用来自 Laion 和 CC 数据集的图像-文本对进行训练,以对齐视觉和语言模型。要下载和准备数据集,请查看我们的 第一阶段数据集准备指南[13] 。在第一阶段之后,视觉特征被映射并可以被语言模型理解。要启动第一阶段的训练,运行以下命令。在我们的实验中,我们使用了 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 检查点 这里 (13B)[14] 或者 这里 (7B)[15] 。与第二阶段后的模型相比,这个检查点生成的句子经常是不完整和重复的。 2. 第二阶段微调 在第二阶段,我们使用由我们自己创建的小型高质量图像-文本对数据集,并将其转化为对话格式以进一步对齐 MiniGPT-4。要下载和准备我们的第二阶段数据集,请查看我们的 第二阶段数据集准备指南[16] 。要启动第二阶段的对齐,首先在 train_configs/minigpt4_stage1_pretrain.yaml[17] 中指定在阶段1训练的检查点文件的路径。你也可以在那里指定输出路径。然后,运行以下命令。在我们的实验中,我们使用了1个A100。

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

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

致谢

•BLIP2[18] MiniGPT-4的模型架构遵循BLIP-2。如果你之前不了解它,不要忘记查看这个伟大的开源工作! •Lavis[19] 这个库是基于Lavis构建的! •Vicuna[20] Vicuna仅用13B参数就能展现出惊人的语言能力,这真是太神奇了。而且它是开源的! 如果你在你的研究或应用中使用MiniGPT-4,请使用下面的BibTeX进行引用:

@article{zhu2023minigpt, title={MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models}, author={Zhu, Deyao and Chen, Jun and Shen, Xiaoqian and Li, Xiang and Elhoseiny, Mohamed}, journal={arXiv preprint arXiv:2304.10592}, year={2023} } 许可证

这个仓库在 BSD 3-Clause License[21] 下。许多代码基于 Lavis[22] ,其许可证在 这里[23] 。

References

[1] GitHub - Vision-CAIR/MiniGPT-4: MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models: https://github.com/Vision-CAIR/MiniGPT-4
[2] MiniGPT-4 - a Hugging Face Space by Vision-CAIR: https://huggingface.co/spaces/Vision-CAIR/minigpt4
[3] GitHub - RiseInRose/MiniGPT-4-ZH: MiniGPT-4 中文部署翻译 完善部署细节: https://github.com/RiseInRose/MiniGPT-4-ZH
[4] 项目页面: https://minigpt-4.github.io
[5] 这里: PrepareVicuna.md
[6] 这里: minigpt4/configs/models/minigpt4.yaml#L16
[7] 下载: https://drive.google.com/file/d/1a4zLvaiDBr-36pasffmgpvH5P7CKmpze/view?usp=share\_link
[8] 下载: https://drive.google.com/file/d/1RY9jV0dyqLX-o38LrumkKRh6Jtaop58R/view?usp=sharing
[9] eval_configs/minigpt4_eval.yaml: eval_configs/minigpt4_eval.yaml#L10
[10] minigpt4_eval.yaml: eval_configs/minigpt4_eval.yaml
[11] @WangRongsheng: https://github.com/WangRongsheng
[12] Colab: https://colab.research.google.com/drive/1OK4kYsZphwt5DXchKkzMBjYF6jnkqh4R?usp=sharing
[13] 第一阶段数据集准备指南: dataset/README_1_STAGE.md
[14] 这里 (13B): https://drive.google.com/file/d/1u9FRRBB3VovP1HxCAlpD9Lw4t4P6-Yq8/view?usp=share\_link
[15] 这里 (7B): https://drive.google.com/file/d/1HihQtCEXUyBM1i9DQbaK934wW3TZi-h5/view?usp=share\_link
[16] 第二阶段数据集准备指南: dataset/README_2_STAGE.md
[17] train_configs/minigpt4_stage1_pretrain.yaml: train_configs/minigpt4_stage2_finetune.yaml
[18] BLIP2: https://huggingface.co/docs/transformers/main/model\_doc/blip-2
[19] Lavis: https://github.com/salesforce/LAVIS
[20] Vicuna: https://github.com/lm-sys/FastChat
[21] BSD 3-Clause License: LICENSE.md
[22] Lavis: https://github.com/salesforce/LAVIS
[23] 这里: LICENSE_Lavis.md

0
0
0
0
评论
未登录
暂无评论