WAN 2.2をRTX 4060(VRAM 8GB)のComfyUIで動かす
Mac版の記事ではM1 Max 64GBでWAN 2.2を動かしたが、2秒の動画に82分かかった。今回はWindows + RTX 4060(VRAM 8GB)で試す。
最終的に14B Rapid蒸留モデルの --lowvram オフロードで、111秒でこの結果が出た。
ここに至るまでに5Bモデルで3回失敗している。以下はその記録。
環境
- GPU: NVIDIA GeForce RTX 4060(VRAM 8GB)
- RAM: 32GB
- OS: Windows 11
- ComfyUI: ポータブル版
モデル選定
WAN 2.2には複数のモデルがある。
| モデル | パラメータ | 用途 | fp16サイズ |
|---|---|---|---|
| TI2V 5B | 50億 | テキスト+画像→動画 | 9.3GB |
| T2V 14B | 140億 | テキスト→動画 | 26.6GB |
| I2V 14B | 140億 | 画像→動画 | 26.6GB |
RTX 4060のVRAM 8GBだと14Bモデルはfp8でも13GB超えでまず無理。5Bモデルもfp16で9.3GBあるので収まらない。
Kijaiがfp8量子化版を配布していて、5Bモデルが5.28GBまで縮む。これなら8GB VRAMに載る。
ダウンロードするファイル
| ファイル | サイズ | 配置先 |
|---|---|---|
| Wan2_2-TI2V-5B_fp8_e4m3fn_scaled_KJ.safetensors | 5.28GB | models/diffusion_models/ |
| umt5_xxl_fp8_e4m3fn_scaled.safetensors | 6.3GB | models/text_encoders/ |
| wan2.2_vae.safetensors | 1.4GB | models/vae/ |
合計約13GB。テキストエンコーダーが6.3GBと大きいが、ComfyUIはモデルを順番にロード・アンロードするので、全部同時にVRAMに載る必要はない。
ComfyUIの起動
通常の run_nvidia_gpu.bat だとVRAMが足りない。--lowvram オプションをつけて起動する。
cd C:\works\ComfyUI_windows_portable
.\python_embeded\python.exe -s ComfyUI\main.py --lowvram
--lowvram はモデルを必要なタイミングだけVRAMにロードし、不要になったらCPU RAMに退避する。生成速度は落ちるが、OOMで止まるよりマシ。メインメモリが32GBあれば退避先は十分。
ワークフロー
公式のWAN 2.2 5B I2Vワークフローをベースに、RTX 4060向けに調整した。
ノード構成
LoadImage → Wan22ImageToVideoLatent → KSampler → VAEDecode → SaveWEBM
↑ ↑
VAELoader UNETLoader → ModelSamplingSD3
↑
CLIPLoader → CLIPTextEncode (positive/negative)
プロンプト
I2Vのプロンプトは入力画像の説明ではなく、動きの指示を書く。画像は既にモデルに渡しているので、プロンプトでは「何をさせたいか」を指定する。
negative:
ugly, blurry, low quality, worst quality, static, deformed, disfigured,
extra fingers, bad hands, bad face, watermark, text, subtitle
試行錯誤
1回目: 480x480 / 30step / CFG 5 / 画像説明プロンプト
最初は入力画像の説明をpositiveプロンプトに書いてしまった。
an anime girl with brown hair in a side ponytail, wearing a white school shirt
with a red tie, winking and making a peace sign with both hands, gentle wind
blowing her hair, cheerful expression
| 項目 | 値 |
|---|---|
| 解像度 | 480 x 480 |
| ステップ | 30 |
| CFG | 5 |
loaded completely; 5619.19 MB usable, 4856.42 MB loaded, full load: True
30/30 [00:57<00:00, 1.93s/it]
Prompt executed in 94.93 seconds
モデルは完全にVRAMに載った(full load: True)。生成は95秒。形は崩れ気味で動きもほぼなし。
2回目: 768x480 / 50step / CFG 3.5 / 画像説明プロンプト
解像度を推奨480pの768x480に上げ、ステップを50に増やし、CFGを3.5に下げて再挑戦。
| 項目 | 値 |
|---|---|
| 解像度 | 768 x 480 |
| ステップ | 50 |
| CFG | 3.5 |
loaded completely; 5418.30 MB usable, 4856.42 MB loaded, full load: True
50/50 [02:32<00:00, 3.04s/it]
loaded partially; 774.88 MB usable, 612.87 MB loaded, 731.20 MB offloaded
Prompt executed in 178.52 seconds
拡散モデルはフルロードできたが、VAEデコード時にメモリが不足して部分オフロードが発生(731MB offloaded)。結果は1回目よりさらに悪化。768x480のラテントが大きすぎて、VAEがまともに動けていない。
3回目: 480x480 / 50step / CFG 5 / 動き指示プロンプト
480x480に戻してVAEの完全ロードを確保。プロンプトを動きの指示に変更。
gentle wind blowing hair, the girl blinks and smiles, slight head tilt,
hair sways naturally
| 項目 | 値 |
|---|---|
| 解像度 | 480 x 480 |
| ステップ | 50 |
| CFG | 5 |
loaded completely; 5579.19 MB usable, 4856.42 MB loaded, full load: True
50/50 [01:35<00:00, 1.90s/it]
loaded completely; 1790.47 MB usable, 1344.09 MB loaded, full load: True
Prompt executed in 113.93 seconds
diffusion model、VAEともにフルロード。114秒で完了。プロンプトを動き指示に変えたが、品質は依然として厳しい。
5Bモデルは3回試してどれも厳しい。パラメータやプロンプトの問題ではなく、5B fp8の480x480がそもそもの品質上限。
14B Rapidモデルで再挑戦
Phr00t/WAN2.2-14B-Rapid-AllInOneというモデルがある。WAN 2.2の14Bモデルを蒸留して高速化したもので、テキストエンコーダーとVAEを1ファイルに統合したオールインワン構成。22GBある。
8GB VRAMに22GBのモデルは当然載らないが、ComfyUIの --lowvram がメインメモリにオフロードしてくれる。生成時にVRAMとメインメモリを行き来しながら推論する形になる。
ワークフロー
5Bとはノード構成が違う。AllInOneなので CheckpointLoaderSimple 1つでモデル・テキストエンコーダー・VAEが全部出てくる。
CheckpointLoaderSimple → MODEL → ModelSamplingSD3 → KSampler → VAEDecode → SaveWEBM
→ CLIP → CLIPTextEncode (positive/negative)
→ VAE → WanImageToVideo
パラメータ
蒸留モデルなのでステップ数が極端に少ない。
| 項目 | 値 |
|---|---|
| 解像度 | 480 x 480 |
| フレーム数 | 33 |
| ステップ | 4 |
| CFG | 1 |
| サンプラー | euler_ancestral |
| スケジューラー | beta |
配置先は models/checkpoints/(diffusion_models/ ではない)。
結果
Requested to load WAN21
loaded partially; 4906.73 MB usable, 4569.21 MB loaded, 11067.11 MB offloaded
4/4 [00:45<00:00, 11.46s/it]
Prompt executed in 111.41 seconds
14Bモデルのうち4569MBをVRAMに、11067MB(約11GB)をメインメモリにオフロード。4ステップで45秒、全体111秒。
5Bの結果とは段違い。造形の崩れがなく、髪が揺れて口が動いている。アニメーションは控えめだが、入力画像のキャラクターがちゃんと保持されている。
結果の比較
| 試行 | モデル | 設定 | 時間 | 品質 |
|---|---|---|---|---|
| 1回目 | 5B fp8 | 480x480 / 30step / CFG 5 | 95秒 | 崩れ+動きなし |
| 2回目 | 5B fp8 | 768x480 / 50step / CFG 3.5 | 179秒 | VAEオフロードで悪化 |
| 3回目 | 5B fp8 | 480x480 / 50step / CFG 5 | 114秒 | 崩れ+動き薄い |
| 4回目 | 14B Rapid | 480x480 / 4step / CFG 1 | 111秒 | 造形維持、髪揺れ+口動く |
5Bでステップを増やすより、14B Rapidを4ステップで回すほうが速くて品質も高い。蒸留の威力。
入力画像とプロンプトを変えた例
バニーガール衣装の全身正面画像に差し替えて、プロンプトも変更。
the girl hops in place like a bunny, bouncing up and down playfully,
bunny ear headband bouncing, cheerful jumping motion
ウサギっぽくぴょんぴょん跳ねてほしかったが、そこまでの動きは出なかった。4ステップの蒸留モデルだとプロンプトの細かい指示は通りにくい。ただ入力画像が変われば出力の雰囲気もちゃんと変わるので、画像の選び方が重要。