De AY-Robots probeerpagina: drie manieren om te beginnen zonder een robot te bezitten, inclusief het huren van een GPU voor beleidsinferentie
GR00T N1.7Externe InferentieCloud GPULeRobotSO-100Latentie

Voer GR00T Inferentie Uit Zonder Lokale GPU

AY-Robots ResearchAugust 23, 202619 min leestijd

Je robotmachine heeft geen GPU. Plaats de GR00T beleidsserver op een gehuurde cloud-GPU, stream actiechunks naar de arm en ontdek precies wat het netwerk je kost.

Een Raspberry Pi is voldoende om een aan te sturen via een seriële bus en frames van twee USB-camera's te halen. Het is niet voldoende om een drie miljard parameter : NVIDIA's README vermeldt GR00T N1.7 inferentie op één GPU met 16 GB of meer VRAM. Om te zien wat uw fijn afgestelde checkpoint doet op de arm zonder een kaart te kopen, plaatst u het beleid op een gehuurde cloud-GPU, houdt u de robotlus op de machine met de USB-poorten en stuurt u observaties en actiefragmenten over het netwerk.

Het werkt, het is niet gratis, en de prijs is niet gelijkmatig verdeeld over taken. Hieronder: NVIDIA's eigen beleidsserver, lerobot's asynchrone stack, de rekenkunde die vooraf aangeeft of uw uplink snel genoeg is, en de platformroute. Dit alles gecontroleerd tegen de Isaac-GR00T main branch (N1.7 GA) en lerobot 0.6.1 op 23 augustus 2026.

Wat u moet weten

  • GR00T N1.7, GR00T N1.5 en Pi0.5 zijn modellen met ongeveer 3 miljard parameters. Geen van deze past op een robotcontroller zonder een discrete GPU.
  • Isaac-GR00T en lerobot leveren beide een client-server scheiding. U schrijft het transport niet.
  • Observaties domineren de netwerkkosten, niet acties: twee ongecomprimeerde 640x480 RGB-frames zijn 1.843.200 bytes, ongeveer 14.7 Mbit per aanroep, en geen van beide stacks comprimeert ze.
  • AY-Robots vermeldt 20 tot 485 ms per actiestap per model. Internet round trips komen daar nog bovenop.
  • Inferentie op afstand is geschikt voor langzame pick-and-place, niet voor snelle reactieve bewegingen. Een langere uitvoeringshorizon koopt tijd en kost versheid van observaties.
  • Geen van beide servers is veilig op een openbaar IP zoals geleverd, en die van lerobot bevat een ongepatchte RCE. Tunnel het.

Waarom het beleid niet op de robotmachine past

Twee van de vijf beleidsregels die AY-Robots kan trainen, draaien op een werkstationkaart, drie niet. De kolom hieronder is per actiestap, en dat is het getal dat concurreert met uw netwerkroundtrip.

BeleidsregelParametersInferentie per actiestapGPU-klasse voor trainingMin. afleveringenDatasetformaat
GR00T N1.7~3 B, ~40 M getraind tijdens fine-tuning152 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, PaliGemma backbone485 msA100 80 GB or H100 80 GB50LeRobot v3.0
SmolVLA~450 M245 msRTX 4090 of elke 24 GB kaart30LeRobot v3.0
ACT~80 M20 msRTX 4090 of elke 24 GB kaart50LeRobot v3.0
De AY-Robots beleidsregels pagina die de vijf trainbare beleidsregels vergelijkt op basis van parameters, GPU-klasse, inferentielatentie en minimale afleveringen
Dezelfde vijf rijen op /policies. De latentiekolom bepaalt of een beleidsregel een netwerkhop overleeft.

Lees dit als een beslissing, niet als trivia. met 20 ms per stap draait op de robotmachine en daar hoef je nooit meer over na te denken. met 485 ms heeft een derde van een seconde besteed voordat een pakket uw gebouw verlaat. De en voegen de nauwkeurigheidskant toe.

ACT heeft geen basismodel

