画像・動画生成

MacでDIAMONDを実行する: CSGOワールドモデルをMPSで操作する

移動や視点操作を入力すると、AIが次のゲーム画面を生成します。

DIAMONDはプレイヤーの操作を受け、拡散ワールドモデルで次のゲーム画面を生成します。このガイドでは元のeloialonso/diamondリポジトリのcsgoブランチを使い、Apple SiliconでMPSのCPU1 fallbackを有効にして操作画面を開きます。

実行条件と要点
  • このレシピは元リポジトリのcsgoブランチを使い、Atari用の--pretrainedコマンドとは分けます。
  • コマンドはモデルとスポーン地点のデータを取得し、操作画面を開いて端末に操作方法を表示します。

操作を受けて次のゲーム画面を作るモデルです

DIAMONDは現在のゲーム画面とプレイヤーの操作をもとに次のフレーム2を作る拡散ワールドモデルです。研究用のCSGOブランチでは、操作を入力するとモデルが次のフレームを生成し、場面を続けます。以下ではMacで操作できるこのCSGO経路を使います。

Macでは元のeloialonso/diamondリポジトリのcsgoブランチを使います。MPSが対応しない演算をCPUに渡す設定を有効にすると、モデルが生成した場面の中で移動や視点操作を試せます。

海岸道路を走る自転車の場面が、開始画像と連続フレームで並んでいる
ワールドモデルは入力された操作に続く次の画面を生成します。

元のCSGOブランチを準備します

Apple Silicon搭載Macとcondaが必要です。プロジェクトはPython 3.10環境を指定しており、CSGOプレイ経路は初回実行時にHugging Faceからモデル重み、スポーン地点、プレイヤー操作データを取得します。公開されている重みの容量は1.5GBです。この経路にAtari ROMは含まれません。

元リポジトリのCSGOブランチをインストール
git clone https://github.com/eloialonso/diamond.git
cd diamond
git switch csgo
conda create -n diamond python=3.10 -y
conda activate diamond
python -m pip install -r requirements.txt
元リポジトリをcloneして依存関係を導入します。

MPS fallbackを有効にして操作画面を開きます

Apple SiliconでMPSが処理できないPyTorch3演算をCPUに渡せるよう、環境変数を指定します。下の設定はこのコマンドの実行時だけ有効です。初回はモデルファイルを取得するため、インターネット接続と保存容量が必要です。

CSGOワールドモデルを実行
PYTORCH_ENABLE_MPS_FALLBACK=1 python src/play.py
端末に使用デバイスと操作方法が表示されたらEnterキーを押して開始します。

生成されたゲーム画面は操作可能なウィンドウに表示されます。起動が止まったら端末の最初のtracebackを確認し、リポジトリ内にいることとgit branch --show-currentの結果がcsgoであることを確認します。

Atariの例はROMの利用権を先に確認します

Atariの例も試すなら、デフォルトブランチの事前学習済みモデルを使えます。この経路は依存関係の導入時にAtari ROMも取得するため、先にROMの利用ライセンスを確認してください。利用権を確認した場合に限り、次の手順へ進みます。

ROM利用権を確認した後に選ぶAtariの別経路
git switch main
conda create -n diamond-atari python=3.10 -y
conda activate diamond-atari
python -m pip install -r requirements.txt
python src/play.py --pretrained
デフォルトブランチのAtariワールドモデルとエージェントを実行する例です。CSGOのMPSコマンドとは別の経路です。
机の上のフィルムストリップに、自転車で進む人物の連続場面が並んでいる
連続フレームを見ると、モデルが動きをどう続けるか確認できます。

初回起動のエラーと画面状態を確認します

No module named ...が表示されたら、diamond conda環境が有効か確認し、その環境でrequirementsが導入済みか調べます。モデルの取得が中断した場合は、エラーに示されたHugging Faceファイルを再取得できるよう接続と空き容量を確認し、同じ実行コマンドを再入力します。MPS演算エラーでは、コマンドの前にPYTORCH_ENABLE_MPS_FALLBACK=1を付けたか確認します。

起動ログのdeviceがmpsならMacのGPU4を使っています。cpuが選ばれている場合は画面更新が遅くなるため、まずPyTorchのMPS対応を確認してください。

ほかのワールドモデルも試してみましょう

DIAMONDの操作画面を試したら、ほかのモデルが受け取る入力も比べてみてください。ワールドモデル入門では6つのプロジェクトの用途を説明しています。RTX 5090でゲームエンジンとAI描画を組み合わせるなら、Matrix-Game 4.0ガイドへ進めます。

小型デスクトップPCにつながるモニターにコードと会話画面が表示されている
プレイ画面では操作を変えながら、次の画面がどう変わるか試せます。

用語の注釈

  1. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る
  2. フレーム — 動画を構成する1枚の画像です。

    本文に戻る
  3. PyTorch — AIモデルを作成・実行するソフトウェアフレームワークです。モデルと合わせて、対応するPyTorchの版やハードウェアも確認します。

    本文に戻る
  4. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
DIAMONDはプレイヤーの操作を受け、拡散ワールドモデルで次のゲーム画面を生成します。このガイドでは元のeloialonso/diamondリポジトリのcsgoブランチを使い、Apple SiliconでMPSのCPU fallbackを有効にして操作画面を開きます。
条件と出典はどこで確認できますか?
Atariの例も試すなら、デフォルトブランチの事前学習済みモデルを使えます。この経路は依存関係の導入時にAtari ROMも取得するため、先にROMの利用ライセンスを確認してください。利用権を確認した場合に限り、次の手順へ進みます。