AI画像に使用するLora作成メモStableDiffusion  2024/02/12

 AI画像に使用するLora作成メモ 2024/02/12

環境:Corei7 Windows10、VRAM4GB(推奨は8~12GB以上) 


AI画像の作成方法とかよくわかっていないのでユーチューブを参考にした。
Loraとかモデルとかタグとかキャプションとか色々な専門用語がでてくる。
自分好みのキャラクターを作るにはそれ相応の手間と時間とコツが必要らしい。

・モデルの入手先

https://huggingface.co/

https://civitai.com/

・Lora作成メモ
sd-scriptはLORA作者?が作ったものでほぼ原型。Kohyaはそこから派生したLORA作成ツールみたいなもの。
なので、sd-scriptを覚えたほうがいいのかもしれない。と思ったがユーチューブを見たらとても手順が込み入ってて無理だと思った。
よってKohyaを使ったほうがいいかも。

・実行メモ

<StableDiffusion(略称SDとする)>

C:\Users\mased\app\AI\stable-diffusion-webui
webui-user.batを実行する
 dataset-tag-editorは、機能拡張タブで使える

<kohya GUI>

C:\Users\mased\app\AI\lora_train_gui\kohya_ss
gui.batを実行する

・作業した内容

ここまでにSDはインストールした。Pythonも3.10.6をインストール済

スタンドアローンのdataset-tag-editor-standaloneをインストールした(今のところ起動はできるが、画像がよびだせないので使えない)
なので、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をインストールした。

>>でも結局使ってない

・インストール作業

サポートされている最新の Visual C++ 再頒布可能パッケージのダウンロード
https://learn.microsoft.com/ja-JP/cpp/windows/latest-supported-vc-redist?view=msvc-170
ディレクトリを作成、lora_train_gui(任意、動画に沿ってる)
C:\Users\mased\app\AI\lora_train_gui

CMDからGit
★Kohya's GUI
git clone https://github.com/bmaltais/kohya_ss.git
ファイルがGitコピーされたので、kohya_ssへ移動
C:\Users\mased\app\AI\lora_train_gui\kohya_ss


setup.bat実行して、メニューが表示されたら1を入れてエンター
時間がかかる。5,10分くらい待つ


動画ではFP16かBF16かを選ぶ質問がでていたが、自分のは表示でなかった。
おそらくビデオカードが条件を満たしていなかったかもしれない。
もし質問が表示されたら
FP16を選ぶだろう
たぶん
「fp16が10−14 ~ 6.55 × 104程度の数値幅しか表現できないのに対し、
bf16は10−38 ~ 3 × 1038の数値範囲を表現することが可能」

ということなのでグラフィックボードの性能の選択だと思う。
VRAMが4GBしかない。
できれば12GB かもっとほしいが10万円以上になる。


そのまま続ける。

同じ階層に3つのフォルダを作成、model,output,train
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


trainフォルダに親フォルダとなるbngirls(任意名)とその中に子フォルダとして
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向けもあるが、今回は単体を使用するらしい。


AIディレクトリにタグエディターをインストールする。
現在はlora_train_guiを先程作った
 C:\Users\mased\app\AI のディレクトリ
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が同階層にある。

 C:\Users\mased\app\AI のディレクトリ
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


C:\Users\mased\app\AI\dataset-tag-editor-standalone
に入って
install.batを実行
5分くらい待つ


起動する
launch_user.batを実行する
C:\Users\mased\app\AI\dataset-tag-editor-standalone
launch_user.bat


Running on local URL:  http://127.0.0.1:7860
と表示されたらブラウザに
http://127.0.0.1:7860
を入れて開く


ここまで約30~40分ほどかかった。
休憩する
9:01
ここまでがインストールで、次回は、キャプションを作っていけばよい。


次にキャプションを作る。
9:10
子フォルダのパスをコピーして、Dataset directoryのフィールドにペーストする
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls


Dataset Load Settingsの項目
画像あり
Use Interrogator CaptionのOverwriteにチェック


Interrogatorsのプルダウンから
wd-v1-4-tagger-v2を選択
次にLoadボタンをクリックする。時間が少しかかる
すると画面に子フォルダの画像が表示される。


しかし、10分経過しても表示されない場合は、
次の作業をする。
9:17


C:\Users\mased\app\AI\dataset-tag-editor-standalone
の中の
requirements.txtを開く
そして最後の行に
fastapi==0.95.2
上書き保存する
次に
venvフォルダを丸ごと削除
install.batを実行する
なぜかCMDが落ちた


