前言

​ 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
2
3
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

注意:如果想使用其他镜像源,请将上述命令中的URL替换为选择的镜像源的URL。

​ 2.输入以下命令,更新conda:

1
conda update conda

​ 3.输入以下命令,验证配置是否成功:

1
conda info

​ 如果看到以下信息,说明已成功更改了镜像源:

1
2
3
channels:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

​ 现在,可以使用conda命令安装软件包,它将从选择的国内镜像源下载软件包。

3、安装Mini-GPT4

​ Conda安装好后就可以安装Mini-GPT4了:

1
2
3
4
git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigpt4

对于中国大陆用户,这里需要注意一点,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测试情况如下:minigpt4-testline 这是测试于2023年4月20日的结果,同时Mini-GPT4的项目还在不断更新,效果应该会越来越好的。

五、总结

​ Mini-GPT4相对于GPT4而言,具有更小的模型规模和更低的计算资源需求,这使得Mini-GPT4适用于一些资源受限的场景。同时,Mini-GPT4在视觉语言理解任务中表现出了很好的性能,特别是在生成任务中。然而,Mini-GPT4与GPT4相比还有一些局限性,例如生成的结果可能不如GPT4的自然流畅,以及Mini-GPT4并没有覆盖GPT4的全部功能。但总的来说,Mini-GPT4是一种有前途的模型,具有很大的发展潜力。同时这也是LLM向小型化发展的一小步,但这才刚刚开始,就跟互联网刚兴起时一样,未来可期。

最后

参考文章

如何得到vicuna-13B的模型权重

小羊驼模型(FastChat-vicuna)运行踩坑记录

Mini-GPT4官方文档


声明

本文仅作为个人学习记录。

本文永久记录于区块链博客xlog