背景
フィジカルAIを実世界で使っていく際にはどこかでファインチューニング(FT)が必要であるというスタンスを(林個人は)取っている。かつ、例えば製造業の実作業を強化学習ですべて訓練させるのは現実的でないので、摸倣学習が有用と思う。そうなると大量のデータが必要になるため、Real2Sim / Domain Randomization (DR) / Sim2Realが必要になる。
DRで有用な方法として、例えば把持物体やセンサ(デファクトはカメラ)の位置 / 姿勢 / 色 / 大きさを、特定範囲内でランダムにする方法がある。ただ、それは環境が大きく変わった際の頑健性には繋がらないため、その領域知識を拡張するために世界モデルが開発されている。
内容
この領域でほぼデファクトスタンダードなNVIDIA Cosmos系統と、2026年5月に行われたGoogle I/Oで発表されたGemini Omniを試し、比較してみた。
以前に開発した双腕タスクについて推論している際の一部動画を入力とし、世界モデルによる出力を比較している。
Geminiはおいておいて、CosmosをクラウドGPUで推論させた際に色々引っかかったので、その備忘録も含めている。
入力した動画
以前、SO101を2つ使用した双腕タスク(片方のコップに入っているコーヒー豆を別のコップに移す)を撮影した動画を利用した。NVIDIA Cosmosのデモでは1秒間もない動画をインプットに使っていたため、そのくらいの秒数にとどめてみた。

世界モデルの概観
詳しい数学的処理は省いて、主に2つの領域があると思っている。
- 動画 / 画像とテキストをインプットとし、物理法則を理解したモデルが「少し先の未来」を動画として予測する、というもの
- 3D worldを生成し、インタラクティブにその世界とユーザがやり取りできるもの
前者はCosmosやOmniだし、後者は例えばGenie3などである。フィジカルAIで使えるのは、しばらく前者だと思うので、本記事の対象とした。
1.に関しては、最近はAction Chunkも一緒に予測するモデルであるWorld Action Modelが開発されている。Cosmos Policyと言うものだ。
Gemini Omniによる生成
Geminiアプリの動画生成に統合されているので、特に気をつけることはない。
生成には5~10分くらいかかり、組織版のPro契約でも一日に3回しか使えなさそうだ。
prompt
Continue the scene naturally with realistic physics and lighting. The motion progresses smoothly from the input video, preserving the spatial layout and visual style.出力動画

アームの動作、そのときのアームの相対位置関係、カップを掴んだときの感触など、結構精度よく出力してくれた。ただ、SOのエンドエフェクタは片開きなのに、動画では両開きになってしまっていた。
Omniは、今回の出力に限ったことではないが、"GenAI特有"のライティングになりがち。フォトリアルではあるのだが、気をつけないと生成したものだなという感じがめちゃくちゃ出る。ただ、今回のようにDRのためだったら特に問題はないかもしれない。
余談だが、音声も合わせて出力されていて、結構ちゃんと動作と同期した音声になっていた。
NVIDIA Cosmosによる生成
Cosmos-Predict2.5を使用した。
セッティングが結構長いので、まずは出力を見よう。
出力動画

