UbuntuでKohya's GUIを動かそうと思ったら動いてくれなくて大変だった件

要約

久しぶりに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.shGUIを立ち上げて、

(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にアクセスします。こんな画面が立ち上がります。

Kohya's GUI

前回使ったのと同じ東北きりたんの画像で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_VERSIONLD_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を入れ直していきます。

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仮想環境kohyasscuda-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を入れ直します。

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