- 投稿日:
久々にPC構成を大刷新してみたのでベンチマークをしてみたが、かなり複雑な結果になった。
大まかにはCore Ultra 7 265FはCore i7 13700に、RTX 5070 TiはRTX 4070 Tiに劣るケースがありそうなことが判明したが、結果が複雑すぎて断言しづらい。
ベンチマーク構成
スペックアップ前後で単純に計測したところ、結果に疑問を持ったのでCPUとGPUを新旧それぞれで組み合わせて全数網羅で見ている。
デバイス | 構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|---|
CPU | Intel Core i7 13700 | Intel Core i7 13700 | Intel Core Ultra 7 265F | Intel Core Ultra 7 265F |
GPU | GeForce RTX 4070 Ti | GeForce RTX 5070 Ti | GeForce RTX 4070 Ti | GeForce RTX 5070 Ti |
MEM | Crucial Ballistix BL2K16G32C16U4B * 4 | Crucial Ballistix BL2K16G32C16U4B * 4 | Crucial CT2K16G56C46U5 * 4 | Crucial CT2K16G56C46U5 * 4 |
M/B | ASUS TUF GAMING Z790-PLUS D4 | ASUS TUF GAMING Z790-PLUS D4 | ASUS TUF GAMING Z890-PLUS WIFI | ASUS TUF GAMING Z890-PLUS WIFI |
FF14 黄金のレガシー ベンチマーク
4070Tiより5070Tiの方がベンチスコアが若干高く出るが、Core i7 13700よりCore Ultra 7 265Fの方が顕著にスコアが低い。
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
27,439 | 29,138 | 22,393 | 23,479 |
おまけ:ローディングタイム
構成1-2は記録し忘れたので書いていない。
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
6.5秒 | - | 7.9秒 | 8.6秒 |
ローディングタイムはストレージ依存のはずなのでCPUやGPUの性能が大きく影響することはないはずだが、かなり差が出ていたので参考程度にとどめておく。結果は小数第二位で四捨五入している。
CPUのキャッシュメモリサイズやDDR5の4枚差しによる速度低下が影響している可能性もあるが、2-1と2-2はGPUのみの差なのでよくわかっていない。ひょっとしたらグラフィック自体の読み込み速度が低下しているのかもしれない。
この差はMMORPGをする上ではかなりのハンデになるため、私が現役プレイヤーであれば、このスペックダウンは受け入れられなかっただろう。特にFF14をしていた時は誰よりも早くローディングを終えるのが自慢の一つだった。
SDベンチ
トキベンチ
ベンチマーク用のSD設定
COMMANDLINE_ARGSは--xformers --opt-channelslast --medvram
を使用。
設定 | 値 |
---|---|
Model | animagine-xl-3.1.safetensors [e3c47aedb0] |
Clip skip | 2 |
ENSD | 31337 |
Prompt | 1girl, toki \(blue archive\), blue archive, toki sits cross-legged in her chair. looking at viewer, cowboy shot, masterpiece, best quality, newest, |
Negative Prompt | nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, |
VAE | Automatic |
Sampleing method | Euler a |
Sampleing steps | 15 |
Width | 1024px |
Height | 1024px |
Batch count | 5 |
Batch size | 1 |
CFG Scale | 7 |
Seed | 50 |
生成ログ
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
15/15 [00:04<00:00, 3.12it/s] | 15/15 [00:05<00:00, 2.67it/s] | 15/15 [00:05<00:00, 2.92it/s] | 15/15 [00:05<00:00, 2.78it/s] |
15/15 [00:04<00:00, 3.34it/s] | 15/15 [00:05<00:00, 2.92it/s] | 15/15 [00:04<00:00, 3.35it/s] | 15/15 [00:05<00:00, 2.95it/s] |
15/15 [00:04<00:00, 3.34it/s] | 15/15 [00:05<00:00, 2.91it/s] | 15/15 [00:04<00:00, 3.44it/s] | 15/15 [00:05<00:00, 2.96it/s] |
15/15 [00:04<00:00, 3.36it/s] | 15/15 [00:05<00:00, 2.95it/s] | 15/15 [00:04<00:00, 3.46it/s] | 15/15 [00:05<00:00, 2.93it/s] |
15/15 [00:04<00:00, 3.32it/s] | 15/15 [00:05<00:00, 2.97it/s] | 15/15 [00:04<00:00, 3.46it/s] | 15/15 [00:04<00:00, 3.01it/s] |
75/75 [00:33<00:00, 2.24it/s] | 75/75 [00:35<00:00, 2.08it/s] | 75/75 [00:31<00:00, 2.40it/s] | 75/75 [00:34<00:00, 2.20it/s] |
75/75 [00:33<00:00, 3.96it/s] | 75/75 [00:35<00:00, 3.30it/s] | 75/75 [00:31<00:00, 3.96it/s] | 75/75 [00:34<00:00, 3.32it/s] |
平均生成速度
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
3.296it/s | 2.884it/s | 3.326it/s | 2.926it/s |
生成時間
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
33秒 | 35秒 | 31秒 | 34秒 |
まとめ
この結果からは4070Tiより5070Tiの方が生成速度が遅いことが読み取れる。またCPUがCore Ultra 7 265Fの時に僅かに高速化しているが、これはPCIe4から5への変化が効いている可能性がある。
またUltra 7 265F+4070Tiの組み合わせが最速を叩き出している点も見逃せない。つまりこれはStableDiffusionにおいてはi7 13700よりUltra 7 265Fが優位であることを示しており、FF14のベンチとは結果が逆転することを意味している。
りこベンチ
りこベンチとは個人的によく使う設定をベースにしたベンチだ。トキベンチの設定は個人的に使わず、実用性がないので今後はこちらを主にしていくと思う。
COMMANDLINE_ARGSは--xformers
を使用。
ベンチマーク用のSD設定
設定 | 値 |
---|---|
Model | ntrMIXIllustriousXL_xiii.safetensors [1207404b17] |
Clip skip | 2 |
ENSD | 31337 |
Propmpt | (illustration:1.0), masterpiece, best quality, 1girl, solo, happy, smile, theater, (perspective:1.3), from below, (looking away:1.2), (from side:1.0), {{shot_hair}}, smile, bangs, shaggy, (brown hair:1.1), swept_bangs, thick_eyebrows, skin_fang, closed mouth, {{purple eyes}}, gray {{jacket}}, white shirt, glasses, {{small breasts}}, |
Negative Prompt | nsfw, (worst quality, low quality:1.4), (depth of field, blurry, bokeh:1.5), (greyscale, monochrome:1.0), multiple views, text, title, logo, signature, (tooth, lip, nose, 3d, realistic:1.0), dutch angle,(cropped:1.4), text, title, signature, logo, (loli:1.2), school satchel, pink, school bag, school uniform, from behind |
VAE | Automatic |
Sampleing method | DPM++ 2M |
Hires. fix | True |
Upscaler | Latent |
Hires steps | 0 |
Denoising strength | 0.8 |
Upscale by | 2 |
Sampleing steps | 20 |
Width | 768px |
Height | 768px |
Batch count | 5 |
Batch size | 1 |
CFG Scale | 7 |
Seed | -1 |
生成ログ
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
20/20 [00:05<00:00, 3.43it/s] | 20/20 [00:06<00:00, 2.94it/s] | 20/20 [00:03<00:00, 5.92it/s] | 20/20 [00:04<00:00, 4.51it/s] |
20/20 [00:11<00:00, 1.68it/s] | 20/20 [00:17<00:00, 1.13it/s] | 20/20 [00:11<00:00, 1.73it/s] | 20/20 [00:17<00:00, 1.13it/s] |
20/20 [00:05<00:00, 3.49it/s] | 20/20 [00:06<00:00, 3.06it/s] | 20/20 [00:03<00:00, 6.26it/s] | 20/20 [00:04<00:00, 4.79it/s] |
20/20 [00:11<00:00, 1.67it/s] | 20/20 [00:17<00:00, 1.14it/s] | 20/20 [00:11<00:00, 1.72it/s] | 20/20 [00:17<00:00, 1.13it/s] |
20/20 [00:05<00:00, 3.53it/s] | 20/20 [00:06<00:00, 3.03it/s] | 20/20 [00:03<00:00, 6.28it/s] | 20/20 [00:04<00:00, 4.81it/s] |
20/20 [00:11<00:00, 1.68it/s] | 20/20 [00:17<00:00, 1.14it/s] | 20/20 [00:11<00:00, 1.71it/s] | 20/20 [00:17<00:00, 1.13it/s] |
20/20 [00:05<00:00, 3.36it/s] | 20/20 [00:06<00:00, 3.06it/s] | 20/20 [00:03<00:00, 6.15it/s] | 20/20 [00:04<00:00, 4.78it/s] |
20/20 [00:12<00:00, 1.62it/s] | 20/20 [00:17<00:00, 1.13it/s] | 20/20 [00:11<00:00, 1.71it/s] | 20/20 [00:17<00:00, 1.13it/s] |
20/20 [00:05<00:00, 3.53it/s] | 20/20 [00:06<00:00, 3.08it/s] | 20/20 [00:03<00:00, 6.13it/s] | 20/20 [00:04<00:00, 4.57it/s] |
20/20 [00:11<00:00, 1.68it/s] | 20/20 [00:17<00:00, 1.14it/s] | 20/20 [00:11<00:00, 1.71it/s] | 20/20 [00:17<00:00, 1.13it/s] |
200/200 [01:49<00:00, 1.82it/s] | 200/200 [02:11<00:00, 1.53it/s] | 200/200 [01:33<00:00, 2.13it/s] | 200/200 [02:00<00:00, 1.65it/s] |
200/200 [01:49<00:00, 1.66it/s] | 200/200 [02:11<00:00, 1.12it/s] | 200/200 [01:33<00:00, 1.68it/s] | 200/200 [02:00<00:00, 1.11it/s] |
平均生成速度
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
2.567it/s | 2.085it/s | 3.932it/s | 2.911it/s |
生成時間
構成1-1 | 構成1-2 | 構成2-1 | 構成2-2 |
---|---|---|---|
109秒 | 131秒 | 93秒 | 120秒 |
まとめ
結果としてはトキベンチと変わらず、Ultra 7 265F+4070Tiの組み合わせが最速でi7 13700+5070Tiの組み合わせが最も遅い。
総括
結果しては複雑で、個人的にはどの道を選ぶか未だに悩んでいる。
まず、今回新規導入したデバイスについての評価は以下の感じだ。
Core Ultra 7 265F
- FF14ベンチではi7 13700に劣る
- StableDiffusionの生成速度ではi7 13700を上回る
RTX 5070 Ti
- FF14ベンチでは4070 Tiを僅かに上回る
- StableDiffusionの生成速度では4070 Tiより1.1~1.3倍遅い
この結果は非常に悩ましい。FF14ベンチの結果からみるとゲーミング性能だけで言えばi7 13700+5070Tiが最適解だが、StableDiffusionの生成速度ではUltra 7 265F+4070Tiが最適解となった。
ただ私はもうFF14をしておらず、あまりゲームもしていないため、FF14ベンチの結果はある程度無視できる。そうなるとStableDiffusionだ。生成速度は重要な要素だ。とはいえ、4070Tiではメモリ不足でControlNetが使えないケースもあった。
また最近話題になっているFramePackのkisekaeichiではVRAM16GB必須という話もあり、今回は生成速度よりメモリを取る判断をしたいと思う。少なくとも旧環境である構成1-1と現環境である構成2-2を比べた時の差は一割程度であり、十分許容できる。
正直、私にはベンチマークのためにハードウェアを組み替える環境がないので、ある程度の情報でジャッジせざるを得ない。ちもろぐの人みたいに組み換え環境がある人はこの辺りがやりやすいと思うが、私の場合はPCケースからマザボを引っ張り出してそう取り返して、もう一度ケースに戻す手間がかかる。一連の作業には1時間ほど掛かり非常に手間だ。
今回はあまりにも結果が結果だったので、やむを得ず、新環境に組み替えてから、一度元に戻してベンチを取り直す検証を行ったが、組み換えの手間に加え、高価なCPUグリスが無くなり結構キツイ思いをしている。ちなみに今は新環境に完全に復帰している。
- 投稿日:
5070Tiが良さそうだったのでついでに今までDDR5にするのを渋ってたメモリをアップグレードするかぁ!と総入れ替えした結果の記録。
グレードアップ現新比較表
デバイス | 変更前 | 変更後 |
---|---|---|
CPU | Intel Core i7 13700 | Intel Core Ultra 7 265F |
GPU | GeForce RTX 4070 Ti | GeForce RTX 5070 Ti |
MEM | Crucial Ballistix BL2K16G32C16U4B * 4 | Crucial CT2K16G56C46U5 * 4 |
M/B | ASUS TUF GAMING Z790-PLUS D4 | ASUS TUF GAMING Z890-PLUS WIFI |
今回はなんと、これだけのパーツを神戸市内、それも中央区だけで揃えてきた。通販は箱が増えて邪魔だし日本橋に行くのは大変なので、神戸で揃えられたのは非常に良かった。
組み換えシーン
机の下から薄汚れたケースを取り出すことから始まる。いい加減掃除した方がいいかなと思った。
まずは現環境をご開帳。1~2年に一度は簡単に掃除しているのもあり、中はそこまで汚れていない。
分解を進めていくときの部品入れに、いつか役に立つだろうと取っていた揖保乃糸の箱が役に立った。
グラボをメモリを外し、コネクタをいくらか外したところ。
CPUクーラーのヒートシンクもぼちぼち埃にまみれていた。これも掃除した方がいい。
CPUグリスは意外と乾いてなかった。このCPUを付けたのは2年半ほど前で、恐らくその時からそのままである。
オンボードLAN(Intel(R) Ethernet Controller I226-V)が腐っていたので取り付けた蟹のNICともお別れだ。新しいマザボのNICは蟹なので恐らく大丈夫という期待がある。
ケースのフロントUSB用の拡張ボード。これも埃が積もっている。年期が入っているため、少しさびている気もする。
ケースからマザボを抜き取ったところ。まだNVMeSSDの抜去が残っている。マザボ交換は大変だ。
空っぽになったケース。よく見ると埃が積もっているので、やはり掃除が必要だ。
というわけで徹底的に掃除を始める。この後、全ての外装をはがし、ファンも外してクイックルワイパーとエアダスターでファンのフィンの一枚一枚や、わっか部分の内側など、掃除できる場所は掃除していった。
200mmファンの清掃ビフォーアフター。
裏配線の部分は比較的奇麗だったが、ここもクイックルワイパーやエアダスターを使って掃除していく。
一見そこまで汚れてなさそうな天面ファンも掃除する。
比較するとちゃんと奇麗になっている。こういうのは細かい積み重ねが大切なので、少しの埃であれ除去してゆく。
フロントパネルもはがして掃除する。
掃除している中でケースの前方下部にフィルターがあることに初めて気が付いた。電源ファン向けのフィルターだろうか?
今まで動かすときに何も考えずにつかんでいた気がするのでやや曲がっている。
完全に裸にして徹底的に掃除する。
戻していくところ。電源(PSU)を開けるのは地味に面倒なのだ。
新しいマザボには謎のパーツがたくさんついていたが、ほとんど使わなかった。ゴムだけ使った。
新しいマザボをケースにセットしたところ。ケーブルが多すぎて入れるのが大変だった。なお、この後のベンチマークの結果がイマイチで、元のマザボに戻し、またこのマザボに戻すという非常に面倒な工程を踏むハメになる…。
最近はNVMeが主流だからかSATAの数が少なかった。昔はもっとたくさんあったし、コネクタは一箇所に集中していて、こんな分散してなかったと思う。
細かいセッティングには、このようにケースの中に張り付いてくれる懐中電灯があると便利だ。ちなみにこれはヨドバシで売っている。
電源やリセットスイッチのケーブルを刺していて気が付いたが、このマザボにはブザーコネクタがなかった。LEDはあるものの、起動エラーを音で知れないのは少々不便である。
CPUを付けようとしたときにバックプレートが見当たらず探していたら、なんと前のマザボにセロテープでくっついていた。よく壊れなかったな…。
セロテープで固定していないと脱落してマウンタを付けづらいため、こうしていたのだと思うが、恐らくはがし忘れていたのだろう。
因みにこれはNoctuaのLGA1700用のバックプレートだが、LGA1851でもそのまま使うことができた。助かる。
マザボ現新比較。上側が今のマザボ、下が新しいマザボ。
新しい方がやや長く、薄くなっている。PCIeを複数使っている身としてはスリムになっているのは嬉しい。
PCIeスロット現新比較。左が今のマザボ、右が新しいマザボ。
今のマザボはボタンを押すとロックが外れる機構だが、ボタンが遠く、抜くとき斜めになりやすく、それが原因でロックが詰まることがしばしばあった。それに対して新しい方は位置が近いうえに、単純な作りになっており、こちらの方が抜き差ししやすいと感じた。押す場所が広く指が痛くならないのもいいところだ。
組み付け後。前よりちょっと高級感があり、チープ度が減った気がする。おそらくグラボのプラスチック感が減ったのが大きいだろう。
筐体もピカピカになっていい感じだ。しかしグラボのファンが光らなくなってしまったため回っているのか確認するのが少し煩わしくなってしまった。
セットアップ時に見舞われたトラブルの解消ログ
inaccessible boot driveというブルスクが出る
BIOSからIntel Rapid Storage TechnologyをOFFにする(デフォルトはOFF)
コマンドプロンプトで起動して以下のコマンドを流す。
sfc /scannow
OS起動時にAi Suite 3がaccess violationとかいう
Ai Suite 3を消すことで解決する。
普通に消そうとしても「The model does not support this application.」とか言われるので、公式にある適当なマザボのユーティリティからAI Suite 3 Cleanerを落としてきてAi Suite 3を消す。
モニタが片方しか映らない、モニタの映りが悪い、グラボが未検出
ZOTAC公式からドライバを落として入れる。
Ai Suite上でFan Xpertを使いたい(ASUS TUF GAMING Z790-PLUS D4)
ROG STRIX Z370-F GAMINGのツールから落としてインスコすれば使える。
ASUS TUF GAMING Z890-PLUS WIFIだと多分この方法は無理。
ASUS TUF GAMING Z890-PLUS WIFIでFan Xpertを使いたい
ASUS TUF GAMING Z890-PLUS WIFIのツールからArmoury Crateを落とし、Armoury Crateをインストール後、Armoury Crateの機能ライブラリからアシスタントをインストールすると使えるようになる。
Armoury Crateには過去に結構苦い思い出があったので入れるのを避けたかったが、他に方法はなさそうだ。ファンの細かい調整が不要ならBIOSからやってもいいかもしれない。
関連記事
ベンチスコアは複雑な結果になったので別記事、5070Tiは4070Tiより性能が悪い…?に譲る。
- 投稿日:
Automatic 1111よりいいらしいので使ってみる。
日本語表示が面倒だったので、途中から表示言語を英語に変えている。
確認環境
Env | Ver |
---|---|
ComfyUI | v0.3.38 |
導入方法
インストール
公式サイトからインストーラーをダウンロードして実行するだけ。
Cドライブにしか対応してないらしいが、モデルや出力先は変更可能なので、インストールパスはそのままでよい。
モデルパスの変更方法
- ComfyUIのインストール先を開く
標準はここ:%HOMEPATH%\AppData\Local\Programs\@comfyorgcomfyui-electron\resources\ComfyUI
extra_model_paths.yaml.example
をextra_model_paths.yaml
にリネームする- 以下のコメントアウトをコピペして適当に治す。
is_default: true
のコメントを外して有効化しておく#comfyui: # base_path: path/to/comfyui/ # # You can use is_default to mark that these folders should be listed first, and used as the default dirs for eg downloads # #is_default: true # checkpoints: models/checkpoints/ # clip: models/clip/ # clip_vision: models/clip_vision/ # configs: models/configs/ # controlnet: models/controlnet/ # diffusion_models: | # models/diffusion_models # models/unet # embeddings: models/embeddings/ # loras: models/loras/ # upscale_models: models/upscale_models/ # vae: models/vae/
出力先の変更方法
設定→サーバー設定の一番下にある「出力ディレクトリ」を設定する。
画像の保存ノードのファイル名プレフィックスをクリックし、Valueにフォルダ名/任意の文字列
をつけることでフォルダわけもできる。フォルダ名/
だけ指定してもうまくいかないので注意。
ClipSkipの設定(不明)
CLIP Set Last LayerノードをLoad Checkpointに接続することで実現できるらしい?
Hires.fixの設定
KSampler→Upscale Latent By→KSampler→VAEで繋ぐと同様のことができるらしい。
感想
起動が早い
1111は1分近くかかるがComfyは数秒で起動するため、ここはいいと思った。
保存先を柔軟に変更できる
1111では基本的に生成種別、日付別に保存されるため整理が手間である。
画像の生成品質を上げる方法がわからなかった
これはComfy UIを以下の構成にして生成したものだ。
一枚目はこういう絵柄だといえばまだありかもしれないが、二枚目は微妙だ。これはどうもHires.fix相当の機能が期待通りに動いていないのが理由に見えるが、恐らくそういった事柄を探求するモチベーションがないと、上手いこと使えないと思われる。
また上記のノード接続だと生成速度も速いとは言えず、これ以上要素を増やすとなると実用性は怪しいと感じた。
現状はまだ1111で十分
1111だとこのくらいのものがパッと出てくるため、個人的には今のところ1111でいいかなと思った。カリカリにチューニングすることで1111を超えてくる可能性は否定できないが、大抵のケースで設定値は固定であり、プログラマブルである必要性はアニメーションとかの分野になってくると思われるので、動画を作るならComfy、そうでなければ1111で十分な気がした。
- 投稿日:
SDXLでキャラクターLoraをいい感じに作る方法。学習には教師画像のみを用いる。
必要なもの
- AUTOMATIC1111/stable-diffusion-webui
- Kohya_LoRA_param_GUI
- ベースとなるSDXLチェックポイントモデル
やり方
1. 学習用の素材となる画像を集める
学習画像の枚数・パターン
多ければ多いほどいいが、多すぎると学習に時間がかかりすぎるので、ある程度選別する。
例えば3Dキャラクターを学習する場合は、1ポーズ当たり正面・斜め前・横・斜め後ろ・真後ろの流れで一周八面の画像をいくつかのポーズ分作っておくと再現性が高くなる。
奇麗な画像があまりとれない場合は、極力そのキャラクターの特徴が出ている画像を数枚集める。4枚とかでもいい。1枚は試したことないのでどうなるのか不明。
学習素材となる画像の選定
学習元画像には背景が入っていてもいいが、そのキャラクターだけが映り込んでいるものを選ぶ。ほかのキャラクターが入っていたらトリミングするなどで消したほうが良い。
2. 学習用の素材画像にタグを打つ
- AUTOMATIC1111を起動し、Tagger→Batch from directoryを開く
- Additional tagsにキャラクターを出すためのトリガーワードを設定
- 既存のタグと衝突するとぶれるはずなので、一意な名前にする。例えば今井リサなら
imls
みたいに、とりあえず自分で識別できそうな適当な文字列を当てておく
- 既存のタグと衝突するとぶれるはずなので、一意な名前にする。例えば今井リサなら
3. タグファイルを整理する
前項で1画像ファイルに対して1タグファイルができているので、このファイルの内容を整理していく。
まずはゴミワードを探して取り除く。大抵複数ファイルに跨っているので一括置換するのがいい。
次に固定要素を取り除く。例えば髪型や髪の色、瞳の色、アクセサリーの特徴みたいな、何があっても変わらない部分は消す。例えば紫目のキャラクターならpurple eyes
を、ヘアアクセサリが特徴的なキャラクターであればhair ornament
を消すといった感じだ。残したい特徴をタグから取り除くことで、その特徴が固定化されやすくなる。
逆に変動させたい部分、逆に服装やポーズ、体の向き、メガネの有無など、変動しうる場所は残しておく。そうすると、いい感じに特徴をとらえたキャラクターが出やすくなる上、プロンプトにそれらを含めなくても出るようになるためトークンの節約にもなる。
但し、この細工は教師画像が少ないとあまり効果がない気がしている。
参考:LoRA/学習方法 - としあきdiffusion Wiki*
4. 学習とモデルの作成
以下のコードをNew Preset.xmlora
とか適当な名前で保存し、Kohya_LoRA_param_GUIで読み込み、チェックポイントモデルと教師画像、モデルの出力先を適当に指定して実行するとモデルが生成される。
体感ではponyDiffusionV6XL_v6StartWithThisOne.safetensorsが無難な気がしている。
<?xml version="1.0" encoding="utf-8"?>
<TrainParams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ModelPath></ModelPath>
<TrainImagePath></TrainImagePath>
<OutputPath></OutputPath>
<TensorBoardLogPath />
<LoraModelPath />
<LearningRate>0.0001</LearningRate>
<Resolution>1024</Resolution>
<BatchSize>2</BatchSize>
<Epochs>8</Epochs>
<NetworkDim>8</NetworkDim>
<NetworkAlpha>3</NetworkAlpha>
<RegImagePath />
<ShuffleCaptions>true</ShuffleCaptions>
<KeepTokenCount>0</KeepTokenCount>
<SaveEveryNEpochs>0</SaveEveryNEpochs>
<OptimizerType>AdamW8bit</OptimizerType>
<WarmupSteps>250</WarmupSteps>
<OutputName></OutputName>
<Comment />
<CpuThreads>1</CpuThreads>
<NoBucketUpscaling>false</NoBucketUpscaling>
<UseWarmupInit>false</UseWarmupInit>
<ClipSkip>2</ClipSkip>
<Seed>42</Seed>
<SavePrecision>fp16</SavePrecision>
<SchedulerType>cosine_with_restarts</SchedulerType>
<MinBucketResolution>320</MinBucketResolution>
<MaxBucketResolution>1536</MaxBucketResolution>
<CaptionFileExtension>.txt</CaptionFileExtension>
<VAEPath />
<UnetLR>-1</UnetLR>
<TextEncoderLR>-1</TextEncoderLR>
<NoiseOffset>0</NoiseOffset>
<Momentum>0.9</Momentum>
<advancedTrainType>UNetOnly</advancedTrainType>
<CrossAttenType>xformers</CrossAttenType>
<UseGradient>true</UseGradient>
<UseWeightedCaptions>false</UseWeightedCaptions>
<AdaptiveNoiseScale>0</AdaptiveNoiseScale>
<MinSNRGamma>0</MinSNRGamma>
<MultiresNoiseIterations>0</MultiresNoiseIterations>
<MultiresNoiseDiscount>0</MultiresNoiseDiscount>
<NetworkDropout>0</NetworkDropout>
<RankDropout>0</RankDropout>
<ModuleDropout>0</ModuleDropout>
<MaxNormReg>0</MaxNormReg>
<CaptionDropout>0</CaptionDropout>
<IpNoiseGamma>0</IpNoiseGamma>
<ModuleType>LoRA</ModuleType>
<AlgoType>lora</AlgoType>
<ConvDim>4</ConvDim>
<ConvAlpha>1</ConvAlpha>
<UseConv2dExtend>true</UseConv2dExtend>
<DyLoRAUnit>4</DyLoRAUnit>
<DatasetConfigPath />
<TrainNorm>false</TrainNorm>
<RescaledOFT>false</RescaledOFT>
<ConstrainedOFT>false</ConstrainedOFT>
<UseScalar>false</UseScalar>
<UseTucker>false</UseTucker>
<WeightDocomposition>false</WeightDocomposition>
<UseBlockWeight>false</UseBlockWeight>
<BlockWeightIn>
<int>20</int>
<int>20</int>
<int>20</int>
<int>20</int>
<int>20</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
</BlockWeightIn>
<BlockWeightMid>0</BlockWeightMid>
<BlockWeightMid01>20</BlockWeightMid01>
<BlockWeightMid02>20</BlockWeightMid02>
<BlockWeightOut>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>0</int>
<int>20</int>
<int>20</int>
<int>20</int>
<int>20</int>
<int>20</int>
</BlockWeightOut>
<BlockWeightOffsetIn>0</BlockWeightOffsetIn>
<BlockWeightOffsetOut>0</BlockWeightOffsetOut>
<BlockWeightPresetTypeIn>none</BlockWeightPresetTypeIn>
<BlockWeightPresetTypeOut>none</BlockWeightPresetTypeOut>
<BlockWeightZeroThreshold>0</BlockWeightZeroThreshold>
<UseBlockDim>false</UseBlockDim>
<BlockDimIn>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
</BlockDimIn>
<BlockDimMid>32</BlockDimMid>
<BlockDimMid01>4</BlockDimMid01>
<BlockDimMid02>4</BlockDimMid02>
<BlockDimBase>4</BlockDimBase>
<BlockDimOutSDXL>4</BlockDimOutSDXL>
<BlockDimOut>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
<int>64</int>
</BlockDimOut>
<BlockAlphaIn />
<BlockAlphaMid>-1</BlockAlphaMid>
<BlockAlphaOut />
<BlockAlphaInM>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
</BlockAlphaInM>
<BlockAlphaMidM>32</BlockAlphaMidM>
<BlockAlphaMid01>4</BlockAlphaMid01>
<BlockAlphaMid02>4</BlockAlphaMid02>
<BlockAlphaBase>4</BlockAlphaBase>
<BlockAlphaOutSDXL>4</BlockAlphaOutSDXL>
<BlockAlphaOutM>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
<decimal>64</decimal>
</BlockAlphaOutM>
<UseColorAug>false</UseColorAug>
<UseFastLoading>true</UseFastLoading>
<DontSaveMetadata>false</DontSaveMetadata>
<UseFlipAug>false</UseFlipAug>
<CropRandomly>false</CropRandomly>
<CacheLatents>true</CacheLatents>
<CacheLatentsToDisk>true</CacheLatentsToDisk>
<HighVRAM>false</HighVRAM>
<UseAdditionalOptArgs>false</UseAdditionalOptArgs>
<LRSchedulerCycle>4</LRSchedulerCycle>
<GradAccSteps>1</GradAccSteps>
<DataLoaderThreads>1</DataLoaderThreads>
<MaxTokens>75</MaxTokens>
<mixedPrecisionType>fp16</mixedPrecisionType>
<WeightDecay>0</WeightDecay>
<Eps>1E-06</Eps>
<D0>1E-06</D0>
<GrowthRate>0</GrowthRate>
<Betas0>0.9</Betas0>
<Betas1>0.999</Betas1>
<Betas2>0.999</Betas2>
<DAdaptMomentum>0.9</DAdaptMomentum>
<ProdigyBeta3>0</ProdigyBeta3>
<DCoef>1</DCoef>
<Decouple>false</Decouple>
<NoProx>false</NoProx>
<SafeguardWarmup>false</SafeguardWarmup>
<UseBiasCorrection>false</UseBiasCorrection>
<StableDiffusionType>XL</StableDiffusionType>
<NoHalfVAE>false</NoHalfVAE>
<CacheTextencoder>false</CacheTextencoder>
<CacheTextencoderToDisk>false</CacheTextencoderToDisk>
<IsEpoch>true</IsEpoch>
<UseFullFP16>false</UseFullFP16>
<UseFP8Base>false</UseFP8Base>
<RelativeStep>true</RelativeStep>
<ScaleParameter>true</ScaleParameter>
<SaveState>false</SaveState>
<MaskLoss>false</MaskLoss>
<RandomNoiseOffset>false</RandomNoiseOffset>
<RandomIpNoiseGamma>false</RandomIpNoiseGamma>
<TokensSeparator />
<LossType>LTwo</LossType>
<HuberScheduleType>SNR</HuberScheduleType>
<HuberC>0.1</HuberC>
<LoRAPlusLRRatio>0</LoRAPlusLRRatio>
<LoRAPlusUnetLRRatio>0</LoRAPlusUnetLRRatio>
<LoRAPlusTELRRatio>0</LoRAPlusTELRRatio>
</TrainParams>