
로봇 머신에 GPU가 없습니다. GR00T 정책 서버를 임대한 클라우드 GPU에 배치하고, 액션 청크를 로봇 팔로 스트리밍하며, 네트워크 비용이 얼마나 드는지 정확히 알아보세요.
라즈베리 파이 하나로 을(를) 직렬 버스로 구동하고 두 개의 USB 카메라에서 프레임을 가져오는 데는 충분합니다. 하지만 30억 개 매개변수 을(를) 실행하기에는 부족합니다. NVIDIA의 README에 따르면 GR00T N1.7 추론에는 16GB 이상의 VRAM을 가진 GPU 하나가 필요합니다. 카드 구매 없이 미세 조정된 체크포인트가 로봇 팔에서 어떻게 작동하는지 확인하려면, 정책을 임대 클라우드 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 프레임 두 개는 1,843,200바이트이며, 호출당 약 14.7Mbit에 해당하고, 두 스택 모두 이를 압축하지 않습니다.
- •AY-Robots는 모델별로 행동 단계당 20~485ms를 나열합니다. 인터넷 왕복 시간은 여기에 추가됩니다.
- •원격 추론은 느린 픽앤플레이스에 적합하며, 빠른 반응형 움직임에는 적합하지 않습니다. 더 긴 실행 범위는 시간을 벌어주지만 관측값의 신선도를 희생시킵니다.
- •두 서버 모두 출고 상태로는 공용 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 backbone | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090 or any 24 GB card | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 or any 24 GB card | 50 | LeRobot v3.0 |

