Wan 2.2 ローカル構築ガイド:ComfyUI、VRAM 選定、動画生成のトラブル対策

Wan 2.2 を ComfyUI または Diffusers でローカル構築し、モデル選択、CUDA、VRAM、重みの取得、出力検証、よくある障害を解説します。

Wan 2.2 は、Alibaba Wan-Video チームによってリリースされた一連のオープンソース ビデオ生成モデルです。 wan 2.2 は、Google トレンド US の「AI 動画」の上昇クエリに表示されます。ただし、ローカル展開で最も一般的な落とし穴は、起動コマンドではなく、VRAMとワークフローに適さないモデル バリアントのダウンロードです。 この記事では、最初にモデル ファミリについて説明し、次に ComfyUI と Python のルートをそれぞれ説明します。すべてのメモリ数値は、特定のモデル カード、解像度、オフロード設定で再検証する必要があります。

ダウンロードする前にモデル名

を確認してください Wan 2.2 リポジトリには、テキスト生成ビデオ、画像生成ビデオ、TI2V、Animate、S2V などのさまざまなタスクが同時にリストされる場合があります。 同じタスクの異なるパラメータ スケール、MoE、または量子化バージョンが存在する場合もあります。 モデル ファイル名が似ているからといって、それらを同じワークフロー ノードに配置できるわけではありません。 公式 README に最初に 4 つの情報を記録します:

  • タスクの種類。
  • パラメータのスケールとアーキテクチャ。
  • 推奨解像度。
  • 公式推理入口。

最初に数十 GB のファイルをダウンロードし、エラー メッセージに基づいてモデルの目的を推測しないでください。

VRAMの計画は、モデル ファイル サイズではなくピーク値に基づいています

モデルの重みはVRAMの一部にすぎません。 推論には、テキスト エンコーダー、VAE、アクティベーション、アテンション キャッシュ、出力テンソルも必要です。 解像度、フレーム数、バッチ サイズ、サンプリング ステップはすべてピーク値を変更します。 CPU オフロードによりVRAMは減少しますが、システム メモリと PCIe 転送は増加します。 量子化により重量占有率は減少しますが、必ずしもすべてのアクティベーションが前年比で減少するとは限りません。 「モデル ファイルは 14 GB なので、16 GB のグラフィック カードで十分だろう」という予算を立てないでください。

3 つのハードウェア ルートから選択する方法

24 GB を超える NVIDIA グラフィックス カードは、より完全な公式ワークフローから開始するのに適しています。 12 ~ 16 GB のグラフィックス カードでは、より小さいモデル、量子化、低解像度、または CPU オフロードを選択する必要があります。 8 GB グラフィックス カードは、短編映画や低解像度の実験に適していますが、安定した制作ベースラインとしては適していません。 マルチカードは、推論フレームワークによって明示的にサポートされている場合にのみ有効であり、CUDA_VISIBLE_DEVICES=0,1 を設定して自動的にマージすることはできません。 Pure CPU は環境とノードを検証できますが、生成速度は通常は非現実的です。 AMD、Intel、Apple Silicon のサポートは、公式リポジトリとフレームワークのバージョンに依存します。

NVIDIA ドライバーと CUDA の可視性をチェック

1
nvidia-smi

ドライバーのバージョン、グラフィックス カードのモデル、合計VRAM、および現在の使用状況を記録します。 Python 環境で PyTorch を再度確認します:

1
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'CPU')"

nvidia-smi は正常だが、torch.cuda.is_available() が false の場合は、通常、PyTorch が CPU バージョンをインストールしたか、環境が間違っていることを意味します。 Python 仮想環境の問題を隠すために、グラフィック カード ドライバーを繰り返し再インストールしないでください。

Wan 2.2 用の独立した Python 環境を作る 用の独立した Python 環境を作る 用の独立した Python 環境を作る 用の独立した Python 環境を作る

