AY-Robotsの試用ページ: ロボットを所有せずに開始する3つの方法。ポリシー推論のためにGPUをレンタルすることを含む
GR00T N1.7リモート推論クラウドGPULeRobotSO-100レイテンシ

ローカルGPUなしでGR00T推論を実行する

AY-Robots ResearchAugust 23, 202619分で読めます

お使いのロボットマシンにはGPUがありません。GR00TポリシーサーバーをレンタルしたクラウドGPUに配置し、アクションチャンクをアームにストリーミングし、ネットワークがどれくらいのコストになるかを正確に把握します。

Raspberry Piは、シリアルバス経由でを駆動し、2台のUSBカメラからフレームを取得するのに十分です。しかし、30億パラメータのを実行するには不十分です。NVIDIAのREADMEによると、GR00T N1.7の推論には16 GB以上のVRAMを搭載したGPUが1枚必要です。カードを購入せずに、ファインチューニングされたのチェックポイントがアーム上で何をするかを確認するには、ポリシーをレンタルしたクラウドGPUに配置し、ロボットループをUSBポートのあるマシン上で実行し、観測データとアクションチャンクをネットワーク経由で送信します。

この方法は機能しますが、無料ではなく、タスク間でコストが均等に分散されるわけではありません。以下に、NVIDIA独自のポリシーサーバー、lerobotの非同期スタック、アップリンクが十分に高速であるかを事前に判断する計算、およびプラットフォームルートについて説明します。これらすべては、2026年8月23日時点のIsaac-GR00Tメインブランチ(N1.7 GA)とlerobot 0.6.1に対して検証済みです。

知っておくべきこと

  • GR00T N1.7、GR00T N1.5、Pi0.5は、およそ30億パラメータのモデルです。いずれもディスクリートGPUなしではロボットコントローラに収まりません。
  • Isaac-GR00Tとlerobotはどちらもクライアント・サーバー分離型で提供されます。トランスポート層を記述する必要はありません。
  • ワイヤーコストを支配するのはアクションではなく観測データです。非圧縮の640x480 RGBフレーム2枚は1,843,200バイト、1回の呼び出しあたり約14.7 Mbitであり、どちらのスタックもこれらを圧縮しません。
  • AY-Robotsは、モデルごとにアクションステップあたり20から485 msと記載しています。これにインターネットのラウンドトリップ時間が加算されます。
  • リモート推論は、高速な反応動作ではなく、低速なピックアンドプレースに適しています。実行ホライズンを長くすると時間を稼げますが、観測データの鮮度が犠牲になります。
  • どちらのサーバーも出荷時のままではパブリックIP上で安全ではなく、lerobotには未パッチのRCEが含まれています。トンネルを使用してください。

ポリシーがロボットマシンに収まらない理由

AY-Robotsがトレーニングできる5つのポリシーのうち2つはワークステーションカードで動作し、3つは動作しません。以下の列はアクションステップごとの値であり、これはネットワークのラウンドトリップと競合する数値です。

ポリシーパラメータアクションステップあたりの推論時間トレーニング用GPUティア最小エピソード数データセット形式
GR00T N1.7~3 B、ファインチューニング中にトレーニングされた~40 M152 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5~3 B165 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5~3 B、PaliGemmaバックボーン485 msA100 80 GB or H100 80 GB50LeRobot v3.0
SmolVLA~450 M245 msRTX 4090または任意の24 GBカード30LeRobot v3.0
ACT~80 M20 msRTX 4090または任意の24 GBカード50LeRobot v3.0
The AY-Robots policies page comparing the five trainable policies by parameters, GPU tier, inference latency and minimum episodes
The same five rows on /policies. The latency column decides whether a policy survives a network hop.

それは些細なことではなく、決定事項として捉えてください。 ACTは、ロボットマシン上で20 ms/ステップで動作し、その後は気にする必要がありません。 Pi0.5は、パケットが建物を出るまでに485 ms、つまり3分の1秒を費やしています。 ポリシー比較GR00T N1.7 vs Pi0.5が精度面を追加します。

ACTにはベースモデルがありません

GR00T N1.7, GR00T N1.5、Pi0.5はベンダーチェックポイント(nvidia/GR00T-N1.7-3Bnvidia/GR00T-N1.5-3Blerobot/pi05_base)から開始します。ACTは独自のタスクでトレーニングするまで存在しないため、トレーニングジョブが実行されるまでリモートで提供するものはありません。参照:ACT on SO-100

