Wan2.2+SVI2.0PROは結局FP8安定

目次
  1. SVI動画生成パイプライン解説 - FP8量子化による高速化アーキテクチャ
  2. 全体構成
  3. Phase 1: Sampling - FP8量子化の限界に挑む
  4. Phase 2: Decode - torch.compile VAE最適化
  5. 後処理パイプライン - TensorRT高速化
  6. NVFP4の評価結果
  7. まとめ

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

SVI動画生成パイプライン解説 - FP8量子化による高速化アーキテクチャ

RTX 5060 Ti (16GB VRAM) で Wan 2.2 I2V-A14B (140億パラメータ) を動かすために構築した、API駆動・2フェーズ分離・TensorRT後処理の高速化パイプライン。

全体構成

入力画像 (任意サイズ)
 ↓
前処理: 顔センタリングクロップ → 544×960
 ↓
LLMプロンプト生成 (Qwen3-VL-8B → Qwen3-30B)
 ↓
Phase 1: Sampling (Port 8188)
 FP8 UNET + Lightning LoRA + SageAttn
 → Latent出力 (5セグメント×81フレーム)
 ↓ .latentファイル転送
Phase 2: Decode (Port 8189)
 torch.compile VAE + セグメントブレンド
 → 16fps MP4出力 (385フレーム/24秒)
 ↓
後処理: TRT Upscale → RIFE+FILM補間 → NVENC
 ↓
最終出力: 1080×1920 / 60fps MP4

Phase 1: Sampling - FP8量子化の限界に挑む

モデル構成

UNET (HIGH): FP8 E4M3 - wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors
UNET (LOW): FP8 E4M3 - wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors
CLIP: FP8 E4M3 - umt5_xxl_fp8_e4m3fn_scaled.safetensors
VAE: FP16 - wan_2.1_vae.safetensors

FP8量子化により14BパラメータのUNETを16GB VRAMに収容。FP16比で約半分のメモリ使用量。

Lightning LoRA - 7ステップで25ステップ品質

ステップ1 (HIGH_noise UNET)
 └→ Lightning HIGH LoRA (strength: 2.0)

ステップ2-4 (LOW_noise UNET)
 └→ Lightning LOW LoRA (strength: 1.0)

ステップ5-7 (LOW_noise UNET)
 └→ Lightning LOW LoRA (strength: 1.0)

通常25ステップを7ステップに短縮。3.5倍の高速化。

SVI Pro LoRA - 無限長動画のシームレス接続

SVI_v2_PRO_Wan2.2-I2V-A14B_HIGH_lora_rank_128_fp16.safetensors (strength: 1.0)

5セグメント(各81フレーム)をmotion_latent_countで接続し、385フレーム(24秒)の長尺動画を生成。

SageAttention - Attention計算の高速化

sageattn_qk_int8_pv_fp16_cuda + allow_compile: true

QK: INT8量子化
PV: FP16
allow_compile: torch.compileによるカーネル最適化

ComfyUI起動オプション (Phase 1)

--listen 0.0.0.0 --port 8188
--normalvram(通常VRAMモード)
--cuda-malloc(CUDAメモリアロケータ)
--force-fp16(FP16強制)
--fp16-vae(VAE FP16)
--fast(高速モード)
--disable-xformers(SageAttention使用のため無効)
--dont-upcast-attention(FP16アテンション維持)
--mmap-torch-files(メモリマップ読み込み)

環境変数設定

NVIDIA_TF32_OVERRIDE=1(TF32有効化、Tensor Core最適化)
CUDA graphs有効(カーネルオーバーヘッド削減)
CUDNN_BENCHMARK=1(cuDNN Benchmark、畳み込み最適化)
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True,garbage_collection_threshold:0.8

Phase 2: Decode - torch.compile VAE最適化

なぜPhaseを分離するのか

  1. VRAMの効率的利用: Phase 1完了後にUNETをアンロード→VAEに全VRAM割当

  2. 最適化の分離: Phase 1はCUDA graphs、Phase 2はtorch.compile(互換性なし)

  3. 障害分離: 片方が失敗しても途中から再開可能

