ComfyUI にコアのスパースアテンションノードと Comfy Compiler が追加されました
Kijai のブロックスパースアテンションが ComfyUI コアに搭載され、MiniMax H3 用の 3 つのバックエンドを搭載。VRAM の無駄を削減し、長い H3 ランを高速化する新しいメモリコンパイラーも追加されました。
ブロックスパースアテンション:1 つのノード、3 つのバックエンド
新しいブロックスパースアテンションノード(カテゴリ advanced/model、実験的としてマーク)は comfy_extras/nodes_sparse_attention.py にあり、各クエリブロックを特定のキーブロックのサブセットのみへルーティングします。相対的な速度向上はシーケンス長とともに増加し、これはまさに 10 秒の H3 クリップの領域です。min_tokens ガードにより短いシーケンスは自動的に密(dense)に保たれます。
3 つの選択モードが同じノードに含まれています:
- Sol-Attn (adaptive tau): スコア分布シグマ内のヘッドごとの適応型閾値。
tau1.0 は約 16% のキーブロックを正確に保持し、1.5 は約 7%、2.0 は約 2.7% です。これは特別に訓練された重みなしで動作するモードです。 - top-k (SLA): すべての場所でキーブロックの固定された
keep_percent。これは lightx2v SLA スタイルのターボ LoRA が圧縮されているものと同じなので、それらの訓練された重みを持つ場合にのみ推奨されます。 - VSA (FastVideo): 粗い圧縮ブランチを持つキューブタイルリングで、10% の保持率で FastH3-VSA 訓練セットアップに一致します。存在する場合はモデルの
to_gate_compressレイヤーを使用します。
スケジュールウィンドウ(start_percent / end_percent、デフォルト 0.2 から 1.0)は初期の denoise ステップを密に保ち、2 つの H3 固有の高度なオプションが条件付けを処理します:sink_conditioning はパッキングされたテキスト/音声/参照行を正確にアテンションします(約 3% のコスト)、プロンプトや音声が劣化しないようにし、extra_tokens は選択されたブロックを超えて最高スコアのトークンを追加して密に近い状態を保ちます。
これまでのところ、この機能はコミュニティの別々のノードパックとしてのみ存在しており、コミュニティテストでは LoRA だけでは一致するスパースバックエンドがないと何も機能しないことが示されていました。コアノードは 3 つのアプローチを 1 つのインターフェースの下に統合したので、単一のワークフローで 1 つのコンボボックスを変更するだけで Sol-Attn、SLA、VSA を切り替えることができます。
PR #15861 の Comfy Compiler ベンチマーク:RTX 5060 上の MiniMax H3 720p 158 フレームで、メモリコンパイラーが有効になると安定した VRAM 使用量と大幅に高い反復レートを示します。
Comfy Compiler:割り当ての削減、ステップの高速化
Comfy Compiler (PR #15861) は 2 層のコンパイルプロセスです:
- aimdo メモリコンパイラー (comfy-aimdo 0.5.0 内) は upfront でメモリ割り当てを計算・最小化し、CUDA 割り当て呼び出しを一度きりの設定に減らし、推論メモリを安定かつ一定に保ちます。PR によると、これはアロケーターのフラッシュと動的 VRAM プレッシャーと CUDA の報告数値間の競走を除去し、物理 VRAM ピークが論理割り当てピークと一致することを保証し、解放された割り当てがキャッシュに残るのを防ぎます。
- その上に CUDA グラフ レイヤーがあります。メモリコンパイラーによって生成される安定した仮想アドレスがグラフ記録を安全にする要因です;同期は最初のトランスフォーマーブロックでのみ必要です。
実用的な効果は PR ベンチマークに現れます:以前は進捗なしで停止していた RTX 5060 上の MiniMax H3 720p 158 フレーム実行が、変更後はステップあたり約 43 秒で完了し、同じカード上の MiniMax Music 3 AR サンプリングはステップスループットが約 35% 向上します。
プリフェッチャを使用するすべてのモデルおよび MiniMax H3 は初期マージで変換されます。WAN は将来の作業としてリストされており、これにより最大の実行可能な生成サイズが同じように引き上げられます。
前:H3 ランは 19.9 GB の準備された重みを準備してから数分間沈黙します。変更後、同じランは安定したステップごとの進行を示します。
注意点:早期の OOM とキャンセルクラッシュ
Banodoco Discord でのコミュニティテストにより、初日に 2 つの問題点がフラグ付きになりました。Comfy Compiler もアクティブな場合、スパース実行は OOM になる可能性があり、スパースノードがロードされている間に実行をキャンセルすると ComfyUI がクラッシュする可能性があります。続編コミット (#16148、"Pause comfy compiler for long lived sparse allocations") はすでに相互作用に対処し、--disable-comfy-compiler はフォールバックフラッグとして引き続き利用可能です。ノードの密なフォールバックパスとは、シーケンスがスケジュールウィンドウ外または min_tokens 未満の場合、通常の状態の密なバックエンドを再配線なしで実行することを意味します。
入手性
両方の機能は現在の ComfyUI ビルドにあります:Block Sparse Attention ノードは comfy-kitchen 0.2.33 が必要です(すでに requirements.txt に含まれています)、Comfy Compiler は comfy-aimdo 0.5.2 とともにコアの一部です。アップデートされたインストールには追加のインストール手順は不要です;MiniMax H3 ワークフローのユーザーは単にノードをモデルローダーとサンプラーの間に配置するだけです。
コメント
GitHubでサインインしてディスカッションに参加しましょう。