既存の2つのクライアント・サーバー・スタック

Isaac-GR00TはZeroMQリクエスト・リプライサーバーを出荷しており、lerobotは非同期推論を中心に構築されたgRPCサーバーを出荷しています。どちらもGR00T チェックポイントを受け入れます。lerobotがサポートするポリシーリストはasync_inference/constants.pyにあり、act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05, grootです。そのロボットリストはso100_follower, so101_follower, bi_so_follower, omx_followerです。

Isaac-GR00T PolicyServerlerobot async inference
エントリポイントgr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
トランスポートZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
シリアライゼーションmsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, marked # nosec
デフォルトポート55558080
デフォルトバインド0.0.0.0、すべてのインターフェースlocalhost
認証クラスでサポートされているapi_token、CLIでは渡されませんなし
クライアントタイムアウト15000 ms (PolicyClient timeout_ms)2 s 観測キュータイムアウト
実行モデル同期:ブロックしてからチャンクを実行非同期:次のチャンクが計算されている間に実行

シリアライゼーションの行は見た目以上に重要です。GR00TのMsgSerializerは、msgpack_numpyがそれらをpickleに渡してしまうため、object-dtypeのndarrayペイロードを双方向で拒否します。その代わりにlerobotはpickleを使用します。policy_server.pypickle.loadsをリクエストデータに対して呼び出し、robot_client.pyは送信する観測データをpickle化します。信頼されたLAN上では防御可能ですが、ポートがインターネットから到達可能になると防御不能になります。

ルートA: NVIDIA独自のGR00Tポリシーサーバー

これはNVIDIAがSO-100およびSO-101ハードウェア向けに文書化しているパスであり、チェックポイントがexamples/finetune.sh--embodiment-tag NEW_EMBODIMENTと共に使用して生成された場合に使用するものです。これらの手順は、上流のREADMEで省略されている点、つまりポートを他の誰にも公開せずにロボットに到達させる方法を追加します。

  1. 1
    レンタルGPUボックスにGR00Tをインストールする

    サブモジュールは必須であり、クローンする前にgit-lfsが存在しないと、demo_data内のparquetファイルがポインタとして到着します。flash-attnとTensorRTはデフォルトのインストールに含まれています。新しいポッドイメージでの落とし穴:torchcodec 0.8.0は唯一サポートされているビデオバックエンドであり、FFmpeg 4から7のみをロードします。Ubuntu 25.10および26.04はFFmpeg 8を搭載しているため、GR00TはCould not load libtorchcodecで失敗します。FFmpeg 8未満のバージョンをインストールし、そのライブラリをLD_LIBRARY_PATHに配置してください。

    bash
    sudo apt install git-lfs && git lfs install
    curl -LsSf https://astral.sh/uv/install.sh | sh
    sudo apt-get update && sudo apt-get install -y ffmpeg
    
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
    uv sync --python 3.12
    uv run python -c "import gr00t; print('GR00T installed successfully')"
  2. 2
    ゲート付きバックボーンに対して認証する

    独自のファインチューンを含むすべてのGR00T N1.7チェックポイントは、初回使用時にゲート付きのnvidia/Cosmos-Reason2-2Bをロードします。モデルページでアクセスをリクエストし、ポッドにログインしてください。そうしないと、GatedRepoErrorでロードが失敗します。

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    ポリシーサーバーを起動する

    --model-pathをチェックポイントディレクトリに指定してください。このパスでは、サーバーは--modality-config-pathを無視します。これはリプレイパスでのみ読み取られます。--model-pathを省略し、代わりに--dataset-path--execution-horizonを渡すことで、記録されたアクションをリプレイするReplayPolicyを使用できます。これは配線が機能することを証明する最も安価な方法です。

    bash
    uv run python gr00t/eval/run_gr00t_server.py \
      --model-path /workspace/so100_finetune/checkpoint-10000 \
      --embodiment-tag NEW_EMBODIMENT \
      --device cuda:0 \
      --host 127.0.0.1 --port 5555
  4. 4
    ポート5555をロボットマシンにトンネルする

    上記のようにループバックにバインドし、SSHまたはWireGuardスタイルのメッシュを介してポートを転送します。これにより、ZeroMQソケットが提供しない暗号化と認証が、約1ミリ秒で提供されます。

    bash
    # on the robot machine
    ssh -N -L 5555:127.0.0.1:5555 root@<pod-host> -p <pod-ssh-port>
    
    # sanity check that something answers
    nc -vz 127.0.0.1 5555
  5. 5
    サーボの隣でロボットクライアントを実行する

    クライアントは独自のuv環境を必要とします。トレーニングスタックではなく、lerobotのロボットドライバーを必要とします。eval_so100.pyはso100_follower、so101_follower、およびkoch_followerをインポートするため、アームに一致する--robot.typeを渡してください(上流のREADMEではso101_followerを使用しています)。カメラキーはトレーニングと一致する必要があります。アダプターは正確にfrontwristを読み取ります。これらを入れ替えると、ポリシーに誤ったビューが表示されます。

    bash
    cd gr00t/eval/real_robot/SO100
    uv sync
    uv pip install --no-deps -e ../../../../
    
    uv run --no-sync python eval_so100.py \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.id=orange_follower \
      --robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
      --policy_host=127.0.0.1 \
      --policy_port=5555 \
      --lang_instruction="pick up the red block and put it in the bin"
