画像生成AI

【Stable Diffusion】Kohya’s GUIでLoRa追加学習が簡単に!実践レポートで詳しく解説

前回、画像生成AIのStable Diffusionにローカル環境で追加学習ができる【Dream Booth】に関する紹介記事をお届けしましたが、今回は、もう一つの学習方法である【LoRa】という手法を実現できるツール『Kohya’s GUI』というものを使って学習をさせてみたので、そのレポートをお届けします!

DreamBoothの実行にはVRAMが24GB以上必要!ということを前回のDreamBoothの記事でご紹介しましたが、今回ご紹介するLoRaという手法では、8GBのVRAMが最低あればよいとのことで、少し実施のハードルが下がっているのと、使い勝手が良いので、私としてもとてもおすすめ!な感じです!

なお、こちらの記事と実践内容は、以下の徒労日記様の記事を参考にさせていただいています!

■徒労日記様
StableなLoRA学習環境がローカルマシンでもできるKohya’s GUIの設定方法
https://dolls.tokyo/about-kohyas_gui-setup/

この記事の想定読者様
Stable Diffusionをローカル使っていて、自分で追加学習したいと考えている人
これから画像生成AIや追加学習をやってみたいと興味がある人

LoRaとは?

LoRA(Low-Rank Adaptationの略)は、モデルのカスタマイズ手法の一つで、普段利用しているモデルをベースに簡単にアレンジを加えたい場合に適しているデータを作成可能。

LoRAとDreamBoothの違い

①DreamBoothは学習の実施にすごいVRAMが必要(12GB~)ですが、LoRaなら最低8GB程度あれば可能とのことで、軽いイメージ。

②学習済みのデータは、DreamBoothだと、参考にしたモデルに学習内容を追加したもう一つのモデルが出来上がる→ファイル数が巨大。対してLoRaは、学習済みのデータだけが生成されて、数百MB程度と軽い。

③②のとおり、DreamBoothは学習済みのモデルデータが作成されるので1かたまりになってしまうけど、LoRaは既存のモデルに追加トッピングのように読み込んで使うことが可能なので、使い勝手が良い。

今回の成果物!

LoRaは上記の通り、いろんなモデルの上に、個別学習させたデータをトッピングのように追加で反映することが可能です(具体的には、学習済みのデータを自分のローカル環境のStable Diffusion内、『LoRa』フォルダに格納したうえで、学習済みデータを反映させるためのプロンプトを指定する)

そのため、母体のモデルを変えれば、作風の異なる追加学習データが反映されたイラストを生成可能になるということで、手の破綻などはご愛嬌…ということでモデルを変えたりして、今回私が学習させたエルティアナのデータを反映させて生成したイラスト5枚を例として掲載します!

Kohya’s GUIを使ったLoRa学習と画像生成の手順

さて、ここから長くなりますが、キャプチャ付きで出来るだけ詳しく解説しますので、ぜひご参考にしていただき、LoRa学習をやってみてください!

■前提条件

①『Stable Diffusion web UI』をローカル環境で利用できる
② VisualStudioの再配布パッケージがローカル環境にインストールできている

https://aka.ms/vs/17/release/vc_redist.x64.exe

【Kohya’s GUI】のインストール

1.Kohya-ssをインストールする作業場所を作成する

PC上の任意の場所に【Kohya-ss】をインストールするための作業場所(フォルダ)を作成
→Cドライブ上が望ましいと思うので、特にこだわりが無ければ以下をお勧めします!
C:/sd/kohya

2.実行ポリシーを変更

①Winキー+Xを押してPowerShell(管理者)を開く
②1.で作成したKohya-ssをインストールするフォルダに移動して、実行ポリシーを変更する→具体的にはPowerShellで以下を実行

1. cd C:\sd\kohya
2. Set-ExecutionPolicy Unrestricted
※実行ポリシーの変更を実施するか問われたら【Y】を入力してエンターキーで実行

③以下のテキストをまるまるコピーしてPowerShellで実行

※警告が出たときは、ペーストして実行ボタンを押す→するとなにやら勝手に始まります…

git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss

python -m venv venv
.\venv\Scripts\activate

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 –extra-index-url https://download.pytorch.org/whl/cu116
pip install –use-pep517 –upgrade -r requirements.txt
pip install -U -I –no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl

cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py

accelerate config

④処理が落ち着くと、『accelerate config』という所で止まるので、以下続けます
④手順

1.エンターキー押す(以下、いくつか質問が出てきます)
2.エンターキーを押す(This machineを選択)
3.エンターキーを押す(No distributed trainingを選択)
4.「no」と入力してエンターを押す
5.「no」と入力してエンターを押す
6.「no」と入力してエンターを押す
7.「all」と入力してエンターを押す
8.「1」を押して【fp16】の左に*が移動したのを確認してエンターを押す
※まちがえて【↓】などを押すとエラーで④の初めからやり直し

3. (任意) CUDNN 8.6のインストール

RTX3000番台以降のGPUを使用する場合、学習を加速させることができます。

