takashi kono's blog

コーヒーとキーボードと共に何かを記録していくブログ

AUTOMATIC1111 の SD WebUI で拡張機能を使って LoRA を作る備忘録

目的

挑戦した内容を備忘録として残す

環境

Google Colab

結果

今回はうまくいかなかった!!!

参考

economylife.net

コードを作る

# GPU 使っているか確認
!nvidia-smi
# マルチセッションでダウンロードするために利用する
!apt install aria2

Download Stable Diffusion
ただ、今回は v1.4.0 でやってみるため、tag 付きで clone する

# clone stable diffusion web ui
!git clone -b v1.4.0 https://github.com/AUTOMATIC1111/stable-diffusion-webui
# move dir
%cd /content/stable-diffusion-webui

モデルを適当にダウンロード

!aria2c \
  -d /content/stable-diffusion-webui/models/Stable-diffusion \
  -o LastpieceCore_A0621.fp16.safetensors \
  -x 2 \
https://huggingface.co/konapieces/LastpieceCore/resolve/main/models/A0621/LastpieceCore_A0621.fp16.safetensors

一応 VAE もダウンロード

!aria2c \
  -d /content/stable-diffusion-webui/models/VAE \
  -o vae-ft-mse-840000-ema-pruned.safetensors \
  -x 2 \
https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors

Train Tool 拡張機能を入れる

!git clone https://github.com/liasece/sd-webui-train-tools.git \
  /content/stable-diffusion-webui/extensions/sd-webui-train-tools

Run

!COMMANDLINE_ARGS="--share --disable-safe-unpickle --no-half-vae --xformers --enable-insecure-extension --gradio-queue" python launch.py

実行する

ランタイムの確認

ランタイム

ハードウェアアクセラレータが GPU であること
確認したら「保存」をクリックする
その後右上のボタンから接続

Connect

ひとつづつ実行していく

executed

Train Tools 付きで上がってきた

プロジェクトを作る

Train Tools を開くとこんな感じ

Opened Train Tools

とりあえず Create Project をクリック

Create Project

プロジェクト名入力用ボックスが出てくるので入力する
念のため、半角英数+アンダーバーのみ

次に Create Version をクリック
同じようにボックスが出てくるので v1 と入力する

Create Version

うまくいくとこのような画面になる

学習データセットをアップロード

こんな感じで準備した

dataset

ドラッグアンドドロップUpload Dataset の領域に送る

upload dataset

パラメータを指定する
参考ページに則ってこんな感じ

update dataset params

で、 Update Dataset をクリックして実行

Update Dataset Result

確認

outputs ディレクトリが作られる

outputs

origin にはオリジナルデータがある proceeded に何かあるかなと思ったけどなかった
大丈夫なんだろうか?

update dataset FYI

参考を見ると、ここにミクさんがいっぱいいたんだけど、私のほうにはいない
データが大きすぎるのかな?
とりあえず続きをしてみる

レーニングパラメータの設定

training paramaters

base model を選択して、あとはとりあえずデフォルト

レーニング開始

Begin train をクリック

ERROR

エラーか。むなしい
エラーログ

