kohya_ss
を使う上で遭遇したエラーの記録
遭遇したエラーリスト
2つのエラーに遭遇した。エラーログは以下のようなもの(抜粋):
- CUDA SETUP: TODO: compile library for specific version: libbitsandbytes_cuda120.so
- CUDA SETUP: Something unexpected happened. Please compile from source:
自分の環境での解決策を記録しておく。
環境
wsl2のubuntu22.04で行っている。
最初から最後までここのバージョンは変えていない:
NVIDIA-SMI 535.54.04 Driver Version: 536.23 CUDA Version: 12.2
最初に遭遇したエラー
記録がこれしか残っていなかった……が、エラーはbitsandbytesというモジュールで発生しており、これは、CUDAの機能をpythonで使うためのラッパであるので、おそらくCUDAのバージョンチェックでエラーしているのだろうと思えた(記録し損ねたエラーの記述から考えた記憶がある。ほぼほぼ似たようなエラーログが下記のリンクのissueにある):
CUDA SETUP: TODO: compile library for specific version: libbitsandbytes_cuda120.so
このbitsandbytesについて調べると、最新のbitsandbytesであればこのエラーは起きないような記述(以下のリンク)を見かけたので、kohya_ssのrequirements_linux.txt
の中のbitsandbytesのバージョンを0.35.0
から0.41.1
に変更した。
次なるエラー
bitsandbytesのバージョンを上げて再試行したところ、今度は次のようなエラーが発生した:
CUDA SETUP: Loading binary /home/<usename>/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda118.so...
libcusparse.so.11: cannot open shared object file: No such file or directory
CUDA SETUP: Something unexpected happened. Please compile from source:
git clone https://github.com/TimDettmers/bitsandbytes.git
cd bitsandbytes
CUDA_VERSION=118 make cuda11x
python setup.py install
CUDA 12.2の存在が無視されているような印象を受けるエラーメッセージが表示されている。対処法が書かれているが、自分の環境の場合、おそらくこれでは解決しないだろう。
PyTorchがCUDA11.8を使うようにセットアップされているようだ。先ほどいじったrequirements_linux.txt
にもPyTorchのバージョンが2.0.1+cu118
などと書いてあった。
これをいじる方法がいまいちわからなかったので(直接書き換えはまずそうだと思った)、色々調べると、次にようなページにいきついた:
ここで書かれているように、環境変数を追加・編集した。~/.bashrc
で永続化しておく:
# ~/.bashrc
#...
export BNB_CUDA_VERSION=122
export LD_LIBRART_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-12.2
ちなみに、source ./venv/bin/activate && python -m bitsandbytes
でbitsandbytesに関するセットアップが正しいかチェックすることができる。うまくいっていれば、次のような表示を目にすることができる:
SUCCESS!
Installation was successful!
そして、上の環境変数の調整をしたことで、この表示を目撃できた!
おわり
これでLoRAが使える。研究者や開発者の方々に感謝。
エラー記録を残すこと以外のことも何かできるといいなあと感じる。
また、もしかしたら最初に行った、requirements_linux.txt
の書き換えは不要だったかもしれない。問題があればまずはここを直すか、git pull
しよう。
以上です。