이것을 사소한 정보가 아닌 결정으로 받아들이십시오. ACT는 단계당 20ms로 로봇 머신에서 실행되며, 다시는 신경 쓸 필요가 없습니다. Pi0.5는 485ms로, 패킷이 건물 밖으로 나가기 전에 이미 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는 자체 작업에서 훈련하기 전까지는 존재하지 않으므로, 훈련 작업이 실행되기 전까지는 원격으로 제공할 것이 없습니다. SO-100의 ACT를 참조하십시오.
이미 존재하는 두 가지 클라이언트-서버 스택
Isaac-GR00T는 ZeroMQ 요청-응답 서버를 제공하며, lerobot은 비동기 추론을 중심으로 구축된 gRPC 서버를 제공합니다. 둘 다 GR00T 체크포인트. lerobot이 지원하는 정책 목록은 async_inference/constants.py이며, 로봇 목록은 so100_follower, so101_follower, bi_so_follower 및 omx_follower입니다.
| Isaac-GR00T PolicyServer | lerobot 비동기 추론 | |
|---|---|---|
| 진입점 | 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에서 전달되지 않음 | none |
| 클라이언트 타임아웃 | 15000 ms (PolicyClient timeout_ms) | 2 s observation queue timeout |
| 실행 모델 | 동기식: 블록, 그 다음 청크 실행 | 비동기식: 다음 청크가 계산되는 동안 실행 |
직렬화 방식은 겉보기보다 중요합니다. GR00T의 MsgSerializer는 양방향으로 객체-dtype ndarray 페이로드를 거부합니다. msgpack_numpy가 그렇지 않으면 이를 pickle에 넘겨주기 때문입니다. 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는 기본 설치에 포함되어 있습니다. 새로운 pod 이미지의 함정: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를 로드합니다. 모델 페이지에서 접근을 요청하고 pod에 로그인하십시오. 그렇지 않으면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서버는 비어있는 상태로 시작합니다. 클라이언트의 첫 핸드셰이크가 알려줄 때까지 어떤 정책을 제공하는지 알지 못하며, 이는 임대된 포드에서 편리합니다. 팔이 부드럽게 움직이는지 결정하는 두 가지 조절 장치는 actions_per_chunk 및 chunk_size_threshold (lerobot 문서에서는 SmolVLA 논문을 따라 두 번째 것을 g라고 부릅니다), 그리고 문서화된 값과 실제 제공되는 값이 일치하지 않습니다.
| 매개변수 | lerobot 0.6.1 코드의 값 | 기능 | 참고 |
|---|---|---|---|
| actions_per_chunk | 기본값 없음, 필수 | 호출당 반환되는 액션 | 문서 테이블에는 50으로 나와 있지만, 데이터클래스 필드에 기본값이 없어 CLI에서 값을 요구합니다. |
| chunk_size_threshold | 0.5 | 클라이언트가 새로운 관측값을 전송하는 큐 채우기 비율(이하) | 문서 테이블에는 0.7로 나와 있지만, 코드와 문서의 예시에서는 0.5입니다. |
| fps | 30 | 클라이언트 제어 속도, sets 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 버전까지 영향을 받으며, 정책 서버와 로봇 클라이언트 모두 명시되어 있으므로 팔 옆의 기기도 해당됩니다. 업그레이드가 해결책이 아닙니다. 기록은 업스트림 이슈 3047과 패치 PR 3048을 인용하는데, 이는 pickle을 safetensors와 JSON으로 교체하는 내용이며, 2026년 8월 23일 현재 둘 다 여전히 열려 있습니다. main 브랜치의 policy_server.py는 serve()가 add_insecure_port로 바인딩되는 동안에도 요청 데이터에 대해 pickle.loads를 계속 호출합니다. 루프백에 바인딩하고 8080 포트를 절대 포트 포워딩하지 마십시오.
링크 속도가 충분한지 결정하는 계산
사람들은 이것을 건너뛰고 하루 종일 에 매달립니다. 2분이면 충분하며 거의 항상 결정적입니다.
NVIDIA의 eval_so100.py에 주석 처리된 관측 딕셔너리는 전송되는 내용을 보여줍니다: uint8 형식의 (480, 640, 3) 모양 배열 두 개, 6개의 조인트 부동 소수점 값, 언어 문자열. 이는 프레임당 921,600바이트, 두 대의 카메라에 대해 1,843,200바이트이며 약 14.7Mbit입니다. 어떤 스택도 이를 JPEG 압축하지 않습니다. 돌아오는 청크는 6개의 부동 소수점 값으로 구성된 수십 단계입니다. 다운로드가 아닌 업로드가 모든 것을 결정합니다.
| 업로드 대역폭 | 관측값 하나를 푸시하는 시간 (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단계는 호출당 267ms의 동작이며, 다른 모든 것은 그 안에 맞춰져야 합니다.
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)입니다. 이는 현재 청크가 실행되는 동안 다음 청크를 계산하고, 실행이 보장된 액션을 고정하며, 나머지를 채워 넣습니다. RTC 논문은 재훈련 없이 추론 지연에 강건하다고 보고합니다. 먼저 그 현황을 확인하십시오. NVIDIA는 RTC를 실험적인 기능으로 표시하며, 다음을 통해 접근할 수 있는 저수준 모델 프리미티브입니다. action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), Gr00tPolicy 또는 서버-클라이언트 경로에 연결되어 있지 않으며, 여기서 options는 사용되지 않고 테스트나 예제도 없습니다. 정책 서버를 통해 비동기 실행을 얻을 수 있으며, RTC는 아닙니다.
NVIDIA는 GR00T N1.7을 단일 카메라로 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)가 소요됩니다. eager 모드의 L40은 128.3 ms (7.8 Hz)가 걸립니다. NVIDIA는 일반적인 조작 작업에 권장되는 최소 주파수를 10 Hz로, 10 Hz 미만은 느리고 비반응적인 작업에만 적합하다고 말합니다. 이것들은 재계획 속도입니다. 10 Hz 정책은 액션 청킹을 통해 여전히 30 FPS 로봇 팔을 구동할 수 있습니다. 두 번째 카메라는 상황을 악화시킵니다.
신뢰하기 전에 측정하십시오
위에 제시된 모든 숫자는 예측입니다. 네 가지 명령을 통해 이를 측정값으로 바꿀 수 있으며, 애초에 작동하지 않을 작업에 pod-hour를 투입하기 전에 실행해 볼 가치가 있습니다.
- 1원시 왕복 시간 얻기
CDN이 아닌 pod를 대상으로 합니다. 평균만큼 편차를 면밀히 관찰하십시오. 평균 지연 시간이 아니라 지터가 로봇 팔을 버벅거리게 만듭니다.
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를 전달하면 클라이언트가 런타임에 큐 크기를 플로팅합니다. 큐 크기가 반복적으로 0에 도달하면 예산이 부족한 것입니다. 이 경우 fps를 낮추거나, actions_per_chunk를 높이거나, chunk_size_threshold를 높여 관측값이 더 자주 전송되도록 하십시오.bashpython -m lerobot.async_inference.robot_client \ ... \ --debug_visualize_queue_size=True
원격 추론이 실제로 유용한 경우
- 로봇 팔보다 비싼 카드를 소유하지 않고도 실제 하드웨어에서 30억 매개변수 정책을 평가할 수 있습니다.
- GPU는 시간당 대여되므로, 체크포인트 실패 시 몇 달러의 비용이 듭니다.
- 로봇 측은 작게 유지됩니다: lerobot 드라이버, 두 대의 카메라, 직렬 포트만 있으면 되고, 로봇을 건드리지 않고 체크포인트를 교체할 수 있습니다.
- 압축되지 않은 관측값이 통신 비용의 대부분을 차지하며, 주거용 업로드 속도가 제약 조건입니다.
- 지터는 지연 시간보다 더 해롭습니다. 평균 40ms이지만 300ms까지 치솟는 링크는 끊기지만, 꾸준히 120ms인 링크는 그렇지 않습니다.
- 빠른 반응형 작업은 어떤 시간 범위에서도 왕복 통신을 견디지 못합니다.
- 두 서버 모두 CLI 형태로 인증되지 않은 상태로 제공되므로, 터널링 작업은 직접 해야 합니다.
- 청크 중간에 연결이 끊기면 로봇 팔이 오래된 동작을 유지하게 됩니다. 로봇 측에 자체 감시 로봇을 추가하세요.
| 작업 | 공용 인터넷에서 작동합니까? | 이유 |
|---|---|---|
| 정적 객체를 선택하여 통에 넣기 | 예 | 관측과 동작 사이에 아무것도 움직이지 않습니다. |
| 블록을 신중한 속도로 쌓기 | 예, action_horizon 16 이상에서 | 오류가 다음 청크에서 수정할 수 있을 만큼 충분히 느리게 축적됩니다. |
| 서랍 열고 객체 삽입하기 | 대부분 | 접촉이 많지만 느립니다. 접촉 시 멈췄다 가는 현상에 주의하세요. |
| 움직이는 객체 따라가기 | 아니요 | 정책은 300ms에서 1초 전의 관측값에 따라 동작합니다. |
| 미끄러짐을 잡거나, 균형을 잡거나, 복구하기 | 아니요 | 수정 창이 한 번의 왕복 통신보다 짧습니다. |
| 30Hz 동기식 폐쇄 루프 | 아니요 | 예산은 종단 간 33ms입니다. LAN조차도 어려움을 겪습니다. |
원격 실행이 모든 에피소드에서 동일한 지점에서 끊긴다면, 네트워크가 원인이 아닐 가능성이 높습니다. 매번 동일한 관절 각도에서 주저하는 정책은 일반적으로 데이터 문제입니다. 실패 모드 페이지, 특히 특정 설정에서만 작동하는 정책 및 손실은 감소하지만 정책이 아무것도 하지 않는 경우.
직접 하는 것과 AY-Robots에서 하는 것
- 스팟 시장에서 GPU를 대여하고 원하는 가격에 충분한 VRAM을 기다립니다.
- CUDA, uv, ffmpeg torchcodec이 허용하는 스택, 그리고 서브모듈이 포함된 GR00T 스택을 설치합니다.
- 게이트된 `nvidia/Cosmos-Reason2-2B` 백본에 대한 접근을 요청하고 파드에 토큰을 배치합니다.
- 파드에 체크포인트를 가져옵니다.
- 루프백에서 서버를 시작한 다음, 로봇 머신에서 SSH 터널을 구축합니다.
- 클라이언트와 드라이버를 위해 로봇 머신에 두 번째 환경을 설치합니다.
- 카메라 키, 조인트 이름, 언어 지시를 체크포인트가 인식한 것과 일치시킵니다.
- 파드를 주시하십시오. 밤새도록 켜져 있던 잊혀진 A100은 실험 비용보다 더 많이 듭니다.
로봇이 멈춰도 GPU 요금은 멈추지 않습니다. 원격 추론에서 손실되는 대부분의 비용은 모두가 떠난 후에도 계속 켜져 있던 서버에서 발생합니다. 알람을 설정하거나 자동 해체를 자동화하십시오.
- 실행하려는 훈련된 정책을 선택합니다.
- `/api/inference/pod`는 해당 정책을 제공하는 클라우드 GPU 파드를 자동으로 프로비저닝합니다.
- 로컬 로봇 클라이언트는 해당 엔드포인트와 통신합니다. 기본 체크포인트는 공급업체 자체의 것입니다: `nvidia/GR00T-N1.7-3B`, `nvidia/GR00T-N1.5-3B`, `lerobot/pi05_base`. ACT는 없습니다.
- 파드에는 유휴 감시기가 있어 유휴 기간이 지나면 스스로 파괴되므로, 아무것도 조용히 요금을 청구하지 않습니다.
- 동일한 작업은 터미널과 AI 에이전트에서 사용할 수 있으므로 루프를 스크립트로 작성할 수 있습니다.
자동 프로비저닝은 설정 작업과 잊혀진 파드 요금을 제거하지만, 물리학적 한계는 제거하지 않습니다. 빠른 작업을 위해서는 추론이 여전히 서보 옆에 있어야 합니다. 제어 루프는 모델에 따라 액션 단계당 20에서 485ms이며, 여기에 공용 인터넷 왕복 시간이 추가되면 작동하는 정책이 주저하는 정책으로 변합니다.
- 클라이언트 가이드 (연결의 로컬 측면용)
- 첫 번째 정책 실행 (단계별 안내용)
- CLI 및 MCP 서버 (스크립트 버전용)
- 보안 문서