1
2
3
python -m venv .venv-wan22
.\.venv-wan22\Scripts\Activate.ps1
python -m pip install --upgrade pip setuptools wheel

用のスタンドアロン Python 環境を作成する Linux:

1
2
3
python3 -m venv .venv-wan22
source .venv-wan22/bin/activate
python -m pip install --upgrade pip setuptools wheel

ComfyUI、カスタム ノード、スタンドアロンの Diffuser プロジェクトを同じグローバル Python に詰め込まないでください。 依存関係が競合する場合、システム全体を強制的にダウングレードするよりも、隔離された環境の方が回復が簡単です。

公式リポジトリのクローンを作成し、コミット

1
2
3
git clone https://github.com/Wan-Video/Wan2.2.git
cd Wan2.2
git rev-parse HEAD

をロックします。 まず、インストール コマンドとモデル テーブルに関する最新の README をお読みください。

1
2
git status --short
git log -1 --oneline

チュートリアルがリポジトリの更新と同期していない場合、コミット SHA によって、実際に使用しているバージョンがわかります。 初めて成功するまで、未検証の PR ブランチを追跡しないでください。

PyTorch をインストールする際は、公式サポートの組み合わせ

と一致します。 まず、公式の PyTorch インストール ページに移動して、オペレーティング システム、パッケージ マネージャー、CUDA のバージョンを選択します。 この例のコマンドは、現在のドライバーがないとコピーできません:

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

cu128 は単なる例です。実行前に Wan 2.2 と依存関係のサポートを確認してください。 インストール後、CUDA 可視性チェックを再度実行します。 次に、リポジトリの要件に従って依存関係をインストールします:

1
pip install -r requirements.txt

モデルのダウンロード ディレクトリには十分なスペースが必要です

ウェイト、テキスト エンコーダ、VAE、キャッシュは数十 GB を占有する場合があります。 ダウンロード前にご確認ください:

1
2
df -h
du -sh ~/.cache/huggingface 2>/dev/null || true

Windows:

1
Get-PSDrive -PSProvider FileSystem

Hugging Face キャッシュを大容量ディスクに配置します:

1
$env:HF_HOME = "D:\hf-cache"

環境変数が現在の端末に対してのみ有効な場合、新しいウィンドウを開くとデフォルトの場所に再ダウンロードされます。

Hugging Face CLI を使用して、指定されたリポジトリ

1
2
pip install -U "huggingface_hub[cli]"
huggingface-cli login

をダウンロードします 公式モデルカードにリストされているリポジトリのみをダウンロードし、類似した名前を持つ未知のイメージを使用しないでください。

1
2
huggingface-cli download <official-model-repository> \
  --local-dir ./models/wan22

プレースホルダーを、現在公式 README に記載されているモデル ID に置き換えます。 ダウンロード後にファイルリストとサイズを保存します:

1
find ./models/wan22 -type f -printf '%P %s\n' | sort > wan22-files.txt

ComfyUI ルート: 最初にコアを更新してから、ノード

をインストールします 既存の ComfyUI をバックアップします:

1
2
git -C ComfyUI status --short
git -C ComfyUI rev-parse HEAD

ユーザーによる変更がある場合は、直接プルしないでください。 新しいディレクトリで更新されたバージョンをテストするか、最初にパッチを保存します。

1
2
3
git clone https://github.com/comfyanonymous/ComfyUI.git ComfyUI-Wan22
cd ComfyUI-Wan22
python -m pip install -r requirements.txt

Wan 2.2 ネイティブ ノードのサポートは、ComfyUI の現在のバージョンと公式ワークフローの対象となります。

モデル ファイルは、ノード

によって実際に読み取られるディレクトリに配置する必要があります。 ComfyUI の共通ディレクトリには次のものが含まれます:

1
2
3
4
ComfyUI/models/diffusion_models/
ComfyUI/models/text_encoders/
ComfyUI/models/vae/
ComfyUI/models/clip_vision/

