Die AY-Robots probeer-bladsy: drie maniere om te begin sonder om 'n robot te besit, insluitend die huur van 'n GPU vir beleidsinferensie
GR00T N1.7Afgeleë InferensieWolk-GPULeRobotSO-100Latensie

Voer GR00T Inferensie Uit Sonder 'n Plaaslike GPU

AY-Robots ResearchAugust 23, 202619 min lees

Jou robotmasjien het geen GPU nie. Plaas die GR00T-beleidbediener op 'n gehuurde wolk-GPU, stroom aksiestukke na die arm, en leer presies wat die netwerk jou kos.

’n Raspberry Pi is genoeg om ’n oor ’n seriële bus aan te dryf en rame van twee USB-kameras af te trek. Dit is nie genoeg om ’n drie miljard parameter : NVIDIA se README plaas GR00T N1.7 inferensie by een GPU met 16 GB of meer VRAM. Om te sien wat jou fyn-ingestelde kontrolepunt op die arm doen sonder om ’n kaart te koop, plaas die beleid op ’n gehuurde wolk-GPU, hou die robotlus op die masjien met die USB-poorte, en stuur waarnemings en aksiebrokke oor die netwerk.

Dit werk, dit is nie gratis nie, en die prys is nie eweredig oor take versprei nie. Hieronder: NVIDIA se eie beleidbediener, lerobot se asynchrone stapel, die rekenkunde wat vooraf sê of jou oplink vinnig genoeg is, en die platformroete. Alles nagegaan teen die Isaac-GR00T hoofvertakking (N1.7 GA) en lerobot 0.6.1 op 23 Augustus 2026.

Wat jy moet weet

  • GR00T N1.7, GR00T N1.5 en Pi0.5 is ongeveer 3 B parameter modelle. Geeneen pas op ’n robotbeheerder sonder ’n diskrete GPU nie.
  • Isaac-GR00T en lerobot lewer albei ’n kliënt-bediener-skeiding. Jy skryf nie die vervoer nie.
  • Waarnemings oorheers die draadkoste, nie aksies nie: twee ongekomprimeerde 640x480 RGB-rame is 1,843,200 grepe, ongeveer 14.7 Mbit per oproep, en geen van die stapels komprimeer dit nie.
  • AY-Robots lys 20 tot 485 ms per aksiestap per model. Internet-rondreise kom bo-op dit.
  • Afgeleë inferensie pas by stadige optel-en-plaas, nie vinnige reaktiewe beweging nie. ’n Langer uitvoeringshorison koop tyd en kos waarnemingsvarsheid.
  • Geen van die bedieners is veilig op ’n publieke IP soos verskeep nie, en lerobot s’n dra ’n ongepleisterde RCE. Tonnel dit.

Hoekom die beleid nie op die robotmasjien sal pas nie

Twee van die vyf beleide wat AY-Robots kan oplei, loop op 'n werkstasiekaart, drie nie. Die kolom hieronder is per aksiestap, en dit is die getal wat met jou netwerk-rondreis meeding.

BeleidParametersInferensie per aksiestapGPU-vlak vir opleidingMin episodesDatastelformaat
GR00T N1.7~3 B, ~40 M trained during 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 or any 24 GB card30LeRobot v3.0
ACT~80 M20 msRTX 4090 or any 24 GB card50LeRobot v3.0
Die AY-Robots beleidebladsy wat die vyf opleibare beleide vergelyk volgens parameters, GPU-vlak, inferensie-latensie en minimum episodes
Dieselfde vyf rye op /policies. Die latensiekolom besluit of 'n beleid 'n netwerk-hop oorleef.

Lees dit as 'n besluit, nie as onbenullighede nie. teen 20 ms per stap loop op die robotmasjien en jy dink nooit weer daaraan nie. teen 485 ms het 'n derde van 'n sekonde spandeer voordat 'n pakkie jou gebou verlaat. Die en voeg die akkuraatheidskant by.

ACT het geen basismodel nie

GR00T N1.7, GR00T N1.5 en Pi0.5 begin by 'n verskaffer-kontrolepunt (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT bestaan nie totdat jy dit op jou eie taak oplei nie, so daar is niks om op afstand te bedien totdat 'n opleidingswerk voltooi is nie. Sien ACT op SO-100.