torch.compile VAE設定

TorchCompileVAE:
 compile_encoder: false
 compile_decoder: true(デコーダのみコンパイル)
 dynamic: true(動的シェイプ対応)
 backend: inductor(PyTorch 2.xの最適化バックエンド)

ComfyUI起動オプション (Phase 2)

--listen 0.0.0.0 --port 8189
--highvram(高VRAMモード、VAEに全メモリ割当)
--cuda-malloc
--force-fp16 --fp16-vae --fast
--disable-xformers --dont-upcast-attention
--mmap-torch-files

環境変数設定 (torch.compile最適化)

CUDA graphs無効(torch.compileと非互換)
TORCHINDUCTOR_FREEZING=1(グラフ凍結)
TORCHINDUCTOR_CPP_WRAPPER=1(C++ラッパー)
TORCHINDUCTOR_COORDINATE_DESCENT_TUNING=1(座標降下チューニング)
TORCHINDUCTOR_FX_GRAPH_CACHE=1(グラフキャッシュ)

セグメントブレンド

ImageBatchExtendWithOverlap:
 overlap: 5
 overlap_mode: linear_blend

5フレームオーバーラップでセグメント間をスムーズに接続。

後処理パイプライン - TensorRT高速化

処理フロー

544×960 / 16fps (385フレーム)
 ↓

  1. Crop: 544→540 (左右2pxずつ削除、8の倍数調整)
     ↓

  2. Upscale: Real-ESRGAN Compact TRT (×2) → 1080×1920
     ↓

  3. 補間: RIFE TRT ×2 → FILM TRT ×2 (16fps → 32fps → 64fps)
     ↓

  4. Encode: H.264 NVENC (64fps → 60fps間引き)
     ↓
    1080×1920 / 60fps MP4

Real-ESRGAN TensorRT

Compact版(realesr_compact_batch8.engine)でバッチ処理。高速かつ十分な品質。

RIFE + FILM 2段補間

1st: RIFE v4.25 TRT (16fps → 32fps)
 高速・高品質、小さな動きに強い
 rife_v425_1080x1920_legacy.engine

2nd: FILM TRT (32fps → 64fps)
 大きな動きに強い、オプティカルフロー
 film_portrait_1920x1088_fixed.engine

FILMのTensorRT化で2.6倍高速化(2.2fps → 5.8fps @ 1080×1920)。
ただし、現状動画に一瞬破綻した画像が映り込むのを修正できていないため、PyTorch版にて運用。

NVENC エンコード

ffmpegでh264_nvenc使用。64fps入力を60fpsに間引き。P4プリセットで高速エンコード。

NVFP4の評価結果

NVFP4(4bit量子化)を試したが、画質低下に対して高速化が劇的ではなかった。

FP8: VRAM ~14GB、速度 1.0x、画質 良好
NVFP4: VRAM ~8GB、速度 1.2x、画質 低下顕著

VRAMは削減できるが、速度向上は20%程度。FP8の方がバランスが良い。

まとめ

RTX 5060 Ti 16GBという制約の中で、以下の最適化を組み合わせた:

  1. FP8量子化: 14Bモデルを16GB VRAMに収容

  2. Lightning LoRA: 25ステップ→7ステップ(3.5倍高速)

  3. SageAttention: INT8/FP16ハイブリッドアテンション

  4. Phase分離: CUDA graphs / torch.compile を使い分け

  5. TensorRT後処理: ESRGAN/RIFE/FILM すべてTRT化(一部失敗)

  6. NVENC: ハードウェアエンコード

「ギリギリで攻めた感」はあるが、画質も維持できているので、一旦これで区切りとする。

※FILMのTRT化に関してはあきらめきれない部分はあるのだが、ClaudeCodeに100%お任せの身としては解決の糸口すら見えてこない。

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

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