ワークフローが異なれば、ディレクトリとファイルの種類に対する要件も異なります。 すべてのファイルを checkpoints に置かないでください。 ワークフローを開いた後、ノードのドロップダウン ボックスにモデルがありません。まず ComfyUI 起動ログでスキャンパスを確認します。 ComfyUI を再起動し、ブラウザを更新します。

追加のモデル パスを使用して、ディスク使用量の重複を回避します

extra_model_paths.yaml で統合モデル ライブラリを指定できます。

1
2
3
4
5
6
wan22:
  base_path: D:/ai-models/wan22
  diffusion_models: diffusion_models
  text_encoders: text_encoders
  vae: vae
  clip_vision: clip_vision

YAML エスケープの問題を軽減するために、Windows パスではスラッシュを使用することをお勧めします。 変更後、起動ログから新しいパスが読み込まれたことを確認してください。 共有ディレクトリが読み取り専用に設定されている場合、そこにカスタム ノードを自動的にダウンロードしたり、名前を変更したりすることはできません。

公式ワークフローをインポートした後、まず欠落しているノードがないか確認します

ワークフロー JSON は、特定の ComfyUI バージョンまたはカスタム ノードに依存する場合があります。 赤いノードが表示されたら、最初にノード クラス名を記録します。 信頼できるリポジトリから対応するノードのみをインストールし、Manager にすべての検索結果をバッチでインストールさせないでください。 インストール後、リポジトリの URL を記録し、

1
2
git -C custom_nodes/<node-directory> remote -v
git -C custom_nodes/<node-directory> rev-parse HEAD

をコミットします。 カスタム ノードにはネイティブ Python を実行する権限があり、通常のソフトウェアと同様にレビューする必要があります。

最初のビデオでは低コストのパラメータ

を使用しています まず、モデルが推奨する低い解像度を選択します。 フレームレートは公式サンプル範囲内で制御されます。 バッチ サイズは 1 に設定されます。 サンプリング ステップでは、最初にサンプル値が使用され、最大値は追求されません。 構成変更の比較を容易にするためにシードを修正しました。 キューワードは、主題、アクション、単純なショットを説明します。 最初のラウンドの目標は、最終製品を作成することではなく、データ フローを検証することです。

テキスト生成ビデオのプロンプト単語構造

1
2
3
4
A red bicycle parked beside a quiet lake at sunrise.
Light fog moves slowly above the water.
The camera performs a gentle left-to-right pan.
Natural colors, realistic motion, no text, no watermark.

主題が多すぎると、一貫性が難しくなる可能性があります。 アクション、ショット、環境が個別に記述されているため、スタイルの単語を積み重ねるよりも簡単に再現できます。 モデルが否定的なプロンプト単語をサポートしている場合は、対応する入力に変形、テキスト、低品質などの制約を設定し、メインのプロンプト単語の末尾で文法を推測しないでください。

画像生成ビデオは最初に入力キャンバスを処理します

入力画像はターゲットのアスペクト比に近い必要があります。 体を端に近づけず、動きの余地を残してください。 透明 PNG のアルファ処理はワークフローに依存し、必要に応じて最初に背景を合成します。 EXIF 回転により、実際のピクセルの方向がプレビューと異なる場合があります。

1
2
3
4
5
6
from PIL import Image, ImageOps

image = Image.open("input.jpg")
image = ImageOps.exif_transpose(image).convert("RGB")
image.save("input-normalized.png")
print(image.size)

標準化したらワークフローに組み込みます。

VRAMが不足している場合は、まずどの段階でピークが発生しているかを確認してください

テキストエンコーダステージ OOM、拡散ステージ OOM、および VAE デコードステージ OOM は異なる方法で処理されます。 最後にロードされたコンポーネントのログを表示します。

1
nvidia-smi -l 1