エンドエフェクタで掴みに行くところ、アームの形状などは自然。それに、ちゃんとインプットの続きであるような動画が生成された。しかし、アームが途中で切れているようになってしまっている。下側のアームがあまり動かないと予測して、それと同じ部品はずっと固定の位置にある、という推論をしたのだろうか。
とはいえ、アームが非連続であること以外は概ね世界モデルとしての役割を十分に果たしているように感じる。
Originalのインプットと両者を比較した動画を作りましたので、見てみてください。
https://youtu.be/zEFgMvXP9mI
VRAMは40GBくらい使っていた。動画が長くなると使用量が増える?
生成には12分くらいかかった。
では、次からは具体的な環境構築・生成までのパイプラインを説明する。
推論環境
- 計算環境: Runpod上のA100 GPU
- ローカルマシン: Macbook Pro M3
Runpod設定
- コンテナイメージ: runpod/pytorch:2.8.0-py3.11-cuda12.8.1-cudnn-devel-ubuntu22.04
- コンテナディスク: 150GB(多分50GBくらいでOK)
- ボリュームディスク: 250GB(多分150GBくらいでOK)
Runpod運用の手順
上記設定にてコンテナを作成。作成時に、environmental variablesは以下のように設定した。
HF_TOKEN=hf_xxxxxxxxxxxxxxxxx
HF_HOME=/workspace/hf
HF_HUB_CACHE=/workspace/hf/hub
TRANSFORMERS_CACHE=/workspace/hf/transformers
TORCH_HOME=/workspace/torch
UV_CACHE_DIR=/workspace/uv-cache
UV_LINK_MODE=copy
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
コンテナ作成後、以下のコマンドを打って環境構築。Cosmos-Predict2.5で使用するCUDA依存Wheelがpython3.10を要求しているそうなので、本実験は3.10で行った。
set -e
cd /workspace
export HF_HOME=/workspace/hf
export HF_HUB_CACHE=/workspace/hf/hub
export TRANSFORMERS_CACHE=/workspace/hf/transformers
export TORCH_HOME=/workspace/torch
export UV_CACHE_DIR=/workspace/uv-cache
export UV_LINK_MODE=copy
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
mkdir -p /workspace/inputs /workspace/outputs /workspace/hf /workspace/torch /workspace/uv-cache
apt update
apt install -y git git-lfs ffmpeg libgl1 libglib2.0-0 build-essential curl wget nano rsync
git lfs install
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME/.local/bin/env"
rm -rf /workspace/cosmos-predict2.5
git clone --depth 1 https://github.com/nvidia-cosmos/cosmos-predict2.5.git /workspace/cosmos-predict2.5
cd /workspace/cosmos-predict2.5
uv python install 3.10
echo "3.10" > .python-version
# __about__.py欠損対策
mkdir -p cosmos_predict2
if [ ! -f cosmos_predict2/__about__.py ]; then
cat > cosmos_predict2/__about__.py <<'PY'
__version__ = "1.5.1"
PY
fi
rm -rf .venv
uv sync --python 3.10 --extra cu128
source .venv/bin/activate
# mpmath/sympy破損予防
uv pip install --reinstall mpmath==1.3.0 sympy==1.13.3
python --version
python - <<'PY'
import sys, torch, mpmath, sympy
print("python:", sys.version)
print("torch:", torch.__version__)
print("torch cuda:", torch.version.cuda)
print("cuda available:", torch.cuda.is_available())
print("mpmath:", mpmath.__version__)
print("sympy:", sympy.__version__)
PY
これでなにも問題がなければ、cosmos-predict2.5をクローンしその中でuv仮想環境をビルド。
cd /workspace/cosmos-predict2.5
source .venv/bin/activate
その次、hugging faceでログインする。これは、推論時に使用するpre-trained modelの重みをダウンロードするためである。
で、pre-trained modelを使うためには、以下のものをブラウザ上で承認申し込みしなくてはならない(即時承認されるが)
https://huggingface.co/nvidia/Cosmos-Predict2.5-2B
https://huggingface.co/nvidia/Cosmos-Reason1-7B
https://huggingface.co/nvidia/Cosmos-Guardrail1
export HF_HOME=/workspace/hf
export HF_HUB_CACHE=/workspace/hf/hub
export TRANSFORMERS_CACHE=/workspace/hf/transformers
uv tool install -U "huggingface_hub[cli]" || true
hf auth login --token "$HF_TOKEN"
hf auth whoami
SCPで動画アップロードして準備。
その後、runpod上で学習を開始する。
mkdir -p /workspace/inputs
cd /workspace/inputs
wget -O input.mp4 "DIRECT_DOWNLOAD_URL"
推論時のパラメータであるjsonファイルを、assetsからコピーしてinputsディレクトリなどに移動。keyの名前をまちがえてはいけないのでcpで移動。
cd /workspace/cosmos-predict2.5
source .venv/bin/activate
cp assets/base/robot_pouring.json /workspace/inputs/my_video2world.json
nano /workspace/inputs/my_video2world.json
jsonの中身を見て、input / promptを変更すれば任意の推論が可能である。
推論実行
cd /workspace/cosmos-predict2.5
source .venv/bin/activate
export HF_HOME=/workspace/hf
export HF_HUB_CACHE=/workspace/hf/hub
export TRANSFORMERS_CACHE=/workspace/hf/transformers
export TORCH_HOME=/workspace/torch
export UV_CACHE_DIR=/workspace/uv-cache
export UV_LINK_MODE=copy
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python examples/inference.py \
-i /workspace/inputs/my_video2world.json \
-o /workspace/outputs/my_video2world \
--inference-type=video2world
これにて、動画撮影データ→Runpodの環境構築→Runpod計算環境を使って推論→クラウドの強烈なアウトプット。
所感
世界モデルの巨匠であるCosmosは信頼性がある。今回はPredictを使ったのだが、ちゃんとインプット動画の未来予測を出力してくれた。
Geminiは質のいい動画を出力はしてくれるものの、未来予測ではなさそうな印象。
おわりに
株式会社フィジカルAI総合研究所は2026年3月に設立された新しい会社です!
フィジカルAIを使い、日本の製造業を稼げる製造業に変革し、世界にインパクトを与えに行きます。
現在、フルコミットのエンジニア / BizDev人材が必要です!
気になる方はぜひお声がけください。公式HPのお問い合わせなどからお願いいたします。
https://www.physicalairi.com/