注意すべき2つのデフォルト設定

run_gr00t_server.py はデフォルトで --host 0.0.0.0 を使用し、すべてのインターフェースをバインドします。これは、パブリックIPを持つポッド上ではオープンな推論エンドポイントとなります。また、PolicyServer クラスは api_token を受け入れ、リクエストごとに検証しますが、run_gr00t_server.py はそれを渡さないため、CLIサーバーは設定に関わらず認証されません。127.0.0.1 にバインドし、トンネルを使用してください。ZMQError: Address already in use はポート5555が使用中であることを意味します。--port を渡してください。

ルートB: lerobot 非同期推論

lerobotは異なる問題を解決します。モデルが思考している間ロボットをブロックする代わりに、サーバーが次のチャンクを計算している間、クライアントは既に持っているキューを処理し続けます。これはアクションチャンキングをさらに発展させたもので、SmolVLAで導入された非同期スタックです。GR00Tのチェックポイントでも動作します。

bash
# GPU machine
pip install -e ".[async]"
python -m lerobot.async_inference.policy_server \
     --host=127.0.0.1 \
     --port=8080

# robot machine, after tunnelling 8080
python -m lerobot.async_inference.robot_client \
    --server_address=127.0.0.1:8080 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower_so100 \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
    --task="pick up the red block and put it in the bin" \
    --policy_type=groot \
    --pretrained_name_or_path=<user>/my_groot_finetune \
    --policy_device=cuda \
    --actions_per_chunk=50 \
    --chunk_size_threshold=0.5 \
    --debug_visualize_queue_size=True
GPU上のポリシーサーバー、USBポートを備えたマシン上のロボットクライアント

サーバーは空の状態で起動します。クライアントの最初のハンドシェイクがポリシーを伝えるまで、どのポリシーを提供するかわかりません。これはレンタルポッドで便利です。アームがスムーズに動くかどうかを決定する2つの調整項目はactions_per_chunkchunk_size_threshold(lerobotのドキュメントでは、SmolVLAの論文にちなんで後者をgと呼んでいます)であり、ドキュメントに記載されている値と実際に提供されている値は一致しません。

パラメータlerobot 0.6.1コードでの値役割注記
actions_per_chunkno default, required呼び出しごとに返されるアクション数ドキュメントの表には50と記載されていますが、データクラスフィールドにはデフォルト値がないため、CLIは値を要求します。
chunk_size_threshold0.5クライアントが新しい観測値を送信するキューの充填率(この値以下)ドキュメントの表には0.7と記載されていますが、コードとドキュメント自身の例では0.5となっています。
fps30クライアントの制御レート。environment_dt = 1/fps を設定します。キューが継続的に枯渇する場合は、この値を下げてください。
inference_latency1/30 s (33.3 ms)サーバーでの目標推論レイテンシ目標値であり、測定値ではありません。
obs_queue_timeout2 sサーバーが観測キューで待機する時間アップリンクが遅い場合、最初にここに影響が現れます。
aggregate_fn_nameweighted_average重複するチャンク領域がどのようにブレンドされるか0.3 old + 0.7 new; latest_only, average, conservative も提供されます。レジストリはドキュメントが主張する robot_client.py ではなく、configs.py の AGGREGATE_FUNCTIONS です。
lerobotポリシーサーバーに未パッチのRCEが存在します