GR00T N1.7, GR00T N1.5 en Pi0.5 starten vanaf een vendor checkpoint (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT bestaat niet totdat je het traint voor je eigen taak, dus er is niets om op afstand aan te bieden totdat een trainingstaak is uitgevoerd. Zie ACT op SO-100.

De twee reeds bestaande client-server stacks

Isaac-GR00T levert een ZeroMQ request-reply server; lerobot levert een gRPC server gebouwd rond asynchrone inferentie. Beide accepteren een GR00T checkpoint. lerobot's ondersteunde beleidslijst in async_inference/constants.py is act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05 en groot; de robotlijst is so100_follower, so101_follower, bi_so_follower en omx_follower.

Isaac-GR00T PolicyServerlerobot async inferentie
Ingangspuntgr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
TransportZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
Serialisatiemsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, marked # nosec
Standaardpoort55558080
Standaard bind0.0.0.0, alle interfaceslocalhost
Authenticatieapi_token supported by the class, not passed by the CLIgeen
Client timeout15000 ms (PolicyClient timeout_ms)2 s observation queue timeout
Executiemodelsynchroon: blokkeren, dan de chunk uitvoerenasynchroon: uitvoeren terwijl de volgende chunk berekent

De serialisatierij is belangrijker dan het lijkt. GR00T's MsgSerializer weigert object-dtype ndarray payloads in beide richtingen, omdat msgpack_numpy ze anders aan pickle zou overhandigen. lerobot gebruikt in plaats daarvan pickle: policy_server.py roept pickle.loads aan opgevraagde data, robot_client.py serialiseert de observatie die het verstuurt. Verdedigbaar op een vertrouwd LAN, onverdedigbaar zodra de poort bereikbaar is vanaf het internet.

Route A: NVIDIA's eigen GR00T beleidsserver

Dit is het pad dat NVIDIA documenteert voor SO-100 en SO-101 hardware, en degene die je moet gebruiken als je checkpoint afkomstig is van examples/finetune.sh met --embodiment-tag NEW_EMBODIMENT. De stappen voegen toe wat de upstream README weglaat: de poort naar de robot krijgen zonder deze aan iedereen anders bloot te stellen.

  1. 1
    Installeer GR00T op de gehuurde GPU-box

    Submodules zijn vereist, en git-lfs moet bestaan vóór de kloon, anders komen de parquet-bestanden in demo_data aan als pointers. flash-attn en TensorRT worden geleverd met de standaardinstallatie. De valkuil op een verse pod-image: torchcodec 0.8.0 is de enige ondersteunde video-backend en laadt alleen FFmpeg 4 tot 7. Ubuntu 25.10 en 26.04 leveren FFmpeg 8, dus GR00T faalt met Could not load libtorchcodec. Installeer een FFmpeg onder versie 8 en plaats de bibliotheken ervan op 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
    Authenticeer tegen de gated backbone

    Elk GR00T N1.7 checkpoint, inclusief je eigen fine-tune, laadt de gated nvidia/Cosmos-Reason2-2B bij het eerste gebruik. Vraag toegang aan op de modelpagina en log in op de pod, anders mislukt het laden met een GatedRepoError.

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    Start de beleidsserver

    Wijs --model-path naar je checkpoint-directory; op dat pad negeert de server --modality-config-path, die alleen wordt gelezen op het replay-pad. Laat --model-path weg en geef in plaats daarvan --dataset-path plus --execution-horizon door voor een ReplayPolicy die opgenomen acties afspeelt, de goedkoopste manier om te bewijzen dat de bedrading werkt.

    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
    Tunnel poort 5555 naar de robotmachine

    Bind aan loopback, zoals hierboven, en transporteer de poort via SSH of een WireGuard-achtig mesh-netwerk. Dit voorziet in de encryptie en authenticatie die de ZeroMQ-socket niet biedt, voor ongeveer een milliseconde.

    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
    Draai de robotclient naast de servo's

    De client heeft zijn eigen uv-omgeving nodig: het wil de robotdrivers van lerobot, niet de trainingsstack. eval_so100.py importeert so100_follower, so101_follower en koch_follower, dus geef de --robot.type door die overeenkomt met je arm (de upstream README gebruikt so101_follower). Cameratoetsen moeten overeenkomen met de training: de adapter leest precies front en wrist, en het verwisselen ervan toont het beleid de verkeerde weergave.

    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"
Twee standaardinstellingen die u parten zullen spelen

run_gr00t_server.py gebruikt standaard --host 0.0.0.0, waardoor elke interface wordt gebonden: op een pod met een openbaar IP-adres is dat een open inferentie-eindpunt. En de klasse PolicyServer accepteert een api_token en valideert deze per verzoek, maar run_gr00t_server.py geeft er nooit een door, dus de CLI-server is ongeauthenticeerd, ongeacht wat u configureert. Bind aan 127.0.0.1 en tunnel. Een ZMQError: Address already in use betekent dat poort 5555 bezet is; geef --port door.

Route B: lerobot asynchrone inferentie

lerobot lost een ander probleem op. In plaats van de robot te blokkeren terwijl het model nadenkt, blijft de client de wachtrij doorlopen die het al heeft terwijl de server het volgende brokje berekent. Dit is actie-chunking, verder uitgewerkt, de asynchrone stack geïntroduceerd met SmolVLA. Het werkt ook met een GR00T checkpoint.

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
Beleidsserver op de GPU, robotclient op de machine met de USB-poorten

De server start leeg: hij weet niet welk beleid hij dient totdat de eerste handshake van de client dit vertelt, wat handig is op een gehuurde pod. De twee knoppen die bepalen of de arm soepel beweegt zijn actions_per_chunk en chunk_size_threshold (de lerobot-documentatie noemt de tweede g, naar het SmolVLA-artikel), en de gedocumenteerde waarden en de geleverde waarden komen niet overeen.

ParameterWaarde in lerobot 0.6.1 codeWat het doetOpmerking
actions_per_chunkgeen standaardwaarde, vereistActies geretourneerd per aanroepDocumentatietabel vermeldt 50; het dataclass-veld heeft geen standaardwaarde, dus de CLI vereist een waarde
chunk_size_threshold0.5Wachtrijvulverhouding waarbij of waaronder de client een nieuwe observatie stuurtDocumentatietabel zegt 0.7; de code en het eigen voorbeeld van de documentatie zeggen 0.5
fps30Clientbesturingssnelheid, stelt environment_dt = 1/fps inVerlaag het als de wachtrij blijft leeglopen
inference_latency1/30 s (33.3 ms)Doel-inferentielatentie op de serverEen doel, geen meting
obs_queue_timeout2 sHoe lang de server wacht op de observatiewachtrijEen trage uplink verschijnt hier het eerst
aggregate_fn_nameweighted_averageHoe overlappende chunk-regio's worden gemengd0.3 old + 0.7 new; latest_only, average en conservative worden ook geleverd. Het register is AGGREGATE_FUNCTIONS in configs.py, niet robot_client.py zoals de documentatie beweert
De lerobot beleidsserver heeft een ongepatchte RCE

CVE-2026-25874 is ongeauthenticeerde remote code execution in lerobot's asynchrone inferentiepijplijn: pickle.loads() op gegevens ontvangen via een ongeauthenticeerd gRPC-kanaal zonder TLS, bereikbaar via de SendPolicyInstructions, SendObservations en GetActions aanroepen. CWE-502, CVSS 3.1 basisscore 9.8 van NVD, 4.0 basisscore 9.3 van de toewijzende CNA. Het record vermeldt LeRobot tot en met 0.5.1 als getroffen en noemt zowel de beleidsserver als de robotclient, dus de machine naast uw arm valt binnen de scope. Upgraden is niet de oplossing: het record verwijst naar upstream issue 3047 en de patch, PR 3048, die pickle vervangt door safetensors plus JSON, en op 23 augustus 2026 zijn beide nog open. policy_server.py op main roept nog steeds pickle.loads aan op verzoekgegevens terwijl serve() bindt met add_insecure_port. Bind aan loopback en port-forward nooit 8080.

De rekenkunde die bepaalt of uw verbinding snel genoeg is

Mensen slaan dit over en besteden dan een dag aan . Het duurt twee minuten en is bijna altijd doorslaggevend.

Het becommentarieerde observatiedict in NVIDIA's eval_so100.py zegt wat er over de lijn gaat: twee arrays met vorm (480, 640, 3) in uint8, zes joint floats, een taalstring. Dat is 921.600 bytes per frame, 1.843.200 bytes voor twee camera's, ongeveer 14,7 Mbit, en geen van beide stacks comprimeert het met JPEG. Het terugkomende stuk is een paar dozijn stappen van 6 floats. Uw upload bepaalt alles, niet uw download.

UploadbandbreedteTijd om één observatie te pushen (14,7 Mbit)Oordeel voor een 30 FPS arm
10 Mbit/s, typische thuisupload~1.47 sOnbruikbaar. De arm stopt tussen elke chunk.
25 Mbit/s~0.59 sAlleen langzaam pick-and-place, met een lange uitvoeringshorizon.
50 Mbit/s~0.29 sWerkbaar voor weloverwogen taken.
100 Mbit/s~0.15 sPrima voor pick-and-place, zichtbaar bij snelle beweging.
1 Gbit/s glasvezel of datacentrum~0.015 sHet model wordt in plaats daarvan de bottleneck.

Het budget waarbinnen u moet blijven

De GR00T SO-100 client is synchroon: deze roept policy.get_action(obs) aan, voert de eerste action_horizon stappen van de chunk uit met 30 FPS, en roept dan opnieuw aan. Chunkgrootte en horizon zijn verschillende getallen: NVIDIA's implementatiegids beveelt een actie-chunkgrootte van 16 aan, minstens 32 in combinatie met real-time chunking, terwijl eval_so100.py een uitvoeringshorizon van 8 levert. Acht stappen bij 30 FPS is 267 ms beweging per aanroep, en al het andere moet daarbinnen passen.

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
Uitgewerkt voorbeeld: 100 Mbit/s uplink, 30 ms round trip, GR00T N1.7

Het verhogen van de horizon is de botte oplossing en niet zonder kosten: de arm reageert op een observatie die nu oud is. De principiële oplossing is real-time chunking, dat de volgende chunk berekent terwijl de huidige loopt, de gegarandeerd uit te voeren acties bevriest en de rest aanvult; het RTC-paper rapporteert het als robuust tegen inferentievertraging zonder hertraining. Controleer eerst de status daarvan. NVIDIA markeert RTC als experimenteel, een low-level modelprimitief dat bereikbaar is via action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), niet gekoppeld aan Gr00tPolicy of het server-clientpad, waar options ongebruikt is, zonder tests en zonder voorbeeld. Via een beleidsserver krijg je asynchrone uitvoering, geen RTC.

