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