【Stable Diffusion】「LoRA Easy Training Scripts」を使って自分だけのLoRAを作る方法を紹介!

私の環境でも下の方法を使ってLoRAの成果が反映されていることをしっかりと確認できました!

こんにちは!悠です!

 

以前WebUI上で自作LoRAを作れる拡張機能「sd-webui-train-tools」を紹介しました。

 

今回はあの拡張機能よりもさらに細かい部分まで設定して、ローカル環境で自作LoRAを作成可能なLoRA Easy Training Scripts」の使い方を紹介していきます。

名前にEasyとついていますが、導入は結構難しめです。またストレージを10GB近く占領するので注意してください。

 

VRAM6GBのGTX1660Tiで無事学習できることを確認しました。これ以上のスペックのGPUをお持ちの方なら余裕です。
アイキャッチ画像は「AbyssOrangeMix3」で作成しています!
スポンサーリンク
スポンサーリンク

Python3.10.6およびGitの導入

「LoRA Easy Training Scripts」をPCで使うための準備としてPython3.10.6およびGitを導入していきます。

ローカル版の「Stable Diffusion WebUI」を設定済みの方は、この項目は読み飛ばしてOKです。

 

Python3.10.6のインストール

下記リンク先より、Python 3.10.6をPCにインストールします。「Stable Diffusion」で推奨されているバージョンは3.10.6なので、間違えて他のバージョンを選択しないように注意しましょう。

Python Release Python 3.10.6
The official home of the Python Programming Language

 

「Windows installer (64bit)」をダウンロードして起動し、指示に従ってインストールします。

 

なお、必ずAdd Python 3.10 to PATHにチェックを入れるようにしましょう。

これを忘れるとシステムの環境設定から自分でPATHを通す必要が出てきます。

 

Gitのインストール

下記リンク先よりStandalone版のGit(64bit)をダウンロードします。

Git - Downloading Package

 

 

インストーラーをダブルクリックして起動し、指示に従ってインストールしましょう。

いろいろ設定を聞かれますが、特に変更せず次へを押していって大丈夫です。

 

「LoRA Easy Training Scripts」の導入方法

それでは早速ですが、LoRAを自作できるツール「LoRA Easy Training Scripts」の導入方法を紹介していきます。

 

まず下記のGitHubのページにアクセスし、Latestと書いてあるバージョンを見つけてください(2023年4月5日時点ではv6)。

Releases · derrian-distro/LoRA_Easy_Training_Scripts
A set of two training scripts written in python for use in Kohya's SD-Scripts repository. - derrian-distro/LoRA_Easy_Training_Scripts

 

「installer.py」をクリックしてPC内にダウンロードします。

 

installer.pyを任意のフォルダ内に移動させます。

この際、「日本語」が含まれたフォルダ内にinstaller.pyを保存するのは絶対に避けてください。

拡張機能「sd-webui-train-tools」のときもそうでしたが、バグの要因になります。

 

また、一度決めたフォルダの場所を変える場合、フォルダをコピペして移動するとこれもバグの要因になります。

できる限り最初に決めたフォルダ内から動かさないようにしましょう。

 

私の場合は「\Desktop\LoRA_Easy_Training_scripts」にinstaller.pyを保存しています。

 

installer.pyをダブルクリックして起動させます。しばらくするとインストールするPyTorchのバージョンを聞かれるので、使っているGPUに合わせて数を入力します。

ロースペックGPUの場合は1.12.1(0)を、RTX30xxなどのハイスペックGPUを使用している場合は2.0.0(1)を選択してください。

1660Tiの場合は絶対1.12.1にしましょう。xformersのモジュールが存在しないというエラーが出て、ツールが起動しなくなります。

 

後は「続行するには何かキーを押してください」と表示される(もしくは自動的にコマンドプロンプトが閉じる)まで待ちましょう。

installer.pyの隣に「LoRA_Easy_Training_Scripts」フォルダが作成されていれば導入は完了です。

 

GTX-16xx系GPUを使用している場合

