0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wan 2.2入門 — MoEで動画生成するAlibaba製OSSモデルをPythonで活用する

0
Last updated at Posted at 2026-03-31

はじめに

Alibaba Tongyi Labが公開したWan 2.2は、動画生成AIの世界で新しいアーキテクチャを採用したオープンソースモデルです。従来の動画生成モデルが単一ネットワークで処理していたのに対し、Wan 2.2は世界初のオープンソースMoE(Mixture-of-Experts)アーキテクチャ動画生成モデルです(公式アナウンス)。

GitHubリポジトリは公開後すぐに14,000超のスターを獲得し、ライセンスはApache 2.0のため商用利用も可能です。

この記事では、Wan 2.2の技術的な仕組みとPythonによる実装方法を解説します。

この記事で学べること

  • Wan 2.2のMoEアーキテクチャの仕組み
  • テキスト→動画(T2V)の基本的な使い方
  • 画像→動画(I2V)の実装方法
  • 各モデルバリアントの選び方とVRAM要件

対象読者

  • AI動画生成ツールに興味があるエンジニア
  • オープンソースの動画生成モデルを試したい方
  • Diffusersライブラリを使ったPython実装に慣れた方

前提環境

  • Python 3.10以上
  • PyTorch 2.4以上
  • CUDA対応GPU(VRAM 24GB以上推奨:A100, H100, RTX 4090等)
  • diffusers, transformers, accelerate, imageio ライブラリ

TL;DR

  • Wan 2.2は動画生成初のMoEモデル(27Bパラメータ、推論時14B活性化)
  • Apache 2.0ライセンスで商用利用可能
  • T2V・I2V・TI2V・S2V・Animateの5バリアントを用意
  • HuggingFace Diffusers経由で数行のPythonコードで動作

Wan 2.2とは

Wan 2.2はAlibaba Tongyi Labが公開した動画生成モデルです。最大の特徴は、オープンソース動画生成モデルへのMoEアーキテクチャ初導入にあります。HuggingFaceのモデルページによれば、Wan-Bench 2.0において主要な商用モデルをほとんどの評価軸で上回る性能を示しています。

MoEアーキテクチャが動画生成にもたらす変化

LLMの世界では、Mixtral(Mistral AI)やDeepSeek V3などがMoEを採用し「少ないパラメータで高い性能」を実現してきました。Wan 2.2はこの手法を動画生成ディフュージョンに応用しています。

具体的には、2種類のエキスパートネットワークがノイズ除去の段階に応じて役割を分担します:

エキスパート 担当フェーズ 処理内容
High-Noiseエキスパート 初期段階(高ノイズ) 動画全体のレイアウト・構成・被写体の位置関係を決定
Low-Noiseエキスパート 後半段階(低ノイズ) 照明・色彩・テクスチャ・細部の品質を向上

総パラメータ数は27Bですが、各推論ステップでは**約14B(アクティブパラメータ)**のみが動作します。これにより、性能を維持しながら推論の効率化を実現しています。

スペック概要

項目
総パラメータ 27B
活性パラメータ(推論時) ~14B
解像度 480P / 720P(1280×720)
フレームレート 24fps
ライセンス Apache 2.0
GitHubスター 14,932(2026-03-17時点)

モデルラインナップ

Wan 2.2には4つの主要モデルバリアントがあり、用途に応じて選択できます。

Wan2.2-T2V-A14B(テキスト→動画)

テキストプロンプトから480P/720Pの動画を生成するメインモデル。A14Bはアクティブ14Bパラメータを意味します。

# HuggingFaceモデルID
Wan-AI/Wan2.2-T2V-A14B-Diffusers

必要VRAM: 約80GB(フル精度)/ 約40GB(BF16)

Wan2.2-I2V-A14B(画像→動画)

参照画像を起点にして動画を生成します。既存の静止画をアニメーション化するユースケースに適しています。

# HuggingFaceモデルID
Wan-AI/Wan2.2-I2V-A14B-Diffusers

Wan2.2-TI2V-5B(テキスト+画像→動画)

