AI動画でBGVを作る(8)|MLXでWan2.2リベンジ――5Bモデルで動画生成

AI動画でBGVを作る(7)|上位モデル比較(Wan2.2バリエーション+他モデル) — AI動画, BGV, Wan2.2 AI動画

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

第2回ではMacBook Air M5上でComfyUI + MPSを使ったWan2.2の動作検証を行いましたが、ノイズしか出力されず実用不可という結果でした。今回はアプローチを変え、Apple純正の機械学習フレームワークMLXを使ってWan2.2を動かします。

前回の振り返り:なぜComfyUI + MPSでは動かなかったか

第2回で判明した問題は以下の通りでした。

  • カスタムノードがCUDA前提で書かれている
  • MPSバックエンドの演算子カバレッジが不足(Attention、3D VAE等)
  • GGUF量子化テンソルのMPSへの変換が正しく動作しない
  • BlockSwapがCUDAメモリ管理APIに依存

要するに、PyTorchのMPSバックエンド経由ではWan2.2の動画生成に必要な演算がカバーされていないということです。

MLXとは

MLXはAppleが開発したApple Silicon向けの機械学習フレームワークです。PyTorchのMPSバックエンドとは異なり、Apple Siliconのハードウェアに直接最適化されています。

  • Unified Memory を活用: CPU/GPU間のメモリコピーが不要
  • 遅延評価: 必要な演算だけを実行
  • NumPy互換API: 既存のPythonコードからの移植が容易

画像生成(Stable Diffusion等)ではMLX版が安定して動作しており、動画生成でも同様の期待があります。

mlx-videoの導入

コミュニティからmlx-videoというMLXネイティブの動画生成パッケージが公開されています。Wan2.1/2.2、LTX-2に対応しており、PyTorch依存を完全に排除した実装です。

検証環境

  • MacBook Air M5(Unified Memory 32GB)
  • macOS Sequoia 15.x
  • Python 3.12
  • MLX 0.31.1

環境構築

# プロジェクトフォルダを作成
mkdir mlx-wan && cd mlx-wan
python3 -m venv .venv
source .venv/bin/activate

# mlx-videoのインストール
git clone https://github.com/Blaizzy/mlx-video.git repo
pip install -e ./repo

# 変換に必要なPyTorch(CPU版)
pip install torch --index-url https://download.pytorch.org/whl/cpu

モデルのダウンロードと変換

今回試すのはWan2.2-TI2V-5Bです。5Bパラメータのシングルモデルで、テキスト+画像から動画を生成できます。

# モデルのダウンロード(約21GB)
pip install huggingface_hub
python3 -c "
from huggingface_hub import snapshot_download
snapshot_download('Wan-AI/Wan2.2-TI2V-5B', local_dir='./Wan2.2-TI2V-5B')
"

# MLX形式に変換
python3 -m mlx_video.models.wan_2.convert \
    --checkpoint-dir ./Wan2.2-TI2V-5B \
    --output-dir ./Wan2.2-TI2V-5B-MLX

変換後のファイル構成:

Wan2.2-TI2V-5B-MLX/
├── config.json           # モデル設定
├── model.safetensors     # トランスフォーマー(5B)
├── t5_encoder.safetensors # T5テキストエンコーダ
└── vae.safetensors       # 3D VAEデコーダ

検証結果:Text-to-Video生成

TI2V-5Bモデルはテキストのみでも動画生成が可能です。以下の設定で実行しました。

python3 -m mlx_video.models.wan_2.generate \
    --model-dir ./Wan2.2-TI2V-5B-MLX \
    --prompt "Ocean waves crashing on a rocky shore at sunset, cinematic, 4K" \
    --width 832 --height 480 --num-frames 41 \
    --steps 40 --guide-scale 5.0 \
    --seed 42 \
    --output-path test_5b.mp4

生成パフォーマンス

項目結果
解像度832×480(41フレーム、約5秒)
T5エンコーディング81.9秒
Diffusion(40ステップ)914.9秒(約22.9秒/step)
VAEデコード185.9秒
総生成時間1187.4秒(約19.8分)
メモリ使用量Unified Memory 32GB内に収まる

動きました。 ComfyUI + MPSではノイズしか出なかったのに、MLXではクリーンな動画が出力されました。

生成品質の所感

当然といえば当然ですが、Windows環境と同じ質感が出ています。

  • 波の動きは自然で、時間的一貫性がある
  • 色彩は安定しており、第2回のようなノイズ・アーティファクトは一切なし
  • 5Bモデルでも480p解像度なら十分な品質
Wan2.2 5B + MLXでの生成例

速度の評価

  • 1枚の動画生成に約20分は実用的とは言い難い
  • ただしComfyUI + MPS(動作せず)に比べれば「動く」だけで大きな進歩
  • ステップ数を10に減らせば約5分に短縮可能(品質トレードオフあり)

ComfyUI + MPS との比較

項目ComfyUI + MPSMLX (5B)
動作× ノイズのみ◎ クリーンな動画
VRAM管理PyTorch MPS経由Unified Memory直接
生成時間約20分 (832×480)
セットアップComfyUI + 多数のカスタムノードpip install + 変換スクリプト
安定性頻繁にクラッシュ安定

なぜMLXでは動くのか

ComfyUI + MPSが動かなかった原因は、PyTorchのMPSバックエンドが動画生成に必要な演算子をカバーしていないことでした。MLXはこの問題を根本から回避しています。

  1. PyTorch非依存: MLXはApple独自のフレームワークで、MPS演算子の制約を受けない
  2. Unified Memory活用: CPU/GPU間のデータ転送が不要で、大きなモデルも効率的に動作
  3. ネイティブ実装: mlx-videoはWan2.2をMLXのAPIで直接実装しているため、CUDA→MPS変換の問題がない

まとめ

  • MacBook Air M5(32GB)でWan2.2の動画生成に成功
  • MLXフレームワーク + mlx-videoの組み合わせが鍵
  • 5Bモデルで832×480、41フレームの動画が約20分で生成可能
  • ComfyUI + MPSでは不可能だった動画生成がMLXで実現

次回は14Bモデルの4bit量子化版をMLXで試し、5Bとの品質差を検証します。

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