CVE-2026-25874は、lerobotの非同期推論パイプラインにおける認証されていないリモートコード実行です。これは、TLSなしの認証されていないgRPCチャネルを介して受信したデータに対してpickle.loads()が実行されるもので、SendPolicyInstructionsSendObservationsGetActionsの呼び出しを通じて到達可能です。CWE-502、NVDからのCVSS 3.1基本スコア9.8、割り当てCNAからの4.0基本スコア9.3。記録によると、LeRobot 0.5.1までが影響を受け、ポリシーサーバーとロボットクライアントの両方が挙げられているため、アームの隣にあるマシンも対象となります。アップグレードは解決策ではありません。記録は、pickleをsafetensorsとJSONに置き換えるアップストリームの問題3047とパッチPR 3048を引用しており、2026年8月23日現在、両方ともまだオープンです。mainブランチのpolicy_server.pyは、serve()add_insecure_portでバインドされているにもかかわらず、リクエストデータに対してpickle.loadsを呼び出し続けています。ループバックにバインドし、8080番ポートをポートフォワードしないでください。

リンクが十分に高速であるかを決定する計算

これを飛ばして、その後一日中に費やしています。これは2分で済み、ほとんどの場合、決定的な解決策となります。

NVIDIAのeval_so100.pyにあるコメント付きの観測辞書は、ワイヤー上で何が起こるかを示しています。uint8形式の(480, 640, 3)の形状を持つ2つの配列、6つの関節フロート、そして言語文字列です。これはフレームあたり921,600バイト、2つのカメラで1,843,200バイト、約14.7 Mbitに相当し、どちらのスタックもJPEG圧縮を行いません。返ってくるチャンクは、6つのフロートからなる数十ステップです。ダウンロードではなく、アップロードがすべてを決定します。

アップロード帯域幅1つの観測をプッシュする時間 (14.7 Mbit)30 FPSアームに対する評価
10 Mbit/s、一般的な家庭用アップロード~1.47 s使用不可。アームは各チャンク間で停止します。
25 Mbit/s~0.59 s実行期間が長い、低速なピックアンドプレースのみ。
50 Mbit/s~0.29 s意図的なタスクには実用的。
100 Mbit/s~0.15 sピックアンドプレースには問題なく、高速な動きでは視認可能。
1 Gbit/s 光ファイバーまたはデータセンター~0.015 s代わりにモデルがボトルネックになります。

適合させるべき予算

GR00T SO-100クライアントは同期型です。policy.get_action(obs)を呼び出し、最初のaction_horizonステップを30 FPSで実行し、再度呼び出します。チャンクサイズとホライズンは異なる数値です。NVIDIAのデプロイメントガイドでは、アクションチャンクサイズとして16を推奨しており、リアルタイムチャンキングと組み合わせる場合は少なくとも32を推奨しています。一方、eval_so100.pyは実行ホライズンとして8を出荷しています。30 FPSで8ステップは、呼び出しごとに267 msの動作に相当し、他のすべての処理はこの時間内に収まる必要があります。

text
observation upload   14.7 Mbit / 100 Mbit/s   = 147 ms
network round trip                            =  30 ms
model inference (AY-Robots figure, N1.7)      = 152 ms
action chunk return + deserialize             =  ~2 ms
                                                -------
total per call                                  331 ms

budget at action_horizon = 8   ->  267 ms   FAIL, arm pauses ~64 ms per chunk
budget at action_horizon = 16  ->  533 ms   fits, with headroom
budget at action_horizon = 32  -> 1067 ms   fits, observations now ~1 s stale
計算例: 100 Mbit/sアップリンク、30 msラウンドトリップ、GR00T N1.7

ホライズンを増やすのは、腕が古い観測に基づいて動作するため、根本的な解決策ではなく、代償を伴います。原理的な解決策はリアルタイムチャンキングです。これは、現在のチャンクが実行されている間に次のチャンクを計算し、実行が保証されているアクションを固定し、残りを補完します。RTCの論文では、再学習なしで推論遅延に対してロバストであると報告されています。まず、その現状を確認してください。NVIDIAはRTCを実験的と位置付けており、action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...})を介してアクセス可能な低レベルのモデルプリミティブであり、Gr00tPolicyやサーバー・クライアントパスには組み込まれていません。そこではoptionsは使用されておらず、テストも例もありません。ポリシーサーバーを介すると、RTCではなく非同期実行が得られます。

