LoRAの作り方覚え書き。
LoRA作成ツールはいくつかある。
もくじ
kohya_ss
LoRAを使った学習のやり方まとめ!好きな絵柄・キャラクターのイラストを生成しよう【Stable Diffusion】 | くろくまそふと
StableなLoRA学習環境がローカルマシンでもできるKohya’s GUIの設定方法 | 徒労日記
上記記事参考。
LoRA作成ツールの中ではこれが有名な模様。
こちらはPowerShellから手動で色々入れて環境構築する必要がある。
途中に出たエラーに躓いたが、もう一度最初からインストールしたらうまくいった。
- PowerShellを、管理者権限で起動する。
- Set-ExecutionPolicy Unrestricted
- y を実行。
- スクリプトの実行制限を緩和して、色々できるようにする。
- リスクもあるので理解した上で実行すること。
- git clone https://github.com/bmaltais/kohya_ss.git
- kohya_ssをダウンロードする。
- cd kohya_ss
- 落としたkohya_ssに移動する。
- python -m venv 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\
- bitsandbytes_windows内の.dllファイルをコピー。
- cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
- cextension.pyをコピー。
- cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
- main.pyをコピー。
- accelerate config
- 質問が始まるので、下記のように設定をする。
- This machine
- No distributed training
- NO
- NO
- NO
- all
- fp16 (数字キーの「1」を押して選択。矢印キーを押すとエラーになるので注意)
- kohya_ss/activate.ps1をクリックし、実行する。
- すぐ開いて閉じてしまってうまくいかない場合は、activate.batで一度アップグレードする。
- うまくいったらURLが出るので、それをブラウザで開く。
- (画面のURLをCtrl + クリックしても開ける)
- WebUIのような画面が出る。
学習を実行する
- Dream Booth LoRAタブ → folderタブで、学習用画像データのフォルダの上のフォルダを指定する。
- 起動時は毎回「Dream Booth」タブなので注意。
- 同じくfolder内で、正規化画像フォルダを指定する。
- (無いなら空フォルダ指定でもいい)
- 同じくfolder内で、学習に使用するモデルデータを指定する。
- その他設定をして学習を実行する。
- エラーが出て止まったらそのログをよく確認し、「〇〇 Error ~」となっている部分をコピーして調べてみること。
エラー
RuntimeError: "slow_conv2d_cpu" not implemented for 'Half'
GPUを認識していないとからしいが、結局解決できなかった。
kohya_ssをもう一度最初からインストールしたらうまくいった。
sd-webui-train-tools
【Stable Diffusion】超簡単にLoRAを自作できる拡張機能「sd-webui-train-tools」の使い方! | 悠々ログ
上記記事参考。
Stable Diffusion WebUI内で使用できるRoLA学習ができる拡張機能。
学習はできたが、結果意味のないノイズしか生成できず失敗。
インストール
sd-webui-train-toolsをインストールする。
- WebUIを起動する。
- Extensions → Install from URLで、下記リンクを読み込む。
- WebUIを再起動する。
教師用の画像データを準備する
作りたい対象が、単体で、様々なポーズ・アングルで映っている画像を大量に集める。
枚数が少ないと画一的な結果しか得られないので、20枚以上あると良い模様。
- 学習させたい被写体が単体で映っている。
- 画像ごとに被写体が色々なポーズをとっている。
- 画像ごとに色々な背景が映っている。
タグ編集に特化した拡張機能Dataset Tag Editorで、キャプションをつける
一括編集ができて便利。
キャプションでは、覚えさせたい要素のタグをあえて削除することで、その要素が最初からLoRA内に含まれるように学習される。
【Stable Diffusion】「LoRA Easy Training Scripts」を使って自分だけのLoRAを作る方法を紹介! | 悠々ログ
プロジェクト作成・教師用画像データの読み込み
- タブに「学習」の項目が追加されているので、そこに移動する。
- New projectをクリックし、好きな名前をつける。
- この名前がLoRAのファイル名になる。
- 教師用画像データを全て読み込む。
- Use deepbooru for captionsをオンにする。
- 画像をプロンプトとして解析したtxtファイルが追加される。
- 既に他の方法で作ってあるなら不要。
- Create flipped copiesはオフにする。
- オンだと反転画像が作成される。
- Update Datasetを実行する。
- 下記の場所に、元画像が学習用に変換された画像ファイルと、deepbooruで作られたテキストファイルができる。
- WebUI直下\outputs\train_tools\projects\<設定した名前>\versions\v1\dataset\processed\4_<設定した名前>
- テキストファイルには画像をプロンプト化したものがある。より完成度を求めるなら1つ1つ画像にあった正しい内容に修正する(そのままでも結構しっかり付けてくれる。初心者はこだわらなくてよい?)。
LoRAの学習を実行する
教師画像126枚・20エポックで、学習には4時間程度はかかる。
(画像枚数やエポック数によって必要時間は変わる)
- Train base modelに、学習に使うモデルデータを設定する。
- 学習させたい属性に合わせて決めるとよい。
- アニメ系ならアニメ系のモデル(Anything v3)など。
- これといったものはないので適宜決める。
- Save every n epochsは、何エポック毎に途中経過のLoRAを保存するかを設定する。
- 5程度でよい。
- 途中で失敗したり過学習になった場合の保険になる。
- Number of epochsに、エポック数を設定する。
- 基本は20でよい。
- 学習回数 = 品質ではないので、これが多ければいいというわけではないため注意。
- Begin Trainを実行し、学習を開始する。
- 作ったLoRAファイルは、下記の場所に保存される。
- WebUI直下\outputs\train_tools\projects\<設定した名前>\versions\v1\trains\<各種設定を書いた名前>
エラー
生成したLoRAを使ったときに NansException というエラーが出て生成できない
NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.
解決法
WebUIの下記設定を有効にする。
- Settings > Stable Diffusion > Enable option "Upcast cross attention layer to float32"
または、webui-user.bat内に、--no-half-vae --skip-torch-cuda-test --no-half を追加する(--skip-torch-cuda-testはいらないか?)。
(自分はこれでエラーが直った)
- set COMMANDLINE_ARGS= --no-half-vae --skip-torch-cuda-test --no-half