Die twee kliënt-bediener-stapels wat reeds bestaan

Isaac-GR00T lewer 'n ZeroMQ-versoek-antwoord-bediener; lerobot lewer 'n gRPC-bediener wat rondom asinchrone inferensie gebou is. Beide aanvaar 'n GR00T kontrolepunt. lerobot se lys van ondersteunde beleide in async_inference/constants.py is act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05 en groot; sy robotlys is so100_follower, so101_follower, bi_so_follower en omx_follower.

Isaac-GR00T Beleidbedienerlerobot asinchrone inferensie
Toegangspuntgr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
VervoerZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
Serialiseringmsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, marked # nosec
Standaardpoort55558080
Standaardbinding0.0.0.0, alle koppelvlakkelocalhost
Verifikasieapi_token ondersteun deur die klas, nie deur die CLI deurgegee niegeen
Kliënt-tyduit15000 ms (PolicyClient timeout_ms)2 s waarnemingsry-tyduit
Uitvoeringsmodelsinchronies: blokkeer, dan voer die stuk uitasinchroon: voer uit terwyl die volgende stuk bereken

Die serialiseringsry is belangriker as wat dit lyk. GR00T se MsgSerializer weier object-dtype ndarray-ladinge in beide rigtings, omdat msgpack_numpy dit andersins aan pickle sou oorhandig. lerobot gebruik eerder pickle: policy_server.py roep pickle.loads op versoekdata, robot_client.py gebruik pickle vir die waarneming wat dit stuur. Verdedigbaar op 'n betroubare LAN, onverdedigbaar sodra die poort vanaf die internet bereikbaar is.

Roete A: NVIDIA se eie GR00T-beleidbediener

Dit is die pad wat NVIDIA dokumenteer vir SO-100 en SO-101 hardeware, en die een om te gebruik as jou kontrolepunt uit examples/finetune.sh met --embodiment-tag NEW_EMBODIMENT. Die stappe voeg by wat die stroomop README uitlaat: om die poort na die robot te kry sonder om dit aan almal anders bloot te stel.

  1. 1
    Installeer GR00T op die gehuurde GPU-boks

    Submodules is nodig, en git-lfs moet bestaan voor die kloon of die parquet-lêers in demo_data arriveer as wysers. flash-attn en TensorRT kom met die verstekinstallasie. Die strik op 'n vars pod-beeld: torchcodec 0.8.0 is die enigste ondersteunde video-agterkant en laai slegs FFmpeg 4 tot 7. Ubuntu 25.10 en 26.04 verskaf FFmpeg 8, so GR00T misluk met Could not load libtorchcodec. Installeer 'n FFmpeg onder 8 en plaas sy biblioteke 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
    Verifieer teen die afgeskermde ruggraat

    Elke GR00T N1.7-kontrolepunt, insluitend jou eie fyninstelling, laai die afgeskermde nvidia/Cosmos-Reason2-2B by eerste gebruik. Versoek toegang op die modelbladsy en meld aan op die pod, anders misluk die laai met 'n GatedRepoError.

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    Begin die beleidbediener

    Wys --model-path na jou kontrolepuntgids; op daardie pad ignoreer die bediener --modality-config-path, wat slegs op die herhalingspad gelees word. Laat --model-path weg en gee --dataset-path plus --execution-horizon in plaas daarvan vir 'n ReplayPolicy wat opgeneemde aksies herhaal, die goedkoopste manier om te bewys die bedrading werk.

    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
    Tonnel poort 5555 na die robotmasjien

    Bind aan lusrug, soos hierbo, en dra die poort oor SSH of 'n WireGuard-styl netwerk. Dit verskaf die enkripsie en verifikasie wat die ZeroMQ-sok nie doen nie, vir ongeveer 'n millisekonde.

    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
    Loop die robotkliënt langs die servos

    Die kliënt benodig sy eie uv-omgewing: dit wil lerobot se robotbestuurders hê, nie die opleidingsstapel nie. eval_so100.py importeer so100_follower, so101_follower en koch_follower, so gee die --robot.type wat by jou arm pas (die stroomop README gebruik so101_follower). Kameraleutels moet ooreenstem met opleiding: die adapter lees presies front en wrist, en om dit om te ruil wys die beleid die verkeerde aansig.

    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 verstekwaardes wat jou sal byt

