こんにちは!悠です!
今回は、インターネット上に存在しない自分だけのLoRAを簡単に生成することができるツール「Kohya’s GUI」の使い方について紹介していきます。
GPUのスペックが十分に高い場合は、下記の記事で紹介した「sd-webui-train-tools」や「LoRA Easy Training Scripts」よりも性能のいいLoRAを製作することが可能だと言われています。



LoRAだけでなくLoConやLoHaを作ることもできますよ!
なお、この記事を執筆するにあたり、下の記事を参考にさせていただきました。

「Kohya’s GUI」の導入
それではまず「Kohya’s GUI」を導入していきましょう。
こちらはWebUIの拡張機能ではなく独立したツールですので、別にインストールしていく必要があります。
まず任意の場所にフォルダを作成し、カレントディレクトリを移動します。
私の場合はデスクトップ上に「kohya_gui」というフォルダを作ったので、コマンドプロンプトに下記のコードを入力します。
cd C:\Users\name\Desktop\kohya_gui
次に下記の3つのコードを順番に入力します。
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
.\setup.bat
Torchのインストールについて質問されるので、下記の要領で答えます。
- Do you want to uninstall previous versions of torch~?:No(2)
- Choose the version of torch you want to install?:torch 1.12.1(1)
2つ目のtorchのバージョンに関しては2.0.0(2)の方がおすすめなんですが、私の環境だとここで2を選ぶとエラーでインストールが止まってしまいます。
なのでとりあえずここでは1を選択し、後から別の方法でtorchとxformersのバージョンを更新します。

画像ではtorch2.0.0を選んでいますが、1.12.1がおすすめです。
torchのインストールが終わったらまた質問をされるので下記の要領で答えます。矢印キーを使うことはできないので、キーボードまたは0~2のキーを使って選択してください。
- Do you want to run your training on CPU only?:NO
- Do you wish to optimize your script with torch dynamo?:NO
- Do you want to use DeepSpeed?:NO
- What GPU should be used~:all
- Do you wish to use FP16 or BF16:fp16(1キーを押す)
なおRTX30xxやRTX40xxの方はbf16の方がいいっぽいです。私は1660Tiなのでfp16にしています。
これでセットアップは完了です。kohya_ssフォルダ内にある「gui.bat」をクリックし、コマンドプロンプト内にURLが表示されたらCtrlキーを押しながらクリックすることでKohya’s GUIが起動します。
torchを2.0.0に更新する
この項は必須ではありませんが、torchおよびxformersを最新版に更新することで学習速度が速くなります。
セットアップの際にエラーが出て2.0.0にできなかった方は、試してみてもいいかもしれません。
下記の記事の要領で更新していきます。

まずカレントディレクトリを下記の場所に移動します。
cd C:\Users\name\Desktop\kohya_gui\kohya_ss\venv\Scripts
下記のコマンドでtorchを2.0.0に更新します。
pip install torch==2.0.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu118
BadZipFileというエラーが表示される場合は、下記のコマンドを試してみてください。
BadZipFileの解決法や、torchのインストールコマンドの改善案をご存知でしたら、ぜひコメント欄で教えてください!お願いいたします!
pip install torch==2.0.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu117
次にxformersを下記のコマンドで更新します。
pip install -U xformers
RTX30xxや40xx向け高速化オプション
RTX30xxやRTX40xxをお持ちの場合は、CUDNNというものを最新版に更新することで学習を高速化できるようです。
これはAoman氏の記事に詳しくやり方が紹介されているので参考にしてください。


試していませんが、それ以外のGPUでも高速化したりしないんでしょうかね…?
「Kohya’s GUI」でLoRAを作るやり方
それでは、導入した「Kohya’s GUI」を使用して、LoRAを製作していきます。
実際に私がとあるゲームのキャラのLoRAを生成し、効果を反映できた場合を例にして紹介していきます。
素材画像をできるだけ多く集める
作成したいLoRAの素材となる画像を集めます。
キャラの場合はできるだけ別の表情・構図・ポーズが映っているものを選択してください。
画像サイズに関しては特にトリミングする必要はありませんが、512×512または1024×1024に成形しておいた方が良いと紹介している記事もあります。
ただ別にバラバラのサイズでも学習はできます。jpgとpngが混在していてもOKです。
余りにも解像度が低い画像を使用するのは、LoRAに悪影響を与えるのでやめましょう。
なお、10枚程度素材画像を用意すれば最低限のLoRAを作ることはできますが、Civitaiで人気があるレベルのものを作りたい場合は50~100枚程度用意した方が良いです。
LoRAの学習で一番重要なのは、当然ですが素材画像だと言われています。
「gallery-dl」というツールを使うとDanbooru等のサイトから画像を集めやすくなるので、ぜひ活用してください。