ネットワーク処理前のモデルコスト

NVIDIAは、GR00T N1.7を1台のカメラと4つのデノイズステップでエンドツーエンドでベンチマークしています。H100 80GB HBM3では、PyTorch eagerモードで85.8 ms (11.7 Hz)、torch.compileで48.6 ms (20.6 Hz)、TensorRTフルパイプラインで27.9 ms (35.9 Hz)です。L40のeagerモードでは128.3 ms (7.8 Hz)かかります。NVIDIAは、一般的なマニピュレーションには10 Hzを推奨最低値とし、10 Hz未満は低速で非反応的なタスクにのみ適しているとしています。これらは再計画レートです。10 Hzのポリシーでも、アクションチャンキングを介して30 FPSのアームを駆動できます。2台目のカメラは逆効果です。

信頼する前に測定する

上記のすべての数値は予測です。4つのコマンドでこれを測定値に変えることができます。決して機能しないタスクにポッド時間を費やす前に、これらを実行する価値があります。

  1. 1
    生のラウンドトリップを取得する

    CDNではなく、ポッドに対して。平均値と同じくらい偏差に注目してください。平均遅延ではなく、ジッターがアームの動きをぎこちなくさせます。

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    支払っているものではなく、実際に利用可能なアップリンクを測定する

    住宅用アップロードは通常、ダウンロードのごく一部であり、上記の帯域幅表の数値です。

    bash
    # on the pod
    iperf3 -s
    
    # on the robot machine, -R omitted so this measures upload
    iperf3 -c <pod-host> -t 30
  3. 3
    クライアント自身の遅延ログを読む

    LeRobotロボットクライアントは、チャンクごとにサーバーからクライアントへの遅延と逆シリアル化時間をログに記録します。ルートBでは、外部ツールは必要ありません。

    text
    Received action chunk for step #240 | Latest action: #232 |
      Incoming actions: 240:289 |
      Network latency (server->client): 187.44ms |
      Deserialization time: 3.10ms
  4. 4
    アクションキューの枯渇を監視する

    --debug_visualize_queue_size=Trueを渡すと、クライアントは実行時にキューサイズをプロットします。繰り返しゼロになる場合、予算オーバーです。fpsを下げ、actions_per_chunkを増やすか、chunk_size_thresholdを上げて観測がより頻繁に出力されるようにしてください。

    bash
    python -m lerobot.async_inference.robot_client \
        ... \
        --debug_visualize_queue_size=True

リモート推論が実際に役立つこと

レンタルGPU上のポリシー、デスク上のアーム
利点
  • アームよりも高価なカードを所有していなくても、実機で30億パラメータのポリシーを評価できる。
  • GPUは時間単位でレンタルされるため、チェックポイントの失敗によるコストは数ドル程度である。
  • ロボット側は小型に保たれる:lerobotドライバー、2台のカメラ、シリアルポートのみで、チェックポイントの交換もロボットに触れることなく行える。
トレードオフ
  • 非圧縮の観測データが通信コストの大部分を占め、家庭用アップロードがボトルネックとなる。
  • ジッターはレイテンシよりも悪影響が大きい。平均40 msで300 msにスパイクするリンクは途切れるが、安定した120 msのリンクは途切れない。
  • 高速な反応を要するタスクは、いかなるホライゾンでもラウンドトリップに耐えられない。
  • 両サーバーはCLI形式で認証なしで提供されるため、トンネリング作業はユーザーが行う必要がある。
  • チャンク途中で接続が切断されると、アームは古いアクションを保持したままになる。ロボット側に独自のウォッチドッグを追加すること。
タスク公共インターネット経由で動作するか?理由
静止物体を選び、箱に入れるはい観測とアクションの間で何も動かない。
ブロックを慎重なペースで積み重ねるはい、action_horizon 16以上でエラーは次のチャンクで修正できる程度にゆっくり蓄積する。
引き出しを開け、物体を挿入する通常は可能接触が多いが遅い。接触時の停止と再開に注意。
動く物体を追跡するいいえポリシーは300 msから1秒前の観測に基づいて動作する。
キャッチ、バランス、または滑りからの回復いいえ修正ウィンドウは1回のラウンドトリップよりも短い。
30 Hzの同期閉ループいいえエンドツーエンドの予算は33 ms。LANでさえ苦戦する。

