ComfyUIをAPIで動かしてWan2.2+SVI2.0PROをNVFP4で動かす話

目次
  1. NVFP4 実行 超簡潔版(5分理解)
  2. ① まず前提
  3. ② 一番重要な設定(これがないとほぼ確実に失敗)
  4. ③ 必須ソース修正(3箇所)
  5. ④ ワークフロー設定
  6. ⑤ 動作確認方法
  7. FP8との違い(超要点)
  8. まとめ(これだけ守れば動く)

ClaudeCodeにまとめさせた記事になります。一応確認していますが、全く分からないことを書いている部分もあるので間違っていたらすいません。

NVFP4 実行 超簡潔版(5分理解)

544×960 16fps 81フレーム×5セグメント
FP8の時点で高速化が完璧か?と言う話があるが、一応こんな感じ。画質が落ちることを考えると意味があるのかと言う話もあるが、速度は速くなる。

┌──────────┬───────┬───────┬───────────────┐
│ フェーズ      │ FP8     │ NVFP4      │ 備考                              │
├──────────┼───────┼───────┼───────────────┤
│ 前処理              │          ~1秒 │         ~1秒 │                    顔クロップ │
├──────────┼───────┼───────┼───────────────┤
│ LLM生成           │       ~45秒 │        ~45秒 │                     2段階処理 │
├──────────┼───────┼───────┼───────────────┤
│ Phase 1            │       ~30分 │       ~25分 │           NVFP4で高速化 │
├──────────┼───────┼───────┼───────────────┤
│ Phase 2            │         ~3分 │          ~3分 │                VAEデコード │
├──────────┼───────┼───────┼───────────────┤
│ 後処理              │          ~5分 │         ~5分 │                                       │
├──────────┼───────┼───────┼───────────────┤
│ 合計                  │       ~40分 │        ~33分 │                   約17%短縮 │
└──────────┴───────┴───────┴───────────────┘

① まず前提

必須環境

  • GPU: RTX 50シリーズ(Blackwell世代)

  • CUDA: 13.0以上

  • PyTorch: cu130ビルド版

これが揃っていないと 物理的に動きません。


② 一番重要な設定(これがないとほぼ確実に失敗)

起動オプション

python main.py --disable-cuda-malloc

なぜ?

NVFP4は巨大モデルを扱うため
cudaMallocAsyncだとVRAM断片化でOOMになります

典型エラー:

Tried to allocate 1.10 GiB.
GPU has 15 GiB reserved but only 10 MiB free.

→ メモリはあるのに連続領域が取れない状態

--disable-cuda-malloc は 必須


③ 必須ソース修正(3箇所)

NVFP4はそのままではComfyUIと衝突します。

1. dtype変換スキップ(LoRA対策)

comfy/ops.py

if not isinstance(self.weight, QuantizedTensor):
    weight = weight.to(self.weight.dtype)

理由:
QuantizedTensor(NVFP4)にdtype変換をかけると壊れる


2. triton無効化(最重要)

comfy/quant_ops.py

ck.registry.disable("triton")

理由:

  • NVFP4専用演算 scaled_mm_nvfp4 は

  • CUDAバックエンドにしか存在しない

  • Tritonでは未実装

これを忘れると:

scaled_mm_nvfp4 not found

が出ます。


3. version_counterエラー回避

comfy/utils.py

with torch.inference_mode(False):

理由:
QuantizedTensor → nn.Parameter変換時の内部エラー回避


④ ワークフロー設定

UNETLoader

FP8の場合

"weight_dtype": "fp8_e4m3fn"

NVFP4の場合

"weight_dtype": "default"

ここを間違えると動きません。


⑤ 動作確認方法

ログ確認:

grep -i "nvfp4\|scaled_mm\|native" log.txt

正常時

Found comfy_kitchen backend cuda: True
Memory allocator: native

異常時

scaled_mm_nvfp4 not found
CUDA out of memory

FP8との違い(超要点)

項目         FP8     NVFP4
サイズ          13.3GB     9.9GB
ソース          修正不要   必須
triton          使用可    使用不可
Blackwell必須      いいえ    はい
--disable-cuda-malloc 推奨      必須


まとめ(これだけ守れば動く)

✔ RTX50シリーズ
✔ CUDA13
✔ --disable-cuda-malloc
✔ triton無効化
✔ weight_dtype = default

これでNVFP4は動きます。

【宣伝】SwitchBot 購入はこちらから

SwitchBot公式ページ
クーポン「AF-4903」で5%引き(アフィリエイトクーポンになりますのでご協力お願いします)
割引の詳しい仕組みに関してはこちらのページを参照ください。