再度venvフォルダを丸ごと削除して
また、install.batを実行する
またCMDが落ちた


venvフォルダを丸ごと削除
requirements.txtを修正前の状態に戻して、
、install.batを実行する
>単に元の状態でやってみる


15分か30分待ってみる
だめだった。
もしかすると画像が小さいとか縦横幅が不適切だったのかもしれない。


>>>

これでだめなら、SDの拡張機能でインストールすることにした。

Stable Diffusionの拡張機能『Dataset Tag Editor』の使い方!画像からプロンプトを抽出しよう!
https://romptn.com/article/27528#toc2


--->>>

ここからブラウザStable Diffusion

Stable DiffusionがインストールされたC:\Users\mased\app\AI\stable-diffusion-webui
から
webui-user.batを実行する
「Extensions」タブからAvailableを開き
Load fromボタンをクリックすると一覧が多数表示される。
検索でdatasetといれて Dataset Tag Editor を探してInstallボタンをクリックする
数秒で終わる。
Installedタブをクリックして
stable-diffusion-webui-dataset-tag-editor
が一覧にあることを確認する。
Apply and restartUIをクリックする 再起動になる。


「Dataset Tag Editor」タブがあると成功
スタンドアローンと同じような感じになってた。
画像を用意する。
次はここから、10:04


キャプションの参考は
参考動画
LoRAの作り方(2023年11月版)【Stable Diffusion 初心者】
https://www.youtube.com/watch?v=0n4ahiPppVs&list=WL
15分30秒から


画像を7枚にした
webui-user.batを実行する
「Dataset Tag Editor」タブ
子フォルダのパスをコピーして、Dataset directoryのフィールドにペーストする
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls


Dataset Load Settingsの項目
Use Interrogator CaptionのOverwriteにチェック


Interrogatorsのプルダウンから
wd-v1-4-tagger-v2を選択
次にLoadボタンをクリックする。時間が少しかかる
すると画面に子フォルダの画像が表示される。
約2分ほどで表示された。スタンドアローンは処理中で15分経過してもだめだった。
SDのほうなら行けたのでこのままブラウザSD版で作業を進める


ここからがちょっとややこしくて「学習させたくないものを削除する」
AIには「学習してほしくないもの」を教えること
>>通常なら「学習して欲しいもの」を教えるが逆になる。
作業は
「学習させたい項目をチェック」する。
「学習させたい項目」が削除されて
これにより学習中に見つけても「無視してほしいキーワードを残す」ことになる。


Bacth Edit Caption タブのRemoveタブを選択する
漠然系はそのままでOK、1girl,against wallとか一般的なものはチェックしなくてOKらしい
その後
Remove Selected tags ボタンをクリックする


次にSearch and Replace タブをクリックする
Edit Tags
のフィールドにbngirls を入力
これはフォルダ名
そして、Prepend additonal tagsにチェックを入れる
Apply changes to filtered imagesボタンをクリックする
処理が終わる、これでキャプションの編集は終わりらしい


確認方法は、画像を1枚選択して、Edit Caption of Selectecd Imageタブをクリックする。
そしてRead Caption from Selected ImageのタブのCaption of Selected Imageのところに
さきほど入力したbngirlsとか色々とキャプションが表示されていた
次に上の方のSave all changesの隣の 「Backup original text file (original file will be renamed like filenam、、」
のチェックを外す。
そしてSave all changes ボタンをクリックする

すると

ディレクトリの
C:\Users\mased\app\AI\lora_train_gui\train\bngirls\10_bngirls
にテキストファイルが作成される
ここで一旦SDを終了させる。
ブラウザのタブを閉じる、CMDでCTR+Cで処理を終わらせる

------->>>>


次に学習させる

C:\Users\mased\app\AI\lora_train_gui\kohya_ss
gui.batを実行する
ブラウザにhttp://127.0.0.1:7860/をペーストする


LoRAタブをクリックする
ここでModelを選択するが、汎用的なモデルをダウンロードする
AnyLoRA
https://civitai.com/models/23900/anylora-checkpoint
時間がかかる約5分-8分くらい


ダウンロードしたファイルは以下のmodelフォルダに入れる
C:\Users\mased\app\AI\lora_train_gui\model


Model Quick Pick項目はプルダウンから「custom」を選び
Pretrained model name or path項目に先程ダウンロードしたファイルを選択
C:/Users/mased/app/AI/lora_train_gui/model/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors
文書アイコンをクリックしてパスを入力する

--

次にFoldersタブをクリックして
Image folder項目は
親フォルダbngirlsを選択する
C:/Users/mased/app/AI/lora_train_gui/train/bngirls


Output folder項目は
アウトプット先のフォルダを指定する
C:/Users/mased/app/AI/lora_train_gui/output


Model output name項目は
bngirls_v1

--

次にPrametersタブをクリックして
Epocは焼き加減で大きくても小さくてもだめらしい。
とりあえず20 にしてみた
Save every N epochs も 20
Caption Extensionは拡張子の .TXT ドットあり
Seedは 1
基本はこれでよい


下の方のStart trainingボタンをクリックする
しかし、一向に終わらないのでStop trainingで中断した
たぶんCPUのみでしか処理できないためのエラーと思って
Mixed precision をfp16からnon
Save precision をfp16からfloatにした
>>
Start trainingボタンをクリックする


なんかエラーっぽい気がしたけどもしかして計算中かもしれないので、1時間位待ってみる。
画像あり、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.





>>

画像サイズを512に変えて試す。
また
 No module named 'triton'
で検索して対処を探す。
今ここ。


調査中1

とりあえずインストールまではできてLoraができないだけ。
画像サイズの横幅だけ512ピクセルにしたら少し進展したけど結局同じところでエラーになった。
「Error caught was: No module named 'triton'」
「 raise ImportError("No bitsandbytes / bitsandbytesがインストールされていないようです")
ImportError: No bitsandbytes / bitsandbytesがインストールされていないようです」
512*512にしてもう一度試してみる。
やっぱりだめだった。


kohya_ssのsetup.batを起動して、3を選択して1を選択すると、bitsandbytesの0.35.0が入ります。
これで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):」


