MiniGPT-4|使用高级大语言模型增强视觉语言理解
示例
介绍
- MiniGPT-4仅使用一个投影层将来自BLIP-2的冻结视觉编码器与冻结的LLM,Vicuna对齐。
- 我们分两个阶段训练 MiniGPT-4。第一个传统的预训练阶段是使用 5 个 A10 在 4 小时内使用大约 100 万个对齐的图像文本对进行训练。在第一阶段之后,骆马能够理解图像。但骆马的生成能力受到严重影响。
- 为了解决这个问题并提高可用性,我们提出了一种新颖的方法,通过模型本身和 ChatGPT 一起创建高质量的图像文本对。在此基础上,我们创建了一个小的(总共3500对)但高质量的数据集。
- 第二个微调阶段在对话模板中对此数据集进行训练,以显着提高其生成可靠性和整体可用性。令我们惊讶的是,这个阶段的计算效率很高,使用单个 A7 只需要大约 100 分钟。
- MiniGPT-4 产生了许多新兴的视觉语言功能,类似于 GPT-4 中展示的功能。
GitHub
项目开源地址:Vision-CAIR/MiniGPT-4
部署教程
如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键
后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。
首先我们需要确认一个工作目录,用来存放MiniGPT-4
的相关文件。本站所选择的目录为D盘的根目录下openai.wiki文件夹,完整路径为:D:\openai.wiki
。
1.检测D盘是否在openai.wiki
,没有则创建该文件夹。
if not exist D:\openai.wiki mkdir D:\openai.wiki
2.强制切换工作路径为D盘的openai.wiki
文件夹。
cd /d D:\openai.wiki
3.拉取Github仓库文件夹,将下载至openai.wiki
文件夹。
git clone https://github.com/Vision-CAIR/MiniGPT-4
注意:如果您无法完成第3步,执行后报错或者无法下载,可以下载该文件将其解压至D:\openai.wiki
即可。
环境安装
为不影响电脑中的现有环境,请一定要安装Conda,如果您不知道什么是Conda,或者未安装过Conda,请参考如下文章,安装部署Conda之后再继续以下步骤。
在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。
为避免出现问题,我们再次强制切换至MiniGPT-4的项目路径,确保一切可以正常安装。
cd /d D:\\openai.wiki\\MiniGPT-4
安装MiniGPT-4项目的相关依赖库,此步骤可能需要稍等几分钟才能够安装完成。
conda env create -p D:\\openai.wiki\\MiniGPT-4\\minigpt4 -f D:\\openai.wiki\\MiniGPT-4\\environment.yml
激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate D:\\openai.wiki\\MiniGPT-4\\minigpt4
模型相关
⚠️注意:自编译模型该项目的模型文件比较特殊,需要自行编译,官方因版权问题并没有直接提供可以直接使用的模型文件。需要自行下载两个模型进行编译,编译可能需要128GB内存,本站的电脑只有32GB内在,无法达到要求,请各位自行编译。
官方下载
Vicuna官方下载地址:lmsys/vicuna-13b-delta-v0 · Hugging Face
LLAMA-13B官方下载地址:LLaMA (huggingface.co)
MiniGPT-4官方下载地址:https://drive.google.com/file/d/1a4zLvaiDBr-36pasffmgpvH5P7CKmpze/view?usp=share_link
网盘下载
vicuna-13b-delta-v0:https://www.123pan.com/s/sKd9-fcJc.html
LLAMA-13B:https://www.123pan.com/s/sKd9-BcJc.html
MiniGPT-4:https://www.123pan.com/s/sKd9-acJc.html
Vicuna模型配置
需要注意的是,这并不是直接使用的工作权重,而是工作权重和 LLAMA-13B 原始权重之间的差异。(由于 LLAMA 的规定,我们无法分发 LLAMA 的权重。)
然后,您需要获取HuggingFace
格式的原始LLAMA-13B
权重,可以按照HuggingFace提供的说明或从互联网或本站获取。
当这两个权重准备好后,我们可以使用 Vicuna 团队提供的工具来创建真正的工作权重。首先,通过以下方式安装与v0
版本的Vicuna
兼容的库:
pip install git+https://github.com/lm-sys/FastChat.git@v0.1.10
将下载后的两个模型分别移动至D:/openai.wiki/MiniGPT-4目录下新建Model文件夹,分别放入或新建如下路径文件
LLAMA-13B
模型路径D:/openai.wiki/MiniGPT-4/Model/llama-13b-hf
vicuna-13b-delta-v0
模型路径D:/openai.wiki/MiniGPT-4/Model/vicuna-13b-delta-v0
working-vicuna
最终输出路径D:/openai.wiki/MiniGPT-4/Model/working-vicuna
最后,运行以下命令以创建最终的工作权重:
python -m fastchat.model.apply_delta --base D:/openai.wiki/MiniGPT-4/Model/llama-13b-hf/ --target D:/openai.wiki/MiniGPT-4/Model/weight/ --delta D:/openai.wiki/MiniGPT-4/Model/vicuna-13b-delta-v0/
等待良久之后,将会在D:/openai.wiki/MiniGPT-4/Model/working-vicuna
目录下生成已编译后的新权重文件。
vicuna_weights ├── config.json ├── generation_config.json ├── pytorch_model.bin.index.json ├── pytorch_model-00001-of-00003.bin ...
修改D:\openai.wiki\MiniGPT-4\minigpt4\configs\models\minigpt4.yaml
文件,将第16行的内容替换为你的模型路径。
model: arch: mini_gpt4 # vit encoder image_size: 224 drop_path_rate: 0 use_grad_checkpoint: False vit_precision: "fp16" freeze_vit: True freeze_qformer: True # Q-Former num_query_token: 32 # Vicuna llama_model: "D:/openai.wiki/MiniGPT-4/Model/working-vicuna" # generation configs prompt: "" preprocess: vis_processor: train: name: "blip2_image_train" image_size: 224 eval: name: "blip2_image_eval" image_size: 224 text_processor: train: name: "blip_caption" eval: name: "blip_caption"
MiniGPT-4模型配置
修改D:\openai.wiki\MiniGPT-4\eval_configs\minigpt4_eval.yaml
文件,将第11行的内容替换为你的MiniGPT-4
模型路径。
model: arch: mini_gpt4 model_type: pretrain_vicuna freeze_vit: True freeze_qformer: True max_txt_len: 160 end_sym: "###" low_resource: True prompt_path: "prompts/alignment.txt" prompt_template: '###Human: {} ###Assistant: ' ckpt: '/path/to/pretrained/ckpt/' datasets: cc_sbu_align: vis_processor: train: name: "blip2_image_eval" image_size: 224 text_processor: train: name: "blip_caption" run: task: image_text_pretrain
使用教程
启动MiniGPT-4的方法非常简单,按顺序执行如下代码即可。
激活MiniGPT-4的Conda虚拟环境
conda activate D:\\openai.wiki\\MiniGPT-4\\minigpt4
切换目录至MiniGPT-4项目路径
cd /d D:\\openai.wiki\\MiniGPT-4
执行行如命令,启动MiniGPT-4。
python demo.py --cfg-path eval_configs/minigpt4_eval.yaml
在这里,我们默认将 Vicuna 加载为 8 bit以节省一些 GPU 内存使用量。 此外,默认波束搜索宽度为 1。 在此设置下,演示花费大约 23G GPU 内存。 如果您有功率更强大的 GPU 和更大的 GPU 内存,则可以运行该模型在配置文件D:\\openai.wiki\\MiniGPT-4\\eval_configs\\minigpt4_eval.yaml
中将low_resource
设置为False
并使用更大的波束搜索宽度,在 4 bit中。
很详细!感谢分享~
不用模型可以部署么
@123 不可以,必须要模型。
有没有mac上的教程
@king 站长有Mac电脑,但是Mac的效率不是很高,所以一直没写相关教程,既然大家有需要,后续会出。
vicuna-7b行么,搭建起来步骤一样么?
D:\openai.wiki\MiniGPT-4>conda activate D:\\openai.wiki\\MiniGPT-4\\minigpt4
(D:\openai.wiki\MiniGPT-4\minigpt4) D:\openai.wiki\MiniGPT-4>这样算不算环境安装成功了?谢谢
@dssmn 执行这个才行python demo.py –cfg-path eval_configs/minigpt4_eval.yaml
可以把LLAMA-13B换成LLAMA-7B么?
@dssmn 好像不行,官方的项目就是基于13B的。
@PhiltreX 其实是可以的,我就是用 7B 去部署运行的MiniGPT-4
部署完了后,有没有示例如何调用?提供些例子
A decoder-only architecture is being used, but right-padding was detected! For correct generation results, please set `padding_side=’left’` when initializing the tokenizer.
提问ai报这个错,并且给出的答案是乱码的,想问下大佬什么问题?谢谢
博主,有捣鼓过MiniGPT-4的Api调用嘛,最近有这个需求,但是找文档找得脑袋有点炸裂,如果可以的话出个教程呗,万分感激。
@陈小鱼 emmm,我这里系统不满足上去玩MiniGPT-4,因为我这2080TI跑不起来,唉。
@PhiltreX 给个学习的地址也行啊。麻烦发个链接。