Mini-GPT4的本地搭建过程与实测
前言
MiniGPT-4 是一个结合了图像和文本的先进大型语言模型,能够生成自然语言描述的图像内容。
本文简单记录一下个人在本地搭建Mini-GPT4的过程,以及相关模型参数下载转换,最后做了一些测试。
正文
一、什么是Mini-GPT4
MiniGPT-4 是一个结合了图像和文本的先进大型语言模型,能够生成自然语言描述的图像内容。该模型的训练过程分两个阶段,第一阶段使用大量的图像-文本对进行传统预训练,第二阶段使用模型自己创建的高质量图像-文本对进行微调,从而显著提高了其生成可靠性和整体实用性。MiniGPT-4 采用了 BLIP-2 模型架构,并使用 Vicuna 语言模型来对齐图像和语言模型。
二、本地环境配置
1、安装Conda
Mini-GPT4基于Python环境运行,在Windows、Linux和Macos上均可使用,Python环境使用Conda配置。所以先配置Conda环境,分别介绍三种不同平台的安装步骤:
以下是在 Windows 上安装 Conda 的步骤:
1.点此下载适合您操作系统的 Anaconda 或点此下载 Miniconda 安装程序。
2.双击下载的安装程序,按照提示进行安装。在安装过程中,您可以选择将 Anaconda 或 Miniconda 添加到系统 PATH 中,这将允许您在命令提示符下方便地使用 Conda 命令。
3.安装完成后,打开 Anaconda Prompt 或 Windows PowerShell,输入 “conda” 确认是否安装成功。如果成功,将显示 Conda 的基本使用方法。
4.如果您需要创建和管理 Conda 环境,可以使用 “conda create” 命令创建新的环境,并使用 “conda activate” 命令激活环境。详细的环境管理方法可以查看 Conda 官方文档。
对于Linux、Macos或其他支持的操作系统,可以用上述方式下载程序安装,更推荐终端安装:
1.下载适合您 Linux 版本和架构的 Anaconda 或 Miniconda 安装程序。
使用curl命令下载:
1
curl -O https://repo.anaconda.com/archive/Anaconda-latest-Linux-x86_64.sh
使用wget命令下载:
1
wget https://repo.anaconda.com/archive/Anaconda-latest-Linux-x86_64.sh
2.下载完成后,您可以通过运行以下命令来安装Anaconda:
1
bash Anaconda-latest-Linux-x86_64.sh
按照安装程序的指示进行操作即可完成安装。
2、配置镜像源(中国大陆可选)
要在conda中更改国内镜像源,可以按照以下步骤操作:
1.打开终端或命令行窗口。输入以下命令,将conda的配置文件中的channels设置为清华镜像源:
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ |
注意:如果想使用其他镜像源,请将上述命令中的URL替换为选择的镜像源的URL。
2.输入以下命令,更新conda:
1 | conda update conda |
3.输入以下命令,验证配置是否成功:
1 | conda info |
如果看到以下信息,说明已成功更改了镜像源:
1 | channels: |
现在,可以使用conda命令安装软件包,它将从选择的国内镜像源下载软件包。
3、安装Mini-GPT4
Conda安装好后就可以安装Mini-GPT4了:
1 | git clone https://github.com/Vision-CAIR/MiniGPT-4.git |
对于中国大陆用户,这里需要注意一点,environment.yml文件中除了创建conda环境之外,将环境中的pip依赖项也一并安装了,但是由于环境内的pip还未配置镜像源,基本上是安装不了依赖库的。
对于这个问题,需要注释environment.yml文件中的pip依赖项,将其复制到新文件requirements.txt中,并使用以下命令安装:
1 | pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple |
三、模型参数下载与转换
Mini-GPT4是基于Vicuna-13B和Vicuna-7B的V0版本训练而来的,所以模型参数有两部分:Vicuna Weights和pretrained minigpt4 weights,需要分别下载使用。
Vicuna weights
Vicuna是一个开源的基于LLAMA的LLM,其性能接近ChatGPT。 Mini-GPT4使用v0版本的Vicuna-13B,最近两天又完成了基于Vicuna-7B的模型,适合小显存的GPU用户。
注意,所有基于LLaMA的模型都只能给delta权重(下载地址),再使用FastChat将这个delta权重加到original LLaMA权重上,得到最终release模型的权重。而这个转换过程需要至少60G的内存占用,因此这里不介绍相关步骤,如果对转换过程感兴趣的,可以参考这篇文章和这篇文章。
这里直接给出已经转换好的Vicuna-13B模型下载地址和Vicuna-7B模型下载地址,下载好完整的模型后,修改目录
minigpt4/configs/models
下的文件minigpt4.yaml#L16
的模型加载地址,就可以直接使用了。pretrained minigpt4 weights
这是微调的minigpt4权重,可以直接下载:
Checkpoint Aligned with Vicuna 13B Checkpoint Aligned with Vicuna 7B Downlad Download 下载好后修改目录
eval_configs
下的文件minigpt4_eval.yaml#L10
为下载参数文件的地址即可。本地运行
在目录MiniGPT-4下执行:
1
python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0
对于Vicuna-13B的16bit权重需要23G+的显存,Vicuna-7B需要12G+的显存,如果设置目录
eval_configs
下的文件minigpt4_eval.yaml
中的low_resource
为True,则可以使用8bit权重,可以进一步降低显存占用,根据实际显卡情况更改即可。
四、实际测试
使用了Vicuna-13B的16bit测试情况如下: 这是测试于2023年4月20日的结果,同时Mini-GPT4的项目还在不断更新,效果应该会越来越好的。
五、总结
Mini-GPT4相对于GPT4而言,具有更小的模型规模和更低的计算资源需求,这使得Mini-GPT4适用于一些资源受限的场景。同时,Mini-GPT4在视觉语言理解任务中表现出了很好的性能,特别是在生成任务中。然而,Mini-GPT4与GPT4相比还有一些局限性,例如生成的结果可能不如GPT4的自然流畅,以及Mini-GPT4并没有覆盖GPT4的全部功能。但总的来说,Mini-GPT4是一种有前途的模型,具有很大的发展潜力。同时这也是LLM向小型化发展的一小步,但这才刚刚开始,就跟互联网刚兴起时一样,未来可期。
最后
参考文章
声明
本文仅作为个人学习记录。
本文永久记录于区块链博客xlog。