MiniGPT-4 をローカルにデプロイする
- 1. MiniGPT-4とは
- 2.Githubアドレス
- 3. MiniGPT-4をインストールする
- 4. 事前トレーニングされた MiniGPT-4 チェックポイントを準備する
- 5. ローカルでデモを開始する
- その他 1、CUDA Toolkit 11.8をインストールする
- その他 2、GCC 9 バージョンをインストールし、デフォルトの GCC バージョンとして設定します。
- その他の 3 (成功)、CUDA Toolkit 11.8 と互換性のある bitsandbytes を再インストールします
- その他 3 (失敗)、CUDA Toolkit 11.8 と互換性のある bitsandbytes を再インストールします
- その他4、libgl1-mesa-devをインストールする
- その他 5、「/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 はシンボリック リンクではありません」エラーを解決します
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
終わり!