GTX-16xx系のグラボを使っている場合は、ArgsList.pyの設定を変更する必要があります。(参考記事

私も1660Tiを使っています!本当に買い換えたい!

 

「LoRA_Easy_Training_Scripts」フォルダの中にあるArgsList.pyをメモ帳で開きます。

 

「self.mixed_precision」で検索し、下記のように書き換えます。

self.mixed_precision: str = "fp16"
を
self.mixed_precision: str = "no"
に書き換える

 

 

これで準備はOKです。

素材画像の準備

学習に使う素材画像を用意します。

素材画像のサイズは512×512に統一することが推奨されていますが、これ以外の画像サイズを使っても問題なく動きます。(ただ学習結果に悪影響を与える可能性はあります。)

ある程度リサイズされることも想定して、1024×1024のサイズが最適だとする記事を2つ見ました。要検証。

 

次に学習素材に使う画像を下記のような名前のフォルダに格納します。

「5_sks cheshire」

 

 

最初の5は繰り返し数を意味しており、学習の総step数に影響します。画像では5になっていますが20くらいがおすすめです。

次のsksはインスタンスプロンプトと呼ばれるもので、一切意味を持たない3文字の英単語の使用が推奨されています。

つまりcatやdogはダメです。sigとかsksとかtzfとかにしましょう。

最後のcheshireの部分はLoRAを呼び出すためのトリガープロント(の一部)です。例えば蛙の画像を素材に使うならfrog、何かキャラの画像を使う場合はそのキャラ名などを付けます。

上の例の場合、トリガープロンプトは「cheshire」もしくは「sks cheshire」になりそうです。どちらを使っても一定量の効果が確認できました。ただトリガープロンプトには「sks cheshire」の方が適しているのではないか、という印象を受けました。
トリガープロンプトを使わず、<LoRA:1.0>だけを使ってもLoRAが反映されないことがありました。

 

フォルダの名前の命名方法は下記の記事が非常に参考になります。(Kohya LoRA Dreambooth作者様の記事)

DiffusersベースのDreamBoothについて|Kohya S.|note
はじめに Stable DiffusionのDreamBoothについて、以前の記事では記事にスクリプトを添付していましたが、新たにgithubのリポジトリを作成しました。そちらを用いた学習について解説する記事です。 リポジトリはこちらです。 スクリプトの主な機能は以下の通りです。 8bit Ada...

 

ここまで終わったら、「5_sks cheshire」フォルダを任意の場所に配置します。

私の場合は\Desktop\LoRA_Easy_Training_scripts\LoRA_Easy_Training_Scripts\imagesの中に配置しました。

 

【2023/4/25追記】

インスンスプロンプトはいらないかもしれないです。

5_cheshireでいいかも?要検証。

 

画像のタグ付けを行う

では次に素材に使う画像にタグをつけていきます。タグは必須なので忘れないようにしてください

 

タグとは簡単に言えば素材画像の説明です。例えば初音ミクの画像を素材にするなら、1girl、twintails、blue hairのような単語を画像に付け加える作業のことを指します。

注意点として、タグは適当に付けたからと言ってLoRAの品質が上がるというわけでもありません。100%の出来を目指すなら、各タグの種類や順番や比重を精査する必要が出てくると思います。

 

今回は画像に自動でタグをつけてくれる「Dataset Tag Editor」という拡張機能を使っていきます。

GitHub - toshiaki1729/stable-diffusion-webui-dataset-tag-editor: Extension to edit dataset captions for SD web UI by AUTOMATIC1111
Extension to edit dataset captions for SD web UI by AUTOMATIC1111 - GitHub - toshiaki1729/stable-diffusion-webui-dataset-tag-editor: Extension to edit dataset c...

 

拡張機能を使う際、素材画像を連番「01.png」「02.png」のようにしておいた方がいいかもしれません。私は連番に直しておきました。

【追記】名前を連番に直さずにタグ付けしてみましたが、特に不具合はありませんでした。

 

Dataset Tag Editorの導入

 

「Extensions」→ 「Install from URL 」→「URL for extensions’s git repository」の欄に、下記のURLを入力します。

https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor

 

WebUIを再起動して、「Dataset Tag Editor」のタブが登場していれば導入は完了です。

 

Dataset Tag Editorの使い方

Dataset directoryにタグ付けしたい素材画像を格納しているフォルダのパス、Dataset Load SettingsのタブにあるLoad from subdirectoriesLoad caption from filename if no text file existsにチェックを入れます。

Use Interrogator CaptionのOverwriteにチェックを入れ、Interrogatorから好きなものを設定します。

私はwd-v1-4-vit-tagger-v2を選択しました。

 

Interrogator Settingsを開き、使用したInterrogatorに応じてチェックを入れます。値は変えなくてOKです。

 

ここまで終わったら「Load」ボタンを押しましょう。Interrogator Settingsの下に素材画像が表示されます。

この際、自動的にタグ付けまで終わっています。

 

次に右側にある「Filter by Selection」のタブを開き、Add All Displayedをクリックした後、一番下のオレンジ色のApply selection filterを選択します。

 

最後に一番上にあるオレンジ色のSave all changesをクリックすれば完了です。

 

素材画像を格納しているフォルダの中に、txtファイルが画像の分だけ生成されているはずです。この中にタグの情報が書き込まれています。

とりあえずこれでLoRAの学習を行うことができます。

 

ここからさらに、生成したtxtファイルのタグを編集していくことでLoRAの品質を向上させられるといわれています。(ただどうすれば最適解になるかは私も勉強中です)

一般的に生成されたタグの中で「学習させたいもの」「削除」して、「学習させたくないもの」「残す」と品質のいいLoRAになるといわれているそうです。(参考記事

 

Dataset Tag Editorでタグを削除する方法

Use Interrogators CaptionをIf Emptyにし、Loadを押した後、Batch Edit CaptionsRemoveタブを開いて削除したいタグにチェックを付け、Remove selected tagsをクリックすればtxtファイル内から選択したタグを一括削除できます。



「LoRA Easy Training Scripts」の使い方

それでは「LoRA Easy Training Script」を起動してみましょう。

 

「LoRA Easy Training Script」フォルダの中にあるrun_popup.batをダブルクリックします。

 

初回起動時のみ大量のポップアップに答えて設定をしていきます。2回目からはjsonファイルを読み込むことでこの工程をスキップできるので安心してください。

こんなポップアップが20個くらい表示される。

 

では各ポップアップでのおすすめの答え方をまとめていきます。

なお、あくまで一例なのでこれが最適解である保証はありません(そもそも私には意味が分からない部分もあります)。後で編集することも可能なので、気軽に答えていきましょう。

 

オプティマイザーやスケジューラーを変更すると、ポップアップの質問が増減します。

 

Do you want to run multiple tranings?

「いいえ」を選択します。

複数の学習を同時に起動するかどうか聞いています。

 

Do you want to load a json file?

初回のみ「いいえ」を選択します。2回目からは「はい」を選びましょう。

jsonファイルに保存した設定を読み込むか聞いています。

 

※2回目以降は生成されたjsonファイルを読み込むことで、これ以降の設定を全てスキップできます。

 

Do you want to save a json of your configuration?

「はい」を選択します。

設定を保存したjsonファイルを作成するか聞いています。

 

select the folder to save json file to

jsonファイルを保存するフォルダを選択します。

私は「\Desktop\LoRA_Easy_Training_scripts\LoRA_Easy_Training_Scripts」に保存しています。

 

What name do you want to set for the json file?

保存するjsonファイルの名前を設定します。

jsonファイルは「config-(ランダムな数字の羅列)-(ここで設定する名前)」の形式で保存されます。

 

Do you want to only save a json file not train?

「いいえ」を選択します。

jsonファイルだけ設定して、学習は行わないかどうか聞いています。今回は学習もするので「いいえ」です。

 

Select your base model

自分のPC内に保存している、学習で使うモデルデータを選択します。

 

Select your image folder

学習に使う素材画像を格納している「5_sks cheshire」の場所を選択します。

「\LoRA_Easy_Training_Scripts\images」を選択してください。

 

「\LoRA_Easy_Training_Scripts\images\5_sks cheshire」のように、該当のフォルダ自体を選択してはいけません。

 

Select your output folder

学習で生成されるLoRAファイルを保存するフォルダを選択します。

私は「\LoRA_Easy_Training_Scripts\output」を新たに作成しました。

 

Do you want to change the name of output checkpoints?

「いいえ」を選択します。

生成した画像内のメタデータにある、生成に使ったモデルデータの名前を変更するかどうか聞いています。

 

Do you want to save a txt file that contains~

「はい」を選択してみました。

学習の素材に使った画像に使用されているタグをtxtファイルに保存するかどうか聞いています。あっても困らない気がするので「はい」に。

タグの順番をどう保存するか聞いてくるので「occurrence-ly」を選択します。

 

Are you training on a SD2.x based model?

ベースモデルがStable Diffusion2.0系のモデルなら「はい」を選択します。

おそらく多くの場合は「いいえ」だと思います。例えばChilloutMixはSD1.5なので「いいえ」です。

バージョンはモデルをダウンロードするCivitaiのページに書いてあるので、それに従ってください。

 

Are you training on an realistic model?

学習素材の画像がフォトリアル系・写真のようなものなら「はい」、アニメイラストなら「いいえ」を選択します。

 

Do you want to use regularization images?

正規化画像を使うかどうか聞いています。今回は「いいえ」を選択します。

正規化画像についてはまた別の記事で紹介します。出来上がるLoRAの品質にかかわるものですが、用意した方が100%品質が上がるというわけでもありません。

 

Which Optimizer do you want?

学習で使うオプティマイザーを選択します。

正直どれがいいかわからないので、「sd-webui-train-tools」の初期設定で使われていた「Lion」を選択します。

AdamWが学習率が少ないstepで学習率が高いという記事を見かけました。

 

What is the dim size you want to use?

128を入力します。

 

What alpha do you want?

dimの半分の値(今回は128/2 = 64)を入力します。

 

What type of model do yo want to train?

LoRAを選択します。

LoConやLoHAはLoRAの進化系です。下の記事で紹介しています。

【Stable Diffusion】LyCORIS(LoHa・LoCon)をWebUIで使用する方法を紹介!【LoRA亜種】
「Stable Diffusion」で使用できるLoRAの亜種、「LyCORIS(LoHa・LoCon)」をWebUIで使う方法についてまとめた記事です。

 

What learning do you want to use?

学習率を設定します。デフォルトの0.0001がおすすめです。

 

What unnet_lr do you want to use?

デフォルトがCancelなので、「Cancel」を選択します。

unnet_lrが何かはよくわかりません。

 

What text_encorder_lr do you want to use?

デフォルトがCancelなので、「Cancel」を選択します。

text_encorder_lrが何かはよくわかりません。

 

What scheduler do you want?

スケジューラーというものを選択します。スケジューラーとは、学習の途中で学習率を増減させる機能の事だそうです。

どれがいいかさっぱりわからないので、とりあえず「linear」を選んでみました。

 

What width resolusion do you want to train at?

学習の素材として使う画像の幅を選択します。選択した値に自動的にリサイズされるようです。

デフォルトの512を設定しましょう。

 

What height resolusion do you want to train at?

学習の素材として使う画像の高さを選択します。こちらもデフォルトの512を選択しましょう。

 

How large is your batch size going to be?

バッチサイズを設定します。大きくするほど学習速度が上がりますが、VRAM消費量が増えるようです。

とりあえずデフォルトの1でいきましょう。

 

Which way do you want to manage steps?

「epochs」を選択します。

 

How many epochs do you want?

学習の総step数は、(繰り返し数)×(画像の枚数)×(総epoch数)で決まります。

これがあまり大きくなり過ぎないように(1000~2000程度?)に設定しましょう。

おそらく15~30くらいがちょうどいいと思います。

と思っていたんですが、キャラ再現に最適な総step数は2000~4000という記事を見かけました。ハイスペックGPUがある方はこのあたりを目指すといいかもです。

 

Do you want to save epochs as it trains?

「はい」を選択します。epochを保存するかどうか聞いています。

 

How often do you want to save epochs?

何epochごとにLoRAファイルを保存するかの設定です。5がおすすめです。

 

Do you want to have a warmup ratio?

「いいえ」を選択します。

warmup ratioは、学習時の最初の方だけ学習率を上げる機能だそうです。

 

Do you want to shuffle captions?

デフォルトの「はい」を選択します。質問自体表示されないこともあります。

 

Do you want to keep some tokens at the front of your captions?

デフォルトの「はい」を選択します。質問自体表示されないこともあります。

 

How many do you want to keep at the front?

「Cancel」を選択します。そうするとデフォルトの1が設定されます。

 

Select what elements you want to train

デフォルトの「both」にします。

 

Do you want to flip all of your images?

「いいえ」を選択します。反転画像を作るかどうか聞いています。

 

Do you want to set a comment that gets put into the metadata?

「Cancel」を選択します。生成される画像のメタデータの中にコメントを残すかどうか聞いています。

 

Do you want to prevent upscaling images?

画像をアップスケールしないようにするか聞いています。

これはデフォルトの「はい」がいいらしいです。小さすぎる画像を無理やり拡大する機能だそうです。

 

What Mixed precision do you want?

デフォルトの「fp16」に設定します。

 

What save precision do you want?

デフォルトの「fp16」に設定します。

 

What of random crop or cache latents do you want?

デフォルトの「cache latents」に設定します。

 

Do you want to use min snr gamma training?

生成結果を向上させる可能性があるけれど、十分にテストされていない試験的機能の「min snr gamma」を有効化するかどうか聞いています。

私は「いいえ」にしました。

 

Do you want to generate test images as you train?

「いいえ」を選択します。

学習中に作成されたLoRAを使ってテスト画像を自動生成するか聞いています。

 

これで設定は終わり

ここまでポップアップに答えれば、あとは自動的に学習が開始されます。

設定で生成したoutputフォルダ内にLoRAのsafetensorsファイルが格納されていれば、学習成功です。

「epoch-000020.safetensors」のような名前で保存されています。

 

なお、同じく保存されているtxtファイルを開けば、拡張機能で設定したタグが反映されているのがわかると思います。

 

なお次に学習する際は、config.jsonを読み込むことでこれらの質問を全てスキップできるので、忘れずに活用してください。



jsonファイルを後から編集する方法

初回設定後に生成された「config-(乱数)-settings.json」をメモ帳で開けば、上の項で設定したものを編集することができます。

 

CUDA out of memoryのエラーが出る場合

ロースペックGPUの場合、上の設定ではメモリー不足のエラーが出て学習できないことがあります。

その場合は「config-(乱数)-settings.json」をメモ帳で開いて、net_dim、alpha、train_resolutionの値を小さくします。

 

私(GTX1660Ti)の場合、とある場所で紹介されていたnet_dim110alpha55train_resolution400に設定すると学習を開始することができました。

net_dim110alpha55train_resolution512でも学習できました。ただ生成時間はかなり伸びます。

 

No module named ‘xformers’

「ModuleNotFoundError: No module named ‘xformers’」というエラーが表示される場合は、「config-(乱数)-settings.json」をメモ帳で開いて、xformersfalseにするとエラーを解消できます。

 

追記

PyTorchのバージョンを1.12.1にダウングレードすることで、1660Tiでもxformersを使用できるようになりました。

誤ってロースペックGPUでPyTorchのバージョンを2.0.0にしてしまった場合は、まず「LoRA_Easy_Training_Scripts」内にある「update_torch.bat」を起動し、1.12.1を選択しましょう。

 

自動的にダウングレードしてくれます。

 

それでもエラーが出る場合は、下記のコマンドをコマンドプロンプトに打ち込んでダウングレードしましょう。

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

 

更に追記

コマンドプロンプトで下記のコマンドを実行し、xformerのバージョンを確認してみると、

python -m xformers.info

 

xFormers was built for: PyTorch 2.0.0+cu118 with CUDA 1108 (you have 1.12.1+cu113)

と表示されてしまい、ほとんどの項目がunavailableになっています。

 

ですので、xformersが使えるようになったのではなく、xformersが利用できなくなっているためエラーが消えた可能性がありそうです。xformersのダウングレードが必要なのかも?

 

更に更に追記

「~\LoRA_Easy_Training_Scripts\sd_scripts\venv\Lib\site-packages」のディレクトリでコマンドプロンプトを立ち上げ、その中でxformerのバージョンを確認するコマンドを使ってみると、

C:\Users\xxx\Desktop\LoRA_Easy_Training_scripts\LoRA_Easy_Training_Scripts\sd_scripts\venv\Lib\site-packages>python -m xformers.info
WARNING:root:A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'
xFormers 0.0.14.dev
memory_efficient_attention.flshatt: available - requires GPU with compute capability 7.5+
memory_efficient_attention.cutlass: available
memory_efficient_attention.small_k: available
is_triton_available: False
is_functorch_available: False
pytorch.version: 1.12.1+cu116
pytorch.cuda: available
gpu.compute_capability: 7.5
gpu.name: NVIDIA GeForce GTX 1660 Ti

 

というような表示が出ました。すべての項目がavairableになっていますね。

※「Triton is not available」とか出ていますが、これはWindowsでは使えない機能だという記事を見ました。とりあえず正常のようです。

 

私がディレクトリを間違えてコマンドを打っていたため、正確に反映されていなかったようです。

コメント欄で教えていただいた情報のおかげで気づけました!本当にありがとうございました!

 

上手くLoRAを反映できた例

私がうまくLoRAを反映できた例を紹介します。

まず最初繰り返し数を5、epochを30に設定して学習させていたんですが、これではうまくLoRAが反映されませんでした。

そこで繰り返し数を20、epochを逆に5のように変更することで、明らかにそのキャラを模しているとわかる程度にLoRAの成果を体感することができました。

繰り返し数がかなり重要なのかもしれません。

 

私が成果を体感できたconfig.jsonの中身を貼っておきますので、ぜひ参考にしてください。

{
"base_model": "C:/Users/name/Desktop/Stable_Diffusion/webui/models/Stable-diffusion/meinamix_meinaV8.safetensors",
"img_folder": "C:/Users/name/Desktop/LoRA_Easy_Training_scripts/LoRA_Easy_Training_Scripts/images",
"output_folder": "C:/Users/name/Desktop/LoRA_Easy_Training_scripts/LoRA_Easy_Training_Scripts/output",
"save_json_folder": "C:/Users/name/Desktop/LoRA_Easy_Training_scripts/LoRA_Easy_Training_Scripts",
"save_json_name": "settingv3",
"load_json_path": null,
"multi_run_folder": null,
"reg_img_folder": null,
"sample_prompts": null,
"change_output_name": null,
"json_load_skip_list": null,
"training_comment": null,
"save_json_only": false,
"tag_occurrence_txt_file": true,
"sort_tag_occurrence_alphabetically": true,
"optimizer_type": "Lion",
"optimizer_args": {
"weight_decay": "0.1",
"betas": "0.9,0.99"
},
"scheduler": "cosine_with_restarts",
"cosine_restarts": 1,
"scheduler_power": 1,
"lr_scheduler_type": null,
"lr_scheduler_args": null,
"learning_rate": 0.0001,
"unet_lr": null,
"text_encoder_lr": null,
"warmup_lr_ratio": null,
"unet_only": false,
"net_dim": 110,
"alpha": 55.0,
"train_resolution": 512,
"height_resolution": null,
"batch_size": 1,
"clip_skip": 2,
"test_seed": 23,
"mixed_precision": "fp16",
"save_precision": "fp16",
"lyco": false,
"network_args": null,
"num_epochs": 5,
"save_every_n_epochs": 5,
"save_n_epoch_ratio": null,
"save_last_n_epochs": null,
"max_steps": null,
"sample_sampler": null,
"sample_every_n_steps": null,
"sample_every_n_epochs": null,
"buckets": true,
"min_bucket_resolution": 320,
"max_bucket_resolution": 960,
"bucket_reso_steps": null,
"bucket_no_upscale": true,
"shuffle_captions": true,
"keep_tokens": 1,
"token_warmup_step": null,
"token_warmup_min": null,
"xformers": true,
"cache_latents": true,
"flip_aug": false,
"v2": false,
"v_parameterization": false,
"gradient_checkpointing": false,
"gradient_acc_steps": null,
"noise_offset": null,
"mem_eff_attn": false,
"min_snr_gamma": 5.0,
"lora_model_for_resume": null,
"save_state": false,
"resume": null,
"text_only": false,
"vae": null,
"log_dir": null,
"log_prefix": null,
"tokenizer_cache_dir": null,
"dataset_config": null,
"lowram": false,
"no_meta": false,
"color_aug": false,
"random_crop": false,
"use_8bit_adam": false,
"use_lion": false,
"caption_dropout_rate": null,
"caption_dropout_every_n_epochs": null,
"caption_tag_dropout_rate": null,
"prior_loss_weight": 1,
"max_grad_norm": 1,
"save_as": "safetensors",
"caption_extension": ".txt",
"max_clip_token_length": 150,
"save_last_n_epochs_state": null,
"num_workers": 1,
"persistent_workers": true,
"face_crop_aug_range": null,
"network_module": "sd_scripts.networks.lora",
"locon_dim": null,
"locon_alpha": null,
"locon": false,
"list_of_json_to_run": null



生成したLoRAの使い方

ローカル版の場合は「\webui\models\Lora」に保存、Colab版の場合はGoogle Driveにアップして使いましょう。

この記事で作成したLoRAは花札(🎴)マークから呼び出して、<LoRA:1.0>としても反映されないことがあります。

<LoRA:1.0>だけでちゃんと反映されている記事も見たので、検証が必要です。

 

ですのでLoRAを使いたい場合は、素材ファイルの名前に使ったトリガープロンプトを使用しましょう。

比重を設定したい場合は(トリガープロンプト:0.5)のように設定してみてください。

 

Google Colaboratory版の方は下記の記事でLoRAの使い方を紹介しています。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

まとめ

以上が、ローカル環境で「Stable Diffusion」で使用可能な自作LoRAを作成できる「LoRA Easy Training Scripts」の使い方でした。

拡張機能「sd-webui-train-tools」よりも高品質なLoRAを生成できるという評判なので、設定は難しいですがぜひ試してみてくださいね!

 

では、ここまで読んでいただきありがとうございました。

コメント

  1. ゆん より:

    この記事を参考にしてGoogle Colab上でLoRA Easy Training ScriptsでのLoRAの作成ができました。
    今の所この記事の通りに準備をすれば特に問題なくLoRAを作成できています。成果物はまだまだ調整が必要ですが、ご報告まで。

    • 悠 より:

      ゆんさん、コメントありがとうございます!

      手順自体は間違ってなさそうなんですが、私がやってみた感じどうしてもsd-webui-train-toolsより成果が悪いんですよね( ;∀;)

      ゆんさんはLoRAの再現度合いいかがでしょうか?私もいろいろ設定の方をいじって調整中です!

      • ゆん より:

        自分も同じ状況ですね・・・!
        まだLoRAづくり自体初心者というのも多分にあると思いますが、sd-webui-train-toolsのほうが良い結果でした。
        一度15000ステップ回してみたのですがあまり変わらずでした。
        Google Colab上でも1時間〜2時間ほどかかるのであまり手数を試せていませんが成果がありましたご報告させていただきますね。
        いつもわかりやすい記事をありがとうございます。

        • 悠 より:

          ゆんさん!上の記事ですがかなり再現性の高いLoRAを作れるようになりましたよ!

          詳しい修正点なんかも載せているので、ぜひ参考にしてください。
          sd-webui-train-toolsに個人的には並びました!

          • ゆん より:

            悠さん、追加情報ありがとうございます!さっそく修正点を参考にしてLoRAを作成すると目に見えてクオリティがあがりました!
            epochsが多すぎでも良くないようですね。
            それ以外にも、Dataset Tag Editorで抽出したタグからそのキャラクターを特徴づけるタグ(black hairやblue eys等)を削除してその他(1girlやsmileのような汎用的なもの)を残すというのを試してみると様々なシチュエーションや構図に対応できるようになりました。
            まだまだ精度をあげられそうです^^他にもいろいろな設定で試してみますね。

  2. トオリスガリ より:

    >なお、PyTorchとcudaのバージョンを更新してしまうと、1660Tiでは「ModuleNotFoundError: No module named ‘xformers’」もしくは「RuntimeError: CUDA error: no kernel image is available for execution on the device」が表示されてしまいます。

    これに関してですが、直接LoRA_Easy_Training_Scriptsのvenvフォルダ↓
    (省略)LoRA_Easy_Training_Scripts\sd_scripts\venv\Lib\site-packages
    にxformersのフォルダをコピペしてみてはいかがでしょうか?

    自分の環境でも似たような問題が起きていて模索していたところ、
    python.exeがあるパスにあるxformersの最新版(0018だったはず)をそのままコピペしてきたら上手く行きました。
    pipでxformersを落としてきても自分の環境ではpython.exeがあるパスにしか情報更新が降りてきていなかったようなので
    そこからコピペしたという流れになります。

    • 悠 より:

      コメントありがとうございます!!

      教えていただいた情報をもとに奮闘していたんですが、「~\LoRA_Easy_Training_Scripts\sd_scripts\venv\Lib\site-packages」のディレクトリで「python -m xformers.info」を打ち込むと正常にxformersが機能していることを確認できました。(詳しくは記事内に追記しています)

      あれ?なんか教えていただいた「~\LoRA_Easy_Training_Scripts\sd_scripts\venv\Lib\site-packages」の中にすでにxformersのフォルダがあるぞ…?ということが気づきにつながりましたw

      単純に私が「python -m xformers.info」を使うディレクトリを間違えていたことが原因のようです。トオリスガリさんのコメントがなければ気づけませんでした!本っ当にありがとうございました!

      • トオリスガリ より:

        解決したようでなによりです。

        参考までに、
        cudaとpytorchに関しても最新にするとstablediffusionの動作が早くなるみたいなので
        更新してみるといいかもです。
        で、おそらく更新すると今度はxformersが対応していない旨のエラーが出ると思うので
        その際はまたこの「LoRA_Easy_Training_Scripts」内venvのxformersを最新(0018)にすると
        現状の最新環境でもしっかりとLoRA_Easy_Training_Scriptsが動作するようになりましたよ!

  3. よく転ぶゲーム好き より:

    ここを読んで始めた者ですが素材画像は背景など写りこんでても大丈夫なのでしょうか?
    白背景がいいとか特に指定はないのでしょうか?
    助言いただけると助かります。

    • 悠 より:

      コメントありがとうございます!

      現時点では私も完璧なLoRAの作り方を理解出来ている訳では無いので、あくまで参考程度にお願いします。

      例えば背景に太陽が写っている画像ばかり使うと、できあがったLoRAもそれに引き摺られて特に指定せずとも太陽を出力するようになると思います。

      なのでキャラのみを学習させたい場合は白背景の方がいいような気がします。
      もしくは様々な背景が写った画像を使うことで、学習の偏りを無くせるのではないかとも思います。
      ちなみに白背景はいいですが、背景の「透過」は学習に悪影響を与えるそうです

      ただ素材画像のタグから「覚えさせたい要素」だけを「削除する」ことで、LoRAの育成は上手くいくようになるという記事を2つほど見ました。
      なので背景が含まれている画像でも、キャラの外見的特徴のタグだけを削除すれば、上手く学習できるのではないかと考えています(私の試行回数が少ないため要検証です。)

      • よく転ぶゲーム好き より:

        ありがとうございます。
        不要なタグを削り、足らずや誤認を訂正すれば、切り抜きせずとも背景の学習になるかも?ってかんじなんですね。
        そう考えると、キャラ無しの背景だけの画像も学習項目に入れたほうが再現度が上がるのかなと思いました。
        色々と学習させて試したいと思います。

        起動が不安定でよくエラー吐くので、記事読み直して直していこうと思います。

  4. 匿名 より:

    installer.pyをダブルクリックしても黒い画面が一瞬表示されるだけでインストールができません。
    ローカル版のStable Diffusion WebUIは導入済みなのでpythonもGitも問題ない筈なのですが・・・

  5. サザエ より:

    いつも参考になる記事ありがとうございます!
    どうしてもLORA作成やりたくてこちらの記事を参考にさせていただいていたのですが

    「LoRA Easy Training Script」フォルダの中にあるrun_popup.batをダブルクリックします。
    こちらをクリックするとこのようなエラーがでるのですが解決策わかりますでしょうか?

    updating LyCORIS if needed…

    [notice] A new release of pip available: 22.2.1 -> 23.1.2
    [notice] To update, run: python.exe -m pip install –upgrade pip
    Traceback (most recent call last):
    File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\main.py”, line 11, in
    from Parser import Parser, ensure_path
    File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\Parser.py”, line 5, in
    import sd_scripts.library.train_util as util
    File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\sd_scripts\library\train_util.py”, line 21, in
    from accelerate import Accelerator
    ModuleNotFoundError: No module named ‘accelerate’
    続行するには何かキーを押してください . . .

    • 悠 より:

      コメントありがとうございます!

      前半のパスは環境によって変わると思うんですが、
      E:\LoRA_Easy_Training_scripts\LoRA_Easy_Training_Scripts\sd_scripts\venv\Scripts

      にcdコマンドで移動して
      python.exe -m pip install –upgrade pip
      を実行するとどうなりますでしょうか?

      upgradeの前のハイフンは2つですのでそのままコピペしないようにお願いいたします!

      • サザエ より:

        返信ありがとうございます!

        こちらの実行は成功したのですがやはりrun_pop.batを起動すると

        [notice] A new release of pip available: 22.2.1 -> 23.1.2
        [notice] To update, run: python.exe -m pip install –upgrade pip
        Traceback (most recent call last):
        File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\main.py”, line 11, in
        from Parser import Parser, ensure_path
        File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\Parser.py”, line 5, in
        import sd_scripts.library.train_util as util
        File “C:\stable\stable-diffusion-webui\lora\LoRA_Easy_Training_Scripts\sd_scripts\library\train_util.py”, line 21, in
        from accelerate import Accelerator
        ModuleNotFoundError: No module named ‘accelerate’
        続行するには何かキーを押してください . . .

        同じerrorになってしまいますね

        • 悠 より:

          同じ階層でpip install accelerateを実行するとどうなりますでしょうか?

          • サザエ より:

            こちら実行しましたら

            import toml
            ModuleNotFoundError: No module named ‘toml’
            続行するには何かキーを押してください . . .

            このようなエラーになりました><

  6. つべ より:

    popup.bat実行して最初は順番通り進んでいたのですがオプティマイザー選択した後、「Do you want to do block weight」というこのページにはどこにも書かれていないメッセージが出てきて詰みました。このページは情報古いですか?

    • 悠 より:

      メッセージ的に、このスクリプトで階層LoRAを使えるようになったんですかね~?
      確かに私が試した時は表示されませんでしたね!
      そこで設定したものは後からでも変更できるので、とりあえずどちらかを選んで先に進めていけばいいと思いますよ!

      • つべ より:

        返信ありがとうございます。ひとまず「いいえ」を選択で進めて、LoRA生成できました。
        「はい」は試していませんが、一旦は「いいえ」が無難なのかもしれません。

  7. けろたん より:

    先月前ほどから、このページを参考に導入させていただきました。ありがとうございます。
    その時ぐらいの installer.py (installers v5かな?) は、
    コードの内容的に、pyTorch 2.0.0 と 最新の xFormers に対応してなかったみたいです。
    今Gitに出ている installers v6 の installer.py を使用して、再インストールすれば、
    pyTorchとXFormersの最新を使えるはずですので、ご参考になれば幸いです。

    このページを見て参考にされる方も多いと思うので、コメントさせていただきました。

  8. くく より:

    質問失礼します。
    Dataset Tag Editorを導入しようとしたのですが、AssertionError: extension access disabled because of command line flagsというエラーが出てきてインストールできません。私はLoRA Easy Training ScriptsをGoogle Colabで導入できないためsd-webui-train-toolsを使っています。そこで多量の学習元画像の大変なタグ編集を効率よくしたいのですが、もしかして古いコミットでは導入できないのでしょうか。lora学習初心者でほとんど知識がないのでご教授頂きたいです。

    • 悠 より:

      コメントありがとうございます!

      colab版で導入する場合は、下記の記事のようにセルにコードを追記する必要があります!
      https://yuuyuublog.org/dataset_tag_editor/

      Extensionsのタブでurlを入力されたりはしていませんでしょうか?

      • くく より:

        はい!この記事に書かれていた通りにURLからのインストールを試したところ、assertionerrorが出てしまいました。コラボ版は別の方法があったのですね!