もはや説明の必要もないかもしれませんが
スタンフォード大学のアルパカ論文より生まれた、LLMを調教できる最高のツール。
その天の恵みを、ボクと一緒にインストールしていこう。
PyTorchのエラーとか、CUDAのエラーとか、シンボリックリンクのエラーとか、
色々あるけれど、僕が一緒にいるから、大丈夫だよ。
大丈夫じゃないこともあるけど、愛があれば大丈夫。
つらいときは、思い出して。
「CUDAとPyTorchは、愛があれば動く。」
本編
Alpaca-Lora-4bit をWSL2でうごかしてみる(適当な記事)
https://github.com/johnsmith0031/alpaca_lora_4bit
(3/28注:最近のコミットでGPTQとPEFTが独自バージョンに変更されました。そのため、この記事の内容は書いてからわずか一日(正確には6時間)で陳腐化いたしました。README.MDを確認しながら、この記事の中の使えるところだけ、使ってみてください。私はまだ最新版を導入していないので、導入できたら書き換えます。この業界の進歩の速度はサラマンダーよりずっとはやいのです。)
これは何?:LLMにLoRAという手法でファインチューニングを行うプログラム。
そして、24GBのVRAMがあれば、”らくだの仲間”たちを賢くしてくれるツール。
1. インストール
1.1 Anacondaの環境を作る
conda create -n alpaca python=3.10.9
日夜開発者の皆が試行錯誤しているため、最新情報(GitHubのREADMEやissue)を良く見ておくこと。
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidiaconda install -c conda-forge cudatoolkit=11.7conda install -c conda-forge ninjaconda install -c conda-forge accelerateconda install -c conda-forge sentencepiecepip install git+https://github.com/huggingface/transformers.gitpip install git+https://github.com/huggingface/peft.gitpip install bitsandbytesconda install datasets -c conda-forge
(4/4追記 最新版では必要パッケージが変わっているので、読み替えてください。今後もどんどん変わりそう……)
GPTQ某のインストールにcudatoolkit-devのnvcc(コンパイラが必要)
conda install -c conda-forge cudatoolkit-dev
Cのコンパイラも必要なので以下のパッケージをインストール。
sudo apt install build-essential
pipで依存関係をインストール
(バージョンが上がって互換性が無くなって涙を拭う展開に成ることが往々にして良くあるので、issueはちゃんとチェックすること。)
pip install -U -r requirement.txt
1.3 CUDA Toolkit 11.7を入れる
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run
WSL版(ドライバが同梱されていないバージョン)を選ぶ |
CUDAのインストールに失敗したら、全部消しちゃえば、大丈夫。
参考: CUDAを削除・アンインストール
1.4 一息つきます。
1.5 お茶を淹れよう。
1.6 小便は済ませたか? 神様にお祈りは?
部屋の隅でガタガタ震えて命乞いする心の準備はOK?
1.7 GPTQ某をコンパイルする
これはc++で書かれているから、内容が変わる度に都度コンパイルが必要。
cd して
pip install -U -r requirement.txtpython setup_cuda.py install
環境構築に失敗していた場合、ここで「CUDAというもの」を知ることになるだろう。
エラーが出なければ、次に進む。出たら、GitHubのissueを調べまくる。
常に情報が変わっていくのであえてここには書かないよ。
事実、今日も6時間くらい前に情報が変わっていて涙目になったりした。
頑張って探して、だめだったらお茶を飲んで、一旦まったりしよう。
環境構築、また、頑張ろうね。
2. ファインチューニング
OPT等のモデルデータ(4bit)をHuggingfaceや「特殊な方法」を使って用意し、ディレクトリ内に入れる。
python finetune.py
・arg_parser.py の中にモデルデータのパスや設定などが含まれているので適宜書き換える。
・パラメータはコード内にあるので適当にいっぱい試して遊ぶ。
・mbatch_sizeが各GPUに対するバッチ数になる雰囲気がする。
・データセットの量にも依るけれど、少ないepoch数でも、わりと過学習させやすい。
トークナイザーのエラーが出たら、configファイル内の記述との整合性を確認してみてね。
3. (省略)ローラを愛でる
4MBくらいの「語尾をだにゃ」に変えたデータセット
3epoch 2時間(RTX3090)