SkipLayerGuidance
先に書いとくと基本的にはDiffusion Transformer向けの技術なのでそういうアーキテクチャのモデル用(恐らくSDXLとかでは効果がない)
https://arxiv.org/abs/2403.17377公式の論文(Perturbed-Attention Guidanc)を下に作られた機能
https://github.com/comfyanonymous/ComfyUI/blob/ab5413351eee61f3d7f10c74e75286df0058bb18/comfy_extras/nodes_slg.py#L8C2-L10C74コードのコメントを翻訳すると
スキップされたレイヤーを持つ別の CFG ネガティブ セットを用意することで、詳細な構造へのガイダンスを強化します。
Perturbed Attention Guidance (https://arxiv.org/abs/2403.17377) に触発されました。
Dango233@StabilityAI による SD3 のオリジナルの実験的実装。
とのこと。
https://huggingface.co/stabilityai/stable-diffusion-3.5-mediumStable Diffusion 3.5公式にて付言されているリポジトリ
リンク先
https://www.reddit.com/r/StableDiffusion/comments/1gj228f/sd_35_medium_tip_running_the_skip_layer_guidance/https://civitai.com/articles/8603/ultimate-details-sd-35-medium-slg-skiplayerguidance-comfyui-detail-daemon-workflow実はStable Diffusion 3.5くらいの頃からひっそりあった技術
行っていることとしては「一部のレイヤーでCFGガイダンスをスキップする」というもの。
何故かこれで画質が良くなる(事がある)
その性質上(実装しだいでは)画質を上げつつ本当に若干だが生成速度も上がる(こっちはほぼプラシーボレベル)というかなりお得感のある技術。
ただ、モデルごとにスキップするべきレイヤーが違ったり、意図せぬ副作用もあったりと場合によっては逆効果になることもあるので(特に動画モデルでは)静止画~短い時間で出力して意図した結果になるかを事前に試験することを推奨する。
技術としてはちょっと前からあるが、注目を浴びだしたのはHunyuanVideoにWan2.1といった激重な動画モデルの流行が影響として大きいようで現在付言されるのはほぼこれらの用途によるもの。
特に重たいWan2.1向けの話であることがほとんど
動画生成ではほんの僅かに軽くなるだけでもトータルの待ち時間をかなり削れる上、基本的に速度向上技術は多かれ少なかれ画質を犠牲にするものであるため、「画質を上げつつ速度も(ほんの気持ち)上がる」というのは喉から手が出る程度にほしい技術になってくる。
ComfyUI公式の実装は🦊SkipLayerGuidanceDiTと🦊SkipLayerGuidanceSD3の2つ
…なのだが、SkipLayerGuidanceSD3はSkipLayerGuidanceDiTの初期値付与するラッパーに過ぎないので実態はSkipLayerGuidanceDiT側のみである。
また、汎用性を持たせるためか、scale及びrescaling_scaleに値が入っていると計算が増えるので処理時間はむしろ増える(代わりに副作用的な影響を抑えようとしてるのかGuidanceがゆるくかかるようなコードhttps://github.com/comfyanonymous/ComfyUI/blob/ab5413351eee61f3d7f10c74e75286df0058bb18/comfy_extras/nodes_slg.py#L6となっている)
生成速度を落としたくない場合は少しピーキーになるがscale0で設定すると良い(ただ計算結果はこれでもkijaiノードと違うようで仕上がりは異なる)
ComfyUI-KJNodesにおいてはSkipLayerGuidanceWanVideoノードのみ、つまりWan2.1以外は非対応
比較的シンプルに該当レイヤーをスキップするようなコードhttps://github.com/kijai/ComfyUI-KJNodes/blob/main/nodes/model_optimization_nodes.py#L1099となっており、多少速度も上がる効果がでる。
ただ、ちょっと変化が敏感なためstart~endの指定範囲次第でまぁまぁダイレクトに画質が変わる。
こちらはTeaCacheもKJNode版でないと使えないので注意
https://www.reddit.com/r/StableDiffusion/comments/1jd0kew/skip_layer_guidance_is_an_impressive_method_to/報告によるとWan2.1ではレイヤーは9を指定、start0.2以上~stop1.0以下が良いようだ。
個人的に試した範囲ではstart0.325くらい~end0.86位が比較的好みの画質になった。(アニメ絵で検証)morisoba65536.icon
https://x.com/kohya_tech/status/1903782186140283342他のレイヤーでも効果はあるかもしれない
cf. https://github.com/deepbeepmeep/Wan2GP/pull/61Add skip layer guidance