こんにちは、パレイド技術部です。
第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環境と同じ質感が出ています。
速度の評価
- 1枚の動画生成に約20分は実用的とは言い難い
- ただしComfyUI + MPS(動作せず)に比べれば「動く」だけで大きな進歩
- ステップ数を10に減らせば約5分に短縮可能(品質トレードオフあり)
ComfyUI + MPS との比較
| 項目 | ComfyUI + MPS | MLX (5B) |
|---|---|---|
| 動作 | × ノイズのみ | ◎ クリーンな動画 |
| VRAM管理 | PyTorch MPS経由 | Unified Memory直接 |
| 生成時間 | — | 約20分 (832×480) |
| セットアップ | ComfyUI + 多数のカスタムノード | pip install + 変換スクリプト |
| 安定性 | 頻繁にクラッシュ | 安定 |
なぜMLXでは動くのか
ComfyUI + MPSが動かなかった原因は、PyTorchのMPSバックエンドが動画生成に必要な演算子をカバーしていないことでした。MLXはこの問題を根本から回避しています。
- PyTorch非依存: MLXはApple独自のフレームワークで、MPS演算子の制約を受けない
- Unified Memory活用: CPU/GPU間のデータ転送が不要で、大きなモデルも効率的に動作
- ネイティブ実装: 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との品質差を検証します。



