概述
简述
MiniGPT-4使用一个投影层将来自BLIP-2的冻结视觉编码器与冻结的LLM Vicuna对齐。通过两个阶段来训练MiniGPT-4,先是用500万图文对训练,然后再用一个3500对高质量数据集训练。
参考实现:
url=https://github.com/Vision-CAIR/MiniGPT-4 commit_id=22d8888ca2cf0aac862f537e7d22ef5830036808
适配昇腾 AI 处理器的实现:
url=https://gitee.com/ascend/ModelZoo-PyTorch.git code_path=PyTorch/built-in/foundation
准备训练环境
准备环境
当前模型支持的PyTorch如下表所示。
表 1 版本支持表
配套 版本 PyTorch 1.11.0 环境准备指导。
请参考《Pytorch框架训练环境准备》。
安装依赖。
在模型源码包根目录下执行命令,安装模型对应PyTorch版本需要的依赖。
pip install -r requirements.txt # PyTorch1.11版本
替换transformers库中的相关文件。
将当前工程目录下的transformers_modify文件夹中的文件替换到transformers安装目录下的对应位置(基于transformers 4.28.0版本):
utils.py -> transformers/generation/utils.py
准备数据集
获取预训练数据集。
要下载和准备Laion和CC数据集,请查看第一阶段数据集准备说明。 数据集参考目录如下:
laion_dataset ├── 00000.parquet ├── 00000_stats.json ├── 00000.tar ├── ... cc_sbu_dataset ├── 00000.parquet ├── 00000_stats.json ├── 00000.tar ├── ...
获取微调数据集
要下载和准备小型高质量图像文本对数据集,请查看第二阶段数据集准备说明。 数据集参考目录如下:
cc_sbu_align ├── filter_cap.json ├── image ├── 0.jpg ├── ...
准备模型权重
准备预训练的Vicuna权重
用户参照链接自行获取模型文件,并放于自定义目录下,微调依赖该模型权重。 自定义参考目录如下:
vicuna_weights ├── config.json ├── generation_config.json ├── pytorch_model.bin.index.json ├── pytorch_model-00001-of-00003.bin
在配置文件minigpt4.yaml中修改vicuna权重所在的路径。
准备训练的MiniGPT-4检查点:
Checkpoint Aligned with Vicuna 3B Checkpoint Aligned with Vicuna 7B 链接 链接 然后,在评估配置文件minigpt4_eval.yaml的第11行中设置预训练检查点的路径。
准备只有第一阶段训练的MiniGPT-4检查点链接。
开始训练
进入解压后的源码包根目录。
cd /${模型文件夹名称}
预训练
单机4卡预训练
bash test/pretrain_gpt_4p.sh
要启动第一阶段预训练,请先在laion/defaults.yaml和/cc_sbu/defaults.yaml中指定预训练数据集路径。
微调
单机单卡微调
bash test/finetune_gpt_1p.sh
要启动第二阶段微调对齐,请先在minigpt4_stage2_finetune.yaml和cc_sbu/align.yaml中分别指定第1阶段预训练的检查点文件的路径和精调数据集路径。
在线演示
修改配置文件minigpt4_eval.yaml第11行,路径为微调好的权重所在路径。
在线演示:
python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0
运行成功后,在服务器浏览器的输入URL链接:http://127.0.0.1:7860, 会加载UI界面。上传图像开始与MiniGPT-4聊天。
如需本地浏览器远程访问服务器,需要ssh进行端口映射:
ssh -L 6006:127.0.0.1:7860 yourname@server.ip
在本地浏览器输入URL链接:http://127.0.0.1:6006, 即可加载聊天界面。
训练结果展示
表 1 预训练结果展示表
NAME | TokensPerSec | Iterations | BatchSize | Torch_Version |
---|---|---|---|---|
Pretrain -竞品A | 8866 | 5000*4 | 64 | 1.11 |
Pretrain -NPU | 7517 | 8000*4 | 40 | 1.11 |
表 2 微调结果展示表
NAME | TokensPerSec | Iterations | BatchSize | Torch_Version |
---|---|---|---|---|
Finetune -竞品A | 2805 | 200*2 | 12 | 1.11 |
Finetune -NPU | 2433 | 240*2 | 10 | 1.11 |
在线演示效果
这里展示了MiniGPT-4微调后的演示效果。
版本说明
变更
2023.7.05:首次发布。
FAQ
无。