run_gr00t_server.py verstek na --host 0.0.0.0, wat elke koppelvlak bind: op 'n pod met 'n publieke IP is dit 'n oop inferensie-eindpunt. En die PolicyServer klas aanvaar 'n api_token en valideer dit per versoek, maar run_gr00t_server.py gee nooit een deur nie, so die CLI-bediener is ongeoutentiseer, ongeag wat jy konfigureer. Bind aan 127.0.0.1 en tonnel. 'n ZMQError: Address already in use beteken poort 5555 is in gebruik; gee --port deur.

Roete B: lerobot asinchrone inferensie

lerobot los 'n ander probleem op. In plaas daarvan om die robot te blokkeer terwyl die model dink, hou die kliënt aan om deur die tou te stap wat dit reeds het terwyl die bediener die volgende stuk bereken. Dit is aksie-segmentering verder geneem, die asinchrone stapel wat met SmolVLA bekendgestel is. Dit werk ook met 'n GR00T-kontrolepunt.

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
Beleidbediener op die GPU, robotkliënt op die masjien met die USB-poorte

Die bediener begin leeg: dit weet nie watter beleid dit bedien voordat die kliënt se eerste handdruk dit vertel nie, wat gerieflik is op 'n gehuurde pod. Die twee knoppe wat besluit of die arm glad beweeg, is actions_per_chunk en chunk_size_threshold (die lerobot-dokumente noem die tweede een g, na die SmolVLA-artikel), en die gedokumenteerde waardes en die verskafde waardes stem nie ooreen nie.

ParameterWaarde in lerobot 0.6.1 kodeWat dit doenNota
actions_per_chunkno default, requiredAksies terugbesorg per oproepDokumente-tabel lys 50; die dataklasveld het geen verstek nie, so die CLI vereis 'n waarde
chunk_size_threshold0.5Waglys-vulverhouding waarby of waaronder die kliënt 'n nuwe waarneming stuurDokumente-tabel sê 0.7; die kode en die dokumente se eie voorbeeld sê 0.5
fps30Kliëntbeheertempo, stel environment_dt = 1/fpsVerlaag dit as die waglys aanhou leegloop
inference_latency1/30 s (33.3 ms)Teiken-inferensie-latensie op die bediener'n Teiken, nie 'n meting nie
obs_queue_timeout2 sHoe lank die bediener op die waarnemingswaglys wag'n Stadige oplink verskyn hier eerste
aggregate_fn_nameweighted_averageHoe oorvleuelende brokkie-streke gemeng word0.3 oud + 0.7 nuut; latest_only, average en conservative word ook verskaf. Die register is AGGREGATE_FUNCTIONS in configs.py, nie robot_client.py soos die dokumente beweer nie
Die lerobot-beleidbediener het 'n onopgeloste RCE

CVE-2026-25874 is ongeoutentiseerde afgeleë kode-uitvoering in lerobot se asynchrone inferensie-pyplyn: pickle.loads() op data ontvang oor 'n ongeoutentiseerde gRPC-kanaal sonder TLS, bereikbaar deur die SendPolicyInstructions, SendObservations en GetActions oproepe. CWE-502, CVSS 3.1 basis telling 9.8 van NVD, 4.0 basis telling 9.3 van die toewysende CNA. Die rekord lys LeRobot tot en met 0.5.1 as geaffekteer en noem beide die beleidbediener en die robotkliënt, so die masjien langs jou arm is in omvang. Opgradering is nie die oplossing nie: die rekord haal stroomop-kwessie 3047 en die pleister, PR 3048, aan, wat pickle vir safetensors plus JSON ruil, en op 23 Augustus 2026 is beide steeds oop. policy_server.py op main roep steeds pickle.loads op versoekdata terwyl serve() bind met add_insecure_port. Bind aan loopback en moet nooit poort-aanstuur 8080 nie.

Die rekenkunde wat besluit of jou skakel vinnig genoeg is

