
Máy robot của bạn không có GPU. Đặt máy chủ chính sách GR00T trên một GPU đám mây thuê, truyền các khối hành động đến cánh tay, và tìm hiểu chính xác chi phí mạng của bạn.
Một Raspberry Pi đủ để điều khiển một qua bus nối tiếp và lấy khung hình từ hai camera USB. Nó không đủ để chạy một mô hình ba tỷ tham số: README của NVIDIA cho biết suy luận GR00T N1.7 yêu cầu một GPU với 16 GB VRAM trở lên. Để xem điểm kiểm tra đã tinh chỉnh của bạn hoạt động như thế nào trên cánh tay robot mà không cần mua card, hãy đặt chính sách lên một GPU đám mây thuê, giữ vòng lặp robot trên máy có cổng USB và gửi các quan sát cùng các khối hành động qua mạng.
Nó hoạt động, không miễn phí và giá không được phân bổ đều cho các tác vụ. Dưới đây: máy chủ chính sách riêng của NVIDIA, ngăn xếp bất đồng bộ của lerobot, phép tính cho biết trước liệu đường lên của bạn có đủ nhanh hay không và lộ trình nền tảng. Tất cả đã được kiểm tra với nhánh chính Isaac-GR00T (N1.7 GA) và lerobot 0.6.1 vào ngày 23 tháng 8 năm 2026.
Những điều bạn cần biết
- •GR00T N1.7, GR00T N1.5 và Pi0.5 là các mô hình có khoảng 3 tỷ tham số. Không mô hình nào phù hợp với bộ điều khiển robot mà không có GPU rời.
- •Isaac-GR00T và lerobot đều cung cấp kiến trúc client-server. Bạn không cần viết phần vận chuyển dữ liệu.
- •Dữ liệu quan sát chiếm phần lớn chi phí truyền tải, không phải hành động: hai khung hình RGB 640x480 không nén là 1.843.200 byte, khoảng 14.7 Mbit mỗi lần gọi, và cả hai hệ thống đều không nén chúng.
- •AY-Robots liệt kê 20 đến 485 ms cho mỗi bước hành động tùy theo mô hình. Thời gian khứ hồi qua Internet sẽ cộng thêm vào đó.
- •Suy luận từ xa phù hợp với các tác vụ gắp đặt chậm, không phải chuyển động phản ứng nhanh. Một tầm nhìn thực thi dài hơn giúp có thêm thời gian nhưng đổi lại là sự kém tươi mới của dữ liệu quan sát.
- •Không máy chủ nào an toàn trên IP công cộng như khi xuất xưởng, và lerobot có một lỗ hổng RCE chưa được vá. Hãy tạo đường hầm cho nó.
Tại sao chính sách sẽ không phù hợp với máy robot
Hai trong số năm chính sách mà AY-Robots có thể huấn luyện chạy trên card máy trạm, ba chính sách thì không. Cột dưới đây là cho mỗi bước hành động, và đó là con số cạnh tranh với thời gian khứ hồi mạng của bạn.
| Chính sách | Tham số | Suy luận mỗi bước hành động | Cấp GPU để huấn luyện | Số tập tối thiểu | Định dạng tập dữ liệu |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M được huấn luyện trong quá trình tinh chỉnh | 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, kiến trúc PaliGemma | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090 hoặc bất kỳ card 24 GB nào | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 hoặc bất kỳ card 24 GB nào | 50 | LeRobot v3.0 |

