このノードは、Ideogram4モデルのフォワードパスに2つの実験的なVRAM削減最適化を適用します。これは "KJNodes/experimental" カテゴリの一部であり、モデルの出力を変更する可能性があります。ピークVRAMが制限要因であり、出力品質を確認した後にのみ使用してください。
説明
Ideogram4 Optimizations KJ ノードは、各トランスフォーマーブロック内の2つの最大の一時テンソル(SwiGLU活性化とRoPE計算)をターゲットにすることで、推論中のピークGPUメモリを削減するためにIdeogram4モデルにパッチを適用します。両方の最適化は個別のブール入力と整数入力で制御され、メモリ節約と計算オーバーヘッドの細かい制御を可能にします。
入力
-
model (MODEL, 必須) – 最適化が適用されるIdeogram4ベースモデル。
-
chunk_ffn (BOOLEAN, デフォルト
True) – 有効にすると、フィードフォワード(SwiGLU)活性化がトークンシーケンス次元で分割され、中間テンソルサイズが(B, L, hidden)の代わりに(B, chunk_size, hidden)に制限されます。これにより、計算量のわずかな増加と引き換えにピークメモリが削減されます。 -
ffn_chunks (INT, デフォルト
2, 範囲 1–64, ステップ 1) – フィードフォワードを分割するシーケンスチャンクの数。値が大きいほどピークメモリは低くなりますが、オーバーヘッド(より多くのカーネル起動)が増加します。値1は実質的にチャンク分割を無効にします。2から始めて、VRAMがまだ不足している場合は増やしてください。 -
ffn_seq_threshold (INT, デフォルト
1024, 範囲 256–65536, ステップ 256) – チャンク分割は、入力トークンシーケンスの長さがこの値を超えた場合にのみ適用されます。短いシーケンス(例えば1024トークン未満)の場合、ベースラインメモリはすでに十分小さいため、チャンク分割は不要なオーバーヘッドを追加します。このしきい値は、典型的な生成長に基づいて設定してください。 -
bf16_rope (BOOLEAN, デフォルト
True) – 有効にすると、Rotary Position Embedding (RoPE) がモデルの動作dtype(通常はbfloat16またはfloat16)で適用され、float32にアップキャストされません。これにより、RoPE活性化メモリが約半分になり、Hugging Faceのリファレンス実装で使用される精度と一致します。出力品質はデフォルトのfp32RoPEパスとわずかに異なる場合があります。
出力
- MODEL – 選択した最適化がパッチ適用された同じモデル。ComfyUIワークフローで、元の未パッチのモデルのドロップイン置き換えとして使用することを意図しています。
使用上の注意
- 両方の最適化は実験的です。本番ワークフローに展開する前に、必ず出力品質をテストし、未パッチのモデルと比較してください。
chunk_ffnとbf16_ropeの最適化は独立しています。必要なものだけを有効にしてください。最大のメモリ節約のためには、両方を有効にしてください。chunk_ffnを使用する場合は、デフォルトのffn_chunks = 2から始め、VRAMオーバーフローが続く場合にのみ増やしてください。チャンクが多いほどオーバーヘッドが大きくなるためです。ffn_seq_thresholdは、ワークフローが非常に短いシーケンスと非常に長いシーケンス(例えば、画像条件付けと完全な画像生成)の両方を処理する場合に最も役立ちます。短いプロンプトでのオーバーヘッドを避けるために調整してください。- これらの最適化はIdeogram4専用に設計されています。他のモデルアーキテクチャには影響を与えず、適用するとエラーが発生する可能性があります。入力モデルがIdeogram4のバリアントであることを確認してください。
コメント
GitHubでサインインしてディスカッションに参加しましょう。