
เครื่องหุ่นยนต์ของคุณไม่มี GPU วางเซิร์ฟเวอร์นโยบาย GR00T บน GPU คลาวด์ที่เช่าไว้ สตรีมกลุ่มการกระทำไปยังแขนหุ่นยนต์ และเรียนรู้ว่าเครือข่ายมีค่าใช้จ่ายเท่าไรสำหรับคุณ
Raspberry Pi เพียงพอที่จะขับเคลื่อน SO-100 ผ่านบัสอนุกรมและดึงเฟรมจากกล้อง USB สองตัว แต่ไม่เพียงพอที่จะรันโมเดลที่มีพารามิเตอร์สามพันล้านตัวอย่าง โมเดลวิสัยทัศน์-ภาษา-การกระทำ: README ของ NVIDIA ระบุว่าการอนุมานของ GR00T N1.7 ต้องใช้ GPU หนึ่งตัวที่มี VRAM 16 GB ขึ้นไป หากต้องการดูว่าเช็คพอยต์ GR00T N1.7 ที่ปรับแต่งแล้วของคุณทำงานอย่างไรบนแขนหุ่นยนต์โดยไม่ต้องซื้อการ์ด ให้วางนโยบายบน GPU คลาวด์ที่เช่าไว้ รักษาลูปหุ่นยนต์ไว้บนเครื่องที่มีพอร์ต USB และส่งข้อมูลการสังเกตและส่วนของการกระทำผ่านเครือข่าย
มันใช้งานได้จริง ไม่ฟรี และราคาไม่ได้กระจายอย่างสม่ำเสมอในแต่ละงาน ด้านล่าง: เซิร์ฟเวอร์นโยบายของ NVIDIA เอง, สแต็กอะซิงโครนัสของ lerobot, การคำนวณที่บอกล่วงหน้าว่าอัปลิงก์ของคุณเร็วพอหรือไม่ และเส้นทางแพลตฟอร์ม ทั้งหมดนี้ได้รับการตรวจสอบกับ Isaac-GR00T main branch (N1.7 GA) และ lerobot 0.6.1 ณ วันที่ 23 สิงหาคม 2026
สิ่งที่คุณต้องรู้
- •GR00T N1.7, GR00T N1.5 และ Pi0.5 เป็นโมเดลที่มีพารามิเตอร์ประมาณ 3 พันล้านตัว ไม่มีตัวใดที่สามารถติดตั้งบนคอนโทรลเลอร์หุ่นยนต์ได้หากไม่มี discrete GPU
- •Isaac-GR00T และ lerobot ทั้งคู่มาพร้อมกับการแบ่งแบบไคลเอนต์-เซิร์ฟเวอร์ คุณไม่จำเป็นต้องเขียนส่วนการขนส่งข้อมูลเอง
- •ข้อมูลการสังเกตเป็นส่วนที่ใช้ต้นทุนการส่งข้อมูลมากที่สุด ไม่ใช่การกระทำ: เฟรม RGB ขนาด 640x480 ที่ไม่บีบอัดสองเฟรมมีขนาด 1,843,200 ไบต์ หรือประมาณ 14.7 Mbit ต่อการเรียกหนึ่งครั้ง และทั้งสองสแต็กก็ไม่ได้บีบอัดข้อมูลเหล่านี้
- •AY-Robots ระบุว่าใช้เวลา 20 ถึง 485 ms ต่อขั้นตอนการกระทำขึ้นอยู่กับโมเดล การเดินทางไปกลับทางอินเทอร์เน็ตจะเพิ่มเข้ามาจากเวลานั้น
- •การอนุมานระยะไกลเหมาะสำหรับงานหยิบและวางที่ช้า ไม่ใช่การเคลื่อนไหวตอบสนองที่รวดเร็ว ขอบเขตการดำเนินการที่ยาวนานขึ้นจะช่วยซื้อเวลาและมีผลต่อความสดใหม่ของข้อมูลการสังเกต
- •เซิร์ฟเวอร์ทั้งสองไม่ปลอดภัยบน IP สาธารณะตามที่จัดส่งมา และ lerobot มี RCE ที่ยังไม่ได้รับการแก้ไข ควรใช้การทำ Tunnel
ทำไมนโยบายจึงไม่สามารถติดตั้งบนเครื่องหุ่นยนต์ได้
นโยบายสองในห้าข้อที่ AY-Robots สามารถฝึกได้ทำงานบนการ์ดเวิร์กสเตชัน ส่วนอีกสามข้อไม่ทำงาน The เวลาแฝงของการอนุมาน คอลัมน์ด้านล่างนี้คือต่อขั้นตอนการดำเนินการ และเป็นตัวเลขที่แข่งขันกับการเดินทางไปกลับของเครือข่ายของคุณ
| นโยบาย | พารามิเตอร์ | การอนุมานต่อขั้นตอนการดำเนินการ | ระดับ GPU สำหรับการฝึก | จำนวนตอนขั้นต่ำ | รูปแบบชุดข้อมูล |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M trained during fine-tuning | 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 ที่ 20 มิลลิวินาทีต่อขั้นตอนทำงานบนเครื่องหุ่นยนต์และคุณจะไม่ต้องคิดถึงมันอีกเลย Pi0.5 ที่ 485 มิลลิวินาทีใช้เวลาไปหนึ่งในสามของวินาทีก่อนที่แพ็กเก็ตจะออกจากอาคารของคุณ The การเปรียบเทียบนโยบาย และ 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 บน SO-100.
สแต็กไคลเอนต์-เซิร์ฟเวอร์สองชุดที่มีอยู่แล้ว
Isaac-GR00T มาพร้อมกับเซิร์ฟเวอร์ ZeroMQ request-reply; 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 supported by the class, not passed by the CLI | ไม่มี |
| หมดเวลาไคลเอนต์ | 15000 ms (PolicyClient timeout_ms) | 2 s observation queue timeout |
| โมเดลการประมวลผล | ซิงโครนัส: บล็อก จากนั้นประมวลผลส่วนข้อมูล | อะซิงโครนัส: ประมวลผลในขณะที่ส่วนข้อมูลถัดไปกำลังคำนวณ |
ลำดับการจัดเก็บข้อมูลมีความสำคัญมากกว่าที่เห็น MsgSerializer ของ GR00T MsgSerializer ปฏิเสธเพย์โหลด ndarray ชนิด object-dtype ทั้งสองทิศทาง เนื่องจาก msgpack_numpy จะส่งต่อให้ pickle แทน lerobot ใช้ pickle แทน: policy_server.py เรียกใช้ pickle.loads กับข้อมูลคำขอ robot_client.py ใช้ pickle กับข้อมูลการสังเกตที่ส่งไป สามารถป้องกันได้ใน LAN ที่เชื่อถือได้ แต่ไม่สามารถป้องกันได้เมื่อพอร์ตสามารถเข้าถึงได้จากอินเทอร์เน็ต
เส้นทาง A: เซิร์ฟเวอร์นโยบาย GR00T ของ NVIDIA เอง
นี่คือเส้นทางที่ NVIDIA จัดทำเอกสารสำหรับฮาร์ดแวร์ SO-100 และ SO-101 และเป็นเส้นทางที่ควรใช้หากจุดตรวจสอบของคุณมาจาก examples/finetune.sh พร้อม --embodiment-tag NEW_EMBODIMENT ขั้นตอนเหล่านี้จะเพิ่มสิ่งที่ README ต้นฉบับละเว้นไป: การส่งพอร์ตไปยังหุ่นยนต์โดยไม่เปิดเผยให้ผู้อื่นทราบ
- 1ติดตั้ง GR00T บนเครื่อง GPU ที่เช่า
จำเป็นต้องมี Submodules และ git-lfs ต้องมีอยู่ก่อนการโคลน มิฉะนั้นไฟล์ parquet ใน
demo_dataจะมาถึงในรูปแบบของพอยน์เตอร์ 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_PATHbashsudo 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แบบมีเกตในการใช้งานครั้งแรก ขอสิทธิ์เข้าถึงบนหน้าโมเดลและเข้าสู่ระบบบนพ็อด มิฉะนั้นการโหลดจะล้มเหลวพร้อมข้อความGatedRepoErrorbashuv 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 ไปยังเครื่องหุ่นยนต์
ผูกกับ loopback ดังที่กล่าวไว้ข้างต้น และส่งพอร์ตผ่าน SSH หรือเครือข่ายแบบ WireGuard สิ่งนี้จะให้การเข้ารหัสและการยืนยันตัวตนที่ ZeroMQ socket ไม่มีให้ โดยใช้เวลาประมาณหนึ่งมิลลิวินาที
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 checkpoint ได้ด้วย
# 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 เรียกตัวที่สองว่า g ตามเอกสาร SmolVLA) และค่าที่ระบุในเอกสารกับค่าที่จัดส่งมาไม่ตรงกัน
| พารามิเตอร์ | ค่าในโค้ด lerobot 0.6.1 | หน้าที่ | หมายเหตุ |
|---|---|---|---|
| actions_per_chunk | ไม่มีค่าเริ่มต้น, จำเป็น | จำนวนการกระทำที่ส่งคืนต่อการเรียก | ตารางในเอกสารระบุ 50; ฟิลด์ dataclass ไม่มีค่าเริ่มต้น ดังนั้น 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 เก่า + 0.7 ใหม่; latest_only, average และ conservative ก็มีให้ใช้งาน. Registry คือ AGGREGATE_FUNCTIONS ใน configs.py ไม่ใช่ robot_client.py ตามที่เอกสารอ้าง |
CVE-2026-25874 คือการเรียกใช้โค้ดจากระยะไกลโดยไม่ได้รับการยืนยันตัวตนในไปป์ไลน์การอนุมานแบบอะซิงโครนัสของ lerobot: pickle.loads() บนข้อมูลที่ได้รับผ่านช่อง gRPC ที่ไม่ได้รับการยืนยันตัวตนและไม่มี TLS ซึ่งสามารถเข้าถึงได้ผ่านการเรียกใช้ SendPolicyInstructions, SendObservations และ GetActions เหล่านี้ CWE-502, CVSS 3.1 คะแนนพื้นฐาน 9.8 จาก NVD, คะแนนพื้นฐาน 4.0 จาก CNA ที่กำหนด บันทึกระบุว่า LeRobot เวอร์ชัน 0.5.1 และก่อนหน้า ได้รับผลกระทบ และระบุทั้งเซิร์ฟเวอร์นโยบายและไคลเอนต์หุ่นยนต์ ดังนั้นเครื่องที่อยู่ข้างแขนหุ่นยนต์ของคุณจึงอยู่ในขอบเขต การอัปเกรดไม่ใช่การแก้ไข: บันทึกอ้างถึงปัญหาต้นน้ำ 3047 และแพตช์ PR 3048 ซึ่งเปลี่ยน pickle เป็น safetensors บวก JSON และในวันที่ 23 สิงหาคม 2026 ทั้งสองยังคงเปิดอยู่ policy_server.py บน main ยังคงเรียกใช้ pickle.loads บนข้อมูลคำขอในขณะที่ serve() ผูกกับ add_insecure_port ผูกกับ loopback และห้ามส่งต่อพอร์ต 8080 เด็ดขาด
การคำนวณที่ตัดสินว่าลิงก์ของคุณเร็วพอหรือไม่
ผู้คนมักข้ามส่วนนี้ไป แล้วต้องเสียเวลาทั้งวันกับ . ใช้เวลาเพียงสองนาทีและมักจะเป็นตัวตัดสินเสมอ
พจนานุกรมการสังเกตการณ์ที่มีคอมเมนต์ใน NVIDIA's eval_so100.py ระบุสิ่งที่ส่งผ่านสาย: อาร์เรย์สองชุดขนาด (480, 640, 3) ในรูปแบบ uint8, ค่า float ของข้อต่อหกค่า, และสตริงภาษา นั่นคือ 921,600 ไบต์ต่อเฟรม, 1,843,200 ไบต์สำหรับกล้องสองตัว, ประมาณ 14.7 Mbit, และไม่มีสแต็กใดบีบอัดด้วย JPEG ส่วนข้อมูลที่ส่งกลับมาคือค่า float 6 ค่าจำนวนหลายสิบขั้นตอน การอัปโหลดของคุณเป็นตัวตัดสินทุกอย่าง ไม่ใช่การดาวน์โหลดของคุณ
| แบนด์วิดท์อัปโหลด | เวลาที่ใช้ในการส่งข้อมูลการสังเกตการณ์หนึ่งครั้ง (14.7 Mbit) | ผลลัพธ์สำหรับแขนกล 30 FPS |
|---|---|---|
| 10 Mbit/s, typical home upload | ~1.47 s | ใช้งานไม่ได้ แขนกลจะหยุดระหว่างแต่ละส่วนข้อมูล |
| 25 Mbit/s | ~0.59 s | ใช้ได้เฉพาะงานหยิบวางที่ช้า และมีช่วงเวลาการทำงานที่ยาวนาน |
| 50 Mbit/s | ~0.29 s | ใช้งานได้สำหรับงานที่ต้องใช้ความละเอียด |
| 100 Mbit/s | ~0.15 s | ดีสำหรับงานหยิบวาง เห็นได้ชัดเจนในการเคลื่อนไหวที่รวดเร็ว |
| 1 Gbit/s fibre or datacentre | ~0.015 s | โมเดลจะกลายเป็นคอขวดแทน |
งบประมาณที่คุณต้องคำนึงถึง
ไคลเอนต์ GR00T SO-100 เป็นแบบซิงโครนัส: โดยจะเรียกใช้ policy.get_action(obs), ดำเนินการ action_horizon ขั้นตอนแรกของส่วนข้อมูลที่ 30 FPS จากนั้นจึงเรียกใช้อีกครั้ง ขนาดส่วนข้อมูลและขอบเขตเป็นตัวเลขที่แตกต่างกัน: คู่มือการปรับใช้ของ NVIDIA แนะนำขนาดส่วนข้อมูลการดำเนินการที่ 16 อย่างน้อย 32 เมื่อรวมกับการแบ่งส่วนข้อมูลแบบเรียลไทม์ ในขณะที่ eval_so100.py มาพร้อมกับขอบเขตการดำเนินการที่ 8 แปดขั้นตอนที่ 30 FPS คือการเคลื่อนไหว 267 มิลลิวินาทีต่อการเรียกใช้ และทุกสิ่งทุกอย่างต้องพอดีภายในนั้น
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การเพิ่มขอบเขตเป็นการแก้ไขแบบตรงไปตรงมาและไม่ใช่การแก้ไขที่ไม่มีค่าใช้จ่าย: แขนจะดำเนินการตามการสังเกตที่ล้าสมัยแล้ว การแก้ไขตามหลักการคือการแบ่งส่วนข้อมูลแบบเรียลไทม์ (real-time chunking) ซึ่งจะคำนวณส่วนข้อมูลถัดไปในขณะที่ส่วนข้อมูลปัจจุบันกำลังทำงาน หยุดการดำเนินการที่รับประกันว่าจะถูกดำเนินการ และเติมเต็มส่วนที่เหลือ; เอกสาร RTC รายงานว่ามีความทนทานต่อความล่าช้าในการอนุมานโดยไม่ต้องฝึกซ้ำ ตรวจสอบสถานะของสิ่งนั้นก่อน NVIDIA ระบุว่า RTC เป็นการทดลอง ซึ่งเป็นโมเดลพื้นฐานระดับต่ำที่เข้าถึงได้ผ่าน action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), ซึ่งไม่ได้เชื่อมต่อกับ Gr00tPolicy หรือเส้นทางเซิร์ฟเวอร์-ไคลเอนต์ โดยที่ options ไม่ได้ถูกใช้งาน ไม่มีชุดทดสอบและไม่มีตัวอย่าง เมื่อใช้เซิร์ฟเวอร์นโยบาย คุณจะได้รับการดำเนินการแบบอะซิงโครนัส ไม่ใช่ RTC
NVIDIA ได้ทำการทดสอบ GR00T N1.7 แบบ end-to-end ที่ 4 ขั้นตอนการลดสัญญาณรบกวนด้วยกล้องหนึ่งตัว บน H100 80GB HBM3: 85.8 ms (11.7 Hz) ใน PyTorch eager, 48.6 ms (20.6 Hz) ด้วย torch.compile, 27.9 ms (35.9 Hz) ด้วย TensorRT full pipeline L40 ในโหมด eager ใช้เวลา 128.3 ms (7.8 Hz) NVIDIA ระบุว่า 10 Hz เป็นค่าต่ำสุดที่แนะนำสำหรับการจัดการทั่วไป และต่ำกว่า 10 Hz เหมาะสำหรับงานที่ช้าและไม่ตอบสนองเท่านั้น อัตราเหล่านี้คืออัตราการ วางแผนใหม่: นโยบาย 10 Hz ยังคงสามารถขับเคลื่อนแขน 30 FPS ผ่านการแบ่งส่วนข้อมูลการดำเนินการได้ กล้องตัวที่สองจะทำให้คุณไปผิดทาง
วัดก่อนเชื่อ
ทุกตัวเลขข้างต้นเป็นเพียงการคาดการณ์ สี่คำสั่งต่อไปนี้จะเปลี่ยนการคาดการณ์ให้เป็นการวัดผลจริง ซึ่งควรดำเนินการก่อนที่จะใช้เวลา pod-hour ไปกับงานที่ไม่สามารถทำสำเร็จได้
- 1รับค่า round trip ดิบ
ทดสอบกับ pod โดยตรง ไม่ใช่ CDN สังเกตค่าเบี่ยงเบนให้ใกล้เคียงกับค่าเฉลี่ย: การกระตุกของแขนหุ่นยนต์เกิดจาก jitter ไม่ใช่ค่า latency เฉลี่ย
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อ่านบันทึก latency ของไคลเอนต์เอง
ไคลเอนต์หุ่นยนต์ lerobot จะบันทึกค่า latency จากเซิร์ฟเวอร์ไปยังไคลเอนต์และเวลา deserialization สำหรับแต่ละ chunk ในเส้นทาง 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
ประโยชน์ที่แท้จริงของการอนุมานระยะไกล
- คุณสามารถประเมินนโยบายที่มีพารามิเตอร์ 3 พันล้านตัวบนฮาร์ดแวร์จริงได้ โดยไม่ต้องเป็นเจ้าของกราฟิกการ์ดที่มีราคาสูงกว่าแขนหุ่นยนต์
- GPU ถูกเช่าเป็นรายชั่วโมง ดังนั้น Checkpoint ที่ล้มเหลวมีค่าใช้จ่ายเพียงไม่กี่ดอลลาร์
- ฝั่งหุ่นยนต์ยังคงมีขนาดเล็ก: ไดรเวอร์ lerobot, กล้องสองตัว, พอร์ตอนุกรม และคุณสามารถสลับ Checkpoint ได้โดยไม่ต้องแตะต้องมัน
- ข้อมูลการสังเกตที่ไม่ได้บีบอัดเป็นต้นทุนหลักในการส่งข้อมูล และการอัปโหลดผ่านอินเทอร์เน็ตบ้านเป็นข้อจำกัดที่สำคัญ
- Jitter สร้างปัญหามากกว่า Latency: การเชื่อมต่อที่มีค่าเฉลี่ย 40 ms แต่มีค่าสูงสุดถึง 300 ms จะทำให้เกิดการสะดุด ในขณะที่การเชื่อมต่อที่เสถียร 120 ms จะไม่เป็นเช่นนั้น
- งานที่ต้องตอบสนองอย่างรวดเร็วไม่สามารถทำได้ในการสื่อสารแบบ Round Trip ไม่ว่าจะในระยะเวลาใด
- เซิร์ฟเวอร์ทั้งสองส่งข้อมูลโดยไม่มีการยืนยันตัวตนในรูปแบบ CLI ดังนั้นคุณต้องจัดการเรื่องการทำ Tunnelling เอง
- การเชื่อมต่อที่ขาดหายไปกลางคันจะทำให้แขนหุ่นยนต์ค้างอยู่ในสถานะการกระทำที่ล้าสมัย คุณต้องเพิ่ม Watchdog ที่ฝั่งหุ่นยนต์เอง
| งาน | ใช้งานได้ผ่านอินเทอร์เน็ตสาธารณะหรือไม่? | เหตุผล |
|---|---|---|
| หยิบวัตถุที่อยู่นิ่ง วางลงในถัง | ใช่ | ไม่มีอะไรเคลื่อนไหวระหว่างการสังเกตและการกระทำ |
| วางบล็อกซ้อนกันด้วยความเร็วที่ตั้งใจ | ใช่ ที่ action_horizon 16 หรือมากกว่า | ข้อผิดพลาดสะสมช้าพอที่จะแก้ไขได้ใน Chunk ถัดไป |
| เปิดลิ้นชัก ใส่สิ่งของ | โดยปกติ | มีการสัมผัสมากแต่ช้า ระวังการหยุดและไปเมื่อมีการสัมผัส |
| ติดตามวัตถุที่กำลังเคลื่อนที่ | ไม่ | นโยบายจะทำงานบนข้อมูลการสังเกตที่เก่าไปแล้ว 300 ms ถึง 1 วินาที |
| จับ, ทรงตัว, หรือกู้คืนจากการลื่น | ไม่ | ช่วงเวลาในการแก้ไขสั้นกว่าหนึ่ง Round Trip |
| วงจรปิดแบบซิงโครนัส 30 Hz | ไม่ | งบประมาณคือ 33 ms แบบ End-to-End แม้แต่ LAN ก็ยังทำได้ยาก |
หากการรันระยะไกลสะดุดที่จุดเดียวกันในทุกๆ Episode เครือข่ายอาจไม่ใช่สาเหตุ นโยบายที่ลังเลที่มุมข้อต่อเดียวกันทุกครั้งมักเป็นปัญหาข้อมูล ดูที่ หน้าโหมดความล้มเหลว, โดยเฉพาะ นโยบายที่ทำงานได้ในบางการตั้งค่าเท่านั้น และ Loss ลดลงแต่นโยบายไม่ทำงาน.
การทำด้วยตัวเองเทียบกับการทำบน AY-Robots
- เช่า GPU ในตลาดสปอตและรอ VRAM ที่เพียงพอในราคาที่คุณต้องการ
- ติดตั้ง CUDA, uv, ffmpeg torchcodec ที่รองรับ และ GR00T stack พร้อม submodules
- ขอสิทธิ์เข้าถึงแบ็คโบน `nvidia/Cosmos-Reason2-2B` แบบ gated และใส่โทเค็นลงใน pod
- ดึง เช็คพอยต์ ของคุณไปยัง pod
- เริ่มเซิร์ฟเวอร์บน loopback จากนั้นสร้าง SSH tunnel จากเครื่องหุ่นยนต์
- ติดตั้งสภาพแวดล้อมที่สองบนเครื่องหุ่นยนต์สำหรับไคลเอนต์และไดรเวอร์
- จับคู่คีย์กล้อง ชื่อข้อต่อ และคำสั่งภาษาให้ตรงกับสิ่งที่เช็คพอยต์เห็น
- เฝ้าดู pod. A100 ที่ถูกลืมทำงานข้ามคืนมีค่าใช้จ่ายมากกว่าการทดลอง
ค่าใช้จ่าย GPU ไม่ได้หยุดลงเมื่อหุ่นยนต์หยุดทำงาน เงินส่วนใหญ่ที่สูญเสียไปกับการอนุมานระยะไกลมาจากเซิร์ฟเวอร์ที่ยังคงทำงานอยู่หลังจากทุกคนจากไป ตั้งนาฬิกาปลุก หรือตั้งค่าให้ยุบเลิกอัตโนมัติ
- เลือกนโยบายที่ผ่านการฝึกอบรมที่คุณต้องการรัน
/api/inference/podจะจัดเตรียม cloud GPU pod โดยอัตโนมัติเพื่อให้บริการนโยบายนั้น- ไคลเอนต์หุ่นยนต์ในเครื่องจะสื่อสารกับปลายทางนั้น เช็คพอยต์พื้นฐานเป็นของผู้จำหน่ายเอง:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base. ACT ไม่มี - Pods มี idle watchdog และจะทำลายตัวเองหลังจากช่วงเวลาที่ไม่ได้ใช้งาน ดังนั้นจึงไม่มีอะไรเรียกเก็บเงินอย่างเงียบๆ
- การดำเนินการเดียวกันนี้สามารถทำได้จากเทอร์มินัลและสำหรับ AI agents ดังนั้นลูปจึงสามารถเขียนสคริปต์ได้
การจัดเตรียมอัตโนมัติช่วยลดงานติดตั้งและค่าใช้จ่าย pod ที่ถูกลืม แต่ไม่ใช่ฟิสิกส์ การอนุมานยังคงต้องอยู่ใกล้กับเซอร์โวสำหรับงานที่รวดเร็ว: ลูปควบคุมใช้เวลา 20 ถึง 485 ms ต่อขั้นตอนการดำเนินการขึ้นอยู่กับโมเดล และการเดินทางไปกลับผ่านอินเทอร์เน็ตสาธารณะที่เพิ่มเข้ามาจะเปลี่ยนนโยบายที่ทำงานได้ให้กลายเป็นนโยบายที่ลังเล
- คู่มือไคลเอนต์ สำหรับฝั่งการเชื่อมต่อในเครื่อง
- รันนโยบายแรกของคุณ สำหรับคำแนะนำ
- CLI และ MCP server สำหรับเวอร์ชันสคริปต์
- เอกสารความปลอดภัย