Mense slaan dit oor en spandeer dan 'n dag aan 'n beleid wat in die middel van beweging vries. Dit neem twee minute en is byna altyd deurslaggewend.

Die gekommentarieerde waarnemingswoordeboek in NVIDIA se eval_so100.py sê wat oor die draad gaan: twee skikkings van vorm (480, 640, 3) in uint8, ses gewrigs-dryfpunte, 'n taalstring. Dit is 921,600 grepe per raam, 1,843,200 grepe vir twee kameras, ongeveer 14.7 Mbit, en geen van die stapels JPEG-komprimeer dit nie. Die brokkie wat terugkom, is 'n paar dosyn stappe van 6 dryfpunte. Jou oplaai besluit alles, nie jou aflaai nie.

Oplaai bandwydteTyd om een waarneming (14.7 Mbit) te stuurOordeel vir 'n 30 FPS arm
10 Mbit/s, typical home upload~1.47 sOonbruikbaar. Die arm stop tussen elke brokkie.
25 Mbit/s~0.59 sSlegs stadige optel-en-plaas, met 'n lang uitvoeringshorison.
50 Mbit/s~0.29 sWerkbaar vir doelbewuste take.
100 Mbit/s~0.15 sGoed vir optel-en-plaas, sigbaar by vinnige beweging.
1 Gbit/s fibre or datacentre~0.015 sDie model word eerder die knelpunt.

Die begroting waarbinne jy moet pas

Die GR00T SO-100 kliënt is sinchronies: dit roep policy.get_action(obs), voer die eerste action_horizon stappe van die brokkie teen 30 FPS uit, en roep dan weer. Brokkiegrootte en horison is verskillende getalle: NVIDIA se ontplooiingsgids beveel 'n aksiebrokkiegrootte van 16 aan, ten minste 32 wanneer dit met intydse brokkies gekombineer word, terwyl eval_so100.py 'n uitvoeringshorison van 8 verskaf. Agt stappe teen 30 FPS is 267 ms se beweging per oproep, en al die ander moet daarbinne pas.

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
Uitgewerkte voorbeeld: 100 Mbit/s oplink, 30 ms retoerrit, GR00T N1.7

Die verhoging van die horison is die bot oplossing en nie 'n gratis een nie: die arm reageer op 'n waarneming wat nou oud is. Die beginselvaste oplossing is intydse brokkies, wat die volgende brokkie bereken terwyl die huidige een loop, die aksies wat gewaarborg is om uit te voer vries en die res invul; die RTC-artikel rapporteer dit as robuust teen inferensievertraging sonder heropleiding. Kyk eers waar dit staan. NVIDIA merk RTC as eksperimenteel, 'n laevlak modelprimitief bereikbaar via action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), nie in Gr00tPolicy of die bediener-kliënt-pad bedraad nie, waar options ongebruik is, sonder toetse en geen voorbeeld nie. Oor 'n beleidbediener kry jy asinchrone uitvoering, nie RTC nie.

Wat die model kos voordat die netwerk dit doen

NVIDIA toets GR00T N1.7 end-tot-end teen 4 denoiseringstappe met een kamera. Op 'n 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 die TensorRT volle pyplyn. 'n L40 in eager modus neem 128.3 ms (7.8 Hz). NVIDIA noem 10 Hz die aanbevole minimum vir tipiese manipulasie, en onder 10 Hz slegs geskik vir stadige, nie-reaktiewe take. Dit is herbeplanning tempo's: 'n 10 Hz beleid kan steeds 'n 30 FPS arm aandryf deur aksiebrokkies. 'n Tweede kamera beweeg jou die verkeerde kant toe.

Meet dit voordat jy dit vertrou