①以下のURLからデータをダウンロード(MegaLink)

②Zipファイルを解凍し、出てきたcudnn_windowsフォルダをKohyaインストールフォルダの直下にコピー
→その後、インストール用スクリプトを実行。
2.の流れのまま、PowerShellで以下を実行
python .\tools\cudann_1.8_install.py

【Kohya’s GUI】での学習手順

①設定済み環境ファイルをダウンロード(下準備)

LoRaの学習にはパラメータ設定というのが必要なようで(?)非常に多くのパラメータ設定をしなければならないようなのですが、公開されているテンプレートがあるようで、それを使えばいいようです。

上記のいずれかを、任意のフォルダにダウンロードしておきます。
※私はKohya’s GUIをインストールしたフォルダ直下にしました。
C:/sd/kohya/kohya_ss/

②学習させる画像を用意する

学習させる画像サイズは特に固定の指定はないみたいですが、512px*512pxで作成
→同一キャラなどの様々なポーズや背景の違う画像を複数枚用意。30枚程度としているブログ様もいますが、取り急ぎ8枚でやりました。
→画像ファイル名は特に指定なし。※私の場合【01.png】【02.png】…とか

③学習させる画像をKohya’s GUIの仕様(?)に即したフォルダに格納

詳しいことはあまりわかりませんが、 Kohya’s GUIをインストールしたフォルダ内に
【images】というフォルダを作成して、その中に【xxx_yyy】というフォルダを作り、
学習させるデータを格納※以下画像参照

④学習用の画像にキャプションをつける

1.gui.batをダブルクリックでKohya’s GUIを起動

※起動後にコマンドプロンプト内に表示されるURLで、Stable Diffusion Web UIと同様にブラウザで使えるUIが起動します。Stable Diffusion単体とも独立していて便利!

2.Utilitiesタブをクリック
3.BLIP Captioningタブをクリック
4.各種設定をする
5.Caption Imagesボタンを押す
6.完了したら、画像フォルダにキャプションテキストデータが作成されています

⑤いよいよ学習をさせる

1. 『DreamBooth LoRA』タブを開き『Configuration Files』をクリック。
[Open]ボタンを押して【Kohya’s GUI】での学習手順-①でダウンロードした環境設定ファイルを開きます。これで細かい設定は全部入ってくれます。
2.『Source Model』タブをクリック。『Pretrained model name or path』
横にあるファイルボタンを押し、希望の既存モデル(自分がよく使うモデル(?))を選ぶ。選んだモデルがStableDiffusion v2をベースにしたモデルなら【V2】にチェック。768pxベースなら【v_parameterization】にチェック

※私はよくわからなかったのでチェックしませんでした…

3.『Folders』タブをクリックして、以下の項目を埋める。
4.『Train model』ボタンを押す

→学習が開始され、エラーがなければ数十分で学習が完了します。

5.学習が完了したら、Stable DiffusionのLoRaフォルダに学習済みのデータが保存されています。

学習データを【Stable Diffusion Web UI】で使ってみる

①Stable Diffusion Web UIに拡張機能をインストールする

1.Stable Diffusion Web UIを立ち上げ、Extensionsタブをクリック
2.Availableタブの【Load from:】ボタンをクリック
3.一覧からKohya-ss Additional Networksmodelsのインストールボタンを押してインストール

4.Installedタブの【Apply and restart UI】をクリックしてアプリ再起動

5.再起動後【Additional Networks】のタブが追加されていればインストール完了

②プロンプトにLoRa学習済みデータを反映する

1.Generateボタンの下にある花札のようなアイコンをクリック

2.Loraタブをクリック
3.学習済みのデータが正しくフォルダに格納されていれば、下図のように作成したLoRaが表示されているので、プロンプト欄をクリック(有効に)してからクリック
4.クリックすると、プロンプト欄に <lora:eruthiana:1>のように入力されれば、作業完了。あとは普段通り、Generateボタンを押して画像を生成します

右側に【:1】となっているのが影響させる数値なのですが、1のままだと効きすぎる(学習させた内容のまんまで全然理想的なイラストが出ない…ということがよくあるので、その場合は数値を下げて【:0.5】とか【:0.3】とかにして試してみてください

また、Loraボタンを押して追加されるタグだけでなく、上記のように設定した固有名詞を追加することで、影響を強めたり(?)もできるようですので、こちらも調整で使ってみてください

まとめ

Kohya’s GUIを使えば、比較的簡単にLoRa学習が行える
LoRaなら、学習済みデータを様々なモデルに追加適用できる
学習させるために必要なVRAMは8GB~と比較的低スペックで実施可能

長らく大変お疲れさまでした!以上がKohya’s GUIをインストールして、モデル学習実施と、学習データを利用した画像生成手順でした。

とにかく、学習済みデータが軽いのと、トッピングのように各モデルに適用できるので、手順としてはDream Boothより大変なのですが、一度覚えてしまうとLoRa手放せない学習方法と思います!