Vicuna-13Bは,28GBのVRAMがあれば動くとのこと.GPU分散も可能で,16GBのグラフィックボード2台積んでいると動くということ.
Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality
GitHub - lm-sys/FastChat: The release repo for "Vicuna: An Open Chatbot Impressing GPT-4"
TUTクラスタには,計算サーバの各ノードにNVIDIA Tesla V100 16G x2が積んであるので,つまりLLMsが手元で動かせそうじゃん!となった.そのレポート.
このドキュメントは、TUTクラスタでVicuna-13Bを実行する方法について説明しています。先に、モデルをダウンロードしたり、必要なライブラリをインストールしたりするための前提条件を紹介しています。その後、インタラクティブジョブでの対話的な実行方法と、バッチジョブでの実行方法を説明しています。バッチ処理では、Snakemakeを使用して、Vicuna-13Bモデルを使用して複数のテキストを要約するルールを実行する方法について説明しています。ルールは、各テキストを異なる種類の要約にまとめるために、様々な変化を加えるスクリプトを使用します。要約は、out
ディレクトリに保存されます。さらに、各ルールの実行に必要なリソースを自動的に管理するSnakemakeプロファイルを使用する方法を説明しています。
具体的なコマンドの説明は、以下の通りです。
qsub -I -q gEduq -l select=1:ncpus=1:mem=3g:ngpus=2 -v DOCKER_IMAGE=nvcr.io/nvidia/pytorch:22.12-py3 run.sh
l
オプションで使用するリソースを指定します。find ../data/*.txt | xargs -P 8 -I{} snakemake --nolock --profile pbspro --cluster-config cluster.json --config input="{}" --rerun-incomplete &>> alllog.log &
out
ディレクトリに保存されます。-config input="{}"
は、引数のテキストファイルを処理するように指定します。-cluster-config cluster.json
は、Snakemakeが使用するクラスターの設定を含みます。-profile pbspro
は、Snakemakeが各ルールの実行に必要なリソースを自動的に管理するためのプロファイルを指定します。&>> alllog.log &
は、すべての出力をログファイルに追加することを意味します。また、ジョブをバックグラウンドで実行することを意味します。<aside> ‼️ (2023/06/28追記:vicunaのv1.3から,従来とは異なりモデルウェイトが全て公開されている.そのため,fschatリポジトリの記述を要参照.)
</aside>
ここに書いてある手順をなぞれば良いが,詰まったところをいくつかピックアップ.
GitHub - lm-sys/FastChat: The release repo for "Vicuna: An Open Chatbot Impressing GPT-4"
fschat
が動かないVicuna-13Bを動かすためのプログラムはfschat
パッケージとしてpip
で提供されている.Install手順をよく読むとわかるが,huggingface/transformers
の最新mainブランチバージョンが必要.しかも,当該リポジトリは活発に開発されていて更新が早いので,時々conflictが起きる.
バージョンを指定すれば動くことがあるので,例えばこんな感じのパッケージ指定をする.
pip install fschat
pip install git+https://github.com/huggingface/transformers@15641892985b1d77acc74c9065c332cd7c3f7d7f
ただし,おそらく2023/04/07現在の[email protected]
(latest)なら,huggingface/transformers@HEAD
でも動くはず.[email protected]
と,その当時のhuggingface/transformers@1670be4bdec19d5a8893f943bf78a8d9b3dc8911
がdependency conflictで動かなかった.
Vicuna-13Bは,LLaMA-13Bのweightsにパッチを当てる形で頒布されている.このパッチを当てる作業に60GBのRAMが必要.TUTクラスタを使えば余裕だね!僕は手元の128GB RAMマシンを使いました.
(2023/06/28追記:この作業は不要になった)