AI画像に使用するLora作成メモStableDiffusion 2024/02/12
AI画像に使用するLora作成メモ 2024/02/12
環境:Corei7 Windows10、VRAM4GB(推奨は8~12GB以上)
Loraとかモデルとかタグとかキャプションとか色々な専門用語がでてくる。
自分好みのキャラクターを作るにはそれ相応の手間と時間とコツが必要らしい。
・モデルの入手先
sd-scriptはLORA作者?が作ったものでほぼ原型。Kohyaはそこから派生したLORA作成ツールみたいなもの。
なので、sd-scriptを覚えたほうがいいのかもしれない。と思ったがユーチューブを見たらとても手順が込み入ってて無理だと思った。
よってKohyaを使ったほうがいいかも。
・実行メモ
<StableDiffusion(略称SDとする)>
webui-user.batを実行する
<kohya GUI>
C:\Users\mased\app\AI\lora_train_gui\kohya_ss
gui.batを実行する
・作業した内容
ここまでにSDはインストールした。Pythonも3.10.6をインストール済
なので、SDの拡張機能でdataset-tag-editorをインストールした(スタンドアローンが使えないのでこっちで使う)
Kohya's GUIをインストールした
Visual C++ 再頒布可能パッケージをインストールした
結局はStableDiffusion(略称SDとする)の機能拡張dataset-tag-editorとKohyaを使うことにした。
LoRAの作り方(2023年11月版)【Stable Diffusion 初心者】
https://www.youtube.com/watch?v=0n4ahiPppVs&list=WL
スタンドアローンのdataset-tag-editor-standaloneをインストールした。
>>でも結局使ってない
・インストール作業
https://learn.microsoft.com/ja-JP/cpp/windows/latest-supported-vc-redist?view=msvc-170
C:\Users\mased\app\AI\lora_train_gui
★Kohya's GUI
git clone https://github.com/bmaltais/kohya_ss.git
時間がかかる。5,10分くらい待つ
おそらくビデオカードが条件を満たしていなかったかもしれない。
もし質問が表示されたら
FP16を選ぶだろう
たぶん
「fp16が10−14 ~ 6.55 × 104程度の数値幅しか表現できないのに対し、
bf16は10−38 ~ 3 × 1038の数値範囲を表現することが可能」
ということなのでグラフィックボードの性能の選択だと思う。
VRAMが4GBしかない。
できれば12GB かもっとほしいが10万円以上になる。
そのまま続ける。
2024/02/12 08:20 <DIR> kohya_ss
2024/02/12 08:38 <DIR> model
2024/02/12 08:38 <DIR> output
2024/02/12 08:38 <DIR> train
10_bngirlsを作る。学習10は回数らしい
C:\Users\mased\app\AI\lora_train_gui\train
\bngirls\10_bngirls\
この子フォル10_bngirlsの中に学習画像を入れる。
---
lora_train_guiの上の階層に移動して
ここに、dataset-tag-editor-standaloneをGITインストールする
動画の説明欄のURLは短縮になって、後半が切れているので、
グーグル検索して、そのURLを使った。
なおdataset-tag-editor-standaloneにはSD向けもあるが、今回は単体を使用するらしい。
現在はlora_train_guiを先程作った
2024/02/12 08:38 <DIR> lora_train_gui
2024/02/09 16:57 <DIR> stable-diffusion-webui
git clone https://github.com/toshiaki1729/dataset-tag-editor-standalone
実行後のディレクトリはAIディレクトリに lora_train_gui と dataset-tag-editor-standaloneが同階層にある。
2024/02/12 08:55 <DIR> dataset-tag-editor-standalone
2024/02/12 08:38 <DIR> lora_train_gui
2024/02/09 16:57 <DIR> stable-diffusion-webui
に入って
install.batを実行
5分くらい待つ
launch_user.batを実行する
C:\Users\mased\app\AI\dataset-tag-editor-standalone
launch_user.bat
と表示されたらブラウザに
http://127.0.0.1:7860
を入れて開く
休憩する
9:01
ここまでがインストールで、次回は、キャプションを作っていけばよい。
9:10
子フォルダのパスをコピーして、Dataset directoryのフィールドにペーストする
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls
wd-v1-4-tagger-v2を選択
次にLoadボタンをクリックする。時間が少しかかる
すると画面に子フォルダの画像が表示される。
次の作業をする。
9:17
の中の
requirements.txtを開く
そして最後の行に
fastapi==0.95.2
上書き保存する
venvフォルダを丸ごと削除
install.batを実行する
なぜかCMDが落ちた
また、install.batを実行する
またCMDが落ちた
requirements.txtを修正前の状態に戻して、
、install.batを実行する
>単に元の状態でやってみる
だめだった。
もしかすると画像が小さいとか縦横幅が不適切だったのかもしれない。
>>>
これでだめなら、SDの拡張機能でインストールすることにした。
https://romptn.com/article/27528#toc2
--->>>
ここからブラウザStable Diffusion
から
webui-user.batを実行する
「Extensions」タブからAvailableを開き
Load fromボタンをクリックすると一覧が多数表示される。
検索でdatasetといれて Dataset Tag Editor を探してInstallボタンをクリックする
数秒で終わる。
stable-diffusion-webui-dataset-tag-editor
が一覧にあることを確認する。
Apply and restartUIをクリックする 再起動になる。
スタンドアローンと同じような感じになってた。
画像を用意する。
次はここから、10:04
参考動画
LoRAの作り方(2023年11月版)【Stable Diffusion 初心者】
https://www.youtube.com/watch?v=0n4ahiPppVs&list=WL
15分30秒から
webui-user.batを実行する
「Dataset Tag Editor」タブ
子フォルダのパスをコピーして、Dataset directoryのフィールドにペーストする
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls
Use Interrogator CaptionのOverwriteにチェック
wd-v1-4-tagger-v2を選択
次にLoadボタンをクリックする。時間が少しかかる
すると画面に子フォルダの画像が表示される。
約2分ほどで表示された。スタンドアローンは処理中で15分経過してもだめだった。
SDのほうなら行けたのでこのままブラウザSD版で作業を進める
AIには「学習してほしくないもの」を教えること
>>通常なら「学習して欲しいもの」を教えるが逆になる。
作業は
「学習させたい項目をチェック」する。
「学習させたい項目」が削除されて
これにより学習中に見つけても「無視してほしいキーワードを残す」ことになる。
漠然系はそのままでOK、1girl,against wallとか一般的なものはチェックしなくてOKらしい
その後
Remove Selected tags ボタンをクリックする
Edit Tags
のフィールドにbngirls を入力
これはフォルダ名
そして、Prepend additonal tagsにチェックを入れる
Apply changes to filtered imagesボタンをクリックする
処理が終わる、これでキャプションの編集は終わりらしい
そしてRead Caption from Selected ImageのタブのCaption of Selected Imageのところに
さきほど入力したbngirlsとか色々とキャプションが表示されていた
のチェックを外す。
そしてSave all changes ボタンをクリックする
すると
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls
にテキストファイルが作成される
ここで一旦SDを終了させる。
ブラウザのタブを閉じる、CMDでCTR+Cで処理を終わらせる
------->>>>
次に学習させる
gui.batを実行する
ブラウザにhttp://127.0.0.1:7860/をペーストする
ここでModelを選択するが、汎用的なモデルをダウンロードする
AnyLoRA
https://civitai.com/models/23900/anylora-checkpoint
時間がかかる約5分-8分くらい
C:\Users\mased\app\AI\lora_train_gui\model
Pretrained model name or path項目に先程ダウンロードしたファイルを選択
C:/Users/mased/app/AI/lora_train_gui/model/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors
文書アイコンをクリックしてパスを入力する
--
Image folder項目は
親フォルダbngirlsを選択する
C:/Users/mased/app/AI/lora_train_gui/train/bngirls
アウトプット先のフォルダを指定する
C:/Users/mased/app/AI/lora_train_gui/output
bngirls_v1
--
Epocは焼き加減で大きくても小さくてもだめらしい。
とりあえず20 にしてみた
Save every N epochs も 20
Caption Extensionは拡張子の .TXT ドットあり
Seedは 1
基本はこれでよい
しかし、一向に終わらないのでStop trainingで中断した
たぶんCPUのみでしか処理できないためのエラーと思って
Mixed precision をfp16からnon
Save precision をfp16からfloatにした
>>
Start trainingボタンをクリックする
画像あり、3枚
DOS窓
OutputフォルダにはJsonファイルがあるけど完成形のファイルが存在してない。
たぶん失敗なんだろう。
エラー原因か解消方法を探す。
「A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'
」
「 raise RuntimeError("Error(s) in loading state_dict for {}:\n\t{}".format(model.__class__.__name__, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for SdxlUNet2DConditionModel:」
「 raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['C:\\Users\\mased\\app\\AI\\lora_train_gui\\kohya_ss\\venv\\Scripts\\python.exe', './sdxl_train_network.py', '--enable_bucket', '--min_bucket_reso=256', '--max_bucket_reso=2048', '--pretrained_model_name_or_path=C:/Users/mased/app/AI/lora_train_gui/model/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors', '--train_data_dir=C:/Users/mased/app/AI/lora_train_gui/train/bngirls', '--resolution=512,512', '--output_dir=C:/Users/mased/app/AI/lora_train_gui/output', '--network_alpha=1', '--save_model_as=safetensors', '--network_module=networks.lora', '--text_encoder_lr=5e-05', '--unet_lr=0.0001', '--network_dim=8', '--output_name=bngirls_v1', '--lr_scheduler_num_cycles=20', '--no_half_vae', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=140', '--train_batch_size=1', '--max_train_steps=1400', '--save_every_n_epochs=20', '--mixed_precision=no', '--save_precision=float', '--seed=1', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_grad_norm=1', '--max_data_loader_n_workers=0', '--bucket_reso_steps=64', '--xformers', '--bucket_no_upscale', '--noise_offset=0.0']' returned non-zero exit status 1.
」
>>
また
No module named 'triton'
で検索して対処を探す。
今ここ。
調査中1
画像サイズの横幅だけ512ピクセルにしたら少し進展したけど結局同じところでエラーになった。
「Error caught was: No module named 'triton'」
「 raise ImportError("No bitsandbytes / bitsandbytesがインストールされていないようです")
ImportError: No bitsandbytes / bitsandbytesがインストールされていないようです」
512*512にしてもう一度試してみる。
やっぱりだめだった。
これでgui.batを実行すると以前よりも進んだが、まだエラーになってしまった。
「Error no kernel image is available for execution on the device at line 167 in file D:\ai\tool\bitsandbytes\csrc\ops.cu
Traceback (most recent call last):」
同じエラーなので枚数ではない。
>>>エラー対応
https://wikiwiki.jp/sd_toshiaki/No%20module%20named%20%27triton%27
コメントアウトすれば抑制できる。
logger.warning() の部分だ。この先頭に # をつけてコメントアウト。」
>>無視しても良さそう。
use 8-bit AdamW optimizer | {}」
「Error no kernel image is available for execution on the device at line 167 in file D:\ai\tool\bitsandbytes\csrc\ops.cu
Traceback (most recent call last):」
そもそもDドライブはPCに存在してない。
原因と対応ありだが、場所がわからない
--optimizer_type=AdamW8bit
↓
--optimizer_type=AdamW
AdamWにするといいらしいけど、どのファイルなの?
約65件ほど該当があった。
でも該当部分がない。
どこだ??? よくよくエラーを見ると設定にあるかもしれないと思って
ファイルではなくて、
Optimizer項目にあった
AdamW
にしてまたStart trainingボタンをクリックする
前より進んでいるが、時間がかかりそう。
13:55スタート
14:12 4/10が進行中35% CPUだけの処理なので時間がかかるがVRAM4GBでも動くことがわかった
14:49 終わり
約1時間かかる。
VRAMが推奨ならおそらく10分くらいなんだろうな。
というファイルができた。Jsonファイルもある
ファイル数3
epoch数10
繰り返し回数10(子フォルダ名の10_bngirlsの10が回数)
よって全部を乗算すると
3*10*10=300回学習することになる。
よってファイル数が増えると学習数が増えて時間はもっとかかる。
C:\Users\mased\app\AI\stable-diffusion-webui\models\Lora
使うときはこんなふうにして使う
<lora:bngirls_v3:1>
C:\Users\mased\app\AI\stable-diffusion-webui
webui-user.batを実行する
そして、
<lora:bngirls_v3:1>を入れて実行するが、
想像したのとぜんぜん違う、、、、
でもエラーはない。時間はかかる1枚出力するのに約3~5分は必要
でもとりあえず動くことは確認できたので、使い方をもう少し勉強する