Hãy xem đây là một quyết định, không phải thông tin vụn vặt. với 20 ms mỗi bước chạy trên máy robot và bạn sẽ không bao giờ phải nghĩ về nó nữa. với 485 ms đã tiêu tốn một phần ba giây trước khi một gói tin rời khỏi tòa nhà của bạn. Phần và bổ sung khía cạnh độ chính xác.
GR00T N1.7, GR00T N1.5 và Pi0.5 bắt đầu từ một điểm kiểm tra của nhà cung cấp (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT không tồn tại cho đến khi bạn huấn luyện nó trên tác vụ của riêng mình, vì vậy không có gì để phục vụ từ xa cho đến khi một công việc huấn luyện đã chạy. Xem ACT trên SO-100.
Hai ngăn xếp máy khách-máy chủ đã tồn tại
Isaac-GR00T cung cấp một máy chủ yêu cầu-phản hồi ZeroMQ; lerobot cung cấp một máy chủ gRPC được xây dựng xung quanh suy luận không đồng bộ. Cả hai đều chấp nhận một GR00T điểm kiểm tra. Danh sách chính sách được hỗ trợ của lerobot trong async_inference/constants.py là act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05 và groot; danh sách robot của nó là so100_follower, so101_follower, bi_so_follower và omx_follower.
| Máy chủ chính sách Isaac-GR00T | Suy luận không đồng bộ của lerobot | |
|---|---|---|
| Điểm vào | gr00t/eval/run_gr00t_server.py | python -m lerobot.async_inference.policy_server |
| Giao vận | ZeroMQ REQ/REP | gRPC, add_insecure_port / insecure_channel |
| Tuần tự hóa | msgpack + msgpack_numpy, allow_pickle=False enforced | pickle.dumps / pickle.loads, marked # nosec |
| Cổng mặc định | 5555 | 8080 |
| Liên kết mặc định | 0.0.0.0, tất cả các giao diện | localhost |
| Xác thực | api_token được lớp hỗ trợ, không được CLI truyền vào | không |
| Thời gian chờ của máy khách | 15000 ms (thời gian chờ của PolicyClient) | thời gian chờ hàng đợi quan sát 2 giây |
| Mô hình thực thi | đồng bộ: chặn, sau đó thực thi khối | không đồng bộ: thực thi trong khi khối tiếp theo đang tính toán |
Hàng tuần tự hóa quan trọng hơn vẻ ngoài của nó. MsgSerializer của GR00T MsgSerializer từ chối các payload ndarray kiểu dữ liệu đối tượng ở cả hai chiều, vì nếu không msgpack_numpy sẽ chuyển chúng cho pickle. lerobot thay vào đó sử dụng pickle: policy_server.py gọi pickle.loads trên dữ liệu yêu cầu, robot_client.py sử dụng pickle để tuần tự hóa dữ liệu quan sát mà nó gửi đi. Có thể chấp nhận được trên mạng LAN đáng tin cậy, không thể chấp nhận được khi cổng có thể truy cập được từ internet.
Lộ trình A: Máy chủ chính sách GR00T của NVIDIA
Đây là đường dẫn NVIDIA tài liệu cho phần cứng SO-100 và SO-101, và là đường dẫn để sử dụng nếu checkpoint của bạn xuất phát từ examples/finetune.sh với --embodiment-tag NEW_EMBODIMENT. Các bước này bổ sung những gì README gốc bỏ qua: đưa cổng đến robot mà không để lộ nó cho những người khác.
- 1Cài đặt GR00T trên máy GPU thuê
Các submodule là bắt buộc, và git-lfs phải tồn tại trước khi clone hoặc các tệp parquet trong
demo_datasẽ đến dưới dạng con trỏ. flash-attn và TensorRT đi kèm với cài đặt mặc định. Cái bẫy trên một image pod mới:torchcodec0.8.0 là backend video duy nhất được hỗ trợ và chỉ tải FFmpeg 4 đến 7. Ubuntu 25.10 và 26.04 đi kèm với FFmpeg 8, vì vậy GR00T sẽ thất bại vớiCould not load libtorchcodec. Cài đặt một FFmpeg dưới 8 và đặt các thư viện của nó vàoLD_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')" - 2Xác thực với backbone được bảo vệ
Mọi checkpoint GR00T N1.7, bao gồm cả fine-tune của riêng bạn, đều tải
nvidia/Cosmos-Reason2-2Bđược bảo vệ khi sử dụng lần đầu. Yêu cầu quyền truy cập trên trang mô hình và đăng nhập vào pod, nếu không việc tải sẽ thất bại vớiGatedRepoError.bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 3Khởi động máy chủ chính sách
Trỏ
--model-pathđến thư mục checkpoint của bạn; trên đường dẫn đó, máy chủ bỏ qua--modality-config-path, vốn chỉ được đọc trên đường dẫn replay. Bỏ qua--model-pathvà thay vào đó truyền--dataset-pathcùng với--execution-horizonđể sử dụng ReplayPolicy phát lại các hành động đã ghi, đây là cách rẻ nhất để chứng minh hệ thống dây điện hoạt động.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 - 4Tạo đường hầm cổng 5555 đến máy robot
Liên kết với loopback, như trên, và chuyển cổng qua SSH hoặc một mạng lưới kiểu WireGuard. Điều đó cung cấp mã hóa và xác thực mà socket ZeroMQ không có, trong khoảng một mili giây.
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 - 5Chạy client robot bên cạnh các servo
Client cần môi trường uv riêng: nó muốn các driver robot của lerobot, chứ không phải stack huấn luyện.
eval_so100.pyimport so100_follower, so101_follower và koch_follower, vì vậy hãy truyền--robot.typephù hợp với cánh tay của bạn (README gốc sử dụng so101_follower). Các khóa camera phải khớp với quá trình huấn luyện: bộ điều hợp đọc chính xácfrontvàwrist, và việc hoán đổi chúng sẽ hiển thị cho chính sách một góc nhìn sai.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 mặc định là --host 0.0.0.0, liên kết mọi giao diện: trên một pod có IP công cộng, đây là một điểm cuối suy luận mở. Và lớp PolicyServer chấp nhận một api_token và xác thực nó theo từng yêu cầu, nhưng run_gr00t_server.py không bao giờ truyền một mã thông báo nào, vì vậy máy chủ CLI không được xác thực bất kể bạn cấu hình gì. Liên kết với 127.0.0.1 và tạo đường hầm. Lỗi ZMQError: Address already in use có nghĩa là cổng 5555 đã được sử dụng; hãy truyền --port.
Lộ trình B: Suy luận không đồng bộ của lerobot
lerobot giải quyết một vấn đề khác. Thay vì chặn robot trong khi mô hình xử lý, client tiếp tục thực hiện các bước trong hàng đợi mà nó đã có trong khi máy chủ tính toán phần tiếp theo. Đây là phân đoạn hành động được phát triển thêm, là ngăn xếp không đồng bộ được giới thiệu cùng với SmolVLA. Nó cũng hoạt động với một checkpoint 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=TrueMáy chủ khởi động trống rỗng: nó không biết mình phục vụ chính sách nào cho đến khi lần bắt tay đầu tiên của máy khách cho nó biết, điều này tiện lợi trên một pod thuê. Hai yếu tố quyết định liệu cánh tay có di chuyển mượt mà hay không là actions_per_chunk và chunk_size_threshold (tài liệu lerobot gọi cái thứ hai là g, theo bài báo SmolVLA), và các giá trị được ghi trong tài liệu và các giá trị được xuất xưởng không khớp nhau.
| Tham số | Giá trị trong mã lerobot 0.6.1 | Chức năng | Lưu ý |
|---|---|---|---|
| actions_per_chunk | không có mặc định, bắt buộc | Số hành động được trả về mỗi lần gọi | Bảng tài liệu liệt kê 50; trường dataclass không có giá trị mặc định, nên CLI yêu cầu một giá trị |
| chunk_size_threshold | 0.5 | Tỷ lệ lấp đầy hàng đợi mà tại đó hoặc dưới đó máy khách gửi một quan sát mới | Bảng tài liệu ghi 0.7; mã và ví dụ của tài liệu lại ghi 0.5 |
| fps | 30 | Tốc độ điều khiển của máy khách, đặt environment_dt = 1/fps | Giảm nó nếu hàng đợi liên tục cạn |
| inference_latency | 1/30 s (33.3 ms) | Độ trễ suy luận mục tiêu trên máy chủ | Một mục tiêu, không phải một phép đo |
| obs_queue_timeout | 2 s | Thời gian máy chủ chờ trên hàng đợi quan sát | Đường truyền lên chậm sẽ thể hiện rõ ở đây trước tiên |
| aggregate_fn_name | weighted_average | Cách các vùng chunk chồng chéo được pha trộn | 0.3 old + 0.7 new; latest_only, average và conservative cũng được xuất xưởng. Registry là AGGREGATE_FUNCTIONS trong configs.py, không phải robot_client.py như tài liệu tuyên bố |
CVE-2026-25874 là lỗ hổng thực thi mã từ xa không cần xác thực trong pipeline suy luận bất đồng bộ của lerobot: pickle.loads() trên dữ liệu nhận được qua kênh gRPC không xác thực mà không có TLS, có thể truy cập thông qua các lệnh gọi SendPolicyInstructions, SendObservations và GetActions. CWE-502, điểm cơ sở CVSS 3.1 là 9.8 từ NVD, điểm cơ sở 4.0 là 9.3 từ CNA được chỉ định. Hồ sơ liệt kê LeRobot qua 0.5.1 bị ảnh hưởng và nêu tên cả máy chủ chính sách và máy khách robot, vì vậy máy tính cạnh cánh tay của bạn nằm trong phạm vi. Nâng cấp không phải là giải pháp: hồ sơ trích dẫn vấn đề upstream 3047 và bản vá, PR 3048, thay thế pickle bằng safetensors cộng với JSON, và vào ngày 23 tháng 8 năm 2026 cả hai vẫn đang mở. policy_server.py trên main vẫn gọi pickle.loads trên dữ liệu yêu cầu trong khi serve() liên kết với add_insecure_port. Hãy liên kết với loopback và không bao giờ chuyển tiếp cổng 8080.
Phép tính quyết định liệu liên kết của bạn có đủ nhanh hay không
Mọi người thường bỏ qua điều này và sau đó mất cả ngày để xử lý . Việc này chỉ mất hai phút và hầu như luôn mang tính quyết định.
Từ điển quan sát được chú thích trong tệp eval_so100.py của NVIDIA cho biết những gì được truyền qua mạng: hai mảng có hình dạng (480, 640, 3) ở định dạng uint8, sáu số float khớp, một chuỗi ngôn ngữ. Đó là 921.600 byte mỗi khung hình, 1.843.200 byte cho hai camera, khoảng 14.7 Mbit, và không có ngăn xếp nào nén JPEG nó. Khối dữ liệu trả về là vài chục bước gồm 6 số float. Tốc độ tải lên của bạn quyết định mọi thứ, không phải tốc độ tải xuống.
| Băng thông tải lên | Thời gian để đẩy một quan sát (14.7 Mbit) | Đánh giá cho cánh tay robot 30 FPS |
|---|---|---|
| 10 Mbit/s, tải lên gia đình thông thường | ~1.47 s | Không thể sử dụng. Cánh tay robot dừng lại giữa mỗi khối dữ liệu. |
| 25 Mbit/s | ~0.59 s | Chỉ thực hiện các tác vụ gắp đặt chậm, với thời gian thực hiện dài. |
| 50 Mbit/s | ~0.29 s | Có thể thực hiện các tác vụ có chủ đích. |
| 100 Mbit/s | ~0.15 s | Tốt cho tác vụ gắp đặt, có thể thấy rõ khi chuyển động nhanh. |
| Cáp quang 1 Gbit/s hoặc trung tâm dữ liệu | ~0.015 s | Thay vào đó, mô hình trở thành nút thắt cổ chai. |
Ngân sách bạn phải tuân thủ
Client GR00T SO-100 hoạt động đồng bộ: nó gọi policy.get_action(obs), thực hiện action_horizon bước đầu tiên của khối ở tốc độ 30 FPS, sau đó gọi lại. Kích thước khối và tầm nhìn là những con số khác nhau: hướng dẫn triển khai của NVIDIA khuyến nghị kích thước khối hành động là 16, ít nhất 32 khi kết hợp với phân đoạn thời gian thực, trong khi eval_so100.py cung cấp tầm nhìn thực thi là 8. Tám bước ở 30 FPS tương đương 267 ms chuyển động mỗi lần gọi, và mọi thứ khác phải nằm trong khoảng thời gian đó.
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 staleTăng tầm nhìn là một giải pháp thô sơ và không miễn phí: cánh tay robot hoạt động dựa trên một quan sát đã cũ. Giải pháp có nguyên tắc là phân đoạn thời gian thực (real-time chunking), tính toán khối tiếp theo trong khi khối hiện tại đang chạy, đóng băng các hành động được đảm bảo thực thi và điền vào phần còn lại; bài báo về RTC báo cáo rằng nó mạnh mẽ đối với độ trễ suy luận mà không cần huấn luyện lại. Hãy kiểm tra xem điều đó đang ở đâu trước. NVIDIA đánh dấu RTC là thử nghiệm, một nguyên thủy mô hình cấp thấp có thể truy cập thông qua action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), không được kết nối vào Gr00tPolicy hoặc đường dẫn máy chủ-máy khách, nơi options không được sử dụng, không có thử nghiệm và không có ví dụ. Thông qua một máy chủ chính sách, bạn sẽ có được thực thi không đồng bộ, chứ không phải RTC.
NVIDIA đánh giá GR00T N1.7 từ đầu đến cuối ở 4 bước khử nhiễu với một camera. Trên H100 80GB HBM3: 85.8 ms (11.7 Hz) trong PyTorch eager, 48.6 ms (20.6 Hz) với torch.compile, 27.9 ms (35.9 Hz) với toàn bộ pipeline TensorRT. Một L40 ở chế độ eager mất 128.3 ms (7.8 Hz). NVIDIA gọi 10 Hz là mức tối thiểu được khuyến nghị cho các thao tác thông thường, và dưới 10 Hz chỉ phù hợp cho các tác vụ chậm, không phản ứng. Đó là tốc độ lập kế hoạch lại: một chính sách 10 Hz vẫn có thể điều khiển cánh tay 30 FPS thông qua phân đoạn hành động. Một camera thứ hai sẽ đưa bạn đi sai hướng.
Đo lường trước khi tin tưởng
Mọi con số trên đây đều là dự đoán. Bốn lệnh sau sẽ biến chúng thành phép đo, đáng để chạy trước khi dành một giờ pod cho một tác vụ không bao giờ có thể hoạt động.
- 1Lấy thời gian khứ hồi thô
Chống lại pod, không phải CDN. Theo dõi độ lệch chặt chẽ như giá trị trung bình: độ rung (jitter) khiến cánh tay bị giật, chứ không phải độ trễ trung bình.
bashping -c 50 <pod-host> # the mdev column is the number that predicts stutter - 2Đo băng thông tải lên bạn có, không phải băng thông bạn trả tiền
Tốc độ tải lên dân dụng thường chỉ bằng một phần nhỏ so với tốc độ tải xuống, và đó là con số trong bảng băng thông ở trên.
bash# on the pod iperf3 -s # on the robot machine, -R omitted so this measures upload iperf3 -c <pod-host> -t 30 - 3Đọc nhật ký độ trễ của chính client
Client robot lerobot ghi lại độ trễ từ máy chủ đến client và thời gian giải tuần tự hóa cho mỗi chunk. Trên tuyến B, bạn không cần công cụ bên ngoài nào.
textReceived action chunk for step #240 | Latest action: #232 | Incoming actions: 240:289 | Network latency (server->client): 187.44ms | Deserialization time: 3.10ms - 4Theo dõi hàng đợi hành động cạn kiệt
Truyền
--debug_visualize_queue_size=Truevà client sẽ vẽ biểu đồ kích thước hàng đợi trong thời gian chạy. Nếu nó liên tục về 0, bạn đã hết ngân sách: hãy giảm fps, tăng actions_per_chunk, hoặc tăng chunk_size_threshold để các quan sát được gửi đi thường xuyên hơn.bashpython -m lerobot.async_inference.robot_client \ ... \ --debug_visualize_queue_size=True
Suy luận từ xa thực sự tốt cho điều gì
- Bạn có thể đánh giá một chính sách 3 tỷ tham số trên phần cứng thực mà không cần sở hữu một card có giá đắt hơn cánh tay robot.
- GPU được thuê theo giờ, vì vậy một điểm kiểm tra thất bại chỉ tốn vài đô la.
- Phía robot vẫn nhỏ gọn: trình điều khiển lerobot, hai camera, một cổng nối tiếp, và bạn có thể thay đổi các điểm kiểm tra mà không cần chạm vào nó.
- Dữ liệu quan sát không nén chiếm phần lớn chi phí đường truyền, và tốc độ tải lên của mạng dân dụng là giới hạn ràng buộc.
- Jitter gây hại nhiều hơn độ trễ: một đường truyền trung bình 40 ms với các đỉnh lên tới 300 ms sẽ bị giật, trong khi một đường truyền ổn định 120 ms thì không.
- Các tác vụ phản ứng nhanh không thể thực hiện được trong một chu trình khứ hồi ở bất kỳ tầm nhìn nào.
- Cả hai máy chủ đều được gửi dưới dạng CLI không xác thực, vì vậy công việc tạo đường hầm là của bạn.
- Mất kết nối giữa chừng khiến cánh tay giữ một hành động cũ. Hãy thêm bộ giám sát (watchdog) của riêng bạn ở phía robot.
| Nhiệm vụ | Hoạt động qua internet công cộng? | Lý do |
|---|---|---|
| Chọn một vật thể tĩnh, đặt vào thùng | Yes | Không có gì di chuyển giữa quan sát và hành động. |
| Xếp chồng các khối với tốc độ có chủ ý | Yes, at action_horizon 16 or more | Lỗi tích lũy đủ chậm để có thể sửa trong khối tiếp theo. |
| Mở ngăn kéo, đặt vật thể vào | Usually | Giàu tiếp xúc nhưng chậm. Cẩn thận với việc dừng và đi khi tiếp xúc. |
| Theo dõi một vật thể đang di chuyển | No | Chính sách hoạt động dựa trên dữ liệu quan sát đã cũ 300 ms đến 1 s. |
| Bắt, giữ thăng bằng, hoặc phục hồi sau khi trượt | No | Cửa sổ hiệu chỉnh ngắn hơn một chu trình khứ hồi. |
| Vòng lặp kín đồng bộ 30 Hz | No | Ngân sách là 33 ms từ đầu đến cuối. Ngay cả mạng LAN cũng gặp khó khăn. |
Nếu một lần chạy từ xa bị giật tại cùng một điểm trong mỗi tập, thì mạng có lẽ không phải là nguyên nhân. Một chính sách do dự ở cùng một góc khớp mỗi lần thường là vấn đề dữ liệu; xem các trang về chế độ lỗi, đặc biệt là một chính sách chỉ hoạt động trong một thiết lập và mất mát giảm nhưng chính sách không làm gì.
Tự làm so với làm trên AY-Robots
- Thuê GPU trên thị trường giao ngay và chờ đủ VRAM với mức giá bạn mong muốn.
- Cài đặt CUDA, uv, một ffmpeg torchcodec chấp nhận, và GR00T stack cùng với các submodule.
- Yêu cầu quyền truy cập vào backbone
nvidia/Cosmos-Reason2-2Bcó cổng và đặt một token trên pod. - Kéo checkpoint của bạn lên pod.
- Khởi động máy chủ trên loopback, sau đó xây dựng một đường hầm SSH từ máy robot.
- Cài đặt một môi trường thứ hai trên máy robot cho client và các driver.
- Đối chiếu các khóa camera, tên khớp và hướng dẫn ngôn ngữ với những gì checkpoint đã thấy.
- Theo dõi pod. Một A100 bị quên chạy qua đêm tốn kém hơn cả thí nghiệm.
Hóa đơn GPU không ngừng lại khi robot dừng. Hầu hết tiền bị mất vào suy luận từ xa là do một máy chủ vẫn hoạt động sau khi mọi người đã rời đi. Hãy đặt báo thức, hoặc tự động hóa việc hủy bỏ.
- Chọn chính sách đã huấn luyện mà bạn muốn chạy.
/api/inference/podtự động cấp phát một pod GPU đám mây phục vụ chính sách đó.- Client robot cục bộ giao tiếp với điểm cuối đó. Các checkpoint cơ sở là của các nhà cung cấp:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base. ACT không có. - Các pod mang theo một watchdog nhàn rỗi và tự hủy sau một khoảng thời gian không hoạt động, vì vậy không có gì tiếp tục tính phí một cách âm thầm.
- Các thao tác tương tự có sẵn từ một terminal và cho các tác nhân AI, vì vậy vòng lặp có thể được lập trình.
Tự động cấp phát loại bỏ công việc thiết lập và hóa đơn pod bị quên, chứ không phải vật lý. Suy luận vẫn phải nằm cạnh các servo cho các tác vụ nhanh: vòng điều khiển là 20 đến 485 ms mỗi bước hành động tùy thuộc vào mô hình, và các chuyến đi khứ hồi qua internet công cộng trên đó biến một chính sách hoạt động thành một chính sách do dự.
- Hướng dẫn client cho phía cục bộ của kết nối
- Chạy chính sách đầu tiên của bạn để xem hướng dẫn chi tiết
- CLI và máy chủ MCP cho phiên bản được lập trình
- Tài liệu bảo mật