VRAMを有効にするには、解像度とフレーム レートを下げることが最も効果的です。 モデルまたはテキスト エンコーダの CPU オフロードを有効にすると、メモリ使用量が増加します。 VAE タイル デコードはデコードのピークを軽減できますが、継ぎ目が追加されたり、時間がかかったりする可能性があります。 OOM が発生した直後に 5 つの設定を同時に変更しないでください。

Windows ページ ファイルとシステム メモリ

CPU オフロードにより、大量の RAM が消費される可能性があります。 システムのメモリが不足している場合、Windows はページ ファイルを使用するため、生成プロセスが遅くなる可能性があります。 タスク マネージャーでコミットとディスク アクティビティを確認します。 ページ ファイルを十分なスペースのある SSD に配置し、適切な上限を設定します。 システム ディスクに数 GB しか残っていないときに、大規模なモデルのダウンロードとオフロードを開始しないでください。

CUDA out of memory 後はプロセスを完全に終了する 後はプロセスを完全に終了する 後はプロセスを完全に終了する 後はプロセスを完全に終了する

以降のプロセスを完全に解放します。 一部の失敗したワークフローはVRAMを保持します。 ComfyUI キューを停止しても、Python プロセスが解放されるとは限りません。

1
2
nvidia-smi
Get-Process python -ErrorAction SilentlyContinue

プロセスを終了する前に、PID がこの ComfyUI に属していることを確認してください。 他のユーザーやトレーニング タスクのために Python を強制終了しないでください。 再起動後、確認するパラメータを 1 つだけ変更します。

No module named 通常、起動環境が不整合です

ComfyUI で使用される Python を確認します:

1
2
import sys
print(sys.executable)

ComfyUI のポータブル バージョンには、スタンドアロン Python が付属している場合があります。 システム Python に依存関係をインストールしても、自動的にポータブル環境には入りません。 ベア pip の代わりに、その環境の python -m pip install ... を使用します。

shape mismatch はほとんどがモデル コンポーネント

の混合物です 拡散モデル、VAE、テキスト エンコーダ、およびワークフローが同じモデル ファミリに属しているかどうかを確認します。 Wan 2.2 と完全な互換性を持たせるために、Wan 2.1 のコンポーネントをファイル名に基づいて推測しないでください。 定量化された重みもローダー ノードに対応する必要があります。 正式なワークフローに戻り、精密部品一式の最低限の検証を完了し、順次交換していきます。 状態辞書エラーを無視してビデオ モデルを強制的にロードしないでください。

ブラックビデオによりエンコーダの問題が初めて解消

MP4エンコードを判定する前に、生成されたフレームが正常かどうかを確認してください。 フレームを PNG としてエクスポートして確認します。 FFmpeg が存在しない場合、またはエンコーダーが失敗した場合、プレビューは空になることがありますが、推論結果はまだ存在します。

1
2
ffmpeg -version
ffprobe -v error -show_streams output.mp4

PNG も完全に黒である場合は、VAE、精度、入力範囲を再度確認してください。

生成速度は有効フレーム

に従って計算する必要があります。 ウォームアップ後の 2 回目の走行を記録します。 モデル、解像度、フレーム番号、ステップ、シード、GPU、ピークVRAM、総所要時間を保存します。

1
seconds_per_generated_frame = total_seconds / output_frames

最初のパスにはモデルの読み込みが含まれるため、キャッシュされた 2 番目のパスと直接比較することはできません。 オフロードをオンにした後の GPU 使用率の低下は必ずしもエラーではなく、メモリ転送を待機している可能性があります。

ffprobe を使用して出力

1
2
3
4
ffprobe -v error \
  -show_entries stream=codec_name,width,height,r_frame_rate,nb_frames \
  -show_entries format=duration,size \
  -of json output.mp4

を受け入れます 解像度、フレームレート、フレーム数、継続時間がワークフローに従っていることを確認します。 ブラウザで再生できるからといって、エンコードパラメータが編集ソフトウェアに適しているとは限りません。 後処理が必要な場合は、明示的な H.264 または中間エンコードに変換します。