ค่าใช้จ่ายของการอนุมานระยะไกล
มีสองตัวเลขที่สำคัญ: อัตราค่าบริการรายชั่วโมงของการ์ด และระยะเวลาที่คุณปล่อยให้มันทำงาน ตัวเลขแรกมีการเผยแพร่แล้ว; ส่วนตัวเลขที่สองมักทำให้คนประหลาดใจ
| การ์ด | Runpod community cloud | Runpod secure cloud | เหมาะสมสำหรับ |
|---|---|---|---|
| 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 | ระดับที่เร็วที่สุด; ตัวเลข 11.7 Hz eager ของ NVIDIA สำหรับ 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 |
อัตราเหล่านี้อ่านจากหน้าการกำหนดราคาของ Runpod เมื่อวันที่ 23 สิงหาคม 2026 และตลาดแบบสปอตมีการเปลี่ยนแปลง AY-Robots เสนอราคาสำหรับการรันทั้งหมดแทน: 3 ถึง 6 ชั่วโมงที่ 1.20 ถึง 2.00 USD ต่อชั่วโมงสำหรับระดับ A100 หรือ H100 ประมาณ 4 ถึง 12 USD สำหรับการรัน GR00T หรือ Pi0.5; 2 ถึง 5 ชั่วโมงที่ 0.30 ถึง 0.60 USD ต่อชั่วโมงสำหรับระดับ 24 GB, 1 ถึง 3 USD สำหรับ SmolVLA หรือ ACT เซสชันการอนุมานจะคุ้มค่ากว่าการรันการฝึกอบรมก็ต่อเมื่อคุณหยุดมัน ซึ่งเป็นหน้าที่ของ idle watchdog ดูเอกสารการเรียกเก็บเงิน และ หน้าการกำหนดราคา.