원격 추론 세션 비용
두 가지 숫자가 중요합니다: 카드의 시간당 요금과 얼마나 오랫동안 실행하는지입니다. 첫 번째는 공개되어 있지만, 두 번째는 사람들을 놀라게 합니다.
| 카드 | 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.20~2.00 USD로 3~6시간, GR00T 또는 Pi0.5 실행에 약 4~12 USD; 24 GB 티어에서 시간당 0.30~0.60 USD로 2~5시간, SmolVLA 또는 ACT에 1~3 USD. 추론 세션은 유휴 감시자가 존재하는 이유인, 세션을 중지할 경우에만 훈련 실행보다 비용 효율적입니다. 결제 문서 및 가격 책정 페이지를 참조하십시오.

네트워크를 루프에 포함시키지 않으려면
원격 추론은 하드웨어 문제를 해결하고 지연 시간 문제를 발생시킵니다. 때로는 보유한 하드웨어에 맞는 정책이 더 나은 해결책이 될 수 있습니다.
- ACT, 약 8천만 개의 매개변수와 액션 단계당 20ms, 최소 50 에피소드, 모든 24GB 카드. 반복적인 단일 작업 설정에서 패킷을 기다리지 않기 때문에 원격 3B 모델을 자주 능가합니다.
- SmolVLA, 약 4억 5천만 개의 매개변수와 액션 단계당 245ms, 최소 30 에피소드. ACT에 부족한 언어 조건화를 유지하며, lerobot 문서는 추론 시 약 2GB를 차지하며 PI0의 약 14GB와 비교됩니다.
- ACT 대 GR00T N1.7 (정확도 측면)
중간 경로도 있습니다: 클라우드에서 훈련하고 로컬에서 평가하는 것입니다. 미세 조정은 80GB 카드가 필요하며 지연 시간에 신경 쓰지 않으므로 SO-100에서 GR00T N1.7 훈련 원격으로 하는 것은 논란의 여지가 없습니다. 평가 루프만이 실시간 제약 조건을 가집니다. 훈련 문서와 모델 및 암 매트릭스가 그 절반을 다룹니다.
아직 책상에 로봇 팔이 없으신가요?
가입 없이 브라우저에서 실제 SO-100을 구동하고, 훈련 가능한 다섯 가지 정책을 실제 지연 시간 수치와 비교하거나, GPU를 대여하여 훈련해 보세요. 시작하는 세 가지 방법 모두 소유하지 않은 하드웨어가 필요하지 않습니다.
하드웨어 없이 시도해 보세요자주 묻는 질문
GPU가 원격에 있는 경우 Raspberry Pi에서 GR00T N1.7을 실행할 수 있나요?▾
네, 그것이 클라이언트-서버 분리의 목적입니다. Pi는 lerobot 드라이버를 실행하고, 두 대의 카메라와 직렬 버스를 읽고, 관측값을 정책 서버로 보냅니다. 모델을 로드하지는 않습니다. 제약 조건은 VRAM에서 업로드 대역폭으로 이동합니다. 압축되지 않은 640x480 RGB 프레임 두 개는 호출당 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 채널을 통해 데이터를 피클링하는데, 이는 CVE-2026-25874입니다. 루프백에 바인딩하고 SSH 터널을 사용하십시오.
lerobot을 업그레이드하면 CVE-2026-25874가 해결되나요?▾
2026년 8월 23일 현재는 아닙니다. CVE 기록에는 LeRobot 0.5.1까지 영향을 받는 것으로 나와 있고 PyPI는 0.6.1을 제공하지만, 비동기 파이프라인에서 피클을 제거하는 풀 리퀘스트는 여전히 열려 있으며, main 브랜치의 policy_server.py는 여전히 요청 데이터에 대해 pickle.loads를 호출합니다. 버전 업그레이드가 아닌 네트워크 격리를 완화책으로 간주하고, 로봇 측 클라이언트도 범위에 포함된다고 가정하십시오.
GR00T 체크포인트와 함께 lerobot의 비동기 클라이언트를 사용할 수 있나요?▾
네. 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 예제에서는 구현되지 않은 비동기 실행을 피클 전송의 대가로 얻게 됩니다.
요약
3 B 정책에 대한 원격 추론은 해결된 공학적 문제이지만, 해결되지 않은 물리적 문제가 수반됩니다. 공학적 측면은 두 개의 명령과 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 기본값 (host 0.0.0.0, port 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: gRPC를 통한 LeRobot 안전하지 않은 역직렬화 원격 코드 실행, 0.5.1까지 영향
- Black, Galliker 및 Levine, 액션 청킹 플로우 정책의 실시간 실행 (실시간 청킹)
- 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