
お使いのロボットマシンには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 M | 152 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | ~3 B | 165 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | ~3 B、PaliGemmaバックボーン | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090または任意の24 GBカード | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090または任意の24 GBカード | 50 | LeRobot v3.0 |

それは些細なことではなく、決定事項として捉えてください。 ACTは、ロボットマシン上で20 ms/ステップで動作し、その後は気にする必要がありません。 Pi0.5は、パケットが建物を出るまでに485 ms、つまり3分の1秒を費やしています。 ポリシー比較とGR00T N1.7 vs Pi0.5が精度面を追加します。
GR00T N1.7, GR00T N1.5、Pi0.5はベンダーチェックポイント(nvidia/GR00T-N1.7-3B、nvidia/GR00T-N1.5-3B、lerobot/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 PolicyServer | lerobot async inference | |
|---|---|---|
| エントリポイント | gr00t/eval/run_gr00t_server.py | python -m lerobot.async_inference.policy_server |
| トランスポート | ZeroMQ REQ/REP | gRPC, add_insecure_port / insecure_channel |
| シリアライゼーション | msgpack + msgpack_numpy, allow_pickle=False enforced | pickle.dumps / pickle.loads, marked # nosec |
| デフォルトポート | 5555 | 8080 |
| デフォルトバインド | 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.pyはpickle.loadsをリクエストデータに対して呼び出し、robot_client.pyは送信する観測データをpickle化します。信頼されたLAN上では防御可能ですが、ポートがインターネットから到達可能になると防御不能になります。
ルートA: NVIDIA独自のGR00Tポリシーサーバー
これはNVIDIAがSO-100およびSO-101ハードウェア向けに文書化しているパスであり、チェックポイントがexamples/finetune.shを--embodiment-tag NEW_EMBODIMENTと共に使用して生成された場合に使用するものです。これらの手順は、上流のREADMEで省略されている点、つまりポートを他の誰にも公開せずにロボットに到達させる方法を追加します。
- 1レンタルGPUボックスにGR00Tをインストールする
サブモジュールは必須であり、クローンする前にgit-lfsが存在しないと、
demo_data内のparquetファイルがポインタとして到着します。flash-attnとTensorRTはデフォルトのインストールに含まれています。新しいポッドイメージでの落とし穴:torchcodec0.8.0は唯一サポートされているビデオバックエンドであり、FFmpeg 4から7のみをロードします。Ubuntu 25.10および26.04はFFmpeg 8を搭載しているため、GR00TはCould not load libtorchcodecで失敗します。FFmpeg 8未満のバージョンをインストールし、そのライブラリをLD_LIBRARY_PATHに配置してください。bashsudo 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ゲート付きバックボーンに対して認証する
独自のファインチューンを含むすべてのGR00T N1.7チェックポイントは、初回使用時にゲート付きの
nvidia/Cosmos-Reason2-2Bをロードします。モデルページでアクセスをリクエストし、ポッドにログインしてください。そうしないと、GatedRepoErrorでロードが失敗します。bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 3ポリシーサーバーを起動する
--model-pathをチェックポイントディレクトリに指定してください。このパスでは、サーバーは--modality-config-pathを無視します。これはリプレイパスでのみ読み取られます。--model-pathを省略し、代わりに--dataset-pathと--execution-horizonを渡すことで、記録されたアクションをリプレイするReplayPolicyを使用できます。これは配線が機能することを証明する最も安価な方法です。bashuv 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ポート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サーボの隣でロボットクライアントを実行する
クライアントは独自のuv環境を必要とします。トレーニングスタックではなく、lerobotのロボットドライバーを必要とします。
eval_so100.pyはso100_follower、so101_follower、およびkoch_followerをインポートするため、アームに一致する--robot.typeを渡してください(上流のREADMEではso101_followerを使用しています)。カメラキーはトレーニングと一致する必要があります。アダプターは正確にfrontとwristを読み取ります。これらを入れ替えると、ポリシーに誤ったビューが表示されます。bashcd 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"
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のチェックポイントでも動作します。
# 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サーバーは空の状態で起動します。クライアントの最初のハンドシェイクがポリシーを伝えるまで、どのポリシーを提供するかわかりません。これはレンタルポッドで便利です。アームがスムーズに動くかどうかを決定する2つの調整項目はactions_per_chunkとchunk_size_threshold(lerobotのドキュメントでは、SmolVLAの論文にちなんで後者をgと呼んでいます)であり、ドキュメントに記載されている値と実際に提供されている値は一致しません。
| パラメータ | lerobot 0.6.1コードでの値 | 役割 | 注記 |
|---|---|---|---|
| actions_per_chunk | no default, required | 呼び出しごとに返されるアクション数 | ドキュメントの表には50と記載されていますが、データクラスフィールドにはデフォルト値がないため、CLIは値を要求します。 |
| chunk_size_threshold | 0.5 | クライアントが新しい観測値を送信するキューの充填率(この値以下) | ドキュメントの表には0.7と記載されていますが、コードとドキュメント自身の例では0.5となっています。 |
| fps | 30 | クライアントの制御レート。environment_dt = 1/fps を設定します。 | キューが継続的に枯渇する場合は、この値を下げてください。 |
| inference_latency | 1/30 s (33.3 ms) | サーバーでの目標推論レイテンシ | 目標値であり、測定値ではありません。 |
| obs_queue_timeout | 2 s | サーバーが観測キューで待機する時間 | アップリンクが遅い場合、最初にここに影響が現れます。 |
| aggregate_fn_name | weighted_average | 重複するチャンク領域がどのようにブレンドされるか | 0.3 old + 0.7 new; latest_only, average, conservative も提供されます。レジストリはドキュメントが主張する robot_client.py ではなく、configs.py の AGGREGATE_FUNCTIONS です。 |
CVE-2026-25874は、lerobotの非同期推論パイプラインにおける認証されていないリモートコード実行です。これは、TLSなしの認証されていないgRPCチャネルを介して受信したデータに対してpickle.loads()が実行されるもので、SendPolicyInstructions、SendObservations、GetActionsの呼び出しを通じて到達可能です。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の動作に相当し、他のすべての処理はこの時間内に収まる必要があります。
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ホライズンを増やすのは、腕が古い観測に基づいて動作するため、根本的な解決策ではなく、代償を伴います。原理的な解決策はリアルタイムチャンキングです。これは、現在のチャンクが実行されている間に次のチャンクを計算し、実行が保証されているアクションを固定し、残りを補完します。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生のラウンドトリップを取得する
CDNではなく、ポッドに対して。平均値と同じくらい偏差に注目してください。平均遅延ではなく、ジッターがアームの動きをぎこちなくさせます。
bashping -c 50 <pod-host> # the mdev column is the number that predicts stutter - 2支払っているものではなく、実際に利用可能なアップリンクを測定する
住宅用アップロードは通常、ダウンロードのごく一部であり、上記の帯域幅表の数値です。
bash# on the pod iperf3 -s # on the robot machine, -R omitted so this measures upload iperf3 -c <pod-host> -t 30 - 3クライアント自身の遅延ログを読む
LeRobotロボットクライアントは、チャンクごとにサーバーからクライアントへの遅延と逆シリアル化時間をログに記録します。ルートBでは、外部ツールは必要ありません。
textReceived action chunk for step #240 | Latest action: #232 | Incoming actions: 240:289 | Network latency (server->client): 187.44ms | Deserialization time: 3.10ms - 4アクションキューの枯渇を監視する
--debug_visualize_queue_size=Trueを渡すと、クライアントは実行時にキューサイズをプロットします。繰り返しゼロになる場合、予算オーバーです。fpsを下げ、actions_per_chunkを増やすか、chunk_size_thresholdを上げて観測がより頻繁に出力されるようにしてください。bashpython -m lerobot.async_inference.robot_client \ ... \ --debug_visualize_queue_size=True
リモート推論が実際に役立つこと
- アームよりも高価なカードを所有していなくても、実機で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で実行する場合と自分で実行する場合
- スポット市場でGPUをレンタルし、希望の価格で十分なVRAMが利用可能になるのを待つ。
- CUDA、uv、ffmpeg torchcodecが受け入れるもの、およびサブモジュールを含むGR00Tスタックをインストールする。
- ゲート付きの
nvidia/Cosmos-Reason2-2Bバックボーンへのアクセスをリクエストし、ポッドにトークンを配置する。 - あなたのチェックポイントをポッドにプルする。
- ループバックでサーバーを起動し、ロボットマシンからSSHトンネルを構築する。
- クライアントとドライバー用に、ロボットマシンに2番目の環境をインストールする。
- カメラキー、ジョイント名、言語指示をチェックポイントが認識したものと一致させる。
- ポッドを監視する。一晩中稼働し続けた忘れられたA100は、実験費用よりも高くつく。
ロボットが停止してもGPUの請求は止まりません。リモート推論で失われるほとんどの費用は、誰もいなくなった後も稼働し続けたサーバーによるものです。アラームを設定するか、自動でシャットダウンするようにしてください。
- 実行したい学習済みポリシーを選択する。
/api/inference/podは、そのポリシーを提供するクラウドGPUポッドを自動プロビジョニングします。- ローカルのロボットクライアントはそのエンドポイントと通信します。ベースチェックポイントはベンダー独自のものです:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base。ACTにはありません。 - ポッドはアイドル監視機能を持ち、アイドル期間後に自動的に破棄されるため、何も静かに課金され続けることはありません。
- 同じ操作はターミナルからもAIエージェントからも利用できるため、ループをスクリプト化できます。
自動プロビジョニングはセットアップ作業と忘れられたポッドの請求をなくしますが、物理的な制約は変わりません。高速なタスクの場合、推論は依然としてサーボの近くで行う必要があります。制御ループはモデルによってアクションステップあたり20〜485 msであり、それに加えて公共インターネットの往復遅延が加わると、機能するポリシーもためらいがちなものになってしまいます。
- クライアントガイド(接続のローカル側用)
- 最初のポリシーを実行する(ウォークスルー用)
- CLIとMCPサーバー(スクリプト版用)
- セキュリティドキュメント

リモート推論セッションのコスト
重要な数字は2つあります。カードの時間料金と、それをどれだけ長く稼働させるかです。前者は公開されていますが、後者は人々を驚かせます。
| カード | Runpodコミュニティクラウド | Runpodセキュアクラウド | 推奨用途 |
|---|---|---|---|
| A100 PCIe 80 GB | 1.19 USD/h | 1.39 USD/h | GR00T N1.7, GR00T N1.5, Pi0.5 |
| A100 SXM 80 GB | 1.39 USD/h | 1.59 USD/h | 同等、わずかに高速 |
| H100 PCIe 80 GB | 1.99 USD/h | 2.89 USD/h | 最速ティア; NVIDIAの11.7 Hz eager値はH100 80GB HBM3向け |
| L40S 48 GB | 0.79 USD/h | 0.99 USD/h | 推論のみ、16 GBフロア以上 |
| RTX 4090 24 GB | 0.34 USD/h | 0.74 USD/h | SmolVLA, 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。推論セッションがトレーニング実行よりもコスト面で優位になるのは、停止した場合のみであり、そのためにアイドルウォッチドッグがあります。参照:請求ドキュメント および 料金ページ。

ネットワークを介したくない場合
リモート推論はハードウェアの問題を解決しますが、レイテンシの問題を引き起こします。時には、お持ちのハードウェアに合ったポリシーがより良い解決策となります。
- 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
- NVIDIA Isaac-GR00T: N1.7リポジトリとREADME(16 GB推論フロア、インストール、ゲート付きCosmos-Reason2-2Bバックボーン、FFmpeg制約)
- run_gr00t_server.py: GR00TポリシーサーバーCLI、ServerConfigのデフォルト(ホスト0.0.0.0、ポート5555)、およびReplayPolicyパス
- server_client.py: PolicyServerとPolicyClient、MsgSerializerのallow_pickle=False境界、api_token、timeout_ms
- eval_so100.py: SO-100ポリシークライアント、EvalConfigのデフォルト、および同期制御ループ
- Isaac-GR00T SO100/SO101の例:データセット変換、ファインチューン、および閉ループ評価コマンド
- Isaac-GR00T実世界デプロイメントガイド:33 msの同期バジェット、ストップアンドゴー、アクションチャンクサイズ、RTCステータス
- Isaac-GR00Tハードウェア推奨:GPUあたりの推論周波数と10 Hzの最小値
- Isaac-GR00Tデプロイメントおよび推論ガイド:コンポーネントごとのレイテンシベンチマーク結果
- LeRobot: 非同期推論チュートリアル(PolicyServer、RobotClient、文書化されたパラメータテーブル)
- lerobot async_inference/configs.py: PolicyServerConfigとRobotClientConfigのデフォルト、AGGREGATE_FUNCTIONSレジストリ
- lerobot async_inference/policy_server.py: リクエストデータに対するpickle.loads、add_insecure_port、gRPC呼び出し名
- lerobot robot_client.py: gRPCトランスポート、pickleシリアライゼーション、レイテンシロギング
- CVE-2026-25874: LeRobot gRPCを介した安全でない逆シリアル化によるリモートコード実行、0.5.1まで影響
- Black、Galliker、Levine、「Real-Time Execution of Action Chunking Flow Policies」(リアルタイムチャンキング)
- Runpod GPU価格:A100、H100、L40S、RTX 4090のコミュニティおよびセキュアクラウド時間料金
Sources
- NVIDIA Isaac-GR00T: N1.7 repository and README (16 GB inference floor, install, gated Cosmos-Reason2-2B backbone, FFmpeg constraint)
- run_gr00t_server.py: the GR00T policy server CLI, ServerConfig defaults (host 0.0.0.0, port 5555) and the ReplayPolicy path
- server_client.py: PolicyServer and PolicyClient, MsgSerializer's allow_pickle=False boundary, api_token, timeout_ms
- eval_so100.py: the SO-100 policy client, EvalConfig defaults and the synchronous control loop
- Isaac-GR00T SO100/SO101 example: dataset conversion, finetune and closed-loop eval commands
- Isaac-GR00T Real-World Deployment Guide: the 33 ms synchronous budget, stop-and-go, action chunk size, RTC status
- Isaac-GR00T Hardware Recommendation: inference frequency per GPU and the 10 Hz minimum
- Isaac-GR00T Deployment and Inference Guide: per-component latency benchmark results
- LeRobot: Asynchronous Inference tutorial (PolicyServer, RobotClient, the documented parameter table)
- lerobot async_inference/configs.py: PolicyServerConfig and RobotClientConfig defaults, AGGREGATE_FUNCTIONS registry
- lerobot async_inference/policy_server.py: pickle.loads on request data, add_insecure_port, the gRPC call names
- lerobot robot_client.py: gRPC transport, pickle serialization, latency logging
- CVE-2026-25874: LeRobot unsafe deserialization remote code execution via gRPC, affected through 0.5.1
- Black, Galliker and Levine, Real-Time Execution of Action Chunking Flow Policies (real-time chunking)
- Runpod GPU pricing: community and secure cloud hourly rates for A100, H100, L40S and RTX 4090
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started