
Mașina ta robotică nu are GPU. Pune serverul de politici GR00T pe un GPU în cloud închiriat, transmite pachete de acțiuni către braț și află exact cât te costă rețeaua.
Un Raspberry Pi este suficient pentru a controla un printr-un bus serial și pentru a prelua cadre de la două camere USB. Nu este suficient pentru a rula un model cu trei miliarde de parametri : README-ul NVIDIA plasează inferența GR00T N1.7 la un GPU cu 16 GB sau mai mult de VRAM. Pentru a vedea ce face punctul de control GR00T N1.7, antrenat fin, pe braț fără a cumpăra o placă, plasați politica pe un GPU cloud închiriat, mențineți bucla robotului pe mașina cu porturile USB și trimiteți observațiile și fragmentele de acțiune prin rețea.
Funcționează, nu este gratuit, iar prețul nu este distribuit uniform pe toate sarcinile. Mai jos: propriul server de politici al NVIDIA, stiva asincronă a lerobot, aritmetica ce indică în avans dacă uplink-ul dumneavoastră este suficient de rapid și ruta platformei. Toate acestea verificate în raport cu ramura principală Isaac-GR00T (N1.7 GA) și lerobot 0.6.1 la 23 august 2026.
Ce trebuie să știți
- •GR00T N1.7, GR00T N1.5 și Pi0.5 sunt modele cu aproximativ 3 miliarde de parametri. Niciunul nu se potrivește pe un controler de robot fără un GPU discret.
- •Isaac-GR00T și lerobot livrează ambele o arhitectură client-server. Nu dumneavoastră scrieți transportul.
- •Observațiile domină costul de transmisie, nu acțiunile: două cadre RGB necomprimate de 640x480 sunt 1.843.200 de octeți, aproximativ 14.7 Mbit per apel, și nicio stivă nu le comprimă.
- •AY-Robots listează 20 până la 485 ms per pas de acțiune în funcție de model. Timpii de răspuns ai internetului se adaugă la aceasta.
- •Inferența la distanță se potrivește operațiunilor lente de tip pick-and-place, nu mișcărilor reactive rapide. Un orizont de execuție mai lung câștigă timp și costă prospețimea observațiilor.
- •Niciun server nu este sigur pe un IP public așa cum este livrat, iar cel al lerobot conține un RCE nepatch-uit. Tunelați-l.
De ce politica nu se va potrivi pe mașina robotului
Două dintre cele cinci politici pe care AY-Robots le poate antrena rulează pe o placă de stație de lucru, trei nu. Coloana de mai jos este per pas de acțiune, și acesta este numărul care concurează cu timpul de răspuns al rețelei dumneavoastră.
| Politică | Parametri | Inferență per pas de acțiune | Nivel GPU pentru antrenament | Episoade minime | Format set de date |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M antrenați în timpul reglajului fin | 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, bază PaliGemma | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090 sau orice placă de 24 GB | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 sau orice placă de 24 GB | 50 | LeRobot v3.0 |