リモート実行がすべてのエピソードで同じ箇所で途切れる場合、ネットワークが原因ではない可能性が高い。毎回同じ関節角度でポリシーがためらうのは、通常データの問題である。以下の失敗モードのページ、特に特定のセットアップでのみ動作するポリシーおよび損失は減少するがポリシーが何も動作しないを参照のこと。

AY-Robotsで実行する場合と自分で実行する場合

  1. スポット市場でGPUをレンタルし、希望の価格で十分なVRAMが利用可能になるのを待つ。
  2. CUDA、uv、ffmpeg torchcodecが受け入れるもの、およびサブモジュールを含むGR00Tスタックをインストールする。
  3. ゲート付きのnvidia/Cosmos-Reason2-2Bバックボーンへのアクセスをリクエストし、ポッドにトークンを配置する。
  4. あなたのチェックポイントをポッドにプルする。
  5. ループバックでサーバーを起動し、ロボットマシンからSSHトンネルを構築する。
  6. クライアントとドライバー用に、ロボットマシンに2番目の環境をインストールする。
  7. カメラキー、ジョイント名、言語指示をチェックポイントが認識したものと一致させる。
  8. ポッドを監視する。一晩中稼働し続けた忘れられたA100は、実験費用よりも高くつく。
アイドル状態のポッドが真のコスト

ロボットが停止してもGPUの請求は止まりません。リモート推論で失われるほとんどの費用は、誰もいなくなった後も稼働し続けたサーバーによるものです。アラームを設定するか、自動でシャットダウンするようにしてください。

AIエージェントにツールとして公開されているプラットフォーム操作を一覧表示するAY-Robots MCPサーバーページ
MCPページ:エージェントが呼び出せるツールとして公開されたプロビジョニングおよび推論操作。

リモート推論セッションのコスト

重要な数字は2つあります。カードの時間料金と、それをどれだけ長く稼働させるかです。前者は公開されていますが、後者は人々を驚かせます。

カードRunpodコミュニティクラウドRunpodセキュアクラウド推奨用途
A100 PCIe 80 GB1.19 USD/h1.39 USD/hGR00T N1.7, GR00T N1.5, Pi0.5
A100 SXM 80 GB1.39 USD/h1.59 USD/h同等、わずかに高速
H100 PCIe 80 GB1.99 USD/h2.89 USD/h最速ティア; NVIDIAの11.7 Hz eager値はH100 80GB HBM3向け
L40S 48 GB0.79 USD/h0.99 USD/h推論のみ、16 GBフロア以上
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, ACT

これらの料金は2026年8月23日にRunpodの料金ページから読み取られたものであり、スポット市場は変動します。AY-Robotsは代わりに全実行の見積もりを出しています:A100またはH100ティアで1時間あたり1.20~2.00 USDで3~6時間、GR00TまたはPi0.5の実行で約4~12 USD;24 GBティアで1時間あたり0.30~0.60 USDで2~5時間、SmolVLAまたはACTで1~3 USD。推論セッションがトレーニング実行よりもコスト面で優位になるのは、停止した場合のみであり、そのためにアイドルウォッチドッグがあります。参照:請求ドキュメント および 料金ページ

The AY-Robots cost table showing which GPU each policy needs, typical run time and price, and episodes before a policy is useful
The cost table on /try: which card each model needs and what a run typically costs.

ネットワークを介したくない場合

リモート推論はハードウェアの問題を解決しますが、レイテンシの問題を引き起こします。時には、お持ちのハードウェアに合ったポリシーがより良い解決策となります。

  • ACT、約80Mパラメータ、アクションステップあたり20ms、最低50エピソード、24GB以上のカード。反復的な単一タスクのセットアップでは、パケットを待つことがないため、リモートの3Bモデルを頻繁に上回ります。
  • SmolVLA、約450Mパラメータ、アクションステップあたり245ms、最低30エピソード。ACTにはない言語条件付けを保持しており、lerobotのドキュメントによると、推論時のメモリ使用量はPI0の約14GBに対し、約2GBです。
  • ACT vs GR00T N1.7トレードオフの精度側については。

中間的な方法もあります。クラウドで学習し、ローカルで評価する方法です。ファインチューニングには80GBのカードが必要で、レイテンシは問題にならないため、SO-100でGR00T N1.7を学習することは問題ありません。評価ループのみがリアルタイム制約を持ちます。学習ドキュメントモデルとアームの対応表がその半分をカバーしています。

まだデスクにアームがありませんか?