Elke getal hierbo is 'n voorspelling. Vier opdragte verander dit in 'n meting, wat die moeite werd is om uit te voer voordat 'n pod-uur toegewys word aan 'n taak wat nooit sou werk nie.

  1. 1
    Kry die rou heen-en-weer tyd

    Teen die pod, nie 'n CDN nie. Kyk na die afwyking so noukeurig soos die gemiddelde: rukkerigheid laat 'n arm hakkel, nie gemiddelde latensie nie.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    Meet die oplink wat jy het, nie die een waarvoor jy betaal nie

    Residensiële oplaai is gewoonlik 'n fraksie van aflaai, en dit is die getal in die bandwydtetabel hierbo.

    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 die kliënt se eie latensielog

    Die LeRobot robotkliënt teken bediener-na-kliënt latensie en deserialiseringstyd vir elke brokkie aan. Op roete B benodig jy geen eksterne gereedskap nie.

    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
    Kyk hoe die aksie-tou leegloop

    Gee --debug_visualize_queue_size=True deur en die kliënt teken die tougrootte tydens uitvoering. As dit herhaaldelik nul bereik, is jy buite begroting: verlaag fps, verhoog actions_per_chunk, of verhoog chunk_size_threshold sodat waarnemings meer gereeld uitgaan.

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

Waarvoor afgeleë inferensie eintlik goed is

Beleid op 'n gehuurde GPU, arm op jou lessenaar
Voordele
  • Jy kan 'n 3 B parameter beleid op regte hardeware evalueer sonder om 'n kaart te besit wat meer kos as die arm.
  • Die GPU word per uur gehuur, so 'n mislukte kontrolepunt kos 'n paar dollar.
  • Die robotkant bly klein: lerobot drywers, twee kameras, 'n seriële poort, en jy ruil kontrolepunte sonder om daaraan te raak.
Afwegings
  • Ongekomprimeerde waarnemings oorheers die netwerkkoste, en residensiële oplaai is die beperkende faktor.
  • Jitter is meer skadelik as latensie: 'n skakel wat gemiddeld 40 ms is met pieke tot 300 ms hakkel waar 'n stabiele 120 ms skakel nie hakkel nie.
  • Vinnige reaktiewe take oorleef nie die heen-en-weer reis op enige horison nie.
  • Beide bedieners word onverifieerd in CLI-vorm verskeep, so die tonnelwerk is joune.
  • 'n Verbinding wat in die middel van 'n brokkie val, laat die arm 'n verouderde aksie hou. Voeg jou eie waghond aan die robotkant by.
TaakWerk oor die publieke internet?Hoekom
Kies 'n statiese voorwerp, plaas dit in 'n houerJaNiks beweeg tussen waarneming en aksie nie.
Stapel blokke teen 'n doelbewuste pasJa, by aksie_horison 16 of meerFoute versamel stadig genoeg om in die volgende brokkie reg te stel.
Maak 'n laai oop, plaas 'n voorwerp inGewoonlikKontakryk maar stadig. Let op vir stop-en-gaan by kontak.
Volg 'n bewegende voorwerpNeeDie beleid reageer op 'n waarneming wat 300 ms tot 1 s oud is.
Vang, balanseer, of herstel van 'n glipNeeDie korreksievenster is korter as een heen-en-weer reis.
'n 30 Hz sinchroniese geslote lusNeeDie begroting is 33 ms van begin tot einde. Selfs 'n LAN sukkel.

As 'n afgeleë uitvoering by dieselfde punt in elke episode hakkel, is die netwerk waarskynlik nie die oorsaak nie. 'n Beleid wat elke keer by dieselfde gewrigshoek aarsel, is gewoonlik 'n dataprobbleem; sien die bladsye vir mislukkingsmodusse, in besonder 'n beleid wat slegs in een opstelling werk en verlies daal maar die beleid doen niks.

Om dit self te doen teenoor om dit op AY-Robots te doen

  1. Huur 'n GPU op 'n spotmark en wag vir genoeg VRAM teen 'n prys waarvan jy hou.
  2. Installeer CUDA, uv, 'n ffmpeg torchcodec wat aanvaar word, en die GR00T-stapel met submodules.
  3. Versoek toegang tot die geslote nvidia/Cosmos-Reason2-2B ruggraat en plaas 'n token op die pod.
  4. Trek jou kontrolepunt na die pod.
  5. Begin die bediener op loopback, bou dan 'n SSH-tonnel vanaf die robotmasjien.
  6. Installeer 'n tweede omgewing op die robotmasjien vir die kliënt en drywers.
  7. Pas kamerasleutels, gewrigname en die taalinstruksie aan by wat die kontrolepunt gesien het.
  8. Monitor die pod. 'n Vergete A100 wat oornag loop, kos meer as die eksperiment.
