Blog

Pony系モデルでComfy-WaveSpeed

SDXLも高速化できるか試してみました

これまでの高速化手段

 SDXLはWebUI A1111をメインで使っているときからLCM LoRAを利用して8~10Stepsで生成していました。ComfyUIがメインになった現在も同様に使っています。今回改めて過去の記事を見直して,以下の設定で生成時間をチェックしたところ,1枚8.5秒程度でした。生成された画像は高速化しないときと比べると変化が見られますが,劣化は感じられず生成速度はかなり速いです。
(設定)Sampler:Euler,Scheduler:Karras,Sampling steps:8,CFG Scale:2.0,LoRAの適用量:0.3

lcm.jpg
 

Comfy-WaveSpeedを使って生成

 今回はComfy-WaveSpeedの配付元でダウンロードできるワークフローで検証しました。モデルはPony系モデルの中でお気に入りのWAI-SemiReal v3.0を使っています。
こちらの記事を見ると,SamplerとSchedulerに何を使うかによってComfy-WaveSpeedの効果が変わるようなので,効果が大きいと思われるSampler:Euler,Scheduler:Karrasで生成することにしました。
初めに高速化手段を使わない設定で生成時間をチェックしました。25Stepsで1枚20~22秒程度の時間でした。

none.jpg
 

次にComfy-WaveSpeedでどのくらい高速化するか試してみました。
Comfy-WaveSpeedにはApply First Block Cacheノード(Dynamic Caching)とCompile Model+ノード(torch.compile)の2つがあります。デフォルトの設定でDynamic Cachingのみのときは1枚11秒~13秒(左/上),torch.compileを追加すると1枚10秒~13秒(右/下)とどちらも約半分の時間で生成できました。Comfy-WaveSpeedはSDXLでも十分効果があると考えられます。

dc2.jpg
tc2.jpg

RDTの設定を変えてみる

 こちらの記事によると,Dynamic Cachingの設定項目の1つであるRDTの値を大きくすると生成時間が高速になるということで,デフォルトの0.2から0.5まで0.1きざみでテストしてみました。

(生成時間)同一Seed5枚の生成時間の平均値です
0.2 Dynamic Cachingのみ 12.3秒,torch.compile追加 11.9秒
0.3 Dynamic Cachingのみ 11.4秒,torch.compile追加 11.2秒(サンプル左/上)
0.4 Dynamic Cachingのみ 12.1秒,torch.compile追加 12.7秒
0.5 Dynamic Cachingのみ 12.3秒,torch.compile追加 11.8秒(サンプル右/下)

tc3.jpg
tc5.jpg

私のテストのやり方が悪いのか生成時間はばらつきがあり,平均するとRDTの値を変えてもあまり変わりませんでした。このテスト中にtorch.compileを追加したときに最速で10.6秒を記録しました。今のところは生成時間が最も速いところで0.35に設定しました。
画像は高速化しないときと比較すると微妙に背景や服装が変化していきますが,劣化している印象は感じませんでした。(気が付いていないだけ?!)

CFG Scaleの設定

 テストの途中でCFG Scale:3.0で生成していたことに気づきました。SDXLはずっとLCM LoRAを使っていたので,CFG Scaleは2.0~3.0しか使ったことがありませんでした。今回のテストで使ったワークフローのデフォルトはCFG Scale:6.5で,モデルの推奨値はCFG Scale:7.0でした。
試しに6.5で生成してみましたが,見慣れない画像に戸惑うばかりでした。とりあえずCFG Scale:5.0に設定してテストを続けました。
テストをしながら色々考えてみると,私が使っているSDXL用のワークフローにはClip SkipやFaceRestoreのノードを追加しています。FaceRestoreで微妙に肌のトーンや目元が変わるため,私はFaceRestoreしていない画像を見慣れていないということに気が付きました。

キャッシュを利用する部分を設定する

 今まで使っていたSDXL用のワークフローにWaveSpeedのノードを追加したり,今回のテストに使ったワークフローにClip SkipやFaceRestoreのノードを追加すると,劣化した画像が生成されました。
画像の劣化を防ぐために生成中にキャッシュを利用する範囲を設定しました。範囲を狭くすると劣化を防ぐことができますが,生成に時間がかかるのでいくつかのパターンをテストしてStart:0.1/End:0.9に設定しました。

tc35.jpg
ws.jpg

この設定で1枚17秒台でした。高速化しないときと比較すると4秒速くなっていますが,LCM LoRAを使ったときは1枚10秒前後なのでこれでは高速化とはいえません。ここはモデルの素の顔をいかすということで,Clip Skipのみ追加してFaceRestoreは使わないようにしました。これだと最速10秒台で生成できるので十分高速化していると思います。

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください
9
10
11
12
13
14
15
16