画像枚数が7枚なのでこれを3枚にしてみる
同じエラーなので枚数ではない。

>>>エラー対応

「[A1111インストールフォルダ]\venv\Lib\site-packages\xformers\__init__.py の中でエラーを吐いているので、
コメントアウトすれば抑制できる。
logger.warning() の部分だ。この先頭に # をつけてコメントアウト。」
>>無視しても良さそう。


「CUDA SETUP: Loading binary C:\Users\mased\app\AI\lora_train_gui\kohya_ss\venv\lib\site-packages\bitsandbytes\libbitsandbytes_cuda116.dll...
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に存在してない。


原因と対応ありだが、場所がわからない

https://www.ipentec.com/document/software-stable-diffusion-sd-scripts-error-no-kernel-image-is-available


>>train_network.py実行時にエラーが発生するらしいけどこのファイルがない。
--optimizer_type=AdamW8bit

--optimizer_type=AdamW
AdamWにするといいらしいけど、どのファイルなの?


さくらエディタのGrep検索で、lora_train_guiディレクトリごと文字列検索してみた
約65件ほど該当があった。

でも該当部分がない。

どこだ??? よくよくエラーを見ると設定にあるかもしれないと思って

ブラウザの画面を探す。あった!!!対応がわかった!!!
ファイルではなくて、
Optimizer項目にあった
AdamW

にしてまたStart trainingボタンをクリックする
前より進んでいるが、時間がかかりそう。
13:55スタート
14:12 4/10が進行中35% CPUだけの処理なので時間がかかるがVRAM4GBでも動くことがわかった
14:49  終わり 
約1時間かかる。
VRAMが推奨ならおそらく10分くらいなんだろうな。


bngirls_v3.safetensors
というファイルができた。Jsonファイルもある
処理時間は
ファイル数3
epoch数10
繰り返し回数10(子フォルダ名の10_bngirlsの10が回数)
よって全部を乗算すると
3*10*10=300回学習することになる。
よってファイル数が増えると学習数が増えて時間はもっとかかる。


bngirls_v3.safetensorsをSDの\models\Loraに移動させる
C:\Users\mased\app\AI\stable-diffusion-webui\models\Lora
使うときはこんなふうにして使う
<lora:bngirls_v3:1>


次はstable-diffusion-webui(SD)にて画像を生成してみる。
C:\Users\mased\app\AI\stable-diffusion-webui
webui-user.batを実行する
そして、
<lora:bngirls_v3:1>を入れて実行するが、
想像したのとぜんぜん違う、、、、
でもエラーはない。時間はかかる1枚出力するのに約3~5分は必要
でもとりあえず動くことは確認できたので、使い方をもう少し勉強する


このブログの人気の投稿

メモ、BlenderPythonスクリプトで参考になるオブジェクトや頂点の選択ツリー選択スクリプトリンクメモ

楽天証券、信用取引口座から楽天FX口座へ振替手順

10/15デイトレは、ジュース代を確保した、日経平均が4万200円超