Cosmos 3 Edgeとは?

ロボットが実環境で柔軟に動作するためには、センサーや環境、タスクに適応できるポリシーが必要です。従来のロボットポリシーは特定のタスクにのみ機能することが多かったですが、ワールドモデル(World Model)は物理的相互作用を学習するための強力な基盤を提供します。しかし、これらのモデルはサイズが大きいため、オンデバイス環境での実行が困難でした。

NVIDIA Cosmos 3 Edgeはこの問題を解決します。このモデルは4Bパラメータのオムニモデル(Omni-Model)で、Cosmos 3ファミリーに属し、物理的世界データで事前学習されています。これにより、物体の動きや相互作用に関する基本的な理解を備えています。さらに、このモデルはNVIDIA Jetson Thorで実行できるほどコンパクトです。

本チュートリアルでは、Cosmos 3 Edgeをポストトレーニングしてロボット操作ポリシーを作成し、Jetson Thorでサーブし、閉ループシミュレーションで評価する方法を段階的に解説します。

チュートリアルの目標

  • Cosmos 3 Edgeをポストトレーニングしてロボットの行動予測
  • Jetson Thorでポリシーサーバーを起動
  • リーディングホライズン制御ループでの推論実行
  • 閉ループシミュレーションでのポリシー動作評価

すべてのステップは cosmos-framework リポジトリで再現可能で、学習済みチェックポイントはHuggingFaceで提供されています。

NVIDIA Cosmos 3 Edge model running on Jetson Thor for on-device robot control System Abstract Visual

ポストトレーニング:Cosmos 3 Edgeをロボットポリシーに変換

データ準備

このチュートリアルのポリシーは nvidia/Cosmos3-DROID データセットを使用します。このデータセットには、Franka PandaアームとRobotiqグリッパーで収集された約350時間分の76,000の成功した遠隔操作軌跡が含まれています。

データのダウンロードと準備方法は以下の通りです。

# データセットのダウンロード(成功したデモのみ)
hf download nvidia/Cosmos3-DROID --repo-type dataset --local-dir /path/to/Cosmos3-DROID

データは3段階で準備されます:

  1. アイドルフレームと非タスクフレームのフィルタリング
  2. 成功したデモの選択
  3. トレーニング中のランダムクロップ、リサイズ、カラーシフトの適用

チェックポイント変換とトレーニング実行

ベースチェックポイントを分散チェックポイント(DCP)形式に変換し、トレーニングを開始します。

# ベースチェックポイントをDCPに変換(CPUで実行、GPU不要)
python -m cosmos_framework.scripts.convert_model_to_dcp \
  -o /path/to/Cosmos3-Edge-dcp \
  --checkpoint-path Cosmos3-Edge

# ポストトレーニングの実行
bash examples/launch_sft_action_policy_droid_edge.sh

Cosmos 3 Edgeをトレーニングするには、action_policy_droid_nano.py 設定ファイルで以下の3点を変更する必要があります:

  • NANO_MODEL_CONFIGEDGE_MODEL_CONFIG に変更
  • BASE_CHECKPOINT_PATH をCosmos 3 Edge DCPチェックポイントのパスに設定
  • スクリプト名を launch_sft_action_policy_droid_edge.sh に変更

Jetson Thorへのデプロイ

ポリシーサーバーはWebSocketプロトコル(OpenPI)を介して提供されます。EdgeモデルはBF16で約9GBであり、Jetson Thorのメモリに収まります。

export HF_TOKEN=<your_token>
# Thorで実行:eagerモードを使用、Tritonカーネル未対応のためdynamo無効化
export TORCHDYNAMO_DISABLE=1
python -m cosmos_framework.scripts.action_policy_server_robolab \
  --checkpoint_path nvidia/Cosmos3-Edge-Policy-DROID \
  --port 8000 \
  --format-prompt-as-json True

# ヘルスチェック
curl localhost:8000/healthz # -> OK

スモークテスト(ロボットなし)

import numpy as np
from PIL import Image
from openpi_client.websocket_client_policy import WebsocketClientPolicy

client = WebsocketClientPolicy(host="localhost", port=8000)

observation = {
    "prompt": "put the marker in the basket",
    "observation/wrist_image_left": np.asarray(Image.open("wrist.jpg")),
    "observation/exterior_image_1_left": np.asarray(Image.open("left.jpg")),
    "observation/exterior_image_2_left": np.asarray(Image.open("right.jpg")),
    "observation/joint_position": np.zeros(7, dtype=np.float32),  # スモークテスト用
    "observation/gripper_position": np.float32(0.0),  # スモークテスト用
}

