MiniGPT-4 をローカルにデプロイする

1. MiniGPT-4とは

MiniGPT-4: 高度な大規模言語モデルによる視覚言語の理解の強化。

MiniGPT-4 は、視覚言語理解タスクのパフォーマンスを向上させるために修正された事前トレーニング済みオートエンコーダー モデルです。

MiniGPT-4 は GPT-4 アーキテクチャに基づいていますが、計算コストを削減し、トレーニング速度を向上させるためにパラメーターの数が約 40 分の 1 に削減されています。

MiniGPT-4 は、画像記述の生成、視覚的な質問応答、および視覚的な常識推論という 3 つの視覚言語理解タスクに適用されます。実験結果によると、最先端の手法と比較して、MiniGPT-4 はこれら 3 つのタスクで優れたパフォーマンスを達成しながら、トレーニングを高速化できることがわかりました。研究によると、高度な言語モデルのパラメータの数を減らすことで、視覚言語理解の分野でより高速かつ正確な推論が達成できることが示されています。

MiniGPT-4 は、視覚と言語の共同学習環境の軽量オプションとして使用できます。

2.Githubアドレス

https://github.com/Vision-CAIR/MiniGPT-4

3. MiniGPT-4をインストールする

参照: https://pytorch.org/get-started/locally/

コードと環境を準備し、

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

(オプション) WSL-Ubuntu 22.04 を使用し、CUDA Toolkit 11.8 をインストールし、pytorch、torchvision、torchaudio を CUDA Toolkit 11.8 と互換性のあるバージョンに更新しました。

conda uninstall pytorch torchvision torchaudio
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

(オプション) pip を使用してインストールする場合のコマンドは次のとおりです。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

事前にトレーニングされた Vicuna 重みを使用して準備を整えましょう。Vicuna は、ChatGPT に近いパフォーマンスを備えたオープンソースの LLAMA ベースの LLM です。現在、Vicuna-13B の v0 バージョンを使用しています。

