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检查点
根据你准备的Vicuna模型下载预训练的checkpoints。
与 Vicuna 13B 对齐的检查站 | 与 Vicuna 7B 对齐的检查站 |
---|---|
下载 | 下载 |
然后,在第 11 行的eval_configs/minigpt4_eval.yaml中的评估配置文件中设置预训练检查点的路径。
通过运行在本地计算机上试用我们的演示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中将 low_resource 设置为 False并使用更大的束搜索宽度来以16 位运行模型 。
感谢@WangRongsheng,你也可以在Colab上运行我们的代码
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
可以 在此处 (13B)或此处 (7B)下载只有第一阶段训练的 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 能够连贯地和用户友好地谈论图像。
这个存储库在BSD 3-Clause License下。许多代码都基于Lavis和 BSD 3-Clause License here。