Die ledige pod is die werklike koste

Die GPU-rekening stop nie wanneer die robot stop nie. Die meeste geld wat verlore gaan aan afgeleë inferensie, gaan na 'n bediener wat aanbly nadat almal weggestap het. Stel 'n alarm, of outomatiseer afbreking.

Die AY-Robots MCP-bedienerbladsy wat platformbewerkings lys wat as gereedskap vir KI-agente blootgestel word
Die MCP-bladsy: voorsienings- en inferensie-bewerkings blootgestel as gereedskap wat 'n agent kan aanroep.

Wat 'n afgeleë inferensie-sessie kos

Twee getalle maak saak: die uurlikse tarief van die kaart, en hoe lank jy dit laat loop. Die eerste is gepubliseer; die tweede verras mense.

KaartRunpod gemeenskapswolkRunpod veilige wolkRedelik vir
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/hDieselfde, 'n bietjie vinniger
H100 PCIe 80 GB1.99 USD/h2.89 USD/hVinnigste vlak; NVIDIA se 11.7 Hz gretige syfer is vir 'n H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hSlegs inferensie, bo die 16 GB-vloer
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, ACT

Daardie tariewe is op 23 Augustus 2026 van Runpod se prysbladsy gelees, en spotmarkte beweeg. AY-Robots kwoteer eerder 'n hele lopie: 3 tot 6 uur teen 1.20 tot 2.00 USD per uur op die A100- of H100-vlak, ongeveer 4 tot 12 USD vir 'n GR00T- of Pi0.5-lopie; 2 tot 5 uur teen 0.30 tot 0.60 USD per uur op die 24 GB-vlak, 1 tot 3 USD vir SmolVLA of ACT. 'n Inferensiesessie klop 'n opleidingslopie slegs op koste as jy dit stop, wat is waarvoor die ledige waghond is. Sien die fakturering dokumente en die prysbladsy.

Die AY-Robots kostetabel wat wys watter GPU elke beleid benodig, tipiese looptyd en prys, en episodes voordat 'n beleid nuttig is
Die kostetabel op /try: watter kaart elke model benodig en wat 'n lopie tipies kos.

As jy eerder nie die netwerk in die lus wil hê nie

Afgeleë inferensie los 'n hardewareprobleem op en skep 'n latensieprobleem. Soms is die beter antwoord 'n beleid wat pas by die hardeware wat jy het.

  • ACT, ongeveer 80 M parameters en 20 ms per aksiestap, 50 episodes minimum, enige 24 GB kaart. Op 'n herhalende enkel-taak opstelling oortref dit gereeld 'n afgeleë 3 B model, omdat dit nooit vir 'n pakkie wag nie.
  • SmolVLA, ongeveer 450 M parameters en 245 ms per aksiestap, 30 episodes minimum. Dit behou die taalkondisionering wat ACT kort, en die lerobot-dokumente plaas dit op ongeveer 2 GB tydens inferensie teenoor ongeveer 14 GB vir PI0.
  • ACT vs GR00T N1.7 vir die akkuraatheidskant van die afweging.

Daar is ook 'n middeweg: oefen in die wolk, evalueer plaaslik. Fyninstelling benodig die 80 GB kaart en gee nie om oor latensie nie, so opleiding van GR00T N1.7 op 'n SO-100 op afstand is onkontroversieel. Slegs die evaluasielus het 'n intydse beperking; die opleidingsdokumente en model-en-arm matriks dek daardie helfte.

Nog geen arm op die lessenaar nie?

Bestuur 'n regte SO-100 in die blaaier sonder registrasie, vergelyk die vyf opleibare beleide met hul werklike latensienommers, of huur 'n GPU en oefen een. Drie maniere om te begin, geen wat hardeware benodig wat jy nie besit nie.

Probeer dit sonder hardeware

Gereelde vrae

Kan ek GR00T N1.7 op 'n Raspberry Pi laat loop as die GPU op afstand is?

