Comfy WaveSpeed on Windows
Comfy WaveSpeed
Guidance
ここ近日来…最大のインパクトを与えてくれたプログラムでした。「Comfy-WaveSpeed」。
速度向上比率に関してはかつてのTensorRTに匹敵し、TensorRTでは不可能だった、ControlNetとLoRAに対応します。
動画方面のテストはしていませんが、HunyuanVideoにもLTXVにも対応するようです。
作者のchengzeyi(成泽毅)氏…かつて、日の目を見ずに消え去った幻の高速化ノード「Stable-Fast」の作者殿ですね。「打倒TensorRT」を掲げて開発をされていた方です。
「Stable-Fast」…私が知る限り、日本でこの技術の導入方法をきちんと、正しく解説し、無料で公開したのは、私以外にはいないはずです。
(某所にアップしたその記事は、既に消えてますが)
難易度高かったですよ…アレは…エラーメッセージを一つずつ潰して何とか導入しましたが…結論から言えば、色々と実用するには問題が多い技術でした。理屈そのものは凄いなと思いましたが。
ちなみにですね、何度か心が折れかかったStable Fastのインストールを、エラー毎に原因を調べ、試行錯誤しながら独力で完走させた体験…というものが、今に至るまで自分のComfyUIにおける一種の自信…というか、専門教育を受けたエンジニアでなくとも、本気で取り組めばある程度までは何とかなる…と思えるようになった原点とも言えます。
一方、期待されまくったnVidiaのTensorRTは、SD1.5では何とか使えるレベルでしたが…結局SDXLではControlNetにもLoRAにも対応できず、Forge系では完全に無視され、この形での高速化は正直無理なのかな...と思い、しばらく忘れていましたが、
「Comfy-WaveSpeed」、凄い完成度と汎用性を以て登場しました。ControlNetとLoRAに完璧に対応し、更には各種Detailerも高速化します。chengzeyi(成泽毅)氏の偉業に心から敬意と感謝を。
3倍とか4倍とか言われていますが…私がワークフローを作成したFlux1とSDXLでは、確かにDetailerを含めた全体で、その位の高速化にはなりました。ただ一言、Amazing!
About torch.compile
何やら一部で、Windowsに対応しない…説が流れていますが、そんなことはありませんよ。
実際、私はFlux1でCompile Model+ノードを完走させています。また、2025年2月25日、torch.compileの機能を最大限引き出す設定のロードに成功しました。
その前提で、torch.compile機能部分を動作させる方法に関しては以下を参照して下さい。
新しいエラーに対する対処
以下記事を参照し、該当する場合は対処して下さい。
chengzeyi(成泽毅)氏
成泽毅氏のプロフィールを見ると…かなり凄い方のようです。中国のAI開発グループSiliconFlowのエンジニア殿であり…これを見ると「打倒TensorRT」を掲げても、確かにやれてしまう方とお見受けしました。
Technical tips

shiba*2さんが記事化して下さっているSampler毎の効果情報は、非常に有用です。確かにeuler aは効果低いですね。
Euler系なら同じ…と思いがちですが、確かに違いが出ます。Euler系を使う場合、私は無印よりaを使いがちなので、I see…と思いましたね。
また、効果の差異が生じる理由に関しても記述して下さっているので、これらの情報も非常に有為です。
また、きまま / Easygoingさんが二回に渡り、Dynamic Caching部分の設定については相当詳細に検証されていますので、下記事群も非常に有為です。ChatGPTが算出したという推奨設定は、早速使っていきたい処です。
Fixed jsons
作成したjsonsの全てにWaveSpeedを適用している訳ではありませんが、基本的にSDXL以上に関しては、応用系含めて適用しています。
How to install nodes of WaveSpeed
上記、ここまで私が作成してきたワークフローに対するWaveSpeed追加版を続々更新中ですが、ここで既存のjsonに対するWaveSpeedノードの追加方法について解説しておきます。
以下記事にて解説している、tritonのインストールおよびtorch.compileを導入する為の準備、global_config.pyの設置と環境変数追加は完了しているとの前提で、以下記載します。
On SDXL
下図は、ごく一般的なSDXL用のワークフロー(LoRA付き)ですが、このワークフローを例に取って解説します。

まず、下図のように何もない処でダブルクリックして、検索ワードに「apply first」と入力し、Apply First Block Cacheノードを選択します。

次に下図のように、Load LoRAとKsamplerの間にノードを挿入して配線を行い、rdtは0.2に設定します(※下図は0.12になってしまっているがこれは誤りで、SDXLの公式推奨は0.2)。これが公式のSDXL用推奨値です。更なる最適化に関しては、上のshiba*2さんやきまま / Easygoingさんの記事を参考に試行錯誤してみてください。

ノードの挿入位置は、下図のようにBase Model Loaderの直後でも動作はします。正直、どちらが良いかはわかりません。

On Flux1
Flux1の場合も基本は同じですが、下図のようにApply First Block Cacheノードのrdを0.12に変更し、かつ直後にKJ Nodesによるtorch.compileノードを追加してください。そして、下図のようにMode欄にはmax-autotune-no-cudagraphsを選択してください。

尚、torch cpmpileノードなしで、Apply First Block Cacheノードのみ追加の状態でも、一定の高速化はします。