また、画像の背景を切り抜いたり、白背景にした方が良いかという点に関しては諸説あります。白背景が良いという方もいれば、多少背景が混ざっておいた方が良いという方もいます。
複数枚の画像の背景を一括で白に統一したい時は、下の記事で紹介している拡張機能「sd_katanuki」を使うと楽に処理できます。

今回私は素材画像を55枚集めてLoRAの学習を行いました。なお後述するバッチサイズを上げる場合は、素材画像の数をバッチ数で割り切れる数にしてください。
集めた画像は、「(繰り返し数)_(トリガープロンプト)」という名前のフォルダに保存してください。今回は「2_nahida」としています。
sksのようなインスタンスプロンプトを使用する必要はありません。
新しくkohya_ssの中に作成したimageというフォルダに、この「2_nahida」フォルダを格納しましょう。
C:\Users\name\Desktop\kohya_gui\kohya_ss\image
画像のタグを自動生成する
拡張機能「Dataset Tag Editor」を使用してタグの編集をしていきます。
導入方法に関しては下の記事をご覧ください。

WebUIを起動し、「Dataset Tag Editor」のタブを開きます。
Dataset directoryにタグ付けしたい素材画像を格納しているフォルダのパス、Dataset Load SettingsのタブにあるLoad from subdirectoriesとLoad caption from filename if no text file existsにチェックを入れます。
Use Interrogator CaptionのOverwriteにチェックを入れ、Interrogatorから好きなものを設定します。
私はwd-v1-4-swinv2-tagger-v2を選択しました。
Interrogator Settingsを開き、使用したInterrogatorに応じてチェックを入れます。値は変えなくてOKです。
ここまで終わったらLoadボタンを押しましょう。Interrogator Settingsの下に素材画像が表示されます。
この際、自動的にタグ付けまで終わっています。
次に右側にある「Filter by Selection」のタブを開き、Add All Displayedをクリックした後、一番下のオレンジ色のApply selection filterを選択します。
最後に一番上にあるオレンジ色のSave all changesをクリックすれば完了です。
タグが記載されたtxtファイルが、素材画像と同じフォルダ内に保存されます。
タグを編集する
次に生成したタグを編集していきます。
txtファイルに含まれるタグの中で、学習させたいものを削除していきます。
学習させたいものを「残す」のではなく、「削除する」ので間違えないようにしてください。
キャラのLoRAを作る場合、基本的には表情・髪型・服装・体型などに関するタグを削除すると良いようです。
この部分に関しては下記の記事が参考になります。

「Dataset Tag Editor」を起動します。
Dataset directoryにタグ付けしたい素材画像を格納しているフォルダのパス、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をクリックすれば、選択したタグがtxtファイルの中から削除されます。
タグ内にトリガーワードを追記する。
txtファイル内にあるタグの先頭に、トリガーワードを追記します。
このトリガーワードを使うことで、上の項で削除した要素を呼び出せるようになります。
今回はフォルダ名にも使ったnahidaをトリガーワードにします。
「Dataset Tag Editor」を起動します。
Dataset directoryにタグ付けしたい素材画像を格納しているフォルダのパス、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にトリガーワードを入力し、Pretend additional tagsにチェックを入れた後、Apply changes to filtered imagesをクリックします。
最後に一番上にあるオレンジ色のSave all changesをクリックすれば、トリガーワードを全txtファイルの先頭に追記できます。
学習に使うモデルの入手
Aoman氏の記事でも言及されていましたが、既存のマージモデルでLoRAを作成すると過学習気味になるようです。
そのため、実写系ならStable Diffusion v1.5の公式モデル、アニメイラスト系ならACertainModelを使うのがおすすめです。
公式モデルの方はKohya GUIのプリセットなのでダウンロードする必要はありません。
ACertainModelは下記のHugging Faceのページからダウンロードできます。

