Trang dùng thử AY-Robots: ba cách để bắt đầu mà không cần sở hữu robot, bao gồm thuê GPU để suy luận chính sách
GR00T N1.7Suy luận từ xaGPU đám mâyLeRobotSO-100Độ trễ

Chạy suy luận GR00T mà không cần GPU cục bộ

AY-Robots ResearchAugust 23, 202619 phút đọc

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áchTham sốSuy luận mỗi bước hành độngCấp GPU để huấn luyệnSố 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ỉnh152 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, kiến trúc PaliGemma485 msA100 80 GB or H100 80 GB50LeRobot v3.0
SmolVLA~450 M245 msRTX 4090 hoặc bất kỳ card 24 GB nào30LeRobot v3.0
ACT~80 M20 msRTX 4090 hoặc bất kỳ card 24 GB nào50LeRobot v3.0
Trang chính sách của AY-Robots so sánh năm chính sách có thể huấn luyện được theo tham số, cấp GPU, độ trễ suy luận và số tập tối thiểu
Năm hàng tương tự trên /policies. Cột độ trễ quyết định liệu một chính sách có thể tồn tại qua một bước nhảy mạng hay không.

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.

ACT không có mô hình cơ sở

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-GR00TSuy luận không đồng bộ của lerobot
Điểm vàogr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
Giao vậnZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
Tuần tự hóamsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, marked # nosec
Cổng mặc định55558080
Liên kết mặc định0.0.0.0, tất cả các giao diệnlocalhost
Xác thựcapi_token được lớp hỗ trợ, không được CLI truyền vàokhông
Thời gian chờ của máy khách15000 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ốikhô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.

  1. 1
    Cà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_data sẽ đế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: torchcodec 0.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ới Could not load libtorchcodec. Cài đặt một FFmpeg dưới 8 và đặt các thư viện của nó vào 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
    Xá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ới GatedRepoError.

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    Khở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-path và thay vào đó truyền --dataset-path cù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.

    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
    Tạ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
  5. 5
    Chạ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.py import so100_follower, so101_follower và koch_follower, vì vậy hãy truyền --robot.type phù 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ác frontwrist, và việc hoán đổi chúng sẽ hiển thị cho chính sách một góc nhìn sai.

    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"
Hai cài đặt mặc định có thể gây rắc rối

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.

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
Máy chủ chính sách trên GPU, client robot trên máy có cổng USB

Má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_chunkchunk_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.1Chức năngLưu ý
actions_per_chunkkhông có mặc định, bắt buộcSố hành động được trả về mỗi lần gọiBả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_threshold0.5Tỷ 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ớiBảng tài liệu ghi 0.7; mã và ví dụ của tài liệu lại ghi 0.5
fps30Tốc độ điều khiển của máy khách, đặt environment_dt = 1/fpsGiảm nó nếu hàng đợi liên tục cạn
inference_latency1/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_timeout2 sThờ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_nameweighted_averageCách các vùng chunk chồng chéo được pha trộn0.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ố
Máy chủ chính sách lerobot có lỗ hổng RCE chưa được vá

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, SendObservationsGetActions. 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ênThờ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 sKhô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 sChỉ 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 sCó thể thực hiện các tác vụ có chủ đích.
100 Mbit/s~0.15 sTố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 sThay 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 đó.

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
Ví dụ minh họa: đường truyền lên 100 Mbit/s, độ trễ khứ hồi 30 ms, GR00T N1.7

Tă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.

Chi phí của mô hình trước khi mạng lưới hoạt động

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.

  1. 1
    Lấ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.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 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. 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.

    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
    Theo dõi hàng đợi hành động cạn kiệt

    Truyền --debug_visualize_queue_size=True và 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.

    bash
    python -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ì

Chính sách trên GPU thuê, cánh tay robot trên bàn của bạn
Ưu điểm
  • 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ó.
Đánh đổi
  • 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ùngYesKhô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 moreLỗ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àoUsuallyGià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ểnNoChí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ượtNoCử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 HzNoNgâ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ậpmấ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

  1. Thuê GPU trên thị trường giao ngay và chờ đủ VRAM với mức giá bạn mong muốn.
  2. Cài đặt CUDA, uv, một ffmpeg torchcodec chấp nhận, và GR00T stack cùng với các submodule.
  3. Yêu cầu quyền truy cập vào backbone nvidia/Cosmos-Reason2-2B có cổng và đặt một token trên pod.
  4. Kéo checkpoint của bạn lên pod.
  5. Khởi động máy chủ trên loopback, sau đó xây dựng một đường hầm SSH từ máy robot.
  6. Cài đặt một môi trường thứ hai trên máy robot cho client và các driver.
  7. Đố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.
  8. Theo dõi pod. Một A100 bị quên chạy qua đêm tốn kém hơn cả thí nghiệm.
Pod nhàn rỗi là chi phí thực sự

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ỏ.

Trang máy chủ MCP của AY-Robots liệt kê các hoạt động nền tảng được hiển thị dưới dạng công cụ cho các tác nhân AI
Trang MCP: các hoạt động cấp phát và suy luận được hiển thị dưới dạng công cụ mà một tác nhân có thể gọi.

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 RunpodPhù hợp cho
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/hTương tự, nhanh hơn một chút
H100 PCIe 80 GB1.99 USD/h2.89 USD/hCấp nhanh nhất; con số 11.7 Hz của NVIDIA là dành cho H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hChỉ suy luận, trên mức sàn 16 GB
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, 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ántrang giá.

Bảng chi phí của AY-Robots hiển thị mỗi chính sách cần GPU nào, thời gian chạy và giá điển hình, và số tập trước khi một chính sách hữu ích
Bảng chi phí trên /try: mỗi mô hình cần loại card nào và chi phí điển hình cho một lần chạy.

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ệnma 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ứng

Cá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ạnhướ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áccô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

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started