Wat het model kost voordat het netwerk dat doet

NVIDIA benchmarkt GR00T N1.7 end-to-end met 4 denoising-stappen en één camera. Op een H100 80GB HBM3: 85,8 ms (11,7 Hz) in PyTorch eager, 48,6 ms (20,6 Hz) met torch.compile, 27,9 ms (35,9 Hz) met de volledige TensorRT-pipeline. Een L40 in eager-modus duurt 128,3 ms (7,8 Hz). NVIDIA noemt 10 Hz het aanbevolen minimum voor typische manipulatie, en onder 10 Hz alleen geschikt voor langzame, niet-reactieve taken. Dit zijn herplanningssnelheden: een beleid van 10 Hz kan nog steeds een arm van 30 FPS aansturen via actie-chunking. Een tweede camera beweegt je de verkeerde kant op.

Meet het voordat je het vertrouwt

Elk getal hierboven is een voorspelling. Vier commando's veranderen het in een meting, die de moeite waard is om uit te voeren voordat je een pod-uur toewijst aan een taak die nooit zou werken.

  1. 1
    Haal de ruwe round trip op

    Tegen de pod, niet een CDN. Let net zo goed op de afwijking als op het gemiddelde: jitter zorgt ervoor dat een arm stottert, niet de gemiddelde latentie.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    Meet de uplink die je hebt, niet degene waarvoor je betaalt

    Residentiële upload is meestal een fractie van de download, en het is het getal in de bandbreedtetabel hierboven.

    bash
    # on the pod
    iperf3 -s
    
    # on the robot machine, -R omitted so this measures upload
    iperf3 -c <pod-host> -t 30
  3. 3
    Lees het eigen latentielogboek van de client

    De lerobot robotclient logt server-naar-client latentie en deserialisatietijd voor elke chunk. Op route B heb je geen externe tooling nodig.

    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
    Bekijk hoe de actiewachtrij leegloopt

    Geef --debug_visualize_queue_size=True mee en de client plot de wachtrijgrootte tijdens runtime. Als deze herhaaldelijk nul bereikt, zit je buiten je budget: verlaag de fps, verhoog actions_per_chunk, of verhoog chunk_size_threshold zodat observaties vaker worden verzonden.

    bash
    python -m lerobot.async_inference.robot_client \
        ... \
        --debug_visualize_queue_size=True