Citiți asta ca pe o decizie, nu ca pe o informație minoră. la 20 ms per pas rulează pe mașina robotului și nu vă mai gândiți la asta. la 485 ms a petrecut o treime de secundă înainte ca un pachet să părăsească clădirea dumneavoastră. Comparația și adaugă partea de precizie.
GR00T N1.7, GR00T N1.5 și Pi0.5 pornesc de la un checkpoint al furnizorului (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT nu există până când nu îl antrenați pentru propria sarcină, deci nu există nimic de servit la distanță până când nu a rulat o sarcină de antrenament. Vezi ACT pe SO-100.
Cele două stive client-server care există deja
Isaac-GR00T livrează un server ZeroMQ de tip cerere-răspuns; lerobot livrează un server gRPC construit în jurul inferenței asincrone. Ambele acceptă un GR00T checkpoint. Lista de politici suportate de lerobot în async_inference/constants.py este act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05 și groot; lista sa de roboți este so100_follower, so101_follower, bi_so_follower și omx_follower.
| Server de politici Isaac-GR00T | inferență asincronă lerobot | |
|---|---|---|
| Punct de intrare | gr00t/eval/run_gr00t_server.py | python -m lerobot.async_inference.policy_server |
| Transport | ZeroMQ REQ/REP | gRPC, add_insecure_port / insecure_channel |
| Serializare | msgpack + msgpack_numpy, allow_pickle=False enforced | pickle.dumps / pickle.loads, marked # nosec |
| Port implicit | 5555 | 8080 |
| Legare implicită | 0.0.0.0, toate interfețele | localhost |
| Autentificare | api_token suportat de clasă, nu este transmis prin CLI | niciuna |
| Timeout client | 15000 ms (timeout_ms PolicyClient) | timeout coadă de observație de 2 s |
| Model de execuție | sincron: blochează, apoi execută fragmentul | asincron: execută în timp ce următorul fragment se calculează |
Rândul de serializare contează mai mult decât pare. MsgSerializer al GR00T refuză sarcini utile ndarray de tip obiect în ambele direcții, deoarece msgpack_numpy le-ar preda altfel lui pickle. lerobot folosește pickle în schimb: policy_server.py apelează pickle.loads pe datele cererii, robot_client.py folosește pickle pentru observația pe care o trimite. Apărabil într-o rețea LAN de încredere, de neapărat odată ce portul este accesibil de pe internet.
Ruta A: Serverul de politici GR00T propriu al NVIDIA
Aceasta este calea documentată de NVIDIA pentru hardware-ul SO-100 și SO-101, și cea de utilizat dacă punctul dvs. de control a rezultat din examples/finetune.sh cu --embodiment-tag NEW_EMBODIMENT. Pașii adaugă ceea ce README-ul upstream omite: obținerea portului către robot fără a-l expune tuturor celorlalți.
- 1Instalați GR00T pe serverul GPU închiriat
Submodulele sunt necesare, iar git-lfs trebuie să existe înainte de clonare, altfel fișierele parquet din
demo_dataajung ca pointeri. flash-attn și TensorRT vin cu instalarea implicită. Capcana pe o imagine proaspătă de pod:torchcodec0.8.0 este singurul backend video suportat și încarcă doar FFmpeg 4 până la 7. Ubuntu 25.10 și 26.04 livrează FFmpeg 8, astfel încât GR00T eșuează cuCould not load libtorchcodec. Instalați un FFmpeg sub versiunea 8 și plasați bibliotecile sale peLD_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')" - 2Autentificați-vă împotriva backbone-ului cu acces restricționat
Fiecare punct de control GR00T N1.7, inclusiv propria dvs. ajustare fină, încarcă
nvidia/Cosmos-Reason2-2Bcu acces restricționat la prima utilizare. Solicitați acces pe pagina modelului și autentificați-vă pe pod, altfel încărcarea eșuează cu oGatedRepoError.bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 3Porniți serverul de politici
Indicați
--model-pathcătre directorul dvs. de puncte de control; pe acea cale serverul ignoră--modality-config-path, care este citit doar pe calea de reluare. Omiteți--model-pathși transmiteți în schimb--dataset-pathplus--execution-horizonpentru o ReplayPolicy care reia acțiunile înregistrate, cel mai ieftin mod de a demonstra că cablajul funcționează.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 - 4Tunelați portul 5555 către mașina robotului
Conectați-vă la loopback, ca mai sus, și transportați portul prin SSH sau o rețea de tip WireGuard. Aceasta asigură criptarea și autentificarea pe care socket-ul ZeroMQ nu le oferă, pentru aproximativ o milisecundă.
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 - 5Rulați clientul robotului lângă servomotoare
Clientul are nevoie de propriul său mediu uv: dorește driverele de robot ale lerobot, nu stiva de antrenament.
eval_so100.pyimportă so100_follower, so101_follower și koch_follower, deci transmiteți--robot.typecare se potrivește cu brațul dvs. (README-ul upstream folosește so101_follower). Cheile camerei trebuie să se potrivească cu antrenamentul: adaptorul citește exactfrontșiwrist, iar inversarea lor arată politicii o vizualizare greșită.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 are ca valoare implicită --host 0.0.0.0, legând fiecare interfață: pe un pod cu o adresă IP publică, acesta este un punct final de inferență deschis. Iar clasa PolicyServer acceptă un api_token și îl validează per cerere, dar run_gr00t_server.py nu transmite niciodată unul, deci serverul CLI este neautentificat indiferent de configurare. Legați la 127.0.0.1 și utilizați un tunel. O eroare ZMQError: Address already in use înseamnă că portul 5555 este ocupat; transmiteți --port.
Ruta B: inferență asincronă lerobot
lerobot rezolvă o problemă diferită. În loc să blocheze robotul în timp ce modelul gândește, clientul continuă să parcurgă coada pe care o are deja în timp ce serverul calculează următorul segment. Aceasta este fragmentare de acțiuni dusă mai departe, stiva asincronă introdusă cu SmolVLA. Funcționează și cu un 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=TrueServerul pornește gol: nu știe ce politică servește până când primul handshake al clientului îi spune, ceea ce este convenabil pe un pod închiriat. Cele două setări care decid dacă brațul se mișcă lin sunt actions_per_chunk și chunk_size_threshold (documentația lerobot o numește pe a doua g, după lucrarea SmolVLA), iar valorile documentate și valorile livrate nu concordă.
| Parametru | Valoare în lerobot 0.6.1 code | Ce face | Notă |
|---|---|---|---|
| actions_per_chunk | fără valoare implicită, obligatoriu | Acțiuni returnate per apel | Tabelul din documentație listează 50; câmpul dataclass nu are o valoare implicită, deci CLI-ul cere o valoare |
| chunk_size_threshold | 0.5 | Raportul de umplere a cozii la sau sub care clientul trimite o nouă observație | Tabelul din documentație spune 0.7; codul și exemplul din documentație spun 0.5 |
| fps | 30 | Rata de control a clientului, setează environment_dt = 1/fps | Reduceți-o dacă coada continuă să se golească |
| inference_latency | 1/30 s (33.3 ms) | Latența țintă de inferență pe server | O țintă, nu o măsurătoare |
| obs_queue_timeout | 2 s | Cât timp așteaptă serverul la coada de observații | O legătură ascendentă lentă se manifestă aici prima dată |
| aggregate_fn_name | weighted_average | Cum sunt amestecate regiunile de chunk-uri suprapuse | 0.3 vechi + 0.7 nou; latest_only, average și conservative sunt de asemenea livrate. Registrul este AGGREGATE_FUNCTIONS în configs.py, nu robot_client.py așa cum susține documentația |
CVE-2026-25874 este o execuție de cod la distanță neautentificată în pipeline-ul de inferență asincronă al lerobot: pickle.loads() pe date primite printr-un canal gRPC neautentificat fără TLS, accesibil prin apelurile SendPolicyInstructions, SendObservations și GetActions. CWE-502, scor de bază CVSS 3.1 de 9.8 de la NVD, scor de bază 4.0 de 9.3 de la CNA-ul de atribuire. Înregistrarea listează LeRobot până la 0.5.1 ca fiind afectat și numește atât serverul de politici, cât și clientul robotului, deci mașina de lângă brațul dumneavoastră este în scop. Actualizarea nu este soluția: înregistrarea citează problema upstream 3047 și patch-ul, PR 3048, care înlocuiește pickle cu safetensors plus JSON, iar pe 23 august 2026 ambele sunt încă deschise. policy_server.py pe main încă apelează pickle.loads pe datele cererii în timp ce serve() se leagă cu add_insecure_port. Legați-vă la loopback și nu redirecționați niciodată portul 8080.
Aritmetica ce decide dacă legătura dumneavoastră este suficient de rapidă
Oamenii sar peste asta și apoi petrec o zi pe . Durează două minute și este aproape întotdeauna decisiv.
Dicționarul de observații comentat din eval_so100.py de la NVIDIA spune ce se transmite prin rețea: două array-uri de formă (480, 640, 3) în uint8, șase float-uri de articulație, un șir de caractere pentru limbă. Asta înseamnă 921.600 de octeți pe cadru, 1.843.200 de octeți pentru două camere, aproximativ 14,7 Mbit, și niciun stack nu le comprimă JPEG. Blocul care se întoarce conține câteva zeci de pași de 6 float-uri. Upload-ul tău decide totul, nu download-ul.
| Lățime de bandă upload | Timp pentru a trimite o observație (14,7 Mbit) | Verdict pentru un braț de 30 FPS |
|---|---|---|
| 10 Mbit/s, upload tipic acasă | ~1.47 s | Inutilizabil. Brațul se oprește între fiecare bloc. |
| 25 Mbit/s | ~0.59 s | Doar pick-and-place lent, cu un orizont lung de execuție. |
| 50 Mbit/s | ~0.29 s | Funcțional pentru sarcini deliberate. |
| 100 Mbit/s | ~0.15 s | Bun pentru pick-and-place, vizibil la mișcări rapide. |
| Fibră de 1 Gbit/s sau centru de date | ~0.015 s | Modelul devine blocajul în schimb. |
Bugetul în care trebuie să te încadrezi
Clientul GR00T SO-100 este sincron: apelează policy.get_action(obs), execută primii action_horizon pași ai blocului la 30 FPS, apoi apelează din nou. Dimensiunea blocului și orizontul sunt numere diferite: ghidul de implementare NVIDIA recomandă o dimensiune a blocului de acțiuni de 16, cel puțin 32 atunci când este combinată cu chunking în timp real, în timp ce eval_so100.py livrează un orizont de execuție de 8. Opt pași la 30 FPS înseamnă 267 ms de mișcare per apel, iar tot restul trebuie să se încadreze în acest interval.
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 staleCreșterea orizontului este o soluție brută și nu una gratuită: brațul acționează pe baza unei observații care este acum veche. Soluția principială este chunking-ul în timp real (real-time chunking - RTC), care calculează următorul bloc în timp ce cel curent rulează, îngheață acțiunile garantate a fi executate și completează restul; lucrarea RTC raportează că este robust la întârzierile de inferență fără a necesita reantrenare. Verificați mai întâi stadiul acestuia. NVIDIA marchează RTC ca experimental, o primitivă de model de nivel scăzut accesibilă prin action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), neintegrată în Gr00tPolicy sau în calea server-client, unde options este neutilizată, fără teste și fără exemplu. Printr-un server de politici obțineți execuție asincronă, nu RTC.
NVIDIA testează GR00T N1.7 cap la cap la 4 pași de denoising cu o singură cameră. Pe un H100 80GB HBM3: 85.8 ms (11.7 Hz) în PyTorch eager, 48.6 ms (20.6 Hz) cu torch.compile, 27.9 ms (35.9 Hz) cu pipeline-ul complet TensorRT. Un L40 în modul eager durează 128.3 ms (7.8 Hz). NVIDIA consideră 10 Hz minimul recomandat pentru manipularea tipică, iar sub 10 Hz potrivit doar pentru sarcini lente, non-reactive. Acestea sunt rate de replanificare: o politică de 10 Hz poate totuși acționa un braț de 30 FPS prin chunking de acțiuni. O a doua cameră te duce în direcția greșită.
Măsurați înainte de a vă încrede
Fiecare număr de mai sus este o predicție. Patru comenzi îl transformă într-o măsurătoare, care merită executată înainte de a aloca o oră de pod unei sarcini care nu ar fi funcționat niciodată.
- 1Obțineți timpul de răspuns brut
Împotriva pod-ului, nu a unui CDN. Urmăriți deviația la fel de atent ca și media: jitter-ul face un braț să se blocheze, nu latența medie.
bashping -c 50 <pod-host> # the mdev column is the number that predicts stutter - 2Măsurați uplink-ul pe care îl aveți, nu pe cel pentru care plătiți
Viteza de upload rezidențială este de obicei o fracțiune din cea de download și este numărul din tabelul de lățime de bandă de mai sus.
bash# on the pod iperf3 -s # on the robot machine, -R omitted so this measures upload iperf3 -c <pod-host> -t 30 - 3Citiți jurnalul de latență al clientului
Clientul robot lerobot înregistrează latența server-client și timpul de deserializare pentru fiecare fragment. Pe ruta B nu aveți nevoie de instrumente externe.
textReceived action chunk for step #240 | Latest action: #232 | Incoming actions: 240:289 | Network latency (server->client): 187.44ms | Deserialization time: 3.10ms - 4Urmăriți golirea cozii de acțiuni
Transmiteți
--debug_visualize_queue_size=Trueși clientul va afișa grafic dimensiunea cozii în timpul execuției. Dacă atinge în mod repetat zero, ați depășit bugetul: reduceți fps-ul, măriți actions_per_chunk sau măriți chunk_size_threshold pentru ca observațiile să fie trimise mai des.bashpython -m lerobot.async_inference.robot_client \ ... \ --debug_visualize_queue_size=True
La ce este de fapt bună inferența la distanță
- Poți evalua o politică cu 3 miliarde de parametri pe hardware real fără a deține o placă ce costă mai mult decât brațul.
- GPU-ul este închiriat pe oră, deci un checkpoint eșuat costă câțiva dolari.
- Partea robotului rămâne mică: drivere lerobot, două camere, un port serial, și poți schimba checkpoint-urile fără a o atinge.
- Observațiile necomprimate domină costul de transmisie, iar încărcarea rezidențială este constrângerea principală.
- Jitter-ul dăunează mai mult decât latența: o conexiune cu o medie de 40 ms și vârfuri de 300 ms sacadează, în timp ce o conexiune stabilă de 120 ms nu.
- Sarcinile reactive rapide nu supraviețuiesc unei călătorii dus-întors la niciun orizont.
- Ambele servere sunt livrate neautentificate în formă CLI, deci munca de tunelare îți aparține.
- O conexiune întreruptă la mijlocul unui segment lasă brațul într-o acțiune învechită. Adaugă propriul tău watchdog pe partea robotului.
| Sarcină | Funcționează prin internetul public? | De ce |
|---|---|---|
| Alege un obiect static, plasează-l într-un recipient | Da | Nimic nu se mișcă între observație și acțiune. |
| Stivuiește blocuri într-un ritm deliberat | Da, la action_horizon 16 sau mai mult | Erorile se acumulează suficient de lent pentru a fi corectate în următorul segment. |
| Deschide un sertar, inserează un obiect | De obicei | Bogat în contacte, dar lent. Fii atent la opriri și porniri la contact. |
| Urmărește un obiect în mișcare | Nu | Politica acționează pe o observație veche de 300 ms până la 1 s. |
| Prinde, echilibrează sau recuperează dintr-o alunecare | Nu | Fereastra de corecție este mai scurtă decât o călătorie dus-întors. |
| O buclă închisă sincronă de 30 Hz | Nu | Bugetul este de 33 ms cap la cap. Chiar și o rețea locală se confruntă cu dificultăți. |
Dacă o rulare la distanță sacadează în același punct în fiecare episod, rețeaua probabil nu este cauza. O politică care ezită la același unghi articular de fiecare dată este de obicei o problemă de date; vezi paginile despre modurile de eșec, în special o politică ce funcționează doar într-o singură configurație și pierderea scade, dar politica nu face nimic.
Făcând-o tu însuți vs făcând-o pe AY-Robots
- Închiriază un GPU pe o piață spot și așteaptă suficient VRAM la un preț convenabil.
- Instalează CUDA, uv, un ffmpeg acceptat de torchcodec și stiva GR00T cu submodule.
- Solicită acces la backbone-ul restricționat
nvidia/Cosmos-Reason2-2Bși plasează un token pe pod. - Descarcă checkpoint-ul tău pe pod.
- Pornește serverul pe loopback, apoi construiește un tunel SSH de la mașina robotului.
- Instalează un al doilea mediu pe mașina robotului pentru client și drivere.
- Potrivește cheile camerei, numele articulațiilor și instrucțiunea lingvistică cu ceea ce a văzut checkpoint-ul.
- Monitorizează pod-ul. Un A100 uitat pornit peste noapte costă mai mult decât experimentul.
Factura GPU nu se oprește când robotul se oprește. Majoritatea banilor pierduți pe inferența la distanță se duc către un server care a rămas pornit după ce toată lumea a plecat. Setează o alarmă sau automatizează dezafectarea.
- Alege politica antrenată pe care vrei să o rulezi.
/api/inference/podprovizionează automat un pod GPU în cloud care servește acea politică.- Clientul robotului local comunică cu acel endpoint. Checkpoint-urile de bază sunt cele proprii furnizorilor:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base. ACT nu are niciunul. - Pod-urile includ un watchdog de inactivitate și se autodistrug după o perioadă de inactivitate, astfel încât nimic nu continuă să factureze în tăcere.
- Aceleași operațiuni sunt disponibile dintr-un terminal și pentru agenții AI, astfel încât bucla poate fi scriptată.
Auto-provizionarea elimină munca de configurare și factura pentru pod-ul uitat, nu fizica. Inferența trebuie să rămână lângă servomotoare pentru sarcini rapide: bucla de control este de 20 până la 485 ms per pas de acțiune, în funcție de model, iar călătoriile dus-întors prin internetul public, pe lângă asta, transformă o politică funcțională într-una ezitantă.
- Ghidul clientului pentru partea locală a conexiunii
- Rulează prima ta politică pentru ghidul pas cu pas
- CLI și serverul MCP pentru versiunea scriptată
- Documentația de securitate

