Stable DiffusionのLoRAのつくりかた
はじめに
この記事は、初めてStable DiffusionのLoRAを作成する方に向けた解説です。わかりづらかったらすみません。
この解説ではSDXLベースのIllustrious-XL-v1.1で二次元イラストのキャラクターのLoRAを作成します。
注意
すでにWebUIの環境構築と生成ができていて生成に慣れている前提のガイドとなります。
GitとPython3.10または3.11が必要です。
Windows向けのガイドです。
また、NVIDIA GeForce RTXグラフィックボード(VRAM 8GB以上)と32GB以上のメインメモリが搭載された高性能なパソコンが必要です。
そもそもLoRAってなんぞや?
Low-Rank Adaptationが正式名称です。
難しくいうと、ウェイトとデータセットの差分を出力するものです。低ランクの行列に分解してからファインチューンすることで少ないメモリで学習できるようにしたものです。
簡単に言えば、LoRAはキャラ、衣装、シチュエーションや画風などを追加で学習したもので、生成時に使います。トッピング感覚で簡単に使用できます。
LoRAの学習ツールはkohya-ss氏作成のsd-scriptsが主流です。
LoRAの作成(学習)方法
これからLoRAの作成方法を解説します。ここではIllustrious-XL-v1.1(SDXL)ベースで作成します。
0.前提条件と事前確認
GitとPython 3.10/3.11が必要です(3.11.9を強く推奨)。
WebUI導入以来Pythonのインストールやアップデートをしていない方は念のためにPython 3.11.9をインストールしてください。
※Pythonをインストールするとき、セットアップ画面下部にあるAdd python.exe to PATHにチェックをつけてください。
適当な場所でターミナル(コマンドプロンプト)を開き、「python --version」と打ってPython 3.11.xか3.10.x以外が表示された場合はPython 3.11.9をインストールしてください(PC再起動も)。
インストール済みにもかかわらず、単に「Python」とだけ表示された場合はこの後の簡易インストーラーで"「python」の代わりに「py」を使用する"にチェックをつけてください。
1.環境構築
githubで公開している自作のGUIで学習をします。このGUIはsd-scriptsでの学習を容易にするもです。
こちらからlatestとなっているバージョン(ファイル名はkohya_lora_gui-x.x.x.x.zip)をダウンロードし、LoRA GUIなどの名前で新しいフォルダを作成し、そこに解凍します。解凍先は日本語が含まれていない場所を推奨します。
次に、解凍したフォルダに入っているexeファイルをダブルクリックしてGUIを起動します。
以下のような画面が表示されるので、画面上部にある「簡易インストーラー」をクリックして、開いた画面の手順に従って学習スクリプトのsd-scriptsをインストールしてください。※NVIDIA RTX50シリーズGPUをお使いの方は「Torch2.7をインストール」に必ずチェックをつけてください。
sd-scriptsのインストール先はLoRA学習GUIのフォルダが入ったフォルダです!GUIフォルダの中ではありません!
インストールが完了したら、一旦GUIを閉じておきます。
注意!このときディレクトリの階層は以下のようになります。それ以外では見つかりませんなどのメッセージが表示されます。
また、sd-scriptsの名前は変更しないでください。
インストールに失敗したら
GUIにvenvが無いと表示されたり、ターミナル(コマンド プロンプト)に「accelerateというコマンドは無い」や「〇〇というパッケージをインストールできない」の類のメッセージが表示されたりする場合は正しく環境構築できていません。Python 3.11.9を再インストールしてください。※Pythonをインストールするとき、セットアップ画面下部にあるAdd python.exe to PATHにチェックをつけてください。
再インストールした後、sd-scriptsフォルダを消去してからGUIを再起動してから再度簡易インストーラーを実行してください。
それでも失敗するようであれば、セキュリティソフトが妨害している可能性があります。セキュリティソフトを無効にするか、GUIおよびsd-scriptsをスキャンの除外に指定してみてください。
2.データセット用フォルダ作成
学習するためのデータの準備をします。
まずはフォルダを作成してください。場所は深すぎず、日本語が含まれていない場所をおすすめします。次に作成したフォルダの中に新しいフォルダを作成します。名前は「繰り返し数_名前」にします(例:4_aaaa)。
繰り返し数は1エポック(データセット全体を一巡すること)あたりのステップ数を変化させます。※1エポック=フォルダ内の画像の枚数x繰り返し数、複数フォルダがあるならそれの合計
1エポックが200-500ステップになるようにするとよいでしょう。総ステップ数の調整が楽になります。
3.画像収集
フォルダの作成が終わったら、danbooruなどから学習対象の画像を「繰り返し数_名前」のフォルダにダウンロードします。このとき画像についたタグが載ったtxtファイルを一緒にDLしておくとキャプション作成が楽になります。
画像の枚数は20枚程度でもOKですが、多い方が品質が高くなります。
ちなみに私はGrabberでbooru系サイトからタグと一緒に画像をDLしています。
備考:画像サイズを学習解像度に合わせる必要はありません。
sd-scriptsが画像の比率を保ちながら学習解像度に近い値へ拡縮します。
4-1.キャプション作成
タグが載ったtxtファイルを一緒にDLした場合はここは無視して4-2.キャプション編集の項目から進めてください。
画像の説明文となるキャプションを作成します。ここではdanbooruタグを用います。※以下で使用するWD14 Taggerは更新停止状態にあり、2025年現在は動作しない可能性もあります。
WebUIのWD14 TaggerというExtensionで自動でタグをつけます。
Exntensionをインストールするために、AUTOMATIC1111 WebUIを起動し、Extensionsタブを開きます。
Install from URLのURL for…の場所に「https://github.com/picobyte/stable-diffusion-webui-wd14-tagger.git」を入力してInstallボタンを押します。しばらく待ってUse installed tab to restartと出たらwebuiを再起動してください。
再起動後、Taggerというタブが出るのでそちらを開きます。
Taggerの画面でBatch from directoryのタブを開き、Input directoryにDLした画像が入ったフォルダのパスを入力します。
画面中央にあるInterrogatorにmoat tagger v2を選択し、下部にあるMin tag fraction in batch and interrogationsを0にしておきましょう。
生成時に学習対象を呼び出す単語(トリガーワード)をAdditional tagsに入力します。
入力し終えたらInterrogateを押してしばらく待ちましょう。自動タグ付けが終わったらWebUIを閉じます。
4-2.キャプション編集
4-1でキャプションを自動生成した場合はこの項目はスキップしてください。
BooruDatasetTagManagerなどで生成時に学習対象を呼び出す単語(トリガーワード)を追加して先頭に配置しましょう。
5.学習パラメータの設定
GUIを起動します。画面下部にあるプリセットの読込から、こちらで配布しているサンプルプリセット「ForIllustriousXL/汎用プリセット_爆速.xmlora」を開きます。
するとある程度パラメータが設定されるので、設定されていない箇所を設定しましょう。
学習元モデルにIllustrious-XL-v1.1(またはAnyIllustrious-XL-1.1.0)、教師画像フォルダに先ほど作成したフォルダ(繰り返し数_名前の親フォルダ)、出力先フォルダにwebuiのloraフォルダなどを指定します。出力ファイル名はお好みで。
設定したら画面右下のbatch1相当(目安)に学習ステップ数が表示されるので、これが1200になるようにepochs/stepsの値を調整してください。
6.学習
画面右下の学習開始をクリックするとターミナル(黒い画面)が表示され、学習が開始します。
時間がかかるので気長に待ちましょう。
この時表示される「A matching Triton is not available. Error caught was: no module named 'triton'」は気にしないでください。Tritonがないと言っていますが正常です。TritonはWindows版が存在せず、無くても問題もありません。他にWarningも表示されますが影響はありません。
ターミナルに表示されるstepsのプログレスバーが100%になってmodel saved.と出たら完了です。
早速WebUIで使用してみましょう。
7.LoRAを使用
WebUIを起動し、sd checkpointをIllustrious-XL-v1.1にしてから、txt2imgのLoraタブを開き先ほど作成したLoRAを選択します。
選択するとプロンプトに<lora:名前:強度>のような文字列が追加されます。これはその名前のLoRAを指定した強度で適用するという意味です。
プロンプトにトリガーワードを入力して生成しましょう。学習対象が出てくれば成功です。
お疲れ様でした。



コメント
32学習する際のモデルをIllustrious-XL-v1.1でやる理由とかありますでしょうか?高い汎用性があるとか・・・。
参考になりました。でも最後の最期、開始ボタンを押すと
「'accelerate' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と出て進みません。つらいです。悲しいです。解決方法に心当たりありますでしょうか?
Python 3.11.9の再インストール(add python.exe to PATHにチェックをつける)とPC再起動をしてからお試しください。それでも改善しないようであれば、セキュリティソフトを無効にするかGUIおよびsd-scriptsを除外に追加してください。
素人にもわかりやすい具体的な対策の提示、ありがとうございます。
Python 3.11.9のアンインストールと再インストール(add python.exe to PATHにチェックをつける)し再起動、ウイルスバスターの除外設定や機能の一時停止をしましたが、症状は改善しませんでした……………