Waar remote inference eigenlijk goed voor is

Beleid op een gehuurde GPU, arm op je bureau
Voordelen
  • Je kunt een beleid met 3 miljard parameters evalueren op echte hardware zonder een kaart te bezitten die meer kost dan de arm.
  • De GPU wordt per uur gehuurd, dus een mislukt checkpoint kost een paar dollar.
  • De robotzijde blijft klein: lerobot-drivers, twee camera's, een seriële poort, en je wisselt checkpoints zonder deze aan te raken.
Afwegingen
  • Ongecomprimeerde waarnemingen domineren de netwerkkosten, en residentiële upload is de beperkende factor.
  • Jitter is schadelijker dan latentie: een verbinding met een gemiddelde van 40 ms en pieken tot 300 ms hapert, waar een stabiele verbinding van 120 ms dat niet doet.
  • Snelle reactieve taken overleven de round trip op geen enkele horizon.
  • Beide servers worden ongeauthenticeerd geleverd in CLI-vorm, dus het tunnelwerk is voor jou.
  • Een verbroken verbinding midden in een chunk laat de arm achter met een verouderde actie. Voeg je eigen watchdog toe aan de robotzijde.
TaakWerkt via het openbare internet?Waarom
Pak een statisch object, plaats het in een bakJaNiets beweegt tussen waarneming en actie.
Stapel blokken in een rustig tempoJa, bij action_horizon 16 of meerFouten accumuleren langzaam genoeg om in de volgende chunk te herstellen.
Open een lade, plaats een objectMeestalContactrijk maar langzaam. Let op stop-en-go bij contact.
Volg een bewegend objectNeeHet beleid reageert op een waarneming die 300 ms tot 1 s oud is.
Vangen, balanceren of herstellen van een slipNeeHet correctievenster is korter dan één round trip.
Een synchrone gesloten lus van 30 HzNeeHet budget is 33 ms end-to-end. Zelfs een LAN heeft moeite.

