見出し画像

【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

① <cd>で「stable-diffusion-webui」フォルダのあるパスに移動します。
(② <git branch>でgitのブランチを確認します。)
③ <git switch master>でmasterブランチに切り替えます。
④ <git pull>でmasterブランチの情報に更新があれば、内容を更新してもらいます。
※ モデルファイルや拡張機能などは維持されます。

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」のようになります。

学習の繰り返し回数「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(④)をクリックするとキャプションファイルが保存されます。

キャプションファイルの準備(転載)

以前の記事の転載になりますので、参考になれば幸いです。

出力したテキストファイルを確認して修正していきます。
学習させたい特徴を表す単語を削除しますので、注意してください。

itako, 1girl, animal ears, japanese clothes, solo, kimono, long hair, tabi, purple eyes, fox ears, sash, shawl, white background, full body, wide sleeves, parted bangs, obi, simple background, long sleeves, bangs, hagoromo, very long hair, grey hair, smile, sidelocks, looking at viewer, white kimono, ponytail, hitodama, closed mouth, white socks, socks, standing, sandals, animal ear fluff, :3, spirit, zouri

itako(1).txt

上述は一例です。
顔や髪の毛にかかわる内容を削除するとキャラクター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は無事に使用できるようになりましたよ♪

kiritan, <lora:2_kiritan:1>, masterpiece, high-end photography, kimono, star ocean Negative prompt: (EasyNegative:1.5), (ng_deepnegative_v1_75t:0.75), (worst quality, low quality, normal quality:1.4),
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 37069668, Size: 1280x670, Model hash: e3edb8a26f, Model: ghostmix_v20Bakedvae, Lora hashes: "2_kiritan: 2960a2d2122a", TI hashes: "EasyNegative: c74b4e810b03, ng_deepnegative_v1_75t: 54e7e4826d53", Version: v1.5.1 Time taken: 16.3 sec.

いいなと思ったら応援しよう!