要約
久しぶりにUbuntuでStable DiffusionのLoRA学習を動かそうと思ったんです。
これまでは、kohya-ssさんのsd-scriptsを使っていたんですけど、この際、Kohya's GUIに乗り換えることにしたんですよ。やっぱりGUIのほうが楽だし。ちなみにKohya's GUIは、kohya-ssさんのsd-scriptsにGUIを追加したものだそうです。
そんなわけでPCにKohya's GUIをインストールして動かしてみたんですが、CUDAのバージョン関係でエラーになって動かないんです、これが。
あれれ、と思ってsd-scriptsのほうも動かしてみたんですが、こっちも動かなくなってるんです。おやおや……
CUDAを何度かバージョンアップしているので、そのせいかもしれません。
あれこれ試行錯誤した結果、
- conda仮想環境にcuda toolkitをインストールする
- 環境変数BNB_CUDA_VERSIONを設定する
というふたつの方法を使ってKohya's GUIを動かせるようになりましたので、ことの顛末を残しておくことにします。
目次
序論
CUDAのバージョン関係ってややこしいですよね。私もCUDAバージョンの泥沼から抜け出せなくなって、OSからインストールし直したことが何度かあります。 この記事が、同じようにCUDAバージョンの泥沼にはまってしまった皆様の一助となれれば幸いです。
本論
PCスペック
私のPCのスペックは以下の通りです。
- CPU: AMD Ryzen 5 7600X
- GPU: RTX 3060
- メモリ: 64 GB
- OS: Ubuntu 22.04
- NVIDIA Driver: 535.129.03
- CUDA Toolkit: 12.2
Kohya's GUIインストール手順
UbuntuにKohya's GUIをインストールする手順は、kohya_ss/README.md at master · bmaltais/kohya_ssに実にあっさりと書かれています。(実際あっさりしたもんなんです、動いてくれさえすれば)これに従ってインストールしていきます。
まず、conda
コマンドでpython 3.10.6
のconda仮想環境を作ります。仮想環境名はなんでもいいのですが、今回はkohyass
にしました。
(base) $ conda create -n kohyass python=3.10.6
conda仮想環境kohyass
に入ります。
(base) $ conda activate kohyass
GitHubからKohya's GUIのソースを落としてきて、
(kohyass) $ git clone https://github.com/bmaltais/kohya_ss.git
できあがったkohya_ss
ディレクトリに移動します。
(kohyass) $ cd kohya_ss
setup.sh
を実行します。
(kohyass) $ ./setup.sh
Skipping git operations.
Ubuntu detected.
Python TK found...
Switching to virtual Python environment.
13:30:19-638656 INFO Installing python dependencies. This could take a few minutes as it downloads files.
13:30:19-641381 INFO If this operation ever runs too long, you can rerun this script in verbose mode to check.
13:30:19-642144 INFO Version: v22.2.2
13:30:19-642900 INFO Python 3.10.6 on Linux
13:30:19-643968 INFO Installing modules from requirements_linux.txt...
13:30:19-644758 INFO Installing package: torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url
https://download.pytorch.org/whl/cu118
13:31:20-947720 INFO Installing package: xformers==0.0.21 bitsandbytes==0.41.1
13:31:24-330210 INFO Installing package: tensorboard==2.14.1 tensorflow==2.14.0
13:31:35-187069 INFO Installing modules from requirements.txt...
13:31:35-188176 INFO Installing package: accelerate==0.23.0
13:31:36-192371 INFO Installing package: aiofiles==23.2.1
13:31:36-604746 INFO Installing package: altair==4.2.2
13:31:39-595818 INFO Installing package: dadaptation==3.1
13:31:40-079722 INFO Installing package: diffusers[torch]==0.21.4
13:31:41-496430 INFO Installing package: easygui==0.98.3
13:31:42-043615 INFO Installing package: einops==0.6.0
13:31:42-550059 INFO Installing package: fairscale==0.4.13
13:31:43-156104 INFO Installing package: ftfy==6.1.1
13:31:43-712557 INFO Installing package: gradio==3.36.1
13:31:48-902910 INFO Installing package: huggingface-hub==0.15.1
13:31:49-629987 INFO Installing package: invisible-watermark==0.2.0
13:31:51-173116 INFO Installing package: lion-pytorch==0.0.6
13:31:51-751388 INFO Installing package: lycoris_lora==2.0.0
13:31:55-310799 INFO Installing package: onnx==1.14.1
13:31:56-887569 INFO Installing package: onnxruntime-gpu==1.16.0
13:31:59-687268 INFO Installing package: protobuf==3.20.3
13:32:00-613086 INFO Installing package: open-clip-torch==2.20.0
13:32:01-801401 INFO Installing package: opencv-python==4.7.0.68
13:32:03-454534 INFO Installing package: prodigyopt==1.0
13:32:04-205452 INFO Installing package: pytorch-lightning==1.9.0
13:32:05-542273 INFO Installing package: rich==13.4.1
13:32:06-522720 INFO Installing package: safetensors==0.3.1
13:32:07-468682 INFO Installing package: timm==0.6.12
13:32:08-590246 INFO Installing package: tk==0.1.0
13:32:09-478287 INFO Installing package: toml==0.10.2
13:32:10-320038 INFO Installing package: transformers==4.30.2
13:32:13-735278 INFO Installing package: voluptuous==0.13.1
13:32:14-557129 INFO Installing package: wandb==0.15.11
13:32:16-416689 INFO Installing package: -e .
13:32:18-523230 INFO Configuring accelerate...
13:32:18-524343 WARNING Could not automatically configure accelerate. Please manually configure accelerate with the
option in the menu or with: accelerate config.
Exiting Python virtual environment.
Setup finished! Run ./gui.sh to start.
Please note if you'd like to expose your public server you need to run ./gui.sh --share
なにやら警告が出ています。
13:32:18-524343 WARNING Could not automatically configure accelerate. Please manually configure accelerate with the
option in the menu or with: accelerate config.
accelerate config
が自動実行できなかったので手動実行しろと。もう、めんどくさいなあ。
setup.sh
を実行したときに、kohya_ss
ディレクトリ下にvenv
というvenv仮想環境が作られているので、そこに入ります。
(kohyass) $ . ./venv/bin/activate
accelerate config
を実行します。
質問には、
This machine
No distributed training
NO
NO
NO
all
fp16
と答えておけば、大抵大丈夫だと思います。
(venv) (kohyass) $ accelerate config
------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
Please select a choice using the arrow or number keys, and selecting with enter
➔ This machine
AWS (Amazon SageMaker)
------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
Please select a choice using the arrow or number keys, and selecting with enter
➔ No distributed training
multi-CPU
multi-XPU
multi-GPU
multi-NPU
TPU
Do you want to run your training on CPU only (even if a GPU / Apple Silicon / Ascend NPU device is available)? [yes/NO]:NO
Do you wish to optimize your script with torch dynamo?[yes/NO]:NO
Do you want to use DeepSpeed? [yes/NO]: NO
What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:all
------------------------------------------------------------------------------------------------------------------------
Do you wish to use FP16 or BF16 (mixed precision)?
Please select a choice using the arrow or number keys, and selecting with enter
no
➔ fp16
bf16
fp8
accelerate configuration saved at /home/jintaro/.cache/huggingface/accelerate/default_config.yaml
accelerate config
が終わったらvenv
から抜けます。
(venv) (kohyass) $ deactivate
そしてgui.sh
でGUIを立ち上げて、
(kohyass) $ ./gui.sh
13:54:45-124240 INFO Version: v22.2.2
13:54:45-126778 INFO nVidia toolkit detected
13:54:45-689802 INFO Torch 2.0.1+cu118
13:54:45-700263 INFO Torch backend: nVidia CUDA 11.8 cuDNN 8700
13:54:45-711659 INFO Torch detected GPU: NVIDIA GeForce RTX 3060 VRAM 12011 Arch (8, 6) Cores 28
13:54:45-712409 INFO Verifying modules installation status from
/home/jintaro/kohya_ss/requirements_linux.txt...
13:54:45-713601 INFO Verifying modules installation status from requirements.txt...
13:54:45-715842 WARNING Package wrong version: huggingface-hub 0.19.4 required 0.15.1
13:54:45-716314 INFO Installing package: huggingface-hub==0.15.1
13:54:47-801505 INFO headless: False
13:54:47-803110 INFO Load CSS...
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
ブラウザでhttp://127.0.0.1:7860
にアクセスします。こんな画面が立ち上がります。
前回使ったのと同じ東北きりたんの画像でLoRA学習してみます。
いろいろ値をセットして、あとはStart training
を押すだけ!
ポチッとな。
エラーの状況
Start training
を押して学習が始まった、と思ったらエラーになってしまいました。
なんだ、これ?
===================================BUG REPORT===================================
/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/cuda_setup/main.py:166: UserWarning: Welcome to bitsandbytes. For bug reports, please run
python -m bitsandbytes
warn(msg)
================================================================================
/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/cuda_setup/main.py:166: UserWarning: /home/jintaro/anaconda3/envs/kohyass did not contain ['libcudart.so', 'libcudart.so.11.0', 'libcudart.so.12.0'] as expected! Searching further paths...
warn(msg)
The following directories listed in your path were found to be non-existent: {PosixPath('/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/cv2/../../lib64')}
/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/cuda_setup/main.py:166: UserWarning: /home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/cv2/../../lib64:/usr/local/cuda-12.2/lib64 did not contain ['libcudart.so', 'libcudart.so.11.0', 'libcudart.so.12.0'] as expected! Searching further paths...
warn(msg)
The following directories listed in your path were found to be non-existent: {PosixPath('local/foxtrot'), PosixPath('@/tmp/.ICE-unix/2497,unix/foxtrot')}
The following directories listed in your path were found to be non-existent: {PosixPath('/org/gnome/Terminal/screen/3afeb9be_0997_4e72_81ea_f512b3b84f7b')}
The following directories listed in your path were found to be non-existent: {PosixPath('0'), PosixPath('1')}
The following directories listed in your path were found to be non-existent: {PosixPath('/etc/xdg/xdg-ubuntu')}
CUDA_SETUP: WARNING! libcudart.so not found in any environmental path. Searching in backup paths...
DEBUG: Possible options found for libcudart.so: {PosixPath('/usr/local/cuda/lib64/libcudart.so')}
CUDA SETUP: PyTorch settings found: CUDA_VERSION=118, Highest Compute Capability: 8.6.
CUDA SETUP: To manually override the PyTorch CUDA version please see:https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md
CUDA SETUP: Loading binary /home/jintaro/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
Traceback (most recent call last):
File "/home/jintaro/kohya_ss/./train_db.py", line 495, in
train(args)
File "/home/jintaro/kohya_ss/./train_db.py", line 181, in train
_, _, optimizer = train_util.get_optimizer(args, trainable_params)
File "/home/jintaro/kohya_ss/library/train_util.py", line 3433, in get_optimizer
import bitsandbytes as bnb
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/__init__.py", line 6, in
from . import cuda_setup, utils, research
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/__init__.py", line 1, in
from . import nn
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/nn/__init__.py", line 1, in
from .modules import LinearFP8Mixed, LinearFP8Global
File "/home/jintarokohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/nn/modules.py", line 8, in
from bitsandbytes.optim import GlobalOptimManager
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/optim/__init__.py", line 6, in
from bitsandbytes.cextension import COMPILED_WITH_CUDA
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/cextension.py", line 20, in
raise RuntimeError('''
RuntimeError:
CUDA Setup failed despite GPU being available. Please run the following command to get more information:
python -m bitsandbytes
Inspect the output of the command and see if you can locate CUDA libraries. You might need to add them
to your LD_LIBRARY_PATH. If you suspect a bug, please take the information from python -m bitsandbytes
and open an issue at: https://github.com/TimDettmers/bitsandbytes/issues
Traceback (most recent call last):
File "/home/jintaro/kohya_ss/venv/bin/accelerate", line 8, in
sys.exit(main())
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/accelerate_cli.py", line 47, in main
args.func(args)
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/launch.py", line 986, in launch_command
simple_launcher(args)
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/launch.py", line 628, in simple_launcher
raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['/home/jintaro/kohya_ss/venv/bin/python', './train_db.py', '--enable_bucket', '--min_bucket_reso=256', '--max_bucket_reso=2048', '--pretrained_model_name_or_path=/home/jintaro/stable-diffusion-webui/models/Stable-diffusion/Counterfeit-V3.0_fp16.safetensors', '--train_data_dir=/home/jintaro/LoRA/test02/train', '--resolution=512,512', '--output_dir=/home/jintaro/LoRA/test02/outputs', '--save_model_as=safetensors', '--output_name=kiritan', '--lr_scheduler_num_cycles=10', '--max_data_loader_n_workers=0', '--learning_rate_te=1e-05', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=47', '--train_batch_size=2', '--max_train_steps=470', '--save_every_n_epochs=5', '--mixed_precision=fp16', '--save_precision=fp16', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_data_loader_n_workers=0', '--clip_skip=2', '--bucket_reso_steps=64', '--mem_eff_attn', '--gradient_checkpointing', '--xformers', '--bucket_no_upscale', '--noise_offset=0.0']' returned non-zero exit status 1.
いろいろ調べてみたところ、どうやらエラーを出しているのはbitsandbytesで、
CUDA SETUP: PyTorch settings found: CUDA_VERSION=118, Highest Compute Capability: 8.6.
CUDA SETUP: To manually override the PyTorch CUDA version please see:https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md
CUDA SETUP: Loading binary /home/jintaro/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 11.8用のライブラリが見つからないよ。PyTorchのCUDA_VERSIONが118になってるけど、これを変えたいんだったら https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md の手順を見てね」ということらしい。
その下の
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
の部分はbitsandbytes
のビルド手順です。自分の環境にあったものを自分で作れということか。
エラー対策の検討
というわけで、https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md を見てみます。
CUDAのインストール方法と、BNB_CUDA_VERSION
とLD_LIBRARY_PATH
という環境変数の設定方法についての手順が記載されていました。
現状、PCにはCUDA 12.2がインストール済みで、LD_LIBRARY_PATH
も/usr/local/cuda-12.2/lib64
に設定してある状況です。
対策方法をふたつ考えました。
- 対策方法 その1) システムにCUDA 11.8がないのだから、conda仮想環境
kohyass
にcuda toolkit 11.8をインストールして、そのパスを環境変数LD_LIBRARY_PATH
に追加する。 - 対策方法 その2) 環境変数
BNB_CUDA_VERSION
を設定して、システムのCUDA 12.2を無理やり使わせる。
bitsandbyte
をビルドする方法は、CUDAのバージョンの問題を解決しないと、結局また同じ問題が発生する気がしたので却下。
Dockerを使うことも考えましたが、それはまた今度。
せっかくなので、対策方法 その1)
も対策方法 その2)
も両方やってみます。どうせ仮想環境なので、削除して簡単にやり直せるし。
対策方法 その1) conda仮想環境kohyassにcuda toolkit 11.8をインストールする
Kohya's GUIを入れ直していきます。
(base) $ rm -rf kohya_ss
conda仮想環境kohyass
も一旦削除します。
(base) $ conda remove -n kohyass --all
Kohya's GUIインストール手順の通り、conda仮想環境kohyass
を再作成して、Kohya's GUIのソースを再取得します。
(base) $ conda create -n kohyass python=3.10.6
(base) $ conda activate kohyass
(kohyass) $ git clone https://github.com/bmaltais/kohya_ss.git
(kohyass) $ cd kohya_ss
conda仮想環境kohyass
にcuda-toolkit
をインストールしていきます。
通常、conda仮想環境にcuda-toolkit
をインストールする場合は、
(kohyass) $ conda install -c nvidia cuda-toolkit=11.8.0
みたいにすると思うのですが、これだとcuda-toolkit
だけが11.8になって、同時にインストールされるもろもろの依存パッケージたちは最新バージョンのものになってしまいます。(このせいで過去に困った経験あり)
CUDA関連のパッケージをひとつずつ11.8に指定しながらインストールしていってもいいのですが、面倒なので https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md に書かれていた方法でCUDAをインストールすることにします。
GitHubのbitsandbytesリポジトリからcuda_install.sh
をダウンロードします。
(kohyass) $ wget https://raw.githubusercontent.com/TimDettmers/bitsandbytes/main/cuda_install.sh
CUDAがconda仮想環境kohyass
内にインストールされるよう、インストール先は~/anaconda3/envs/kohyass/lib
にします。
勝手に.bashrcを変更されるのは困るので、最後のオプションは0
にしました。
(kohyass) $ bash ./cuda_install.sh 118 ~/anaconda3/envs/kohyass/lib 0
4 GBほどのファイルがダウンロードされました。
(kohyass) $ bash ./cuda_install.sh 118 ~/anaconda3/envs/kohyass/lib 0
https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
cuda_11.8.0_520.61.05_linux.run
--2023-12-05 17:32:23-- https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
developer.download.nvidia.com (developer.download.nvidia.com) をDNSに問いあわせています... 152.199.39.144
developer.download.nvidia.com (developer.download.nvidia.com)|152.199.39.144|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4336730777 (4.0G) [application/octet-stream]
‘cuda_11.8.0_520.61.05_linux.run’ に保存中
cuda_11.8.0_520.61.05_linux.r 100%[=================================================>] 4.04G 9.68MB/s in 5m 42s
2023-12-05 17:38:05 (12.1 MB/s) - ‘cuda_11.8.0_520.61.05_linux.run’ へ保存完了 [4336730777/4336730777]
libcudart.soも~/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib
下にちゃんとできていました。
(kohyass) $ find ~/anaconda3/envs/kohyass/lib -name libcudart*
/home/jintaro/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib/libcudart.so.11.8.89
/home/jintaro/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib/libcudart_static.a
/home/jintaro/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib/libcudart.so.11.0
/home/jintaro/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib/libcudart.so
~/anaconda3/envs/kohyass/lib/cuda-11.8/targets/x86_64-linux/lib
に向けて~/anaconda3/envs/kohyass/lib/cuda-11.8/lib64
からシンボリックリンクが貼られていたので、環境変数LD_LIBRARY_PATH
には~/anaconda3/envs/kohyass/lib/cuda-11.8/lib64
のほうを追加することにします。
(kohyass) $ export LD_LIBRARY_PATH=~/anaconda3/envs/kohyass/lib/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
setup.sh
を実行して、
(kohyass) $ ./setup.sh
accelerate config
を実行して、
(kohyass)$ . ./venv/bin/activate
(venv) (kohyass) $ accelerate config
(venv) (kohyass) $ deactivate
gui.sh
を実行します。
(kohyass) $ ./gui.sh
ブラウザでhttp://127.0.0.1:7860
にアクセスしてStart training
を押したところ、正常にLoRA学習が実行されました。
対策方法 その2) BNB_CUDA_VERSIONを設定して、システムのCUDA 12.2を使う
またまたKohya's GUIを入れ直します。
(base) $ rm -rf kohya_ss
conda仮想環境kohyass
も一旦削除します。
(base) $ conda remove -n kohyass --all
Kohya's GUIインストール手順の通り、conda仮想環境kohyass
を再作成して、Kohya's GUIのソースを再取得します。
(base) $ conda create -n kohyass python=3.10.6
(base) $ conda activate kohyass
(kohyass) $ git clone https://github.com/bmaltais/kohya_ss.git
(kohyass) $ cd kohya_ss
環境変数BNB_CUDA_VERSION
を設定します。システムにインストールしているCUDAは12.2なので122
と指定します。
(kohyass) $ export BNB_CUDA_VERSION=122
setup.sh
を実行して、
(kohyass) $ ./setup.sh
accelerate config
を実行して、
(kohyass)$ . ./venv/bin/activate
(venv) (kohyass) $ accelerate config
(venv) (kohyass) $ deactivate
gui.sh
を実行します。
(kohyass) $ ./gui.sh
ブラウザでhttp://127.0.0.1:7860
にアクセスしてStart training
を押したところ、またエラーが発生。素晴らしい。(素晴らしくない)
/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/cuda_setup/main.py:106: UserWarning:
================================================================================
WARNING: Manual override via BNB_CUDA_VERSION env variable detected!
BNB_CUDA_VERSION=XXX can be used to load a bitsandbytes version that is different from the PyTorch CUDA version.
If this was unintended set the BNB_CUDA_VERSION variable to an empty string: export BNB_CUDA_VERSION=
If you use the manual override make sure the right libcudart.so is in your LD_LIBRARY_PATH
For example by adding the following to your .bashrc: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
from . import cuda_setup, utils, research
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/__init__.py", line 1, in
from . import nn
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/nn/__init__.py", line 1, in
from .modules import LinearFP8Mixed, LinearFP8Global
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/research/nn/modules.py", line 8, in
from bitsandbytes.optim import GlobalOptimManager
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/optim/__init__.py", line 8, in
from .adagrad import Adagrad, Adagrad8bit, Adagrad32bit
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/optim/adagrad.py", line 5, in
from bitsandbytes.optim.optimizer import Optimizer1State
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/optim/optimizer.py", line 12, in
import bitsandbytes.functional as F
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/bitsandbytes/functional.py", line 12, in
from scipy.stats import norm
ModuleNotFoundError: No module named 'scipy'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jintaro/kohya_ss/./train_network.py", line 1012, in
trainer.train(args)
File "/home/jintaro/kohya_ss/./train_network.py", line 342, in train
optimizer_name, optimizer_args, optimizer = train_util.get_optimizer(args, trainable_params)
File "/home/jintaro/kohya_ss/library/train_util.py", line 3435, in get_optimizer
raise ImportError("No bitsandbytes / bitsandbytesがインストールされていないようです")
ImportError: No bitsandbytes / bitsandbytesがインストールされていないようです
Traceback (most recent call last):
File "/home/jintaro/kohya_ss/venv/bin/accelerate", line 8, in
sys.exit(main())
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/accelerate_cli.py", line 47, in main
args.func(args)
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/launch.py", line 986, in launch_command
simple_launcher(args)
File "/home/jintaro/kohya_ss/venv/lib/python3.10/site-packages/accelerate/commands/launch.py", line 628, in simple_launcher
raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['/home/jintaro/kohya_ss/venv/bin/python', './train_network.py', '--enable_bucket', '--min_bucket_reso=256', '--max_bucket_reso=2048', '--pretrained_model_name_or_path=/home/jintaro/stable-diffusion-webui/models/Stable-diffusion/Counterfeit-V3.0_fp16.safetensors', '--train_data_dir=/home/jintaro/LoRA/test02/train', '--resolution=512,512', '--output_dir=/home/jintaro/LoRA/test02/outputs', '--network_alpha=1', '--save_model_as=safetensors', '--network_module=networks.lora', '--text_encoder_lr=5e-05', '--unet_lr=0.0001', '--network_dim=128', '--output_name=kiritan', '--lr_scheduler_num_cycles=10', '--no_half_vae', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=47', '--train_batch_size=2', '--max_train_steps=470', '--save_every_n_epochs=5', '--mixed_precision=fp16', '--save_precision=fp16', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_data_loader_n_workers=0', '--clip_skip=2', '--bucket_reso_steps=64', '--mem_eff_attn', '--gradient_checkpointing', '--xformers', '--bucket_no_upscale', '--noise_offset=0.0']' returned non-zero exit status 1.
今度はなんだ、と思ったら、
ModuleNotFoundError: No module named 'scipy'
とあるので、scipy
パッケージが足りないだけみたいです。(よかった)
scipy
パッケージをインストールします。
(kohyass) $ . ./venv/bin/activate
(venv) (kohyass) $ pip install scipy
(venv) (kohyass) $ deactivate
もう一度gui.sh
を実行します。
(kohyass) $ ./gui.sh
ブラウザでhttp://127.0.0.1:7860
にアクセスしてStart training
を押したところ、今度は正常にLoRA学習が実行されました。ふぅ……
結論
対策方法 その1、対策方法 その2のどちらでもエラーが解消されることが確認できました。
対策方法 その1) conda仮想環境kohyassにcuda toolkit 11.8をインストールする
Pros: CUDAのバージョンを柔軟に設定できそう。
Cons: ストレージを4 GBも使ってしまう。対策方法 その2) BNB_CUDA_VERSIONを設定して、システムのCUDA 12.2を使う
Pros: 設定が簡単。
Cons: CUDAを必要なバージョンに合わせられない場合がありそう。
対策方法 その1のほうがCUDAのバージョンを柔軟に設定できて方法としてはよさそうなのですが、ストレージを4 GBも使ってしまうのがなんだかなあという感じなので、対策方法 その2のほうで行こうと思います。
それでは、また。
参考文献
kohya_ss/README.md at master · bmaltais/kohya_ss https://github.com/bmaltais/kohya_ss/blob/master/README.md
bitsandbytes/how_to_use_nonpytorch_cuda.md at main · TimDettmers/bitsandbytes https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md
【SD】Kohya’s GUI(LoRA学習)使ってみた|achiral0319 https://note.com/achiral0319/n/nf8c1bcd955f9