Als een externe uitvoering hapert op hetzelfde punt in elke episode, is het netwerk waarschijnlijk niet de oorzaak. Een beleid dat elke keer aarzelt bij dezelfde gewrichtshoek is meestal een dataprobbleem; zie de pagina's met storingsmodi, in het bijzonder een beleid dat alleen werkt in één opstelling en verlies daalt maar het beleid doet niets.

Zelf doen versus het doen op AY-Robots

  1. Huur een GPU op een spotmarkt en wacht op voldoende VRAM tegen een prijs die je bevalt.
  2. Installeer CUDA, uv, een ffmpeg torchcodec die wordt geaccepteerd, en de GR00T stack met submodules.
  3. Vraag toegang aan tot de afgeschermde nvidia/Cosmos-Reason2-2B backbone en plaats een token op de pod.
  4. Haal je checkpoint naar de pod.
  5. Start de server op loopback, bouw vervolgens een SSH-tunnel vanaf de robotmachine.
  6. Installeer een tweede omgeving op de robotmachine voor de client en drivers.
  7. Stem cameratoetsen, gewrichtsnamen en de taalinstructie af op wat het checkpoint zag.
  8. Bewaak de pod. Een vergeten A100 die 's nachts draait, kost meer dan het experiment.
De inactieve pod is de echte kostenpost