result = client.infer(observation)
actions = result["action"]  # [32, 8]: 7関節 + グリッパー、15Hz

実ロボットでの実行

def get_observation():
    return {
        "prompt": "put the marker in the basket",
        "observation/wrist_image_left": read_camera("wrist"),
        "observation/exterior_image_1_left": read_camera("left"),
        "observation/exterior_image_2_left": read_camera("right"),
        "observation/joint_position": robot.joint_positions(),  # 実際の値
        "observation/gripper_position": robot.gripper_position(),
    }

while not task_done():
    result = client.infer(get_observation())
    execute_actions(result["action"][:16], hz=15)  # 32個中16個を実行後再計画

ポリシーは状態条件付き(State-Conditioned)であるため、各再計画時に実際の関節位置から開始します。これにより、予測誤差を自己修正できます。

Post-training pipeline for robot policy using world foundation model Software Concept Art

閉ループシミュレーションでの評価

実ロボットに適用する前に、シミュレーションでポリシーを評価することをお勧めします。RoboLabはIsaac Lab-Arenaベースのベンチマークで、Cosmos 3 Edgeポリシーサーバーに接続し、120の言語条件付き操作タスクを評価できます。

# RoboLabのクローンとアセットのダウンロード
git clone https://github.com/NVlabs/RoboLab.git && cd RoboLab
git lfs pull

# シミュレーションイメージのビルドとタスクの実行
./docker/build_docker.sh latest
./docker/run_docker.sh latest
python policies/cosmos3/run.py --task BananaInBowlTask

# ヘッドレスで複数環境を実行(成功率統計)
python policies/cosmos3/run.py --task BananaInBowlTask --num-envs 10 --headless

閉ループ評価において、Cosmos 3 Edgeポリシーは22.9%の成功率を示しました。これはより大きなCosmos 3 Nano(36.8%)よりも低いですが、リアルタイムのオンデバイス推論が可能である点を考慮すると、実用的なトレードオフです。

この技術の限界または注意点

  • 計算リソース: ポストトレーニングは単一GPUのファインチューニングではなく、ファウンデーションモデルの学習です。検証済みの実行は64ノードの4×GB200で6万反復、約68時間(約17,400 GB200時間)を要します。コスト計画が必要です。
  • ハードウェア要件: Jetson Thorの他に、DGX Stationなどの高性能な学習環境が必要です。
  • データ依存性: DROIDデータセットはFranka Pandaロボットに特化しています。他のロボットプラットフォームを使用する場合は、独自のデータ収集と設定が必要です。
  • パフォーマンス低下: Nanoと比較して成功率が低いため、タスクの複雑さによってはより大きなモデルが必要になる場合があります。

日本市場での適用コンテキスト

日本の製造業やロボット工学の現場では、オンデバイスAIへの関心が高まっています。特に、クラウド依存を減らしリアルタイム制御が必要なスマートファクトリー環境では、Cosmos 3 Edgeのようなモデルは有望な選択肢となり得ます。しかし、Jetson Thorのような高価なハードウェアの導入コストや、日本語ベースのデータセット不足は解決すべき課題です。独自データを収集する際は、Pythonベースのデータ処理パイプラインを参照して効率的に管理することをお勧めします。

Closed-loop simulation evaluation of Cosmos 3 Edge policy in RoboLab Developer Related Image

まとめ:実務適用のアドバイス

Cosmos 3 Edgeは、オンデバイスロボット制御のための実用的なワールドモデルです。ポストトレーニングにより特定のロボットタスクに合わせて調整でき、Jetson Thorでリアルタイムに実行できます。閉ループシミュレーションにより、安全に性能を検証できます。

合わせて読みたい記事

次の学習ステップ

  • Cosmos 3 Edgeモデルカードを確認し、サポートされているさまざまなロボットプラットフォームを調査
  • RoboLabの120タスクをすべて実行し、ポリシーの強み/弱みを把握
  • 独自のロボットデータ収集パイプラインを構築し、LeRobot Dataset v3変換方法を学習
  • 元のチュートリアルで最新情報を確認
本コンテンツは、信頼性の高い情報源をもとにAIツールを活用して作成され、編集者によるレビューを経て公開されています。専門家によるアドバイスの代替となるものではありません。