[開発者向け]NVIDIA AlpaGymで自動運転モデルをクローズドループ強化学習する方法

目次

はじめに

 NVIDIAが2026年5月31日、自動運転(AV)モデルのクローズドループ後処理訓練(ポストトレーニング)フレームワーク「AlpaGym」の使い方を公式ブログで解説しました。本稿では、AlpaGymのインストールから報酬設計、学習の起動、チェックポイントの書き出しまで、実装手順を紹介します。

参考記事

関連記事

あわせて読みたい
[開発者向け]NVIDIAの「Physical AI Data Factory Blueprint」とは?ロボット・自動運転の学習データ... はじめに  NVIDIAは2026年3月16日、GTC 2026において「Physical AI Data Factory Blueprint」を発表しました。本稿では、ロボット・自律走行車・ビジョンAIエージェン...
あわせて読みたい
[ニュース解説]NVIDIAがロボット大手と連携——フィジカルAIが製造・医療現場へ本格展開 はじめに  NVIDIAは2026年3月16日、GTCカンファレンスにてロボティクス業界のグローバルリーダーとの連携強化を発表しました。新たなシミュレーションフレームワークや...

要点

  • NVIDIAのAV開発基盤「Alpamayo」に含まれるAlpaGymは、シミュレーター「AlpaSim」と訓練ループを直接接続し、モデルが自分の行動の結果から学習するクローズドループ強化学習(RL)を実現するフレームワークである
  • オープンループ訓練ではモデルの出力を正解行動と直接比較するだけだが、クローズドループではブレーキ・ステアリング・進路変更などの操作が次の環境状態に影響するため、静的なデータセットでは検出できない失敗パターンを学習できる
  • AlpaGymはAlpaSim、NVIDIA Physical AI Open Datasets、分散強化学習フレームワークCosmos-RLを統合し、シングルGPUからマルチノードGPUクラスターまでスケールする非同期分散RLパイプラインを備える
  • セットアップ・報酬定義・学習起動・チェックポイント書き出しの4ステップで実装できる
  • NVIDIAはCVPR 2026でAlpaSimクローズドループE2E走行チャレンジおよびPhysical AI AV推論チャレンジの2つの公開コンペを開催している

詳細解説

オープンループとクローズドループの違い

 自動運転ポリシーの訓練で長らく主流だったのは「オープンループ」方式です。これはモデルの出力を記録済みの専門家軌跡と直接比較するもので、シミュレーター上での実際の走行フィードバックは考慮されません。

 一方、実際の走行(デプロイ)では、すべての操作が次の環境状態に影響を与えます。小さな予測ミスが時間とともに積み重なると、静的なデータセット評価では現れない重大な失敗パターンに繋がる可能性があります。これがオープンループ訓練と実運用の間に生じる「ギャップ」です。

 AlpaGymはAlpaSim上のクローズドループロールアウトを訓練ループに直接接続することで、このギャップを埋めるアプローチを取っています。モデルが自分の行動の結果を観測しながら学習できるため、「実際に走ると崩れる」という挙動を早期に検出・修正できると考えられます。

AlpaGymのアーキテクチャ

 AlpaGymは次の3つのコンポーネントを統合した構成になっています。

  • AlpaSim:マイクロサービス形式のAVシミュレーター
  • NVIDIA Physical AI Open Datasets:Hugging Faceで公開されているAV向けデータセット群(NuRecデータセットを含む)
  • Cosmos-RL:NVIDIAが開発した分散RLトレーニングフレームワーク

 訓練の流れは次のとおりです。ホストプロセスがAlpaSimを起動し、ロールアウトワーカーがポリシードライバーを公開します。AlpaSimがシミュレーターセッションを実行し、AlpaGymがロールアウトアーティファクトと報酬をトレーナーに返します。デフォルトアルゴリズムはGRPO(Group Relative Policy Optimization)で、シングルGPUからマルチノードGPUクラスターまでユーザーコードの変更なしにスケールします。

前提条件・環境構成

 AlpaGymを利用するには以下の環境が必要です。

  • CUDA対応GPU(シングルGPU構成から利用可能)
  • Ubuntu系Linux環境(Dockerfileも提供されている)
  • Hugging Faceアカウント(シーンアーティファクトのダウンロードに必要)
  • uv(Pythonパッケージ・プロジェクト管理ツール)
  • ホスト側の依存パッケージ:cuDNN、NCCL、Redis

Step 1: インストールと設定

 AlpamayoリポジトリのチェックアウトからAlpaGymをインストールします。まずホスト側のCUDA依存パッケージとRedisをインストールし、次にuvワークスペースを同期します。

注意: NVIDIAのビルドツールであるuv(pipやpoetryとは別物)を事前にインストールしてください。またcuDNN・NCCLはCUDAモデルスタックで使用されるホスト依存パッケージのため、pip installではなくaptで導入します。

