AI動画でBGVを作る(4)|ComfyUI + Wan2.2最適化でVRAM 12GBでも安定(T2V後編)

AI動画でBGVを作る(4)|ComfyUI + Wan2.2のサンプラー最適化で画質安定(T2V後編) — Wan2.2, ComfyUI, 画質安定 AI動画

こんにちは、パレイド技術部です。

前回、Wan2.2 14B T2V の環境構築を完了し、いざ生成してみたところ画質に問題があることに気づきました。全体的にノイズが残り、ディテールが潰れてしまいます。

原因を調べたところ、HIGH/LOWノイズ領域でサンプラーを使い分けるデュアルサンプラー構成が必要でした。今回はこの問題の解決と、fp8_scaled モデルを使った A14B ワークフローの構築記録をお伝えします。

ワークフローの構成と技術的ポイント

前回は安易に Wan2.2 5B のワークフローのテンプレートを出発点としたため、14B の特性を考慮しない構成となってしまったことが原因でした。今回は Kijai氏 のリポジトリのワークフローやドキュメントを参考に、同様に Claude Code + Chrome 拡張に相談しつつ作業を進めました。

デュアルサンプラー構成(HIGH/LOW分割)

結論、Wan2.2 A14B はHIGH noise モデルと LOW noise モデルの2本立て設計になっています。

  • HIGH noise model:生成の前半ステップ(高ノイズ段階)を担当
  • LOW noise model:後半ステップ(低ノイズ段階)を担当

前回のように、これを1本のサンプラーで動かすと画質が安定しません。2つの WanVideoSampler ノードを直列につなぎ、HIGH の出力サンプルを LOW の入力に渡す構成が正解のようです。start_stepend_step でステップ範囲を分割します(例:前半 0〜3、後半 3〜6)。

LightX2V LoRA によるステップ蒸留

LightX2V はステップ蒸留 LoRA で、通常 20〜50 ステップかかる生成を6ステップで行えるようにします。T2V 用(lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors)を両サンプラーに適用します。

VAE は Wan2.1 を使う

調べないとはまりがちですが、Wan2.2 A14B モデルは Wan2.2 専用 VAE ではなくWan2.1 VAEwan_2.1_vae.safetensors)を使います。Kijai 氏本人が issue #1281 で確認済みです。Wan2.2 VAE を使うと channels mismatch (36 vs 68) エラーが出ます。

fp8_scaled モデル

  • Wan2_2-T2V-A14B_HIGH_fp8_e4m3fn_scaled_KJ.safetensors(約15GB)
  • Wan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors(約15GB)

通常の fp8 と異なり、レイヤーごとにスケール係数を持たせた高精度 fp8 です。fp16(28GB)の半分の VRAM で動き、画質劣化がほぼありません。Kijai 公式推奨形式です。

ただし、今回の環境の RTX4070 の 12GB VRAM に fp8 の 15GB モデルは収まらないため、WanVideoBlockSwap ノードで一部のブロックを CPU RAM に逃がしながら計算します。14B モデルは全40ブロックあり、blocks_to_swap=40(全スワップ)で問題なく動作し、30程度まで下げられるようです。prefetch_blocks=1 で先読みが効くことがあります。

生成例

ComfyUI の 5B TI2V テンプレートと、プロンプトをはじめとできるだけ条件を揃えたものが下記です。チューニングやプロンプトで 5B でも向上の余地はありそうですが、動画素材としては 14B 一択という感じです。(ここでは割愛しますが、ネガティブプロンプトもWan2.2の例をそのまま中国語でコピペして与えています)

Slow pan access a calm ocean at sunset, gentle waves, golden light reflecting on water surface
Wan 2.2_fp8_scaled による生成例。5B に比べて圧倒的な品質。
Wan 2.2 5B と ComfyUIテンプレートによる生成例。このまま使うのは難しそう。

構築時に遭遇したエラーと解決策

参考にしたワークフローでは他にも SageAttention や Triton を使った高速化が行われており、環境によってオプションを指定する必要がありました。今回は取り急ぎ下記の様に処理しています。

SageAttention が使えない

Can't import SageAttention: No module named 'sageattention'

WanVideoModelLoader の attention_modesageattnsdpa に変更。

TorchCompile の Triton エラー

TritonMissing: Cannot find a working triton installation

WanVideoTorchCompileSettings ノードを bypass(mode=4)し、両モデルローダーへの compile_args リンクを切断。

スローモーション?

低めの fps で試した結果、生成された動画がスローモーションのようになります。Wan2.2 は 24fps 前提の設計のため、24 に変更で解決しました。

速度について

fp8_scaled(15GB)は 12GB VRAM に収まらず BlockSwap が大量に必要なため生成速度は遅めです。

832×480、fps=24、フレーム数121(約5秒)の動画生成において下記の通りでした。

  • block_to_swap: 40 → 約15分
  • block_to_swap: 30 → 約13分

ここからの速度改善の選択肢としては、量子化 gguf を用いてBlockSwapの不要な組み合わせを探ることが考えられます。

方法サイズBlockSwap速度画質
fp8_scaled(現在)15GB多(20〜40)遅い高い
GGUF Q5_K_S10.1GB中(10〜20)中程度fp8 に近い
GGUF Q4_K_M9.65GB少(5〜15)速い良好
GGUF Q3_K_M7.17GBほぼ不要最速やや劣化
FastMix Q4_K_M9.65GB速いLoRA 焼き込み済み

EasyWan22/FastMix(Zuntan 氏)では GGUF Q4_K_M(Zuntan/Wan22-FastMix)+ lcm スケジューラーで VRAM 6GB〜対応を実現しており、BlockSwap をほぼ不要にしています。

使用モデル一覧

種別ファイル名配置先
HIGH noise modelWan2_2-T2V-A14B_HIGH_fp8_e4m3fn_scaled_KJ.safetensorsdiffusion_models/
LOW noise modelWan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensorsdiffusion_models/
LoRA(ステップ蒸留)lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensorsloras/
VAEwan_2.1_vae.safetensorsvae/
テキストエンコーダーumt5_xxl_fp16.safetensorstext_encoders/

モデル出典:Kijai/WanVideo_comfy_fp8_scaledKijai/WanVideo_comfy(HuggingFace)

まとめ

  • Wan2.2 A14B は HIGH/LOW noise モデルのデュアルサンプラー構成が前提。1本では画質が安定しない
  • LightX2V LoRA でステップ数を6まで削減できる
  • VAE は Wan2.1 を使う(Wan2.2 VAE ではチャンネルミスマッチエラー)
  • fp8_scaled は画質最優先。速度重視なら GGUF 量子化モデルも選択肢
  • 12GB VRAM 環境では BlockSwap をフル活用(blocks_to_swap=40)
  • seed の再現性には HIGH sampler の seed のみ記録すれば十分

次回は、A14B の Image-to-Video(I2V)を同じ構成で動かし、構図をコントロールした BGV 素材の生成に挑戦します。

タイトルとURLをコピーしました