テキストプロンプトと参照画像を組み合わせて動画を生成する軽量版モデル(5Bパラメータ)。RTX 4090(24GB VRAM)で動作するため、コンシューマーGPUでも利用可能です。

# HuggingFaceモデルID
Wan-AI/Wan2.2-TI2V-5B-Diffusers

必要VRAM: 約24GB(BF16)

Wan2.2-S2V-14B(音声→動画)

音声データを入力として動画を生成します。音声に合わせたリップシンク動画や、音楽に連動した映像制作に活用できます。音声の長さに合わせて動画尺が自動調整されます。

# HuggingFaceモデルID
Wan-AI/Wan2.2-S2V-14B

Wan2.2-Animate-14B(キャラクターアニメーション)

参照画像のキャラクターを保持しながらアニメーションさせます。2025年9月19日に追加公開されたバリアントで、Diffusers統合済みです。

# HuggingFaceモデルID
Wan-AI/Wan2.2-Animate-14B-Diffusers

インストールと環境構築

pip install diffusers transformers accelerate imageio[ffmpeg] torch torchvision

HuggingFace Hubからモデルをダウンロードするため、初回実行時はネットワーク接続と十分なディスク容量(T2V-A14Bで約30GB)が必要です。


テキストから動画生成(T2V)

WanPipelineクラスを使ったテキスト→動画の基本実装です。

from diffusers import WanPipeline, AutoencoderKLWan
import torch
import imageio
import numpy as np

# モデルのロード
# VAEは精度の問題からfloat32で読み込む
vae = AutoencoderKLWan.from_pretrained(
    "Wan-AI/Wan2.2-T2V-A14B-Diffusers",
    subfolder="vae",
    torch_dtype=torch.float32
)
pipe = WanPipeline.from_pretrained(
    "Wan-AI/Wan2.2-T2V-A14B-Diffusers",
    vae=vae,
    torch_dtype=torch.bfloat16
)
pipe.to("cuda")

# 動画生成
prompt = "A majestic eagle soaring over snow-capped mountains, cinematic shot, 4K quality"
negative_prompt = "blurry, low quality, distorted, watermark"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=720,
    width=1280,
    num_frames=81,          # 約3.4秒(24fpsの場合)
    guidance_scale=4.0,
    num_inference_steps=40,
    generator=torch.Generator("cuda").manual_seed(42)
)

# 動画の保存
frames = output.frames[0]  # List[PIL.Image]
imageio.mimsave(
    "output.mp4",
    [np.array(f) for f in frames],
    fps=24,
    quality=8
)
print("動画を output.mp4 に保存しました")

パラメータの解説

パラメータ 推奨値 説明
height / width 720 / 1280 解像度(720P推奨)
num_frames 81 フレーム数(24fpsで約3.4秒)
guidance_scale 4.0〜7.0 プロンプト追従度(高いほど指示に忠実)
num_inference_steps 30〜50 ステップ数(多いほど高品質・低速)

画像から動画生成(I2V)

WanImageToVideoPipelineを使うと、静止画を入力として動画化できます。

from diffusers import WanImageToVideoPipeline, AutoencoderKLWan
from diffusers.utils import load_image
import torch
import imageio
import numpy as np

# モデルのロード
vae = AutoencoderKLWan.from_pretrained(
    "Wan-AI/Wan2.2-I2V-A14B-Diffusers",
    subfolder="vae",
    torch_dtype=torch.float32
)
pipe = WanImageToVideoPipeline.from_pretrained(
    "Wan-AI/Wan2.2-I2V-A14B-Diffusers",
    vae=vae,
    torch_dtype=torch.bfloat16
)
pipe.to("cuda")

# 入力画像のロード
image = load_image("https://example.com/input_image.jpg")

# 動画生成
output = pipe(
    image=image,
    prompt="The flower slowly blooms, petals opening gently in morning light",
    height=720,
    width=1280,
    num_frames=81,
    guidance_scale=5.0,
    num_inference_steps=40,
    generator=torch.Generator("cuda").manual_seed(42)
)