Cât costă o sesiune de inferență la distanță
Două numere contează: tariful orar al plăcii și cât timp o lași să ruleze. Primul este publicat; al doilea surprinde oamenii.
| Placă | Runpod community cloud | Runpod secure cloud | Recomandat pentru |
|---|---|---|---|
| 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 | Același, puțin mai rapid |
| H100 PCIe 80 GB | 1.99 USD/h | 2.89 USD/h | Nivelul cel mai rapid; cifra de 11.7 Hz eager a NVIDIA este pentru un H100 80GB HBM3 |
| L40S 48 GB | 0.79 USD/h | 0.99 USD/h | Doar inferență, peste pragul de 16 GB |
| RTX 4090 24 GB | 0.34 USD/h | 0.74 USD/h | SmolVLA, ACT |
Aceste tarife au fost citite de pe pagina de prețuri a Runpod pe 23 august 2026, iar piețele spot sunt volatile. AY-Robots citează o rulare completă în schimb: 3 până la 6 ore la 1.20 până la 2.00 USD pe oră pe nivelul A100 sau H100, aproximativ 4 până la 12 USD pentru o rulare GR00T sau Pi0.5; 2 până la 5 ore la 0.30 până la 0.60 USD pe oră pe nivelul de 24 GB, 1 până la 3 USD pentru SmolVLA sau ACT. O sesiune de inferență depășește o rulare de antrenament la cost doar dacă o opriți, ceea ce este scopul watchdog-ului de inactivitate. Consultați documentația de facturare și pagina de prețuri.