Train Tools: unknown base model 
*** Error completing request
*** Arguments: ('task(59tevvl27d0q9qy)', 'handmaid_snowman', 'v1', 'LastpieceCore_A0621.fp16.safetensors', 1.0, 20.0, 2.0, True, ['Lion'], '0.0001', 128.0, 64.0, 2.0, 'fp16', True, False, False, 'best quality,Amazing,finely detail,extremely detailed CG unity 8k wallpaper', 'low quality', ['Euler a'], '28', 512, 512, 1, 1, '10', '-1', '0.6,0.7,0.8,1') {}
    Traceback (most recent call last):
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 55, in f
        res = list(func(*args, **kwargs))
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 35, in f
        res = func(*args, **kwargs)
      File "/content/stable-diffusion-webui/extensions/sd-webui-train-tools/liasece_sd_webui_train_tools/train_ui.py", line 133, in on_train_begin_click
        return [None]+on_ui_preview_generate_all_preview_btn_click(id, project, version, train_name,
    UnboundLocalError: local variable 'train_name' referenced before assignment

---
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/gradio/routes.py", line 422, in run_predict
    output = await app.get_blocks().process_api(
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1326, in process_api
    data = self.postprocess_data(fn_index, result["prediction"], state)
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1257, in postprocess_data
    assert isinstance(
AssertionError: <class 'gradio.layouts.Box'> Component with id 1223 not a valid output component.

Train Tools: unknown base model
upload dataset で何か問題が起きているような気がする

データセットを変えてリトライ

プロジェクトを新しく作って、データセットを変更してリトライした

use chibi_takashi dataset

パラメータを再確認してリトライ

train params (retry)

Go Train!!
ERROR か

Train Tools: unknown base model 
*** Error completing request
*** Arguments: ('task(7irvespsmtgvb51)', 'chibi_takashi', 'v1', 'LastpieceCore_A0621.fp16.safetensors', 1.0, 20.0, 2.0, True, ['Lion'], '0.0001', 128.0, 64.0, 2.0, 'fp16', True, False, False, 'best quality,Amazing,finely detail,extremely detailed CG unity 8k wallpaper', 'low quality', ['Euler a'], '28', 512, 512, 1, 1, '10', '-1', '0.6,0.7,0.8,1') {}
    Traceback (most recent call last):
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 55, in f
        res = list(func(*args, **kwargs))
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 35, in f
        res = func(*args, **kwargs)
      File "/content/stable-diffusion-webui/extensions/sd-webui-train-tools/liasece_sd_webui_train_tools/train_ui.py", line 133, in on_train_begin_click
        return [None]+on_ui_preview_generate_all_preview_btn_click(id, project, version, train_name,
    UnboundLocalError: local variable 'train_name' referenced before assignment

---
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/gradio/routes.py", line 422, in run_predict
    output = await app.get_blocks().process_api(
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1326, in process_api
    data = self.postprocess_data(fn_index, result["prediction"], state)
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1257, in postprocess_data
    assert isinstance(
AssertionError: <class 'gradio.layouts.Box'> Component with id 1223 not a valid output component.

あれー?またか。

Stable Diffusion V2 の Base モデルを利用してリトライ

Use base on SD v2 model

GO
ERROR !?

Train Tools: unknown base model 
*** Error completing request
*** Arguments: ('task(gk1jeitycwbp2q0)', 'chibi_takashi', 'v1', 'LastpieceCore_A0621.fp16.safetensors', 1.0, 20.0, 2.0, True, ['Lion'], '0.0001', 128.0, 64.0, 2.0, 'fp16', True, True, False, 'best quality,Amazing,finely detail,extremely detailed CG unity 8k wallpaper', 'low quality', ['Euler a'], '28', 512, 512, 1, 1, '10', '-1', '0.6,0.7,0.8,1') {}
    Traceback (most recent call last):
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 55, in f
        res = list(func(*args, **kwargs))
      File "/content/stable-diffusion-webui/modules/call_queue.py", line 35, in f
        res = func(*args, **kwargs)
      File "/content/stable-diffusion-webui/extensions/sd-webui-train-tools/liasece_sd_webui_train_tools/train_ui.py", line 133, in on_train_begin_click
        return [None]+on_ui_preview_generate_all_preview_btn_click(id, project, version, train_name,
    UnboundLocalError: local variable 'train_name' referenced before assignment

---
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/gradio/routes.py", line 422, in run_predict
    output = await app.get_blocks().process_api(
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1326, in process_api
    data = self.postprocess_data(fn_index, result["prediction"], state)
  File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1257, in postprocess_data
    assert isinstance(
AssertionError: <class 'gradio.layouts.Box'> Component with id 1223 not a valid output component.

んー。 train_ui.py 今度ちゃんと見る

今後

またリトライする