LoRA学習における概要~環境構築までの紹介です。
- 概要
- 環境構築
- 教師画像の準備
- 学習実施
LoRAってなんなのさ 
Microsoftが開発したAIの追加学習方式(Low-Rank Adaptation of Large Language Models)のこと。stable diffusionユーザーの間では追加学習したデータ方式として知られている。
ざっくり言うと、
モデルの他に追加の学習データを自分で作り、画像生成に利用できる夢の仕組み。
例えるならゲームのDLCみたいなもの。
作ったLoRAのファイルは比較的軽量なので、配布したり、他の人が配布しているLoRAを自分の画像生成に利用することもできます。
例えば「このモデルすごくキレイなイラスト出せるけど、あのポーズやあの絵柄は出せないんだよな…」みたいな悩みを解決できます。
導入はStable Diffusion web UIよりちょっとだけ難しいかもしれないが、よーく読めば誰でもできるはず。レッツチャレンジ。
配布されてるLoRAを使うだけならもっと簡単です。
誘導→学習が終わったLoRAの使用方法
もっと詳しく言うと、
この辺を読むといいかも。
https://arxiv.org/abs/2106.09685
https://github.com/microsoft/LoRA
英語版解説
https://rentry.org/lora_train
LoRAの特徴 
LoRAのメリット・デメリット 
メリット
- DBと比べて、低VRAMでも学習できる。
VRAM 8GB以下でも普通に学習できる。 - DBと比べて、学習結果のデータ容量が小さい。
比較的公開するのに向いている。 - 正則化(ランダム3文字のトークンなど)といった手間や知識が不要。
デメリット
- 一度に1つのキャラ・ポーズ・小物しかうまく出せない。
- 2つ以上のキャラを同時出すと絵全体が崩壊しやすい・似てない。
- 2つ以上のLoRAの同時使用も然り
- 2人以上のキャラを1つのLoRAに同時学習させるのも可能だが、その時は各キャラのリピート数×教師画像数を揃えなければならない。揃わないとどちらのキャラが過学習・学習不足になったりする。
- 2つ以上のLoRAをマージすることは仕組み上は可能だが、たとえば1つの作品の2人のキャラの2つLoRAを「コレクションパック」にすることは今のところ無理。
メリットが大きく上回るので、気にせず使ってみよう!
技術的にくわしく! 
各学習方法が拡散モデルにどう寄与するかの図。
出典:https://www.reddit.com/r/StableDiffusion/comments/10cgxrx/wellresearched_comparison_of_training_techniques/
- Dream Booth
新しいコンセプトを理解できるまで、拡散モデル自体を微調整する。
モデルを直接学習対象に含めるため、再現性という点では最も優れる。
しかし、ストレージは非効率(新しいモデルを扱う必要がある) - Textual Inversion
新しい概念を理解するための特別な単語を作成する。
出力は小さな埋め込み - LoRA
拡散モデルにわずかな重みを追加し、変更されたモデルが概念を理解するまでそれらを訓練する
拡散モデルではなく、それに対する重みを学習する。 - Hyper Network
二次的なネットワークを使って、元のネットワークの新しい重みを予測する。
LoRAの特徴として短い所要時間とDreamBoothほどの時間が不要。
DBより再現性は一歩劣るものの、データ容量&VRAM消費というメリットが上回る。
特に2023年時点の市場ニーズにマッチしていて、導入しやすい。
主流GPUのVRAM量(約6~12GBが主流)や回線速度の事情(学習モデル配布における)。
前提条件 
スペック要件 
LoRAで学習する場合
(補足)すでにStable Diffusion web UIを導入済みなら、ほぼ要件を満たしているはずです。
- wikiの記載内容は項目編集時のものであり、アップデートによって方法が変わる可能性が非常に大きいことに留意してください
他の方のLoRAを使う場合
- Stable Diffusion web UIが使えれば、準備OKです。
使い方はこちら→学習ファイルの使い方
NVIDIA GTX16xx系のグラボ人向け 
※GTX16xxではfp16での学習がうまく動作しないため注意が必要です
参考→LoRA/学習方法#d49585eaを参照
導入手順 
kohya-ss氏のsd-scriptsを任意のフォルダにインストールし、環境を構築します。
配布ページ:https://github.com/kohya-ss/sd-scripts
インストール手段は色々あります。
下記を参照してください。
■余談
LoRA学習はkohya-ss氏のsd-scriptsがおそらく最も利用者人口が多いのですが、Stable Diffusion web UIでもLoRAの学習は可能です。拡張機能sd_dreambooth_extensionを使用します。
sd-scipts公式のインストール方法 
この方法が一番確実です。
「Windows環境でのインストール」を参照してください。
公式の日本語readme
「sd-scripts」の親フォルダを作成
フォルダ作成例
Cドライブ
└ AI_illust
├ stable diffusion
└ LoRA_train ←名称は任意。ここを作業フォルダとする。
├sd-scripts ←このフォルダが作成される予定。
└(ここはLoRA関係のデータ保存スペースとする)
- 場所はどこでも良い。
- パス名に日本語を含まないこと。
sd-scriptsのインストール実行
- 上記の作業フォルダで(Shift +)右クリック
「Powershell ウィンドウをここで開く」または「ターミナルで開く」等を選択*2
- Readmeを参考に、コマンドを1行ずつ順に実行していく。
公式の日本語readme
※コマンドは1行づつ丸コピーで実行しよう 下手に手入力やアレンジするとインストールがうまくいかない可能性が高まる。
【参考】コマンド解説
PowerShell版を元に説明します。
No. | コマンド(参考) | 効果 |
1 | git clone https://github.com/kohya-ss/sd-scripts.git | 今開いているフォルダに、GitHubからsd-scriptsコードをダウンロード |
2 | cd sd-scripts | sd-scriptsフォルダへ移動し、作業フォルダとする。 |
3 | python -m venv venv | 作業フォルダ内に名称「venv」の仮想環境を作成する |
4 | .\venv\Scripts\activate | venv仮想環境を有効化する |
5 | pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116 | venv環境へtorch,torchvisionをインストール |
6 | pip install --upgrade -r requirements.txt | 「requirements.txt」に記載のライブラリをインストール |
7 | 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 | xformers ver.0.0.14をインストール。依存環境を含まず単独で導入する |
8 | cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\ | bitsandbytesを作業フォルダからvenvフォルダ内へコピー(インストール) |
9 | cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py | 同様にcextension.pyをコピー。 |
10 | cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py | 同様にmain.pyをコピー。 |
11 | accelerate config | (画面表示とreadmeに従い)accelerateを手動で設定する。設定内容はreadme参照。 |
accelerate config解説
初回のコンフィグ設定が始まるので、次のように答えていく。
In which compute enviroment are you runnning?
Please select achoice using the arrow or number keys, and selecting with enter
* 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
ここまでは一番上の選択肢をそのまま選ぶのでエンターを押すだけでいい。
Do you want to run your training on CPU only (even if a GPU is available)? [yes/NO]:NO
Do you wish to optimize your script with torch dynamo? [yes/NO]:NO
Dou 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
これらの質問には、それぞれ該当する答えを入力してエンターを押す。つまり、順番に「NO」「NO」「NO」「all」で答える。
Dou you wish to use FP16 or BF16 (mixed precision)?
Please select a choice using the arrow or number keys, and selecting with enter
no
*fp16
bf16
注意:ここで選択する際に、矢印キーで選択しようとするとプログラムが落ちる不具合があるので、数字キーで選択する。それぞれ0,1,2が該当するので、1を押せば「fp16」にカーソルが合うのでエンター。「fp166」みたいに表示されてるかもしれないが気にしない。
}}
インストールがうまくいかないときは
①前提条件を満たしているか今一度確認する
②一度sd-scriptsフォルダごと全削除して最初から再度やりなおす
③それでもダメならこちらの手順とほぼ同じだが 下記リンクの公式の手順を試してみる
https://github.com/kohya-ss/sd-scripts/blob/main/README-ja.md →Windows環境でのインストール
[Tips]楽したいなら下記でもOK
手順1:上記Readmeのコマンドプロンプト版をtxtファイルにコピペ
手順2:拡張子をbatに変更。
手順3:batファイルを実行。
※ちなみに、後述のとしあきbatはこれとほぼ同じ。
としあきbat(超初心者向けLoRA導入セット)を利用する場合 
※直リンク対策のため、一時的に公開を停止しています。(2023/05/05)
お求めの方はスレまでご相談ください。
ファイルの再配布は自由とのことなので、誰かしらアップしてくれるかも…しれない
f73639.zipをDLして解凍する fu2248601
同梱の「りーどみー.txt」をよく読む
25 無念 Name としあき 23/03/25(土)19:46:41 ID:xnEfCY0I No.1080097531 del そうだねx35
たておつkemono
f73639.zip
超初心者向けLoRA導入セット更新しました
・Lycoris対応(インストールバッチ、更新バッチ)
・locon,loha用実行バッチ追加
・LoRA_Easy_Training_Scripts用は削除しました
・以前に導入済みの人は超初心者以外の方.txtを読んで下さい
あと再配布はご自由にどうぞ
今まで通りこのスレ内でしかサポートは出来ないけど
インストール手順
まず f73639.zip をダウンロードし、学習環境を構築したい場所に解凍します。
※直リンク対策のため、一時的に公開を停止しています。(2023/05/05)
りーどみーに従って親フォルダのフォルダ名に日本語やスペースを含まないフォルダに解凍します
Stable Diffusion web UIが設置してあるフォルダとは無関係です
できるだけ空き容量に余裕があるドライブが良いでしょう
説明を再開します。今お手元のフォルダは
このようになっているものと思います。
さっそく画像で赤枠に囲まれたバッチファイルを実行して Sd-Scripts をインストールしていきましょう。
キー入力を待つ画面に移るのでキーボードのキーを何でもいいのでひとつ押します。
粛々とインストールの処理が始まりました。
回線状況にもよりますが、おおよそ5~10分ほどの時間ファイルのダウンロードとインストールが行われます。
そしてそれが終了するとコンフィグ設定の画面へと遷移します。
画像の中でも注意喚起されていますが次のように設定を進めていって下さい。
まずはThis machineに*(アスタリスク)を付けた状態でエンターです。最初から付いているのでそのままエンターで構いません。
No distributed traningでエンター。選択して次の設定に進みます。
Do you want to run your traning on CPU only?(トレーニングにはCPUのみを使うか?)と聞かれますので
NOとキーボードで打ち込みます。
そしてエンター。
これもキーボードで直接NOと打ち込みます。そしてエンターキー。
これにもNO。そしてエンター。
トレーニングに使うGPUをIDごとに指定せよ(意訳)と聞かれるのでこれにはallと打ち込んでエンター。
次の画像に移る前に最大級の注意喚起をしておきます。
1を押して下さい。
とにかく絶対にカーソルキーを押さないように!!!いいですね!!!!!!!!!!!!
1を押せ!!!
1を押すのに成功すれば下のようなバグのような表示になりますがこれが成功の形です。
もう大丈夫です。エンターを押して下さい。ただし決してカーソルキーに触れないように。
そして初期設定のコンフィグが完了し、キー待ちの状態となるので何かひとつキーを押して下さい。
もうカーソルキーに触れても大丈夫です。
※操作を間違った場合は再度"install_sd_scripts.bat"を実行してやり直せば問題ありません
フォルダの中に sd-scripts が加わり学習環境が整いました。
derrian-distro氏製のinstallers v5を利用する場合 
- 下記URLを開く
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts/releases/tag/installers-v5 - ここから「install_sd_scripts_~.bat」ファイルをダウンロード
- インストールしたいフォルダに入れる。
・Stable Diffusion web UIとは独立したプログラムなので、同じフォルダである必要はない
・迷ったら、「C:\stable diffusion\webui\models\Lora」
※ドライブレターは各々の環境によって変えること。Loraフォルダは自作する。 - 「install_sd_scripts_~.bat」を実行する。
すると、必要なデータが自動でダウンロードされる。 - 正しく導入できれば
「LoRA_Easy_Training_Scripts」フォルダに「run_popup.bat」ができるので、これを使うことになります。
derrian-distro氏製のLoRA Easy Training Scripts(GUI版)を利用する場合 
下記URL記載の通りにインストールを実施する
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts#installation
使用方法や設定保存がjson→tomlと以前の物から変わっており
互換性が無くなっています
以前から使っていた人はアップデートではなく新規インストールをおススメします
インストール、使い方については下記も参考に
LoRA_Easy_Training_Scripts(2023-05-22以降のGUI版)の使い方
kohya_ss GUIを利用する場合 
Stable Diffusion web UIで入出力ディレクトリや学習パラメータを設定し、学習コマンドの生成&実行ができるツール。
機械学習のWebAPIに特化した「Gradio」というライブラリを利用して開発されている。
フォルダや学習パラメータのプリセットを保存/読込する機能が便利。
導入方法 (2023/04/24更新)
引用: https://github.com/bmaltais/kohya_ss
GUI開発者Bernard Maltais氏のチュートリアル動画: リンク
- インストール
※更新によって導入方法が変わる可能性があるので、実行する前に上記のリンクのreadme.mdを見て最新の手順を確認しよう。
インストールしたいフォルダでコマンドプロンプトを開いて以下のコマンドを実行。
最初に導入するライブラリ(torch)のverを回答する。(分からない人は"recommanded"の方を選択する)
最後の行( accelerate config)が実行されると質問が出てくるので以下のように回答。
「This machine」「No distributed training」「NO」「NO」「NO」「all」「fp16」
※ 選択式の問は、日本語キーボードだと十字キーは使えないので数字キー(1,2,3...)で選択するgit clone https://github.com/bmaltais/kohya_ss.git
コマンドプロンプトを閉じるcd kohya_ss .\setup.bat
- GUI起動
インストールしたフォルダに「gui.bat」が出来ているので実行。
ブラウザで以下にアクセス
http://127.0.0.1:7860(デフォルトの場合)
Finetuneする時最初からUse latent filesにチェックが入っているが、用意が無ければオフにしないとファイルが見つからないと駄々をこねて動かない
公式でも別にいらないって言ってるしオフにしよう
メタデータなどはとしあき製のjson作る奴が共通で使えるので便利に使うと良い
Linux環境で動かす場合 
下記の通りです。Paperspaceで一応の動作を確認いたしました。
なお仮想環境の構築は上手く行っておらず、クラウドだからということで無理やり進めています。
LoRA @ Paperspace
##初回のみ
mkdir LoRA
git clone https://github.com/kohya-ss/sd-scripts.git LoRA/sd-scripts
git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git LoRA/LoRA_Easy_Training_Scripts
cp LoRA/LoRA_Easy_Training_Scripts/lora_train_command_line.py LoRA/sd-scripts
##
apt update -y
apt upgrade -y
cd LoRA/sd-scripts
## 確実に動かしたい人(xformersを使わない場合)
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -U -r requirements.txt
## 不安定でも高速化を目指す場合(xformersを使う場合)
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
pip install -U -r requirements.txt
pip install -U xformers==0.0.17.dev441
accelerate config
20230318版(もし動かないときは「PaperSpaceでkohya版LoRAを動かす方法」のlora_train_command_line.py絡み以外のとこを実行してからやると動くかも)
(現在LoRA_Easy_Training_Scripts/lora_train_command_line.pyがそもそも存在しない為上記の手順では動作しなかった)
LoRA @ Paperspace
##初回のみ
mkdir LoRA
git clone https://github.com/kohya-ss/sd-scripts.git LoRA/sd-scripts
git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git LoRA/LoRA_Easy_Training_Scripts
##
apt update -y
apt upgrade -y
cd LoRA/sd-scripts
python -m venv venv
source ./venv/bin/activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
## requirements.txtにtoriton居たかも
pip install -U --pre triton
## ここまでは頭に ! を付けてJupyterで実行してもいい
## 以下Terminalで実行
accelerate config
## 最初の実行前に以下Terminalで実行(Terminalを破棄して新しいTerminal起動したときはまた実行)
cd /notebooks/LoRA/sd-scripts
./venv/bin/activate
## 実行コマンドをTerminalで実行(全角で説明してる箇所は適宜書き換え。train_batch_sizeは最初1でちゃんと動いたらもっと大きい値にしてもいい)
accelerate launch --num_cpu_threads_per_process 12 train_network.py --pretrained_model_name_or_path=ベースにするモデルのパス(永続ストレージに入れたなら/storage/以下のどこかにある) --train_data_dir=/notebooks/LoRA/Training --reg_data_dir=/notebooks/LoRA/reg --output_dir=学習済みLoRAモデルの保存先DIRパス --resolution=320,960 --train_batch_size=1 --learning_rate=8e-5 --max_train_epochs=10 --save_every_n_epochs=1 --save_model_as=safetensors --clip_skip=2 --seed=36 --color_aug --network_module=networks.lora --keep_tokens=7 --enable_bucket --network_dim=64
あとは学習開始フェーズです
好きなオプションを付けましょう
accelerate launch --num_cpu_threads_per_process 12 train_network.py --pretrained_model_name_or_path=/notebooks/stable-diffusion-webui/models/Stable-diffusion/ACertainty.ckpt --train_data_dir=/notebooks/LoRA/Training --reg_data_dir=/notebooks/LoRA/reg --output_dir=/notebooks/LoRA/testLoRA --resolution=320,960 --train_batch_size=8 --learning_rate=8e-5 --max_train_epochs=10 --save_every_n_epochs=1 --save_model_as=safetensors --clip_skip=2 --seed=36 --color_aug --network_module=networks.lora --keep_tokens=7 --enable_bucket --network_dim=64
学習をモデルから再開する場合
--network_weights
学習の実行方法 
LoRA/学習方法ページへ続く。
コメント・指摘・助言 
最新の5件を表示しています。コメントページを参照
(Tips)
- 質問をするならここを見て!
- 既存コメントの先頭にあるラジオボタンをONにすると、そのコメントの下にぶら下げ返信する形になる(ツリー構造)。
- コメントの文中で↵ボタン(下の画像参照)を押すと「&br;」の文字列が挿入される。これは送信後に改行として機能するので、文章の整形に役立つ。