Dacă preferați să nu aveți rețeaua în buclă
Inferența la distanță rezolvă o problemă hardware și creează o problemă de latență. Uneori, răspunsul mai bun este o politică care se potrivește hardware-ului pe care îl aveți.
- ACT, aproximativ 80 M parametri și 20 ms per pas de acțiune, minim 50 episoade, orice placă de 24 GB. Într-o configurație repetitivă cu o singură sarcină, depășește frecvent un model de 3 B la distanță, deoarece nu așteaptă niciodată un pachet.
- SmolVLA, aproximativ 450 M parametri și 245 ms per pas de acțiune, minim 30 de episoade. Păstrează condiționarea lingvistică care lipsește ACT, iar documentația lerobot o estimează la aproximativ 2 GB la momentul inferenței, față de aproximativ 14 GB pentru PI0.
- ACT vs GR00T N1.7 pentru jumătatea de precizie a compromisului.
Există și o cale de mijloc: antrenament în cloud, evaluare locală. Fine-tuning necesită placa de 80 GB și nu-i pasă de latență, așa că antrenarea GR00T N1.7 pe un SO-100 la distanță este necontroversată. Doar bucla de evaluare are o constrângere în timp real; documentația de antrenament și matricea model-și-braț acoperă această jumătate.
Încă nu aveți un braț pe birou?
Conduceți un SO-100 real în browser fără înregistrare, comparați cele cinci politici antrenabile cu numerele lor reale de latență, sau închiriați un GPU și antrenați una. Trei moduri de a începe, niciunul neavând nevoie de hardware pe care nu-l dețineți.
Încercați fără hardwareÎntrebări frecvente
Pot rula GR00T N1.7 pe un Raspberry Pi dacă GPU-ul este la distanță?▾
Da, pentru asta este divizarea client-server. Pi-ul rulează driverele lerobot, citește două camere și un bus serial și trimite observații către serverul de politici; nu încarcă niciodată modelul. Restricția se mută de la VRAM la lățimea de bandă de upload: două cadre RGB necomprimate de 640x480 înseamnă 1.843.200 de octeți per apel, iar niciunul dintre stack-uri nu le comprimă.
Câtă latență adaugă de fapt rețeaua?▾
Timpul de round-trip plus timpul de transfer al observațiilor. Timpul de transfer este de 14.7 Mbit împărțit la lățimea de bandă de upload: aproximativ 147 ms pe o legătură de 100 Mbit/s, 1.47 s pe o legătură de 10 Mbit/s. Ambele se adaugă la timpul de inferență al modelului în sine, pe care AY-Robots îl listează ca 152 ms pentru GR00T N1.7 și 485 ms pentru Pi0.5. Măsurați cu ping și iperf3 împotriva pod-ului, nu a unui server de testare a vitezei.
Este inferența la distanță suficient de bună pentru o sarcină reală?▾
Pentru sarcini lente, deliberate de tip pick-and-place, da. Pentru orice reactiv, nu. Ghidul de implementare al NVIDIA plasează cerința de pas unic sincron la aproximativ 33 ms cap la cap la 30 FPS și menționează că achiziția, rețeaua, inferența și post-procesarea depășesc în mod obișnuit această valoare fără implicarea internetului.
Ce port folosesc serverele și este sigur să-l deschid?▾
PolicyServer-ul Isaac-GR00T utilizează implicit portul 5555 peste ZeroMQ și se leagă la 0.0.0.0 în CLI-ul său. lerobot utilizează implicit portul 8080 peste gRPC și se leagă la localhost. Niciunul nu este sigur de expus: clasa GR00T suportă un api_token, dar run_gr00t_server.py nu-l transmite niciodată, iar lerobot serializează datele prin pickle printr-un canal gRPC nesigur, ceea ce reprezintă CVE-2026-25874. Legați-vă la loopback și utilizați un tunel SSH.
Rezolvă actualizarea lerobot CVE-2026-25874?▾
Nu, începând cu 23 august 2026. Înregistrarea CVE listează LeRobot până la 0.5.1 ca fiind afectat, iar PyPI livrează 0.6.1, dar cererea de pull care ar elimina pickle din pipeline-ul asincron este încă deschisă, iar policy_server.py pe main încă apelează pickle.loads pe datele cererii. Tratați izolarea rețelei ca măsură de atenuare, nu o actualizare de versiune, și presupuneți că și clientul de pe partea robotului este în scop.
Pot folosi clientul asincron al lerobot cu un checkpoint GR00T?▾
Da. lerobot 0.6.1 listează groot în SUPPORTED_POLICIES alături de act, smolvla, diffusion, tdmpc, vqbet, pi0 și pi05, iar atât so100_follower, cât și so101_follower sunt în SUPPORTED_ROBOTS. Treceți --policy_type=groot și indicați --pretrained_name_or_path către checkpoint-ul dumneavoastră. Obțineți execuție asincronă, pe care exemplul GR00T SO-100 nu o implementează, cu prețul transportului pickle.
Pe scurt
Inferența la distanță pentru o 3 B politică este o problemă de inginerie rezolvată, cu o problemă de fizică nerezolvată atașată. Ingineria constă în două comenzi și un tunel SSH. Fizica este că o observație de 1.8 MB trebuie să ajungă la un GPU dintr-o altă țară și să se întoarcă înainte ca brațul să rămână fără acțiuni. Faceți calculele înainte de a închiria ceva, alegeți o sarcină care tolerează o observație învechită și măriți orizontul de execuție în loc să sperați că legătura se va îmbunătăți.
Dacă nu ați înregistrat încă un set de date, înregistrați primul dumneavoastră set de date și ghidul de configurare SO-100 vin mai întâi, iar formatul setului de date LeRobot explică ce înregistrează înregistratorul. Contextul se găsește în modelele viziune-limbaj-acțiune și lucrarea despre politica de potrivire a fluxului; intrarea în arenă leagă fiecare număr de benchmark de o sursă.
Sources
- NVIDIA Isaac-GR00T: depozitul N1.7 și README (prag de inferență de 16 GB, instalare, backbone Cosmos-Reason2-2B cu acces restricționat, constrângere FFmpeg)
- run_gr00t_server.py: CLI-ul serverului de politici GR00T, valorile implicite ServerConfig (host 0.0.0.0, port 5555) și calea ReplayPolicy
- server_client.py: PolicyServer și PolicyClient, limita allow_pickle=False a MsgSerializer, api_token, timeout_ms
- eval_so100.py: clientul de politici SO-100, valorile implicite EvalConfig și bucla de control sincronă
- Exemplu Isaac-GR00T SO100/SO101: conversia setului de date, finetune și comenzi de evaluare în buclă închisă
- Ghid de implementare în lumea reală Isaac-GR00T: bugetul sincron de 33 ms, stop-and-go, dimensiunea blocului de acțiuni, starea RTC
- Recomandare hardware Isaac-GR00T: frecvența de inferență per GPU și minimul de 10 Hz
- Ghid de implementare și inferență Isaac-GR00T: rezultatele benchmark-ului de latență per componentă
- LeRobot: Tutorial de inferență asincronă (PolicyServer, RobotClient, tabelul de parametri documentat)
- lerobot async_inference/configs.py: valorile implicite PolicyServerConfig și RobotClientConfig, registrul AGGREGATE_FUNCTIONS
- lerobot async_inference/policy_server.py: pickle.loads pe datele cererii, add_insecure_port, numele apelurilor gRPC
- lerobot robot_client.py: transport gRPC, serializare pickle, înregistrare latență
- CVE-2026-25874: execuție de cod la distanță prin deserializare nesigură LeRobot via gRPC, afectat până la 0.5.1
- Black, Galliker și Levine, Execuția în timp real a politicilor de flux cu fragmentare de acțiuni (fragmentare în timp real)
- Prețuri GPU Runpod: tarife orare pentru cloud comunitar și securizat pentru A100, H100, L40S și 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