単一のAMD MI300Xで動かすオープンソースの「テキスト→30秒シネマティックリール」パイプラインの構築

Dev.to / 2026/5/12

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical UsageModels & Research

要点

  • このプロジェクトは、1つの英語文から登場人物や物語、音楽、ショットごとのボイスオーバーまで含む30秒のシネマティックリールを約45分で生成する、オープンソースのテキスト→短編動画パイプラインを示しています。
  • 「Director(監督)」と「Vision Critic(視覚批評家)」を同一のQwen3.5-35Bチェックポイントを別プロンプトで再ロードする形で実現し、制作指示と生成後の再スコアリングを大幅にVRAMを節約しながら両立します。
  • 192GB HBM3(AMD Instinct MI300X)1枚に、35B MoEのディレクター、拡散、I2V MoE、音楽、TTSといった異なるモデル群を収めるため、生成フェーズごとにモデルを順次アンロードし、GPUメモリ管理を徹底してOOMを回避します。
  • 重要な工夫として、生成した各クリップを35Bビジョンモデルで再評価し、複数の観点でスコアを付けて閾値未満なら自動で再レンダリングする点が挙げられます。
  • ParaAttention FBCache、選択的なtorch.compile、ROCmの環境フラグなどの最適化により、スループットを改善しつつ品質を維持する構成になっています。

AMD x lablab ハッカソンのために作りました。英語の1文が、登場人物、ストーリー、音楽、そしてショットごとの音声ナレーション付きで、30秒のシネマティックなリールに変換されます。1台の AMD Instinct MI300X で、エンドツーエンド約45分。すべてのモデルは Apache 2.0 か MIT です。

コード: github.com/bladedevoff/studiomi300

Architecture

Diagram

Director は Vision Critic を兼ねています — 同じ Qwen3.5-35B のチェックポイントを、異なるシステムプロンプトで再ロードし、2つの役割を持たせています。VRAM を 70 GB 節約。

Why a single MI300X

192 GB の HBM3 により、4つの非常に異なるアーキテクチャを1枚のカードで順番に共有できます。35B の MoE ディレクター、4B の拡散、14B の I2V MoE、3.5B の音楽、82M の TTS です。24 GB のコンシューマ向けハードウェアでは、このスタックには 4〜5 台の別マシンを配線して使う必要があります。

フェーズ間で gc.collect() + torch.cuda.empty_cache() によってモデルをアンロードします。Director はサブプロセスで動かすため、Wan2.2 をロードする前に終了時に完全なメモリ解放が行われます。そうしないと OOM になります。

What the Vision Critic does

ほとんどの生成動画パイプラインは一度レンダリングして祈ります。こちらは、35B のビジョンモデルで各クリップを再チェックし、4つの 1〜10 の軸でスコアリングし、全体スコアが 7 未満なら再レンダリングします。

批評者(critic)は、10個の列挙された失敗ラベルのいずれかを返します: CHARACTER_DRIFT, EXTRAS_INVADE_FRAME, CAMERA_IGNORED, WALKING_BACKWARDS, OBJECT_MORPHING, HAND_FINGER_ARTIFACT, WARDROBE_DRIFT, NEON_GLOW_LEAK, STYLIZED_AI_LOOK, RANDOM_INTIMACY。各ラベルは特定のリトライ戦略へルーティングします — CHARACTER_DRIFT はより強い参照編集を起動し、CAMERA_IGNORED は動作(motion verb)を単純化し、などです。

1ショットあたり最大3回の試行。総計のウォールタイムは約30%増ですが、出力品質はそれ以上に大きく向上します。

What got optimized

Knob Speedup Note
ParaAttention FBCache (0.05) 2.00× lossless
torch.compile(transformer_2) 1.20× selective; full-graph compile は dual-expert MoE で不安定
ROCm 環境フラグ 1.10× hipBLASLt, expandable_segments, MIOpen FAST
flow_shift=5 hero / 8 b-roll quality 最初は12を使って、プラスチックのような肌になりました
FLUX.2 klein 4B vs FLUX.1-schnell ~15× 秒未満のキーフレーム

エンドツーエンド: MI300X で 720p クリップあたり 25.9 分 → 10.4 分。累積 2.5×。

What didn't work (documented in incidents.md)

  • AITER FP8 on Wan2.2 — gemm_a8w8_CK がクロスアテンションの形状(M=512, K=4096, N=5120)により、完全なパイプライングラフ内で segfault します。ROCm/aiter#2187 と一致。BF16 を採用して出荷。
  • MagCache — diffusers 0.38 のキャリブレーションカウンタが、Wan2.2 のデュアルトランスフォーマーのスケジュールで発火しません。
  • torch.compile(mode="max-autotune", fullgraph=True) — Dynamo のエラー(diffusers#12728)。
  • channels_last — Wan2.2 のトランスフォーマーは rank-5 で、channels_last は rank-4 しか対応していません。
  • Wan2.2-Lightning I2V LoRA — V1 のみ(2025年8月)、ヒーローショットでは full-step に比べて品質が低下します。

Identity without LoRA training

シネマティック動画ツールにおける標準的なアプローチは、キャラクターごとの LoRA 学習です — データセットをアップロードし、約90分待って、カスタムのアイデンティティモデルを得ます。このパイプラインは、そのステップをまるごとスキップします。

FLUX.2 [klein] の参照編集は、構成(construction)によってキャラクターのアイデンティティを固定します。キャラクターごとにマスターのポートレートを1枚用意 → 以降のすべてのキーフレームで条件付けされた参照編集を実行。微調整(fine-tuning)なしで、ショット間でもアイデンティティが一貫します。

キャラクターあたり1時間節約。データセットの準備なし。学習用コンピュートなし。機能する大きなアーキテクチャ上の賭け。

Locale-aware narration

Director は、シーンに合わせてナレーション言語を選びます。Tokyo → Japanese。Paris → French。Mumbai → Hindi。Kokoro-82M は 9言語をサポートしているため、Director が選択した時点でロケール対応ナレーションは「無料」です。

ショットごとの WAV は、ffmpeg の adelay によるクリップ開始オフセットに合わせて整列させ、音楽ベッドと -18 LUFS でミックスします。

Everything is open

コードは Apache 2.0 です。すべてのモデル — Qwen、FLUX.2、Wan2.2、ACE-Step、Kokoro — は Apache 2.0 または MIT。商用利用可能な出力が得られます。

GitHub: github.com/bladedevoff/studiomi300
HF Space: huggingface.co/spaces/lablab-ai-amd-developer-hackathon/studiomi300

フォークしてください。ビジョン批評者(vision critic)の失敗分類(failure taxonomy)は主観的なので、あなたの分類は異なるかもしれません。Director のプロンプトはドキュメンタリーとナラティブで調整できるかもしれません。ACE-Step の簡潔な説明には、diegetic(作中に存在する音)と non-diegetic のフラグを含めてもいいでしょう。

これは完成品ではありません。単一GPU上で自律的にオープンウェイトのシネマティック生成を拡張するための、動作するベースラインです。

AMD Developer Hackathon(2026年5月)に向けて一人で制作。FLUX、Wan2.2、ACE-Step、Kokoro の各チームが真面目な生成AIをオープンに保ってくれていることに感謝します。

単一のAMD MI300Xで動かすオープンソースの「テキスト→30秒シネマティックリール」パイプラインの構築 | AI Navigate