# ホスト側の依存パッケージをインストール
sudo apt-get update
sudo apt-get install -y libcudnn9-dev-cuda-12 \
  libnccl-dev=2.26.2-1+cuda12.8 libnccl2=2.26.2-1+cuda12.8 \
  redis-server git-lfs

# Git LFSを初期化してプルする
git lfs install
git lfs pull

# Hugging Faceにログイン(シーンアーティファクトのダウンロードに必要)
huggingface-cli login
# または環境変数を使う場合:
# export HF_TOKEN=...

# uvワークスペースをすべてのパッケージを含めて同期する
uv sync --all-packages

 PythonのパッケージはuvがAlpamayoリポジトリ内のワークスペース定義をもとに管理します。Dockerfileも用意されているため、ホスト依存のインストールを避けたい場合はそちらを利用するのも選択肢です。

 AlpaGymの実行設定はHydra(YAMLベースの設定管理ライブラリ)で記述します。設定ファイルには、ポリシーチェックポイント、AlpaSimのシーンセット、ロールアウト並列数、報酬関数、Cosmos-RLの訓練パラメータを指定します。

Step 2: クローズドループ報酬の定義

 報酬関数はクローズドループで改善したい行動に対応させて設計します。軌跡品質の後処理訓練でよく使われる報酬要素には、進行速度(progress)、車線維持、衝突回避、路外逸脱率、乗り心地、参照軌跡との距離などがあります。

 参考記事では、まずシンプルな報酬から始めることを推奨しています。以下は「進行速度の最大化」と「安全上の重大な失敗へのペナルティ」を組み合わせたYAML定義の例です。

# reward/progress_safety.yaml
# 報酬関数の設定ファイル。terms以下に各報酬要素を列挙する
terms:
  - kind: metric
    metric_name: progress      # 進行速度を最大化する報酬
    scale: 1.0
  - kind: metric
    metric_name: collision_any # 衝突時のペナルティ
    scale: -10.0
  - kind: metric
    metric_name: offroad       # 路外逸脱時のペナルティ
    scale: -5.0

 パイプラインが安定したら、AlpaSim動画やメトリクスで観測された失敗モードに応じて、より細かい報酬要素を追加していく流れになります。

Step 3: クローズドループ訓練の起動

 モデルチェックポイントからAlpaGym訓練を開始します。以下はAlpamayoモデルを使った例です。

uv run -m alpagym_host.cli \
  policy=alpamayo \
  policy.model.kind=alpamayo_r1 \
  policy.model.path=/path/to/checkpoint \  # チェックポイントのパスを指定
  reward=progress_safety                   # Step 2で定義した報酬設定ファイル名を指定

 このコマンドでシングルGPU上のAlpaGymとAlpaSimが起動します。訓練中は以下のシグナルを監視することで学習が正常に進んでいるか確認できます。

  • 平均報酬・報酬分散
  • 失敗率
  • ポリシーロス
  • ロールアウトスループット
  • 生成済みロールアウトと最新ポリシーウェイトのギャップ

Step 4: 後処理チェックポイントの書き出し

 訓練後、AlpaGymが生成したチェックポイントとconfig設定ファイルをAlpaSimドライバーがアクセスできるフォルダ(例: Hugging Faceモデルキャッシュ)に配置します。次に、そのフォルダパスを指定した新しいドライバー設定YAMLを作成します。以下は設定例です。

# ドライバー設定YAML(カスタムパスの指定箇所)
...
model:
  model_type: alpamayo1
  checkpoint_path: "/root/.cache/huggingface/alpasim_models/alpamayo1_CLRL/step_NNNNNN"
  # step_NNNNNNは実際の訓練ステップ番号に置き換える
  device: "cuda"
...

 設定後、代表的なシナリオで書き出したモデルを実行し、ポリシー・ドライバー・シミュレーションループが正しく接続されているか確認します。

uv run alpasim_wizard \
  deploy=local \
  topology=1gpu \
  driver=alpamayo1_CLRL \                     # 作成したドライバー設定名
  wizard.log_dir=$PWD/tutorial_alpamayo_CLRL \
  scenes.scene_ids=[clipgt-9ea70552-6dcb-4ee8-a368-9a906a333f6e]
  # scenes.scene_idsには評価したいシーンのIDを指定する

 クローズドループロールアウトからは、軌跡の安定性・走行可能領域への収まり具合・周辺車両への反応・後処理訓練で改善すべき失敗モードといった定性的なシグナルが得られます。

まとめ

 AlpaGymはオープンループ訓練とデプロイ間のギャップを埋めるための実用的な手段として位置づけられています。シミュレーターフィードバックを訓練ループに直接組み込むことで、静的データセットでは見えにくい失敗パターンを学習できる点が特徴だと思います。NVIDIAが公開しているPhysical AI Data Factory Blueprintもあわせて参照すると、データ生成から訓練まで一連の流れを理解しやすいと思います。


この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次