前言#
本文簡單記錄一下個人在本地搭建 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保持同步。