# 動画の保存
frames = output.frames[0]
imageio.mimsave(
    "image_to_video.mp4",
    [np.array(f) for f in frames],
    fps=24,
    quality=8
)
print("動画を image_to_video.mp4 に保存しました")

メモリ最適化:大きなモデルをVRAMに収める

T2V-A14BはデフォルトでVRAMを多く消費します。メモリが限られている環境向けの最適化オプションを以下に示します。

import torch
from diffusers import WanPipeline, AutoencoderKLWan

vae = AutoencoderKLWan.from_pretrained(
    "Wan-AI/Wan2.2-T2V-A14B-Diffusers",
    subfolder="vae",
    torch_dtype=torch.float32
)
pipe = WanPipeline.from_pretrained(
    "Wan-AI/Wan2.2-T2V-A14B-Diffusers",
    vae=vae,
    torch_dtype=torch.bfloat16
)

# CPU オフロードを有効化(VRAMが少ない場合)
pipe.enable_model_cpu_offload()

# または sequential CPU offload(さらにVRAMを節約)
# pipe.enable_sequential_cpu_offload()

# VAE のスライス処理(VRAM 節約)
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()

VRAM目安

  • T2V/I2V-A14B: BF16で約40GB(cpu_offloadなし)
  • TI2V-5B: BF16で約24GB(RTX 4090対応)
  • cpu_offload使用時: さらに軽量化可能(速度は低下)

軽量版:TI2V-5B をコンシューマーGPUで使う

24GBのVRAMしかない場合はTI2V-5Bが選択肢になります。

from diffusers import WanImageToVideoPipeline, AutoencoderKLWan
from diffusers.utils import load_image
import torch
import imageio
import numpy as np

# 5Bの軽量版モデルを使用
vae = AutoencoderKLWan.from_pretrained(
    "Wan-AI/Wan2.2-TI2V-5B-Diffusers",
    subfolder="vae",
    torch_dtype=torch.float32
)
pipe = WanImageToVideoPipeline.from_pretrained(
    "Wan-AI/Wan2.2-TI2V-5B-Diffusers",
    vae=vae,
    torch_dtype=torch.bfloat16
)
pipe.to("cuda")

image = load_image("input.jpg")

output = pipe(
    image=image,
    prompt="Gentle waves on the ocean, golden hour, cinematic",
    height=480,   # 5Bモデルは480P推奨
    width=832,
    num_frames=49,
    guidance_scale=5.0,
    num_inference_steps=30,
)

frames = output.frames[0]
imageio.mimsave("ti2v_output.mp4", [np.array(f) for f in frames], fps=24)

注意点

ライセンスについて

Wan 2.2はApache 2.0ライセンスで公開されており、商用利用・改変・再配布が可能です。ただし、公式リポジトリのライセンスファイルおよびモデルカードの利用規約を必ず確認してください。

プロンプトの言語

公式ドキュメントによれば、英語プロンプトを推奨しています。日本語プロンプトも入力可能ですが、英語の方が一般的に品質が安定するとされています。

生成時間の目安

H100 GPU(80GB)での参考値:

モデル 解像度 フレーム数 生成時間(目安)
T2V-A14B 720P 81フレーム 約2〜4分
TI2V-5B 480P 49フレーム 約1〜2分

環境によって大きく異なります。公式ベンチマークはGitHubのREADMEを参照してください。


まとめ

  • Wan 2.2はAlibaba Tongyi Labが公開した、動画生成初のMoEアーキテクチャを採用したOSSモデル
  • 27Bパラメータのうち推論時は14Bのみ活性化するため、効率的な動画生成を実現
  • T2V・I2V・TI2V・S2V・Animateの5バリアントがあり、用途に応じて選択できる
  • Apache 2.0ライセンスで商用利用可能
  • Diffusers統合により数十行のPythonコードで動画生成を実装できる
  • コンシューマーGPU(RTX 4090)でもTI2V-5Bバリアントが動作する

MoEアーキテクチャのLLMへの適用から始まった技術革新が、いよいよ動画生成の世界にも広がってきました。Wan 2.2はその先駆けとして、オープンソースコミュニティに大きなインパクトを与えています。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?