Chi phí của một phiên suy luận từ xa
Hai con số quan trọng: giá theo giờ của card, và bạn để nó chạy trong bao lâu. Con số đầu tiên được công bố; con số thứ hai gây bất ngờ cho mọi người.
| Card | Đám mây cộng đồng Runpod | Đám mây bảo mật Runpod | Phù hợp cho |
|---|---|---|---|
| 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 | Tương tự, nhanh hơn một chút |
| H100 PCIe 80 GB | 1.99 USD/h | 2.89 USD/h | Cấp nhanh nhất; con số 11.7 Hz của NVIDIA là dành cho H100 80GB HBM3 |
| L40S 48 GB | 0.79 USD/h | 0.99 USD/h | Chỉ suy luận, trên mức sàn 16 GB |
| RTX 4090 24 GB | 0.34 USD/h | 0.74 USD/h | SmolVLA, ACT |
Những mức giá đó được đọc từ trang giá của Runpod vào ngày 23 tháng 8 năm 2026, và thị trường giao ngay luôn biến động. AY-Robots thay vào đó báo giá cho toàn bộ một lần chạy: 3 đến 6 giờ với giá 1.20 đến 2.00 USD mỗi giờ trên cấp A100 hoặc H100, khoảng 4 đến 12 USD cho một lần chạy GR00T hoặc Pi0.5; 2 đến 5 giờ với giá 0.30 đến 0.60 USD mỗi giờ trên cấp 24 GB, 1 đến 3 USD cho SmolVLA hoặc ACT. Một phiên suy luận chỉ vượt trội hơn một lần chạy huấn luyện về chi phí nếu bạn dừng nó, đó là lý do tại sao có bộ giám sát không hoạt động. Xem tài liệu thanh toán và trang giá.