【2023年6月1日追記】
最近はCivitaiで入手可能な「AnyLoRA」という名前のモデルも、LoRAの学習素材としておすすめされていることがあります。
Kohya GUIを起動して各種設定を行う
gui.batをクリックしてKohya’s GUIを起動します。
Source model
Dreambooth Loraのタブを選択し、Source modelのPretained model name or pathに素材に使うモデルデータのパスを入力します。
自分で用意したモデルを使用する場合は、Model Quick Pickをcustom、公式モデルを使う場合はrunwayml/stable-diffusion-v1-5にします。
Save trained model asはsafetensorsにします。
sd2.0系でLoRAを作ってしまうと、現在広く流通しているsd1.5系のマージモデルで使用できなくなるので注意してください。要は互換性がないということです。
Folders
Foldersのタブを選択し、Image folderに素材画像を保存したフォルダの1つ上の階層のフォルダのパスを入力します。
【不適切】C:\Users\name\Desktop\kohya_gui\kohya_ss\image\2_nahida
Output folderに生成したLoRAを保存するフォルダを選択します。
Logging folderはお好みで。空欄でもOKです。
Model output nameに作成するLoRAの名前を入力します。
ここで設定した名前+safetensorsの形式でoutput folderに出力されます。
Training parameters
基本的には初期設定のままでOKですが、いくつか変えた方が良い場所もあります。
まずLoRA typeです。Standardを選択すると通常のLoRA、それ以外を選択するとLoConやLoHaを生成できます。
LoConやLoHaの方がLoRAでは再現できない部分も再現可能にし、少ないステップ数で学習できるといわれていますが、詳しくはよくわかりません(勉強中です…)
とりあえず困ったらLoRA(Standard)にしておきましょう。
Train batch sizeを上げるとVRAMの消費量は増えますが、学習速度が上がります。
RTX30xx以上のスペックでない限り1でいいと思います。
Epochに学習で使うエポック数を入力します。
(繰り返し数)×(素材画像の数)×(エポック数)が総ステップ数になります。
総ステップ数が最低で1,000、多くても4,000くらいで最初は試してみるのがおすすめです。
Save every N epochsに設定した数のエポックに到達したら、その時点でLoRAファイルが保存されます。
1~5あたりの数がおすすめです。
Caption Extensionには.txtと必ず入力してください。
LR Schedulerに設定したスケジューラーによって、学習率が自動的に変動します。
最適解はないと思いますが、cosineが良いような印象があります。
OptimizerはLoRAの品質に影響を与えるパラメーターです。
迷ったらAdamWかAdamW8bit(VRAM消費量が少ない?)でいいと思います。
学習が上手くいかなかったらいろいろ変更してみてください。
Network Rank (Dimension)とNetwork Alphaは、公式ガイドによるとLoRAの場合Dim=32、Alpha=1が良いそうです。
DImの値が高いほど素材画像の線を細かく拾うのではないかと思っていますが、違うかもしれません。
もしご存知でしたらコメント欄で教えてください!
ただDimはどれだけ高くても128までにするべきです。
alphaは1か、Dimの半分(Dim=64、alpha=32など)がおすすめされます。
最後にアニメ系のイラストを素材に使う場合は、Advanced Configurationを開き、Clip skipを2に変更しておきましょう。
実写系の場合は1と2を両方試していい方を採用します。
GTX1660Tiを使う場合の注意事項
GTX1660Tiを使用している場合は、Mixed precisionをNoにしてください。そうしないと学習ができません。
CUDA out of memory が表示される場合
Max resolutionを初期の512×512よりも小さくすることで、VRAM消費量をかなり抑えることができます。
例えば384×384にするなどですね。
ただ学習に悪影響を与えてしまうため、推奨はできません。
また、Advanced Configurationの中にあるGradient checkpointingにチェックを入れることで、学習速度と引き換えに、大幅にVRAM消費量を節約することができるそうです。
学習を実行しよう!
ここまで準備ができたら、一番上にあるConfiguration fileを開き、Save asボタンで設定項目をjsonファイルに保存しましょう。
これを忘れると再度学習する際にすべて1からやり直さないといけなくなります。
最後に一番下にあるオレンジ色のTrain modelのボタンを押せば、学習が開始されます。
LoRAを生成できたらいつも通りWebUIを起動し、プロンプト内で下記の要領で使用してみてください。
トリガーワードを使うのを忘れないようにしてくださいね!
まとめ
以上が、インターネット上に存在しない自分だけのLoRAを簡単に生成することができるツール「Kohya’s GUI」の使い方でした。
2023年5月時点で、自作LoRAを作る際に最もおすすめされているツールなので、「sd-webui-train-tools」や「LoRA Easy Training Scripts」で上手くいかなかった方も、ぜひもう一度試してみてくださいね!
では、ここまで読んでいただきありがとうございました。
コメント
悠さんこちらの記事ありがとうございます!
ついにエラーなく制作することができましたorz
最初は学習数が少なすぎて良いのがでなかったのですが学習数をあげたらクオリティーがあがりました
一回出したLORAデータに学習数を上書きしていく方法もあるのでしょうか
それか学習数を上げて再度LORAデータで出したほうが良さそうですかね
コメントありがとうございます!
おお!学習成功出来て良かったです!!
確か1度出力したloraを元に追加学習させる方法はあったと思います。
ただ試せてないので、分かりましたら追記します!
Rtx3060クラス以上のgpuなら、バッチ数を3とかにして回せば2000ステップでも結構早い可能性があるので、ぜひこちらも試してみてください!
私と同じ古めのgpuならバッチ数は1がいいですが…
後loconやlohaにすると少ないステップ数でも、綺麗に学習できるらしいです。
返信ありがとうございます!
いろいろ試してみます!
こんにちは
いつもお世話になっております。
この方法で出力した学習データの大きさはどれくらいになりますか? GBとか巨大になりませんか?
コメントありがとうございます!
出力したloraのサイズは大きくても100MB~200MB程度ですよ!
1GBレベルになることはありませんのでご安心ください!
ありがとうございます!
いつも参考にさせていただいております。
学習が終了し、いざ出てきたファイルをwebuiにて使おうとすると全く反映されていないようです(タグ、トリガーワードをつけても元のモデルの絵が出力される)。
webuiの拡張機能では作製できたのですが…
コメントありがとうございます!
お使いのGPUが16X0だったりしませんか?その場合はMixed precisionをNoにする必要があります。
それ以外には、xformersが0.016だと学習しないバグあると聞いたことがあります。
他には学習ステップ数が少なすぎるなども考えられるかもしれません。ステップ数はいくつに設定されていますか?
学習率などのパラメータは初期から変更されました?
また作ったLoRAの比重を例えば10や20にして試しても一切効果が反映されませんでしょうか?
ありがとうございます!その辺いろいろ試してみます!
こんにちわ!
ACertainModeをダウンロードした後はどこのファイルに格納するのでしょうか?
コメントありがとうございます!
どこのフォルダに格納しても、そのパスを入力すれば使えますよ!
迷ったらいつもモデルを格納するwebui/models/Stable-diffusionでいいと思います!
いつも参考にさせて頂いております。
Train modelを押すと
ValluError: Less than two GPU ids were configured and tried to run on on multiple GPUs. Prease ensure at least two are specified for –gpu_ids ,on use –gpu_ids=’all’
と出て学習できません
設定を間違えているのでしょうか、、、
もし分かれば対応策を教えていただけるととても助かります。
コメントありがとうございます!
エラーメッセージ的に、インストール時の「What GPU should be used~:all」の場所が問題なのかもしれませんね。
GPUを1台しか搭載していないPCではallでいいようなのですが、もしかしてPCに複数のGPUを搭載されていたりしますでしょうか?
返信ありがとうございます。
使っているGPUは1660super
cpuもRyzen5 3500X なので内臓グラフィックもないと思うので
恐らく1台しか搭載していないのですが、、、;;
エラーメッセージによると「allを使う場合は少なくとも2つ以上のGPUが必要」とのことなので、内蔵グラフィックがない場合は直接そのGPUを指定しないといけないのかもしれません。
私の場合はIntelの内蔵グラフィック+GTX1660Tiなのでallで上手くいった可能性があります。
タスクマネージャーを開いた時にGPU0 (1)みたいに表示されていると思うので、その番号を「What GPU should be used~:all」の場所に入れると改善させる気がします。
ただ探しては見たんですが、この項目をどこで再設定し直せるのかちょっと見当たらないんですよね。
かなり面倒ですがsetup.batをもう一度起動して設定し直す必要があるかもしれません。
ありがとうございます!
そこはアドバイス通りにしたら解決した?かもしれないのですが、
今度は
torch.distributed.elastic.multiprocessing.errors.ChildFailedError
というのが出るようになってしまいました、、、
こちらも解決策はありますでしょうか?
https://github.com/bmaltais/kohya_ss/issues?q=is%3Aissue+is%3Aopen+ChildFailedError
↑同じようなエラーが発生しているissueなんですが、GPU関連の設定がやはりうまくいっていないのかも?
面倒かと思いますが、一度フォルダを削除して1からkohya guiを再インストールした方が良いのかもしれません。
お世話になっております。
LoRaを生成する段階ですが、以下のエラーが発生し、LoRaが生成されません。
お手数ですが解決案をご教示いただけないでしょうか。
FileNotFoundError: Could not find module ‘C:\Users\\kohya_ss\venv\lib\site-packages\bitsandbytes\libbitsandbytes_cuda116.dll’ (or one of its dependencies). Try using the full path with constructor syntax.
コメントありがとうございます!
下記のGithubのissueでほぼ同じ問題が報告されていました。
https://github.com/TimDettmers/bitsandbytes/issues/161
これによると、下記の2つの方法でエラーが解消されたそうです。
・Pythonを再インストールする
・AdamW8bitを使っている場合はAdamWに変え、更にGradient checkpointingとMemory efficient attentionにチェックを入れる
Pythonの再インストールは面倒だと思うので、まずは下の方から試してみてはいかがでしょうか?
ちなみにPythonのバージョンはいくつでしょうか?私はpython3.10.6で特にエラーは生じませんでした。
すいません、Training parametersにLoraTypeという項目がないのですが。
コメントありがとうございます!
Dreambooth Loraではなく、その左のDreamboothのタブを開いていたりはしませんでしょうか?