【SD】Kohya’s GUI(LoRA学習)使ってみた
こんにちは。あるいは、こんばんは。
8月にStable Diffusionを入れ直して、LoRA学習環境もリセットされてしまいましたので、今回は異なるツールを試してみました。
最近、Stable Diffusion Web UIのアップデート版が公開されていたようで、更新してみました。
本題と異なりますので読み飛ばしていただけますと幸いです。
git pullでStable Diffusionを更新する
わたしの環境では、Windows再セットアップ後にフォルダパスが変更されておりますので、後述のようにVS Codeに入力しました。
## update
cd /Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui
# git branch
git switch master
git pull
Stable Diffusionのインストールは以下の記事が参考になれば幸いです。。。
Stable Doffusionの起動ですが、
わたしはバッチファイルを作成して、ダブルクリックで起動できるようにしています。
rem indows SD 202308
@echo off
chcp 65001
cd C:/Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--administrator --xformer --skip-python-version-check --skip-torch-cuda-test --skip-version-check --no-download-sd-model --autolaunch
call webui.bat
アップデート後に起動した際に表示される情報です。
v1.5.1からv1.6.0に更新されていました。
Active code page: 65001
venv "C:\Users\user\Dropbox\GitHub\local\stable-diffusion-webui202308\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
Version: v1.6.0
Commit hash: 5ef669de080814067961f28357256e8fe27544f4
Kohya's GUI のインストール
インストール先のフォルダを作成します。
わたしはStable Diffusionと同様に、「/Users/user/Dropbox/GitHub/local」に「kohya_ss202309」を作成しておきました。
bmaltais様のkohya_ssをGitHubからダウンロードします。
以下のコマンドを入力します。
# Install bmaltais/kohya_ss
cd /Users/user/Dropbox/GitHub/local/kohya_ss202309
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
./setup.bat
しばらくすると、以下のように表示され、入力待ちの状態になります。
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
「1」を入力し「Enter」を押します。
Enter your choice: 1
1. Torch 1 (legacy, no longer supported. Will be removed in v21.9.x)
2. Torch 2 (recommended)
3. Cancel
Enter your choice:
推奨の「2」を入力し「Enter」を押します。
Torch 2系の環境のインストールが始まります。
とても時間がかかる処理のため、気長に待ちましょう。
Enter your choice: 2
12:20:26-674944 INFO Version: v21.8.9
12:20:26-678946 INFO Python 3.10.6 on Windows
12:20:26-687951 INFO nVidia toolkit detected
12:20:26-689960 INFO Installing modules from requirements_windows_torch2.txt...
12:20:26-690960 INFO Installing package: torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
12:22:32-771530 INFO Installing package: xformers==0.0.21
12:22:39-031103 INFO Installing package: bitsandbytes==0.35.0
12:22:43-690597 INFO Installing package: tensorboard==2.12.3 tensorflow==2.12.0
12:24:31-308695 INFO Installing modules from requirements.txt...
12:24:31-309693 INFO Installing package: accelerate==0.19.0
12:24:34-038686 INFO Installing package: aiofiles==23.2.1
12:24:35-081650 INFO Installing package: altair==4.2.2
12:24:56-697195 INFO Installing package: dadaptation==3.1
12:25:02-905823 INFO Installing package: diffusers[torch]==0.18.2
12:25:09-920343 INFO Installing package: easygui==0.98.3
12:25:11-661685 INFO Installing package: einops==0.6.0
12:25:13-072002 INFO Installing package: fairscale==0.4.13
12:25:23-017853 INFO Installing package: ftfy==6.1.1
12:25:24-433495 INFO Installing package: gradio==3.36.1
12:25:48-122282 INFO Installing package: huggingface-hub==0.15.1
12:25:50-796787 INFO Installing package: invisible-watermark==0.2.0
12:25:55-210434 INFO Installing package: lion-pytorch==0.0.6
12:25:56-802282 INFO Installing package: lycoris_lora==1.8.3
12:26:18-617233 INFO Installing package: open-clip-torch==2.20.0
12:26:24-565809 INFO Installing package: opencv-python==4.7.0.68
12:26:29-307034 INFO Installing package: prodigyopt==1.0
12:26:31-375328 INFO Installing package: pytorch-lightning==1.9.0
12:26:39-800455 INFO Installing package: rich==13.4.1
12:26:42-686702 INFO Installing package: safetensors==0.3.1
12:26:44-776149 INFO Installing package: timm==0.6.12
12:26:49-241826 INFO Installing package: tk==0.1.0
12:26:51-567469 INFO Installing package: toml==0.10.2
12:26:53-602298 INFO Installing package: transformers==4.30.2
12:27:13-866269 INFO Installing package: voluptuous==0.13.1
12:27:16-115956 INFO Installing package: wandb==0.15.0
12:27:30-016673 INFO Installing package: -e .
12:27:36-748324 INFO Copying bitsandbytes files...
12:27:36-766839 INFO Configuring accelerate...
12:27:36-769838 INFO Copied accelerate config file to: C:\Users\user\AppData\Local\huggingface\accelerate\default_config.yaml
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
cudannによる高速処理を有効化するには、「cudnn_windows.zip」をダウンロードして解凍し、「cudnn_windows」を「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss」に移動させる必要があるようです。
「2」を入力し「Enter」を押します。
Enter your choice: 2
12:40:51-486890 INFO Checking for CUDNN files in
C:\Users\user\Dropbox\GitHub\local\kohya_ss202309\kohya_ss\venv\Lib\site-packages\torch\lib...
12:40:53-991415 INFO Copied CUDNN 8.6 files to destination
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
「3」を入力し「Enter」を押します。
Enter your choice: 3
1. (Optional) Force installation of bitsandbytes 0.35.0
2. (Optional) Force installation of bitsandbytes 0.40.1 for new optimizer options support and pre-bugfix results
3. (Optional) Force installation of bitsandbytes 0.41.1 for new optimizer options support
4. (Danger) Install bitsandbytes-windows (this package has been reported to cause issues for most... avoid...)
5. Cancel
Enter your choice:
「3」を入力し「Enter」を押します。
Enter your choice: 3
12:47:13-305252 INFO Installing bitsandbytes 0.41.1...
12:47:13-307791 INFO Installing package:
https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.1-py3-none-win_amd64.whl
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
「4」を入力し「Enter」を押します。
Enter your choice: 4
--------------------------------------------------------------------------------------------------------------------------------------------------
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)
アスタリスク「*」を数字「0」「1」「2」で動かして選択し、「Enter」を押します。
「This machine」を選択して「Enter」を押します。
--------------------------------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
This machine
--------------------------------------------------------------------------------------------------------------------------------------------------
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-GPU
TPU
「No distributed training」を選択して「Enter」を押します。
--------------------------------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon device is available)? [yes/NO]:
「NO」と入力して「Enter」を押します。
--------------------------------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon device is available)? [yes/NO]:NO
Do you wish to optimize your script with torch dynamo?[yes/NO]:
「NO」と入力して「Enter」を押します。
・・・
回答を以下のように入力していきます。
「bf16」の選択は数字の「2」を入力すると選択することができると思います。
※ README-ja.mdによると、bf16はRTX30系のGPUでのみ指定可能のようで、fp16よりbf16のほうが推論結果がNaNになる可能性が低いとのことです。
Enter your choice: 4
--------------------------------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
This machine
--------------------------------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon 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)?
bf16
accelerate configuration saved at C:\Users\user/.cache\huggingface\accelerate\default_config.yaml
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
「5」を入力し「Enter」を押します。
コマンドプロンプトが起動し、以下のように表示され、「http://127.0.0.1:7860/」をウェブブラウザにて入力するとGUIが起動します。
13:09:14-168992 INFO Version: v21.8.9
13:09:14-175038 INFO nVidia toolkit detected
13:09:15-846196 INFO Torch 2.0.1+cu118
13:09:17-678283 INFO Torch backend: nVidia CUDA 11.8 cuDNN 8700
13:09:17-680281 INFO Torch detected GPU: NVIDIA GeForce RTX 3060 Laptop GPU VRAM 6144 Arch (8, 6) Cores 30
13:09:17-682281 INFO Verifying modules instalation status from requirements_windows_torch2.txt...
13:09:17-684283 INFO Verifying modules instalation status from requirements.txt...
no language
13:09:23-079585 INFO headless: False
13:09:23-095209 INFO Load CSS...
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
Kohya's GUI の起動方法
次回からGUIを起動するには、「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss」にある「gui.bat」をダブルクリックして起動することができます。
画像の準備
学習用の画像の準備などは、過去の記事を参考にしていただけますと幸いです。余力がありましたら、学習用画像の準備についても、記事を書いてみたいと思います。
例によって学習用素材として汎用されております「東北ずん子」さん関連の画像をお借りしたいと思います。
「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss」に「train」フォルダを作成します。
さらに、LoRAの名前のフォルダ「(学習の繰り返し回数)_(トリガープロンプト)」を作成し、
・学習用の画像ファイル
・キャプションファイル
を入れておきます。
今回は、「2_kiritan」の学習をしてみましょう。
フォルダの階層構造は、「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/train/2_kiritan」のようになります。
名前の一括変換
以前、紹介していなかった名前の一括返還についてです。
Windowsでは、
名前を変更したいファイルを複数選択し、
右クリックメニューから「名前の変換」を行うことで、
「〇〇〇 (連番).拡張子」のように連番を振って名前を変更
することができます。
もし、自前で準備をする場合には、画像ファイルとキャプションファイルの名前を変更する際にご利用ください。
プログラムでは、スペースやかっこが思わぬ動作(エラー)の原因となりますので、バッチ処理を行って、アンダーバーに変換しておくと良いかもしれません。
「メモ帳」アプリに以下をコピーペーストし、
名前を付けて保存を選択し、「C:\Users\user\AppData\Roaming\Microsoft\Windows\SendTo」フォルダに
「underbar.bat」など適当な名前を付けて保存します。
エンコードを「ANSI」にしておくとよいようです。
フォルダーが見つからない場合には、検索窓に「shell:sendto」を入力してみてください。
echo off
for %%f in ( * ) do call :sub "%%f"
exit /b
:sub set fname=%1
set fname=%fname: (=_%
set fname=%fname:)=%
ren %1 %fname%
goto :EOF
「〇〇〇 (連番).拡張子」のファイルを1つ選択して、
右クリックし、「送る」>「underbar.bat」によりファイル名が
「〇〇〇_連番.拡張子」に変更されます。
キャプションファイルの作成:Dataset Tag Editor
今回はすでにキャプションファイルが用意されているデータセットを準備しておりますが、キャプションファイルを作成することも必要になると思いますので、記事に起こしておきました。
toriato様の「stable-diffusion-webui-wd14-tagger」がアップデートの影響で表示されていないことに気が付きました。
toshiaki1729様の「stable-diffusion-webui-dataset-tag-editor」を導入してみます。
GitHubからURLをコピーし、以下のように入力して、拡張機能を実装します。
cd /Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui/extensions
git clone https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor.git
Stable Diffusion WebUIを起動し、Dataset Tag Editorタブを選択します。
Dataset directory(①)に画像ファイルを格納しているフォルダのパス
「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/train」を入力します。
Dataset Load Settings(②)の
□ Load from subdirectories
□ Load caption from filename if no text file exists
にチェックを入れておきます。
Use Interrogator Caption(③)は
□ If Empty
にチェックを入れておきます。
Interrogator(④)は
wd-v1-4-swinv2-tagger-v2にしておきます。
Interrogator Settings(⑤)の
□ Use Custom Threshold (WDv1.4 Tagger)
にチェックを入れておきます。
Loadボタンを押して(⑥)画像(⑦)とタグ(⑧)を読み込みます。
Filter by Selectionタブ(①)の
Add All Displayed(②)をクリック、
Apply selection filter(③)をクリック、
Save all changes(④)をクリックするとキャプションファイルが保存されます。
キャプションファイルの準備(転載)
以前の記事の転載になりますので、参考になれば幸いです。
出力したテキストファイルを確認して修正していきます。
学習させたい特徴を表す単語を削除しますので、注意してください。
上述は一例です。
顔や髪の毛にかかわる内容を削除するとキャラクターLoRA
服装にかかわる内容を削除するとコスプレ用LoRA
になると考えられます。
トリガーワードを先頭にして、改行を含まない1文にしましょう。
キャプションファイルの編集:Dataset Tag Editor
Stable Diffusion WebUIを起動し、Dataset Tag Editorタブを選択します。
Dataset directory(①)に画像ファイルを格納しているフォルダのパス
「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/train」を入力します。
Dataset Load Settings(②)の
□ Load from subdirectories
□ Load caption from filename if no text file exists
にチェックを入れておきます。
Use Interrogator Caption(③)は
□ No
にチェックを入れておきます。
Loadボタンを押して(④)画像とタグを読み込みます。
Batch Edit Captionsタブ(⑤)の
Removeタブ(⑥)を選択し、
タグ一覧(⑦)から削除したいものを選択し、
Remove selected tags(⑧)をクリック、
Save all changes(⑨)をクリックするとキャプションファイルが保存されます。
トリガーワードの追加:Dataset Tag Editor
キャプションファイルの先頭にトリガーワードを追加します。
このトリガーワードをもとに、削除した学習させたい特徴を表す単語(要素)を関連付けて呼び出すことができるようになります。
「kiritan」をトリガーワードとして追加します。
Stable Diffusion WebUIを起動し、Dataset Tag Editorタブを選択します。
Dataset directory(①)に画像ファイルを格納しているフォルダのパス
「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/train」を入力します。
Dataset Load Settings(②)の
□ Load from subdirectories
□ Load caption from filename if no text file exists
にチェックを入れておきます。
Use Interrogator Caption(③)は
□ No
にチェックを入れておきます。
Loadボタンを押して(④)画像とタグを読み込みます。
Batch Edit Captionsタブ(⑤)の
Search and Replaceタブ(⑥)を選択し、
Edit tagsにトリガーワード「kiritan」を入力(⑦)し、
□ Pretend additional tagsにチェック(⑧)し、
Apply changes to filtered imagesをクリック(⑨)、
Save all changes(⑩)をクリックするとキャプションファイルが保存されます。
Kohya's GUI による学習
学習後のファイルを保存するフォルダを作成しておきます。「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss」に「out」フォルダを作成します。
「/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss」にある「gui.bat」をダブルクリックして、Webブラウザで「http://127.0.0.1:7860」にアクセスし、GUIを起動しましょう。
LoRAの設定
Training
LoRAタブ(①)、
Training(②)>Source model(③)>Model Quick Pick(④)では、
「custom」を選択して基にするモデルファイルを選択できるようにします。
あらかじめ「AnyLoRA」をダウンロードしてパスをコピーしておきます。
わたしは、Stable Diffusionで使用するモデルファイルを格納するフォルダに入れておきました。
Pretrained model name or path(⑤)に
「C:/Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui/models/Stable-diffusion/2.0/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors」を入力します。
Save trained model as(⑥)は「safetensors」にします。
Folders
Foldersタブ(①)、
Image folder(②)に「train」フォルダのパス「C:/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/train」を入力します。
Output folder(③)に学習したLoRAモデルを保存するフォルダのパス「C:/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/out」を入力します。
Model output name(④)に学習したLoRAモデルの名前「2_kiritan」を入力します。
Parameters
Parametersタブ(①)、
Basic(②)>LoRA type(③)では、「Standard」を選択します。
Train batch size(④)は「2」を入力します。数値を大きくすると学習速度は上がりますが学習効果が弱まるようです。
Epoch(⑤)は「10」を入力します。(学習の繰り返し回数)x(学習画像の数)x(エポック数)=総ステップ数になり、総ステップ数 ≧ 1000となるようにすると良いようです。今回は「2x10x47=940」となります。
Save every N epochs(⑥)は「5」にしておきます。エポックが進んだ段階で保存をすることができますので、モデルの学習状況を比較することができるようになります。
Caption Extension(⑦)は「.txt」を入力します。キャプションファイルの拡張子を認識させるために必ず設定しておきましょう。
Mixed precision(⑧)とSave precision(⑨)は「bf16」にしておきます。GUI設定時に選択したものと対応させておくようにします。
Network Rank (Dimension)(⑩)は「128」を入力します。
Parametersタブ(①)、
Advance(②)>Clip skip(③)は「2」を入力します。
(□ Gradient checkpointing(④)にチェック、□ Memory efficient attention(⑤)にチェックすると、学習時間が延長しますがメモリ不足による学習の停止を防ぐことができるようです。)
設定の保存
Configuration file(①)>Save as…(②)で名前を付けて保存できます。
「C:/Users/user/Dropbox/GitHub/local/kohya_ss202309/kohya_ss/config_files」フォルダに「2_kiritan.json」ファイル(③)を保存しておきます。
設定の読み込みは「Open」から選択します。
学習の開始
オレンジ色の「Start training」ボタンを押して、コマンドプロンプトを確認し、学習状況をみてみましょう。
わたしのPCでは学習開始早々に止まってしまったため、「Gradient checkpointing」にチェックを入れました。
時間がどの程度延長されるのかわかりませんが、学習が進んでくれているのでほっとしています。
470ステップ??のようで、235/470で2:42でした。約5分程度でしょうか。
意外と早く終わったので、Train batch sizeを「5」にして、後ほど比較したいと思います。ステップ数は188になり、より高速に学習が進んでいるようです。
結果・・・
角っぽいのが反映されているようです。
ちなみに、服装は学習でデータにはいろいろあったため、今回は学習対象から外しました。また、きりたんぽは表現が上手にできていなかったため、学習から外しました。
時間があれば、タグ情報をもう少し修正して学習させてみたいと思います。
ともあれ、LoRA学習の方法として、GUIベースのものを利用することができるようになりました♪
Stable Diffusionのアップデートによって拡張機能が対応できていないものが発生しているので、環境設定に悩むところですが、その時にできることを試して報告したいと思います。
(おまけ)Stable Diffusionダウングレードしました
「stable-diffusion-webui-wd14-tagger」を使用できるようにするために、ダウングレードしました。
方法はいたって簡単です。
以下の通り、コマンドを入力してやります。
cd /Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui
git checkout 68f336bd994bed5442ad95bad6b6ad5564a5409a
少し前の「v1.5.1」にします。
Taggerは無事に使用できるようになりましたよ♪