Nếu bạn không muốn có mạng trong vòng lặp
Suy luận từ xa giải quyết vấn đề phần cứng và tạo ra vấn đề độ trễ. Đôi khi, giải pháp tốt hơn là một chính sách phù hợp với phần cứng bạn đang có.
- ACT, khoảng 80 triệu tham số và 20 ms mỗi bước hành động, tối thiểu 50 tập, bất kỳ card 24 GB nào. Trong một thiết lập tác vụ đơn lặp đi lặp lại, nó thường vượt trội hơn một mô hình 3 tỷ tham số từ xa, vì nó không bao giờ phải chờ gói tin.
- SmolVLA, khoảng 450 triệu tham số và 245 ms mỗi bước hành động, tối thiểu 30 tập. Nó giữ lại khả năng điều kiện hóa ngôn ngữ mà ACT thiếu, và tài liệu của lerobot cho biết nó chiếm khoảng 2 GB tại thời điểm suy luận so với khoảng 14 GB cho PI0.
- ACT vs GR00T N1.7 cho nửa phần chính xác của sự đánh đổi.
Cũng có một con đường trung gian: huấn luyện trên đám mây, đánh giá cục bộ. Tinh chỉnh cần card 80 GB và không quan tâm đến độ trễ, vì vậy huấn luyện GR00T N1.7 trên SO-100 từ xa là không gây tranh cãi. Chỉ vòng lặp đánh giá mới có ràng buộc thời gian thực; tài liệu huấn luyện và ma trận mô hình và cánh tay robot bao gồm nửa phần đó.
Chưa có cánh tay robot trên bàn?
Điều khiển một SO-100 thực trong trình duyệt mà không cần đăng ký, so sánh năm chính sách có thể huấn luyện với các số liệu độ trễ thực của chúng, hoặc thuê GPU và huấn luyện một cái. Ba cách để bắt đầu, không cách nào yêu cầu phần cứng bạn không sở hữu.
Thử mà không cần phần cứngCác câu hỏi thường gặp
Tôi có thể chạy GR00T N1.7 trên Raspberry Pi nếu GPU ở xa không?▾
Có, đó là mục đích của việc phân tách client-server. Pi chạy các driver của lerobot, đọc hai camera và một bus nối tiếp, sau đó gửi các quan sát đến máy chủ chính sách; nó không bao giờ tải mô hình. Hạn chế chuyển từ VRAM sang băng thông tải lên: hai khung hình RGB 640x480 không nén là 1.843.200 byte mỗi lần gọi, và cả hai ngăn xếp đều không nén chúng.
Mạng thực sự thêm bao nhiêu độ trễ?▾
Thời gian khứ hồi cộng với thời gian truyền quan sát. Thời gian truyền là 14.7 Mbit chia cho băng thông tải lên của bạn: khoảng 147 ms trên liên kết 100 Mbit/s, 1.47 s trên liên kết 10 Mbit/s. Cả hai đều cộng thêm vào thời gian suy luận của mô hình, mà AY-Robots liệt kê là 152 ms cho GR00T N1.7 và 485 ms cho Pi0.5. Đo bằng ping và iperf3 với pod, không phải máy chủ kiểm tra tốc độ.
Suy luận từ xa có đủ tốt cho một tác vụ thực tế không?▾
Đối với các tác vụ chọn và đặt chậm, có chủ đích, thì có. Đối với bất kỳ tác vụ phản ứng nào, thì không. Hướng dẫn triển khai của NVIDIA đặt yêu cầu bước đơn đồng bộ ở mức khoảng 33 ms từ đầu đến cuối ở 30 FPS, và lưu ý rằng việc thu thập, mạng, suy luận và xử lý hậu kỳ thường xuyên vượt quá mức đó mà không cần internet.
Các máy chủ sử dụng cổng nào và có an toàn để mở nó không?▾
PolicyServer của Isaac-GR00T mặc định sử dụng cổng 5555 qua ZeroMQ và liên kết 0.0.0.0 trong CLI của nó. lerobot mặc định sử dụng cổng 8080 qua gRPC và liên kết localhost. Cả hai đều không an toàn để phơi bày: lớp GR00T hỗ trợ một api_token nhưng run_gr00t_server.py không bao giờ truyền một cái, và lerobot mã hóa dữ liệu qua một kênh gRPC không an toàn, đó là CVE-2026-25874. Hãy liên kết với loopback và sử dụng một đường hầm SSH.
Nâng cấp lerobot có khắc phục được CVE-2026-25874 không?▾
Tính đến ngày 23 tháng 8 năm 2026 thì chưa. Hồ sơ CVE liệt kê LeRobot từ 0.5.1 trở xuống bị ảnh hưởng và PyPI cung cấp 0.6.1, nhưng yêu cầu kéo (pull request) loại bỏ pickle khỏi pipeline bất đồng bộ vẫn đang mở, và policy_server.py trên nhánh chính vẫn gọi pickle.loads trên dữ liệu yêu cầu. Hãy coi việc cách ly mạng là biện pháp giảm thiểu, không phải là việc tăng phiên bản, và giả định rằng client phía robot cũng nằm trong phạm vi.
Tôi có thể sử dụng client bất đồng bộ của lerobot với một checkpoint GR00T không?▾
Có. lerobot 0.6.1 liệt kê groot trong SUPPORTED_POLICIES cùng với act, smolvla, diffusion, tdmpc, vqbet, pi0 và pi05, và cả so100_follower lẫn so101_follower đều nằm trong SUPPORTED_ROBOTS. Truyền --policy_type=groot và trỏ --pretrained_name_or_path vào checkpoint của bạn. Bạn sẽ có được khả năng thực thi bất đồng bộ, điều mà ví dụ GR00T SO-100 không triển khai, với chi phí là việc truyền tải pickle.
Phiên bản tóm tắt
Suy luận từ xa cho một 3 B chính sách là một vấn đề kỹ thuật đã được giải quyết nhưng kèm theo một vấn đề vật lý chưa được giải quyết. Kỹ thuật bao gồm hai lệnh và một đường hầm SSH. Vấn đề vật lý là một quan sát 1.8 MB phải đến được GPU ở một quốc gia khác và quay trở lại trước khi cánh tay hết hành động. Hãy tính toán trước khi thuê bất cứ thứ gì, chọn một tác vụ có thể chấp nhận quan sát cũ, và nâng cao tầm nhìn thực thi thay vì hy vọng liên kết sẽ cải thiện.
Nếu bạn chưa ghi lại tập dữ liệu nào, ghi lại tập dữ liệu đầu tiên của bạn và hướng dẫn cài đặt SO-100 được ưu tiên trước, và mục định dạng tập dữ liệu LeRobot giải thích những gì trình ghi ghi lại. Nền tảng nằm trong các mô hình hành động ngôn ngữ thị giác và công trình chính sách khớp dòng chảy; mục mục đấu trường liên kết mọi số liệu benchmark với một nguồn.
Sources
- NVIDIA Isaac-GR00T: Kho lưu trữ N1.7 và README (ngưỡng suy luận 16 GB, cài đặt, backbone Cosmos-Reason2-2B có cổng, ràng buộc FFmpeg)
- run_gr00t_server.py: CLI máy chủ chính sách GR00T, mặc định ServerConfig (host 0.0.0.0, port 5555) và đường dẫn ReplayPolicy
- server_client.py: PolicyServer và PolicyClient, giới hạn allow_pickle=False của MsgSerializer, api_token, timeout_ms
- eval_so100.py: client chính sách SO-100, mặc định EvalConfig và vòng lặp điều khiển đồng bộ
- Ví dụ Isaac-GR00T SO100/SO101: chuyển đổi tập dữ liệu, tinh chỉnh và các lệnh đánh giá vòng kín
- Hướng dẫn triển khai thực tế Isaac-GR00T: ngân sách đồng bộ 33 ms, dừng và đi, kích thước khối hành động, trạng thái RTC
- Đề xuất phần cứng Isaac-GR00T: tần số suy luận trên mỗi GPU và mức tối thiểu 10 Hz
- Hướng dẫn triển khai và suy luận Isaac-GR00T: kết quả benchmark độ trễ từng thành phần
- LeRobot: Hướng dẫn suy luận bất đồng bộ (PolicyServer, RobotClient, bảng tham số được ghi lại)
- lerobot async_inference/configs.py: Mặc định PolicyServerConfig và RobotClientConfig, registry AGGREGATE_FUNCTIONS
- lerobot async_inference/policy_server.py: pickle.loads trên dữ liệu yêu cầu, add_insecure_port, tên gọi gRPC
- lerobot robot_client.py: truyền tải gRPC, tuần tự hóa pickle, ghi nhật ký độ trễ
- CVE-2026-25874: LeRobot thực thi mã từ xa thông qua gRPC do giải tuần tự hóa không an toàn, bị ảnh hưởng đến phiên bản 0.5.1
- Black, Galliker và Levine, Thực thi chính sách dòng chảy phân đoạn hành động theo thời gian thực (phân đoạn thời gian thực)
- Giá GPU Runpod: giá theo giờ đám mây cộng đồng và an toàn cho A100, H100, L40S và 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