Ja, dit is waarvoor die kliënt-bediener-skeiding is. Die Pi laat die lerobot-drywers loop, lees twee kameras en 'n seriële bus, en stuur waarnemings na die beleidbediener; dit laai nooit die model nie. Die beperking skuif van VRAM na oplaai-bandwydte: twee ongekomprimeerde 640x480 RGB-rame is 1,843,200 grepe per oproep, en geen van die stapels komprimeer dit nie.

Hoeveel latensie voeg die netwerk werklik by?

Rondreis-tyd plus waarnemingsoordragtyd. Oordragtyd is 14.7 Mbit gedeel deur jou oplaai-bandwydte: ongeveer 147 ms op 'n 100 Mbit/s-skakel, 1.47 s op 'n 10 Mbit/s-skakel. Beide kom bo-op die model se eie inferensie-tyd, wat AY-Robots lys as 152 ms vir GR00T N1.7 en 485 ms vir Pi0.5. Meet met ping en iperf3 teen die pod, nie 'n spoedtoets-bediener nie.

Is inferensie op afstand goed genoeg vir 'n regte taak?

Vir stadige, doelbewuste optel-en-plaas, ja. Vir enigiets reaktief, nee. NVIDIA se ontplooiingsgids stel die sinchroniese enkelstap-vereiste op ongeveer 33 ms van begin tot einde teen 30 FPS, en merk op dat vaslegging, netwerk, inferensie en na-verwerking dit gereeld oorskry sonder dat die internet betrokke is.

Watter poort gebruik die bedieners en is dit veilig om dit oop te maak?

Isaac-GR00T se PolicyServer gebruik by verstek poort 5555 oor ZeroMQ en bind 0.0.0.0 in sy CLI. lerobot se verstek is poort 8080 oor gRPC en bind localhost. Nie een is veilig om bloot te stel nie: die GR00T-klas ondersteun 'n api_token, maar run_gr00t_server.py gee nooit een deur nie, en lerobot 'pickle' data oor 'n onveilige gRPC-kanaal, wat CVE-2026-25874 is. Bind aan lusrug en gebruik 'n SSH-tonnel.

Maak die opgradering van lerobot CVE-2026-25874 reg?

Nie vanaf 23 Augustus 2026 nie. Die CVE-rekord lys LeRobot tot en met 0.5.1 as geaffekteer en PyPI verskeep 0.6.1, maar die 'pull request' wat 'pickle' uit die asynchrone pyplyn sou verwyder, is steeds oop, en policy_server.py op 'main' roep steeds pickle.loads op versoekdata. Behandel netwerk-isolasie as die versagting, nie 'n weergawe-opgradering nie, en aanvaar dat die robot-kant kliënt ook in omvang is.

Kan ek lerobot se asynchrone kliënt met 'n GR00T-kontrolepunt gebruik?

Ja. lerobot 0.6.1 lys groot in SUPPORTED_POLICIES saam met act, smolvla, diffusion, tdmpc, vqbet, pi0 en pi05, en beide so100_follower en so101_follower is in SUPPORTED_ROBOTS. Gee --policy_type=groot deur en wys --pretrained_name_or_path na jou kontrolepunt. Jy kry asynchrone uitvoering, wat die GR00T SO-100 voorbeeld nie implementeer nie, ten koste van die 'pickle'-vervoer.

Die kort weergawe

Afstandsinferensie vir 'n 3 B beleid is 'n opgeloste ingenieurs-probleem met 'n onopgeloste fisika-probleem daaraan verbonde. Die ingenieurswese is twee opdragte en 'n SSH-tonnel. Die fisika is dat 'n 1.8 MB waarneming 'n GPU in 'n ander land moet bereik en terugkom voordat die arm se aksies opraak. Doen die berekeninge voordat jy enigiets huur, kies 'n taak wat 'n verouderde waarneming verdra, en verhoog die uitvoeringshorison eerder as om te hoop die skakel verbeter.

As jy nog nie 'n datastel opgeneem het nie, neem jou eerste datastel op en die SO-100 opstelgids kom eerste, en die LeRobot datastelformaat inskrywing verduidelik wat die opnemer skryf. Agtergrond is in visie-taal-aksie modelle en die vloeipas-beleidswerk; die arena-inskrywing koppel elke maatstafnommer aan 'n bron.

Sources

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started