ディスクがいっぱいになるのを防ぐためのバッチ キュー

各ビデオはプレビュー、一時フレーム、および最終的な MP4 を生成できます。 出力ディレクトリにスペース警告を設定します。 タスクを開始する前に、製品の最大数を見積もってください。 失敗したタスクの一時ディレクトリは、クリーニング後に期限切れになるように設定されていますが、Python プロセスで使用されている間は削除されません。 ファイル名には、上書きを避けるためにジョブ ID、モデル、シードが含まれています。

カスタム ノードのアップグレードはロールバック方式を採用

1
2
3
git -C custom_nodes/example status --short
git -C custom_nodes/example rev-parse HEAD
git -C custom_nodes/example pull --ff-only

アップグレードする前にワークフロー JSON を保存します。 新しいバージョンが失敗した場合、別のフォークをランダムにインストールするのではなく、記録されたコミットにフォールバックします。 ComfyUI コア、ノード、モデルをすべて同じ日にアップグレードしないでください。

ComfyUI をリモートで開くリスク

ComfyUI およびカスタム ノードは通常、認証されていないパブリック ネットワーク用に設計されていません。 デフォルトでは、ループバック アドレスのみが監視されます。 VPN または SSH トンネルを使用したリモート アクセス:

1
ssh -L 8188:127.0.0.1:8188 user@gpu-server

ポート 8188 をパブリック ネットワークに直接マッピングしないでください。 アップロードされた素材には顔、顧客のビデオ、著作権で保護されたコンテンツが含まれる場合があり、リモート ストレージにはアクセス制御とクリーンアップ ポリシーが必要です。

ワークフローを公開するときに依存関係リスト

を取り込む JSON を共有するだけでは再現には不十分です。 Also recorded:

  • ComfyUI コミット。
  • カスタム ノード リポジトリとコミット。
  • モデルのリポジトリとファイル名。
  • Python、PyTorch、CUDA のバージョン。
  • 解像度、フレーム数、ステップ、シード。
  • 量子化とオフロードを使用するかどうか。

ライセンスやアクセス制限を回避するためにモデル ファイル自体を共有しないでください。

Wan 2.2 用の独立した Python 環境を作る 用の独立した Python 環境を作る 用の独立した Python 環境を作る 用の独立した Python 環境を作る を更新する前に、ベースライン

を一度保持します。 固定画像、プロンプト、シード、ワークフローを準備します。 アップグレード後、同じタスクが生成され、ピーク時のVRAM、消費時間、出力サイズ、キー フレームが比較されます。 モデルのランダム性は、映像がピクセル テストの場合とまったく同じではないことを意味します。 完了できるかどうか、異常なちらつきやモーションクラッシュがないかどうかを確認することに重点を置きます。 パフォーマンスが低下した場合は、モデル、ノード、PyTorch をそれぞれロールバックして、変更がどのレイヤーにあるのかを特定します。

ローカル展開完了標準

  • CUDA はターゲット仮想環境で認識されます。
  • モデル タスクはワークフロー タイプと一致します。
  • ComfyUI はすべてのコンポーネントを検出します。
  • 初めての低解像度動画が完成します。
  • OOM ステージとピークメモリが記録されます。
  • ffprobe 出力パラメータは正しいです。
  • カスタム ノードのソースとコミットは追跡可能です。
  • リモート ポートはパブリック ネットワークに直接公開されません。
  • 固定ベースラインは将来のアップグレードに使用できます。

Wan 2.2 のローカル展開は、重みをディレクトリに配置するだけでは終わりません。モデル コンポーネント、ワークフロー、VRAM、メディア出力を個別に検証することによってのみ、ダウンロード エラー、ノードの非互換性、CUDA の問題、および真のモデル機能の制限を区別できます。

プロジェクト入口