背景
ここ最近のChatGPT関連で色々調べていたところ、この記事↓でRWKVというものがあると知りました。
ポイントは貧弱な基盤でもLLMが動くとのこと。
Google Colabでも動くようです↓。
目的
自前の環境で動かせる → 機密情報を突っ込める → 使い道が広がる。
ということでGCPで立てた手順を書いておきます。
ComputeEngineでインスタンス作成
マシン構成は以下の通り。もう少し切り詰められるのかもしれないけど、素直に動かなかったりしたのでいったんこの構成でやりました。
- GPUはA100(40GBタイプ)
- ディスクは64GB(ブート用32GB、RWKV用に32GB。別ディスクにしてもOK)
※GPU用のOSイメージもあるけど、自由度が低くなると嫌なので今回は使いませんでした。
1時間当たり300円程度なのでお小遣いで全然遊べる!!
、、けど上げっぱなしだと月30万弱かかるようなので、落とし忘れ注意ですね。
※ちなみに、、節約したい人は最初のセットアップの時はGPU系を載せずにやって、セットアップが終わってからGPUを載せたほうが課金が安いですが、、
セットアップは10分程度で終わるのであんまり気にしなくてもいいかもしれません。
追記)
もう少しお安い以下の構成(T4×2、CPU×8+メモリ52GB)でも動きました。さすがに動きは遅くはなるけど、お値段は約1/3。
1時間たっぷり遊んでも100円!!安い!!
その場合、storategyを「cuda fp16」ではなく「cuda:0 fp16 -> cuda:1 fp16」とする必要があります。二つのGPUに跨ってロードさせる、という指示ようです。
必要なものをセットアップする
# 諸々まとめ入れておく
sudo apt install git git-lfs wget python3 pip unzip
# BlinkDL/ChatRWKVを取ってくる
git clone https://github.com/BlinkDL/ChatRWKV
# モデル置き場を掘っておく
sudo mkdir -p -m 777 /fsx/BlinkDL/HF-MODEL/rwkv-4-raven
# モデルを取ってくる。適宜 https://huggingface.co/BlinkDL/rwkv-4-pile-14b/resolve/main/ で最新のものを確認してください。
wget -P /fsx/BlinkDL/HF-MODEL/rwkv-4-raven/ "https://huggingface.co/BlinkDL/rwkv-4-raven/resolve/main/RWKV-4-Raven-14B-v9-Eng99%25-Other1%25-20230412-ctx8192.pth"
# GCPのGPUドライバーを取ってくる。参考→https://cloud.google.com/compute/docs/gpus/install-drivers-gpu?hl=ja#linux
curl https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.py --output install_gpu_driver.py
# GCPのGPUドライバーをインストール
sudo python3 install_gpu_driver.py
# ninja入れる。最新バージョンはここ⇒https://github.com/ninja-build/ninja のタグで確認。
wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force
# cuda-toolsを入れる。本家はここ⇒「https://developer.nvidia.com/cuda-downloads」
wget https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo add-apt-repository contrib
sudo apt-get update
sudo apt-get -y install cuda
# pipで必要ライブラリを取ってくる
pip install numpy torch
pip install -r ChatRWKV/requirements.txt
※ポイントは、、GCPでGPUドライバを入れるのは専用スクリプトを使う必要があるらしい。Nvidiaの純正ドライバだけだとうまくできなかった。これ知らないとハマる。
設定変更
必要に応じて ChatRWKV/v2/chat.py の中身の調整をします。
# CUDAを使う
os.environ["RWKV_CUDA_ON"] = '1'
# T4使うときはstorategyを書き換える
args.strategy = 'cuda:0 fp16 -> cuda:1 fp16'
# モデル置き場を変えるときはこの辺り↓を書きかえる。
args.MODEL_NAME = '/fsx/BlinkDL/HF-MODEL/rwkv-4-pile-14b/RWKV-4-Pile-14B-20230313-ctx8192-test1050'
# 出力が気に入らないときはGEN_TOP_Pを調整する。0.1、0.2、0.5 辺りで試す。
GEN_TOP_P = 0.8
動かす
これだけ↓
python3 ChatRWKV/v2/chat.py
2分くらいでロードが終わってBobとAliceの会話が始まります。
知っているのかどうか微妙なラインの回答ですね。。
感想
1時間数百円程度のインスタンスでLLMが爆速で動かせてしまうしまう時代なんですね。
楽しい。感謝。