De GPU-rekening stopt niet wanneer de robot stopt. Het meeste geld dat verloren gaat aan inferentie op afstand, gaat naar een server die actief bleef nadat iedereen was vertrokken. Stel een alarm in, of automatiseer de ontmanteling.

De AY-Robots MCP-serverpagina met platformbewerkingen die als tools aan AI-agenten worden blootgesteld
De MCP-pagina: provisioning- en inferentiebewerkingen blootgesteld als tools die een agent kan aanroepen.

Wat een inferentiesessie op afstand kost

Twee getallen zijn van belang: het uurtarief van de kaart en hoe lang je deze laat draaien. Het eerste is gepubliceerd; het tweede verrast mensen.

KaartRunpod community cloudRunpod secure cloudGeschikt voor
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/hHetzelfde, iets sneller
H100 PCIe 80 GB1.99 USD/h2.89 USD/hSnelste tier; NVIDIA's 11.7 Hz eager-cijfer is voor een H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hAlleen inferentie, boven de 16 GB drempel
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, ACT

Deze tarieven zijn gelezen van Runpod's prijspagina op 23 augustus 2026, en spotmarkten bewegen. AY-Robots citeert in plaats daarvan een hele run: 3 tot 6 uur à 1.20 tot 2.00 USD per uur op de A100- of H100-tier, ongeveer 4 tot 12 USD voor een GR00T- of Pi0.5-run; 2 tot 5 uur à 0.30 tot 0.60 USD per uur op de 24 GB-tier, 1 tot 3 USD voor SmolVLA of ACT. Een inferentiesessie is alleen voordeliger dan een trainingsrun als je deze stopt, waarvoor de idle watchdog dient. Zie de documentatie over facturering en de prijspagina.

The AY-Robots cost table showing which GPU each policy needs, typical run time and price, and episodes before a policy is useful
De kostentabel op /try: welke kaart elk model nodig heeft en wat een run doorgaans kost.

Als je het netwerk liever niet in de lus hebt

Inferentie op afstand lost een hardwareprobleem op en creëert een latentieprobleem. Soms is het betere antwoord een beleid dat past bij de hardware die je hebt.

  • ACT, ongeveer 80 M parameters en 20 ms per actiestap, minimaal 50 episodes, elke 24 GB kaart. In een repetitieve opstelling met één taak verslaat het vaak een 3 B model op afstand, omdat het nooit op een pakket wacht.
  • SmolVLA, ongeveer 450 M parameters en 245 ms per actiestap, minimaal 30 episodes. Het behoudt de taalconditionering die ACT mist, en de lerobot documentatie schat het op ongeveer 2 GB tijdens inferentie, tegenover ongeveer 14 GB voor PI0.
  • ACT vs GR00T N1.7 voor de nauwkeurigheidshelft van de afweging.

Er is ook een middenweg: trainen in de cloud, lokaal evalueren. Fijnafstemming heeft de 80 GB kaart nodig en geeft niet om latentie, dus GR00T N1.7 trainen op een SO-100 op afstand is onomstreden. Alleen de evaluatielus heeft een real-time beperking; de trainingsdocumentatie en de model- en armmatrix behandelen die helft.

Nog geen arm op je bureau?

Bestuur een echte SO-100 in de browser zonder aanmelding, vergelijk de vijf trainbare beleidsregels met hun werkelijke latentiecijfers, of huur een GPU en train er een. Drie manieren om te beginnen, geen enkele vereist hardware die je niet bezit.

Probeer het zonder hardware

Veelgestelde vragen

Kan ik GR00T N1.7 op een Raspberry Pi draaien als de GPU op afstand is?