หากคุณไม่ต้องการให้เครือข่ายอยู่ในวงจร
การอนุมานระยะไกลช่วยแก้ปัญหาฮาร์ดแวร์และสร้างปัญหาความหน่วง บางครั้งคำตอบที่ดีกว่าคือการใช้นโยบายที่เหมาะสมกับฮาร์ดแวร์ที่คุณมี
- ACT, มีพารามิเตอร์ประมาณ 80 ล้านตัว และใช้เวลา 20 มิลลิวินาทีต่อขั้นตอนการดำเนินการ, อย่างน้อย 50 episodes, ใช้การ์ด 24 GB ใดก็ได้ ในการตั้งค่าแบบงานเดียวซ้ำๆ มักจะเอาชนะโมเดล 3 B ระยะไกลได้ เพราะไม่ต้องรอแพ็กเก็ต
- SmolVLA, มีพารามิเตอร์ประมาณ 450 ล้านตัว และใช้เวลา 245 มิลลิวินาทีต่อขั้นตอนการดำเนินการ, อย่างน้อย 30 episodes มันยังคงรักษาการปรับสภาพภาษาที่ ACT ขาดไป และเอกสารของ lerobot ระบุว่าใช้หน่วยความจำประมาณ 2 GB ในเวลาอนุมาน เทียบกับประมาณ 14 GB สำหรับ PI0
- ACT vs GR00T N1.7 สำหรับครึ่งหนึ่งของการแลกเปลี่ยนที่เน้นความแม่นยำ
นอกจากนี้ยังมีทางสายกลาง: ฝึกฝนในคลาวด์ ประเมินผลในเครื่อง ต้องการการ์ด 80 GB และไม่สนใจเรื่องความหน่วง ดังนั้น จากระยะไกลเป็นสิ่งที่ไม่มีข้อโต้แย้ง มีเพียงลูปการประเมินผลเท่านั้นที่มีข้อจำกัดด้านเวลาจริง; และ ครอบคลุมส่วนนั้น
ยังไม่มีแขนกลบนโต๊ะใช่ไหม?
ควบคุม SO-100 จริงในเบราว์เซอร์โดยไม่ต้องลงทะเบียน เปรียบเทียบนโยบายที่ฝึกได้ห้าแบบพร้อมตัวเลขความหน่วงจริง หรือเช่า GPU แล้วฝึกฝนหนึ่งในนั้น มีสามวิธีในการเริ่มต้น โดยไม่จำเป็นต้องมีฮาร์ดแวร์ที่คุณไม่ได้เป็นเจ้าของ
ลองใช้โดยไม่ต้องมีฮาร์ดแวร์คำถามที่พบบ่อย
ฉันสามารถรัน GR00T N1.7 บน Raspberry Pi ได้หรือไม่ หาก GPU อยู่ระยะไกล?▾
ได้ นั่นคือวัตถุประสงค์ของการแยกส่วนไคลเอนต์-เซิร์ฟเวอร์ Pi จะรันไดรเวอร์ lerobot, อ่านกล้องสองตัวและบัสอนุกรม, และส่งข้อมูลการสังเกตการณ์ไปยังเซิร์ฟเวอร์นโยบาย; มันไม่เคยโหลดโมเดล ข้อจำกัดจะย้ายจาก VRAM ไปยังแบนด์วิดท์อัปโหลด: เฟรม RGB ขนาด 640x480 ที่ไม่บีบอัดสองเฟรมมีขนาด 1,843,200 ไบต์ต่อการเรียก และไม่มีสแต็กใดบีบอัดข้อมูลเหล่านี้
เครือข่ายเพิ่มความหน่วงเท่าใดกันแน่?▾
เวลาไปกลับบวกกับเวลาถ่ายโอนข้อมูลการสังเกตการณ์ เวลาถ่ายโอนคือ 14.7 Mbit หารด้วยแบนด์วิดท์อัปโหลดของคุณ: ประมาณ 147 ms บนลิงก์ 100 Mbit/s, 1.47 s บนลิงก์ 10 Mbit/s ทั้งสองอย่างนี้จะเพิ่มเข้าไปในเวลาการอนุมานของโมเดลเอง ซึ่ง AY-Robots ระบุไว้ที่ 152 ms สำหรับ GR00T N1.7 และ 485 ms สำหรับ Pi0.5 วัดด้วย ping และ iperf3 กับ pod ไม่ใช่เซิร์ฟเวอร์ทดสอบความเร็ว
การอนุมานระยะไกลดีพอสำหรับงานจริงหรือไม่?▾
สำหรับงานหยิบและวางที่ช้าและตั้งใจ, ใช่ สำหรับงานที่ต้องตอบสนองทันที, ไม่ คู่มือการปรับใช้ของ NVIDIA ระบุข้อกำหนดการทำงานแบบซิงโครนัสทีละขั้นตอนที่ประมาณ 33 ms แบบ end-to-end ที่ 30 FPS และระบุว่าการจับภาพ, เครือข่าย, การอนุมาน และการประมวลผลภายหลังมักจะเกินกว่านั้นโดยไม่มีอินเทอร์เน็ตเข้ามาเกี่ยวข้อง
เซิร์ฟเวอร์ใช้พอร์ตใดและปลอดภัยที่จะเปิดหรือไม่?▾
PolicyServer ของ Isaac-GR00T ใช้พอร์ต 5555 ผ่าน ZeroMQ เป็นค่าเริ่มต้น และผูกกับ 0.0.0.0 ใน CLI lerobot ใช้พอร์ต 8080 ผ่าน gRPC เป็นค่าเริ่มต้น และผูกกับ localhost ทั้งสองอย่างไม่ปลอดภัยที่จะเปิดเผย: คลาส GR00T รองรับ api_token แต่ run_gr00t_server.py ไม่เคยส่งค่าใดๆ และ lerobot ใช้ pickle ในการส่งข้อมูลผ่านช่อง gRPC ที่ไม่ปลอดภัย ซึ่งเป็น CVE-2026-25874 ผูกกับ loopback และใช้ SSH tunnel
การอัปเกรด lerobot แก้ไข CVE-2026-25874 ได้หรือไม่?▾
ยังไม่ถึงวันที่ 23 August 2026 บันทึก CVE ระบุว่า LeRobot ถึงเวอร์ชัน 0.5.1 ได้รับผลกระทบ และ PyPI จัดส่งเวอร์ชัน 0.6.1 แต่ pull request ที่จะลบ pickle ออกจาก async pipeline ยังคงเปิดอยู่ และ policy_server.py บน main ยังคงเรียก pickle.loads บนข้อมูลคำขอ ให้ถือว่าการแยกเครือข่ายเป็นการบรรเทาปัญหา ไม่ใช่การอัปเดตเวอร์ชัน และสมมติว่าไคลเอนต์ฝั่งหุ่นยนต์ก็อยู่ในขอบเขตด้วย
ฉันสามารถใช้ไคลเอนต์ async ของ lerobot กับ GR00T checkpoint ได้หรือไม่?▾
ได้ lerobot 0.6.1 ระบุ groot ใน SUPPORTED_POLICIES ควบคู่ไปกับ act, smolvla, diffusion, tdmpc, vqbet, pi0 และ pi05 และทั้ง so100_follower และ so101_follower อยู่ใน SUPPORTED_ROBOTS ส่ง --policy_type=groot และชี้ --pretrained_name_or_path ไปยัง checkpoint ของคุณ คุณจะได้รับการดำเนินการแบบอะซิงโครนัส ซึ่งตัวอย่าง GR00T SO-100 ไม่ได้นำไปใช้ โดยมีค่าใช้จ่ายในการขนส่งข้อมูลแบบ pickle
สรุปสั้นๆ
การอนุมานระยะไกลสำหรับ 3 B นโยบาย เป็นปัญหาทางวิศวกรรมที่แก้ไขได้แล้ว แต่มีปัญหาทางฟิสิกส์ที่ยังไม่ได้รับการแก้ไขพ่วงมาด้วย งานวิศวกรรมคือคำสั่งสองคำสั่งและ SSH tunnel ส่วนฟิสิกส์คือข้อมูลการสังเกตการณ์ขนาด 1.8 MB จะต้องไปถึง GPU ในประเทศอื่นและกลับมาก่อนที่แขนจะหมดการกระทำ คำนวณให้ดีก่อนที่จะเช่าอะไร, เลือกงานที่ทนต่อข้อมูลการสังเกตการณ์ที่ล้าสมัยได้, และเพิ่มขอบเขตการดำเนินการแทนที่จะหวังว่าลิงก์จะดีขึ้น
หากคุณยังไม่ได้บันทึกชุดข้อมูล และ มาก่อน และ อธิบายสิ่งที่เครื่องบันทึกเขียนไว้ ข้อมูลพื้นฐานอยู่ใน และ ; เชื่อมโยงตัวเลขเกณฑ์มาตรฐานแต่ละรายการเข้ากับแหล่งที่มา
Sources
- NVIDIA Isaac-GR00T: ที่เก็บ N1.7 และ README (ขีดจำกัดการอนุมาน 16 GB, การติดตั้ง, แบ็คโบน Cosmos-Reason2-2B แบบมีเกต, ข้อจำกัด FFmpeg)
- run_gr00t_server.py: CLI ของเซิร์ฟเวอร์นโยบาย GR00T, ค่าเริ่มต้นของ ServerConfig (โฮสต์ 0.0.0.0, พอร์ต 5555) และเส้นทาง ReplayPolicy
- server_client.py: PolicyServer และ PolicyClient, ขอบเขต allow_pickle=False ของ MsgSerializer, api_token, timeout_ms
- eval_so100.py: ไคลเอนต์นโยบาย SO-100, ค่าเริ่มต้นของ EvalConfig และลูปควบคุมแบบซิงโครนัส
- ตัวอย่าง Isaac-GR00T SO100/SO101: การแปลงชุดข้อมูล, การปรับแต่ง และคำสั่งการประเมินแบบวงปิด
- คู่มือการปรับใช้ Isaac-GR00T ในโลกจริง: งบประมาณซิงโครนัส 33 ms, stop-and-go, ขนาดกลุ่มการกระทำ, สถานะ 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, การดำเนินการนโยบายการไหลแบบแบ่งกลุ่มการกระทำแบบเรียลไทม์ (การแบ่งกลุ่มแบบเรียลไทม์)
- ราคา GPU ของ Runpod: อัตราค่าบริการรายชั่วโมงสำหรับคลาวด์ชุมชนและคลาวด์ที่ปลอดภัยสำหรับ 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