登録なしでブラウザから実際のSO-100を操作したり、5つの学習可能なポリシーを実際のレイテンシ数値と比較したり、GPUをレンタルして学習させたりできます。始める方法は3つあり、いずれも所有していないハードウェアは必要ありません。

ハードウェアなしで試す

よくある質問

GPUがリモートにある場合、Raspberry PiでGR00T N1.7を実行できますか?

はい、それがクライアント・サーバー分割の目的です。Piはlerobotドライバーを実行し、2台のカメラとシリアルバスを読み取り、観測データをポリシーサーバーに送信します。モデルをロードすることはありません。制約はVRAMからアップロード帯域幅に移行します。非圧縮の640x480 RGBフレーム2枚は、呼び出しごとに1,843,200バイトであり、どちらのスタックもそれらを圧縮しません。

ネットワークは実際にどれくらいのレイテンシを追加しますか?

往復時間と観測データ転送時間の合計です。転送時間は14.7 Mbitをアップロード帯域幅で割ったものです。これは、100 Mbit/sリンクで約147 ms、10 Mbit/sリンクで1.47 sに相当します。これらはどちらもモデル自身の推論時間に追加されます。AY-RobotsはGR00T N1.7で152 ms、Pi0.5で485 msと記載しています。速度テストサーバーではなく、ポッドに対してpingとiperf3で測定してください。

リモート推論は実際のタスクに十分ですか?

ゆっくりとした、意図的なピックアンドプレースには十分です。しかし、反応性が求められるものには不十分です。NVIDIAのデプロイメントガイドでは、30 FPSでの同期単一ステップ要件をエンドツーエンドで約33 msとしており、インターネット接続がない場合でも、キャプチャ、ネットワーク、推論、後処理が日常的にそれを超えることに注意しています。

サーバーはどのポートを使用し、開いても安全ですか?

Isaac-GR00TのPolicyServerはZeroMQ経由でポート5555をデフォルトとし、CLIで0.0.0.0にバインドします。lerobotはgRPC経由でポート8080をデフォルトとし、localhostにバインドします。どちらも公開するのは安全ではありません。GR00Tクラスはapi_tokenをサポートしていますが、run_gr00t_server.pyはそれを渡さず、lerobotは安全でないgRPCチャネル経由でデータをpickle化しており、これはCVE-2026-25874です。ループバックにバインドし、SSHトンネルを使用してください。

lerobotをアップグレードするとCVE-2026-25874は修正されますか?

2026年8月23日現在、修正されていません。CVEレコードではLeRobot 0.5.1までが影響を受けるとされており、PyPIは0.6.1を出荷していますが、非同期パイプラインからpickleを削除するプルリクエストはまだオープンであり、mainブランチのpolicy_server.pyは依然としてリクエストデータに対してpickle.loadsを呼び出しています。バージョンアップではなく、ネットワーク分離を緩和策として扱い、ロボット側のクライアントも対象範囲内であると仮定してください。

lerobotの非同期クライアントをGR00Tチェックポイントで使用できますか?

はい。lerobot 0.6.1では、SUPPORTED_POLICIESにact、smolvla、diffusion、tdmpc、vqbet、pi0、pi05と並んでgrootがリストされており、so100_followerとso101_followerの両方がSUPPORTED_ROBOTSに含まれています。--policy_type=grootを渡し、--pretrained_name_or_pathをチェックポイントに指定してください。GR00T SO-100の例では実装されていない非同期実行を、pickle転送のコストで利用できます。

要するに

3 Bのポリシーは、未解決の物理問題が伴う、解決済みのエンジニアリング問題です。エンジニアリングは2つのコマンドとSSHトンネルで済みます。物理的な問題は、1.8 MBの観測データが、アームがアクションを使い果たす前に、別の国のGPUに到達して戻ってこなければならないことです。何かをレンタルする前に計算を行い、古い観測データに耐えられるタスクを選び、リンクの改善を期待するのではなく、実行ホライズンを長くしてください。

まだデータセットを記録していない場合は、最初のデータセットを記録するSO-100セットアップガイドが先に来ます。そしてLeRobotデータセット形式のエントリでは、レコーダーが何を書き込むかを説明しています。背景については、ビジョン言語アクションモデルフローマッチングポリシーの作業を参照してください。また、アリーナのエントリでは、すべてのベンチマーク番号がソースにリンクされています。

Sources

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started