Ja, daarvoor is de client-server scheiding bedoeld. De Pi draait de lerobot drivers, leest twee camera's en een seriële bus, en stuurt waarnemingen naar de policy server; hij laadt het model nooit. De beperking verschuift van VRAM naar uploadbandbreedte: twee ongecomprimeerde 640x480 RGB frames zijn 1,843,200 bytes per aanroep, en geen van beide stacks comprimeert ze.

Hoeveel latentie voegt het netwerk daadwerkelijk toe?

Round-trip tijd plus waarnemingsoverdrachtstijd. De overdrachtstijd is 14.7 Mbit gedeeld door uw uploadbandbreedte: ongeveer 147 ms op een 100 Mbit/s verbinding, 1.47 s op een 10 Mbit/s verbinding. Beide komen bovenop de eigen inferentietijd van het model, die AY-Robots vermeldt als 152 ms voor GR00T N1.7 en 485 ms voor Pi0.5. Meet met ping en iperf3 tegen de pod, niet tegen een speed-test server.

Is inferentie op afstand goed genoeg voor een echte taak?

Voor langzame, weloverwogen pick-and-place, ja. Voor alles wat reactief is, nee. NVIDIA's implementatiegids stelt de synchrone single-step vereiste op ongeveer 33 ms end-to-end bij 30 FPS, en merkt op dat vastlegging, netwerk, inferentie en nabewerking dit routinematig overschrijden zonder internetverbinding.

Welke poort gebruiken de servers en is het veilig om deze te openen?

Isaac-GR00T's PolicyServer gebruikt standaard poort 5555 via ZeroMQ en bindt 0.0.0.0 in zijn CLI. lerobot's gebruikt standaard poort 8080 via gRPC en bindt localhost. Geen van beide is veilig om bloot te stellen: de GR00T klasse ondersteunt een api_token, maar run_gr00t_server.py geeft er nooit een door, en lerobot 'pickelt' gegevens via een onveilig gRPC-kanaal, wat CVE-2026-25874 is. Bind aan loopback en gebruik een SSH-tunnel.

Lost het upgraden van lerobot CVE-2026-25874 op?

Niet per 23 augustus 2026. Het CVE-record vermeldt LeRobot tot en met 0.5.1 als getroffen en PyPI levert 0.6.1, maar de pull request die pickle uit de asynchrone pijplijn zou verwijderen, is nog steeds open, en policy_server.py op main roept nog steeds pickle.loads aan op aanvraaggegevens. Behandel netwerkisolatie als de mitigatie, niet een versie-update, en ga ervan uit dat de client aan de robotzijde ook binnen het bereik valt.

Kan ik lerobot's asynchrone client gebruiken met een GR00T checkpoint?

Ja. lerobot 0.6.1 vermeldt groot in SUPPORTED_POLICIES naast act, smolvla, diffusion, tdmpc, vqbet, pi0 en pi05, en zowel so100_follower als so101_follower staan in SUPPORTED_ROBOTS. Geef --policy_type=groot door en wijs --pretrained_name_or_path naar uw checkpoint. U krijgt asynchrone uitvoering, die het GR00T SO-100 voorbeeld niet implementeert, ten koste van het pickle transport.

De korte versie

Inferentie op afstand voor een 3 B beleid is een opgelost engineeringprobleem met een onopgelost natuurkundig probleem eraan vast. De engineering bestaat uit twee commando's en een SSH-tunnel. De natuurkunde is dat een 1.8 MB waarneming een GPU in een ander land moet bereiken en terug moet komen voordat de arm geen acties meer heeft. Doe de berekeningen voordat u iets huurt, kies een taak die een verouderde waarneming tolereert, en verhoog de uitvoeringshorizon in plaats van te hopen dat de verbinding verbetert.

Als je nog geen dataset hebt opgenomen, neem je eerste dataset op en de SO-100 installatiegids komen eerst, en de LeRobot datasetformaat vermelding legt uit wat de recorder schrijft. Achtergrondinformatie is te vinden in visie-taal-actiemodellen en het flow-matching beleidswerk; de arena vermelding linkt elk benchmarknummer aan een bron.

Sources

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started