git-lfs (https://git-lfs.com) をインストールします。

sudo apt install -y git-lfs

ビクーニャのデルタ重量をダウンロードし、

git lfs install
git clone https://huggingface.co/lmsys/vicuna-13b-delta-v0  # 更强大,需要至少24G的gpu内存
# or
git clone https://huggingface.co/lmsys/vicuna-7b-delta-v0  # 更小,需要12G gpu内存

これは直接の使用重量ではなく、使用重量と LLAMA-13B の元の重量との差であることに注意してください。(LLAMA の規則により、LLAMA の重量は公開できません)。

LLAMA-7B または LLAMA-13B の元の体重をインターネットから HuggingFace 形式で取得し、

git clone https://huggingface.co/decapoda-research/llama-13b-hf  # 更强大,需要至少24G的gpu内存
# or
git clone https://huggingface.co/decapoda-research/llama-7b-hf  # 更小,需要12G gpu内存

モデルの作成者は、構成ファイルを作成するときにタイプミスを犯しました。tokenizer_config.json次のコマンドを実行してファイルを変更してください。

sed -i 's/LLaMATokenizer/LlamaTokenizer/g' ./llama-13b-hf/tokenizer_config.json

これら 2 つのウェイトの準備ができたら、Vicuna チームのツールを使用して実際の作業ウェイトを作成できます。

まず、v0 Vicuna 互換ライブラリを次のようにインストールします。

pip install git+https://github.com/lm-sys/[email protected]

次に、次のコマンドを実行して最終的な作業重量を作成します。

python3 -m fastchat.model.apply_delta --base ./llama-13b-hf/ --target ./vicuna_weights/ --delta ./vicuna-13b-delta-v0/

最終的なウェイトは、次のような構造を持つ単一のフォルダーに格納されます。

vicuna_weights/
├── config.json
├── generation_config.json
├── pytorch_model-00001-of-00003.bin
├── pytorch_model-00002-of-00003.bin
├── pytorch_model-00003-of-00003.bin
├── pytorch_model.bin.index.json
├── special_tokens_map.json
├── tokenizer.model
└── tokenizer_config.json

次に、モデル構成ファイルの 16 行目にビキューナの重みのパスを設定します。

vi minigpt4/configs/models/minigpt4.yaml

--- modify
  llama_model: "/root/workspace/MiniGPT-4/vicuna_weights/"
---

4. 事前トレーニングされた MiniGPT-4 チェックポイントを準備する

準備した Vicuna モデルに従って、事前トレーニングされたチェックポイントをダウンロードします。

次に、評価構成ファイルeval_configs/minigpt4_eval.yamlの。

vi eval_configs/minigpt4_eval.yaml

--- modify 
  ckpt: '/root/workspace/pretrained/pretrained_minigpt4.pth'
---

5. ローカルでデモを開始する

ローカル マシンでデモ Demo.py を試すには、次のコマンドを実行します。

python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0

ここに画像の説明を挿入
ブラウザを使用して MiniGPT-4 を開いてhttp://127.0.0.1:7860アクセスし、写真をアップロードして効果をテストします。

ここに画像の説明を挿入

その他 1、CUDA Toolkit 11.8をインストールする

参照: https://developer.nvidia.com/cuda-11-8-0-download-archive

私は WSL-Ubuntu 22.04 を使用しています。以下は CUDA Toolkit 11.8 をインストールするコマンドです。

sudo apt install -y dkms
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

ここに画像の説明を挿入
ここに画像の説明を挿入

入力ログは以下の通りです。

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.8/

Please make sure that
 -   PATH includes /usr/local/cuda-11.8/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.8/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 520.00 is required for CUDA 11.8 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

環境変数を設定し、

sudo vi ~/.bashrc

--- add
export CUDA_HOME=/usr/local/cuda-11.8
export CuDNN_HOME=/usr/local/cuda-11.8/include
export PATH=/usr/local/cuda-11.8/bin:$PATH
export CPLUS_INCLUDE_PATH=/usr/local/cuda-11.8/include:$CPLUS_INCLUDE_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:/usr/local/cuda-11.8/targets/x86_64-linux/lib/stubs/libcuda.so:$LD_LIBRARY_PATH
---
source ~/.bashrc
sudo vi /etc/ld.so.conf

--- add
/usr/local/cuda-11.8/lib64
---
sudo ldconfig

その他 2、GCC 9 バージョンをインストールし、デフォルトの GCC バージョンとして設定します。

sudo apt-get uninstall -y gcc
sudo apt-get install -y gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

その他の 3 (成功)、CUDA Toolkit 11.8 と互換性のある bitsandbytes を再インストールします

参照: https://blog.csdn.net/anycall201/article/details/129930919

pip3 uninstall bitsandbytes
pip3 install bitsandbytes

bitsandbytes のエラー メッセージを解決し、

cp /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py.old
vi /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py

--- modify
(略)

                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
            else:
                self.add_log_entry(f"CUDA SETUP: Loading binary {binary_path}...")
                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
(略)
    # if not torch.cuda.is_available(): return 'libbitsandbytes_cpu.so', None, None, None, None
    if not torch.cuda.is_available(): return 'libbitsandbytes_cuda118.so', None, None, None, None
(略)
    if failure:
        # binary_name = "libbitsandbytes_cpu.so"
        binary_name = "libbitsandbytes_cuda118.so"
---

その他 3 (失敗)、CUDA Toolkit 11.8 と互換性のある bitsandbytes を再インストールします

参照: https://blog.csdn.net/anycall201/article/details/129930919

pip3 uninstall bitsandbytes
git clone https://github.com/timdettmers/bitsandbytes.git;cd bitsandbytes
CUDA_VERSION=118 make cuda11x
python3 setup.py install

bitsandbytes のエラー メッセージを解決し、

cp /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py.old
vi /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py

--- modify
(略)

                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
            else:
                self.add_log_entry(f"CUDA SETUP: Loading binary {binary_path}...")
                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
(略)
    # if not torch.cuda.is_available(): return 'libbitsandbytes_cpu.so', None, None, None, None
    if not torch.cuda.is_available(): return 'libbitsandbytes_cuda118.so', None, None, None, None
(略)
    if failure:
        # binary_name = "libbitsandbytes_cpu.so"
        binary_name = "libbitsandbytes_cuda118.so"
---

その他4、libgl1-mesa-devをインストールする

sudo apt-get install libgl1-mesa-dev

その他5、/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic linkエラーを

mv /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.old
sudo ln -s /usr/lib/wsl/lib/libcuda.so /usr/lib/wsl/lib/libcuda.so.1
sudo ldconfig

終わり!

おすすめ

転載: blog.csdn.net/engchina/article/details/130503800