De AY-Robots trainingsmatrix met vijf beleidsrijen en vier robotarmkolommen, waarbij elke cel linkt naar een specifieke model- en armtraininggids
ACTSO-100lerobotimitatie lerenbeleidstraining

Hoe ACT te trainen op de SO-100 vanaf nul

AY-Robots ResearchAugust 23, 202616 min leestijd

Train een Action Chunking Transformer vanaf nul op een SO-100 met lerobot: de act config, chunk_size en n_action_steps, het 100000-stappen schema, 20 ms inferentie.

ACT is de vreemde eend in de bijt onder de SO-100 beleidslijnen. GR00T N1.7 en N1.5 beginnen bij nvidia/GR00T-N1.7-3B en nvidia/GR00T-N1.5-3B, Pi0.5 bij lerobot/pi05_base. ACT begint vanuit het niets: er is geen basischeckpoint, omdat het geen funderingsmodel is. Het is een transformator met ongeveer 80 miljoen parameters die je vanaf nul traint voor één taak, op jouw robotarm, onder jouw verlichting.

Dat is ook de reden waarom het een controlestap uitvoert in 20 ms, terwijl een VLA met 3 miljard parameters 152 tot 485 ms nodig heeft, en 1 tot 3 USD per run kost in plaats van 4 tot 12. Deze gids beschrijft de handmatige route met lerobot op een SO-100: opnemen, de act configuratie, wat chunk_size en n_action_steps regelen, het 100000-stappen schema, de rollout. Daarna dezelfde taak op AY-Robots, inclusief waar het platform niet helpt.

Wat je moet weten

  • ACT traint vanaf nul: geen basismodel, geen voor-training, geen taalinput. Eén checkpoint, één taak.
  • Het paper: ongeveer 80 M parameters, ongeveer 5 uur op een 11 GB RTX 2080 Ti, 0.01 s inferentie.
  • lerobot standaardinstellingen: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 stappen, seed 1000.
  • Op AY-Robots: 20 ms per stap, de snelste van de vijf. Minimaal 50 episodes, LeRobot v3.0, een 24 GB kaart, 1 tot 3 USD per run.
  • Het wint op een taak die het heeft gezien, en verliest zodra je taalconditionering wilt.
Welke versies dit beschrijft

Gecontroleerd op 23 augustus 2026 tegen lerobot 0.6.x: pyproject.toml op main leest version = "0.6.2", nieuwste tag v0.6.1, 3 augustus 2026. Een tutorial die begint met python lerobot/scripts/train.py dateert van vóór de console-ingangspunten lerobot-train, lerobot-record en lerobot-rollout.

Wat ACT precies is

Action Chunking with Transformers komt uit het ALOHA-artikel, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, door Zhao, Kumar, Levine en Finn, arXiv, 23 april 2023. De opstelling neemt op met 50 Hz met vier webcams die 480x640 streamen met 30 fps: twee op de grijpers, één bovenaan, één vooraan. Het abstract claimt zes vaardigheden met 80 tot 90 procent succes, waaronder het openen van een doorschijnend kruidenpotje en het plaatsen van een batterij, gebaseerd op 10 minuten aan demonstraties.

De hoofdtekst is nuttiger bij het plannen van een opnamesessie: 50 demonstraties per taak, behalve Thread Velcro met 100, wat 10 tot 20 minuten aan data en 30 tot 60 minuten aan totale tijd is zodra resets zijn meegeteld. Het succes is ook niet uniform: Thread Velcro eindigt op 20 procent, Put On Shoe op 92, Cup Open 84, Prep Tape 64.

HyperparameterALOHA-artikel, Tabel IIIlerobot op main
leersnelheid1e-5optimizer_lr = 1e-5
batchgrootte8batch_size = 8, in TrainPipelineConfig not ACTConfig
encoder / decoder lagen4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
chunkgrootte k100chunk_size = 100
latente dimensie van zafwezig; Fig. 11 toont een projectie van 32 naar 512latent_dim = 32
temporele ensemblingafwezig; --temporal_agg in de referentiecodetemporal_ensemble_coeff = None
De rij met decoderlagen is geen typefout

Het artikel vermeldt 7 decoderlagen, lerobot levert er opzettelijk 1. De opmerking in configuration_act.py stelt dat de oorspronkelijke implementatie een bug bevat waardoor alleen de eerste laag wordt gebruikt, verwijzend naar issue 25 in tonyzhaozh/act: de action head leest hs[0], dus alle zeven lagen worden uitgevoerd, maar alleen de eerste uitvoer bereikt de voorspelling. Dat issue is open en onbeantwoord sinds 23 april 2024. lerobot komt overeen met het gedrag dat de gepubliceerde resultaten opleverde, niet met het afgedrukte aantal. Verhoog --policy.n_decoder_layers en je traint een model dat het artikel nooit heeft geëvalueerd.

Action chunking is het hele idee

Gewone gedragscloning brengt één observatie in kaart naar één actie, en fouten stapelen zich op: een afwijking brengt de arm buiten de distributie, wat een slechtere actie oplevert, en dertig stappen later is de grijper nergens in de buurt van het object. Actie-chunking voorspelt k acties tegelijk en voert deze uit, waardoor de effectieve horizon met een factor k wordt verlaagd. Het behandelt ook een specifieke hinder bij menselijke gegevens: teleoperatoren pauzeren, en een Markoviaans beleid kan een pauze die afhangt van wat eraan voorafging niet modelleren.

Het artikel ablateert k in plaats van het te bevestigen. Met temporele ensembling uitgeschakeld, gemiddeld over vier instellingen, stijgt het succes van 1 procent bij k = 1 naar 44 procent bij k = 100, en vlakt vervolgens af bij 200 en 400 naarmate het beleid open-loop controle nadert. Die curve is de reden waarom de standaardwaarde 100 is.

  • chunk_size: hoeveel toekomstige acties de decoder per forward pass voorspelt. Standaard 100.
  • n_action_steps: hoeveel daarvan je uitvoert voordat je opnieuw een query doet. Standaard 100, dus lerobot voert de hele chunk open loop uit.
  • lerobot valideert n_action_steps <= chunk_size en genereert een ValueError als je het omgekeerd instelt.

Wat operationeel van belang is, is chunk_size gedeeld door de framerate. Bij de 30 fps die lerobot's SO-100 voorbeelden gebruiken, omvat een chunk van 100 ongeveer 3,3 seconden vanaf één observatie. Als de taak een correctie binnen dat venster vereist, verlaag dan n_action_steps, niet chunk_size: je behoudt de lange voorspelling en observeert vaker opnieuw.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Het verkorten van het uitgevoerde deel van de chunk zonder de voorspelling te verkorten.
De valkuil van temporele ensembling

Stel --policy.temporal_ensemble_coeff in en lerobot vereist n_action_steps = 1, anders wordt een NotImplementedError gegenereerd. Ensembling bevraagt het beleid bij elke tijdstap en mengt de overlappende voorspellingen voor die tijdstap met gewichten w_i = exp(-m * i), waarbij de oudste w_0 krijgt. Het artikel schat dit op 3,3 procent voor ACT: reëel maar bescheiden, en het vermenigvuldigt het aantal inferenties met de chunklengte. Betaalbaar bij 20 ms per stap, niet bij 485 ms. Zie inferentielatentie.

Wanneer ACT een funderingsmodel verslaat

De vijf trainbare beleidsregels naast elkaar, met de cijfers die AY-Robots meet en gebruikt om de GPU te dimensioneren die het huurt.

BeleidsregelFamilieParametersPer stapGPU-klasseMin. afleveringenDataset
ACTChunking-transformer, vanaf nul~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLACompacte VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA-fundering, diffusie-kop~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5VLA-fundering, voorganger~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5Flow-matching VLA, zie flow matching~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
De AY-Robots beleidspagina met een vergelijkingstabel van ACT, SmolVLA, GR00T N1.5, GR00T N1.7 en Pi0.5 met parameter tellingen, GPU-vereisten, inferentie latentie en minimale aflevering tellingen
De /policies tabel: ACT heeft het kleinste aantal parameters en de kortste staptijd.
ACT vanaf nul trainen
Voordelen
  • 20 ms per actiestap, de snelste van de vijf, op een 24 GB kaart, geen A100.
  • 1 tot 3 USD per run tegen 4 tot 12 voor de 3 B klasse.
  • Nauwkeurig bij contactrijk werk dat het heeft gezien: 88 en 96 procent op Slide Ziploc en Slot Battery, waar eerdere methoden nooit fase één haalden.
Afwegingen
  • Geen taalconditionering: de taakstring wordt genegeerd, dus één checkpoint is één taak.
  • Geen semantische voorkennis: alles wat het weet, komt van jouw 50 episodes.
  • Beperkte generalisatie: verplaats een camera en je moet opnieuw trainen.
  • Het faalt stilzwijgend: verlies daalt, de arm doet niets, de logs zeggen niets.
  • Het snelheidsvoordeel helpt alleen als inferentie naast de servo's zit.

Kies ACT wanneer taak en scène vastliggen en beweging snel en precies moet zijn. Kies een wanneer één checkpoint meerdere instructies moet dekken. Twee pagina's vergelijken de beslissing direct: en . Voor gepubliceerde benchmarks, linkt elk nummer aan de bron.

Wat je nodig hebt voordat je begint

Eén volgerarm, één leiderarm voor , minstens één camera, een 24 GB GPU. ACT leest alleen beelden en gewrichtsposities. Twee camera's is de ideale configuratie: een vaste vooraanzicht voor waar dingen zijn, een polscamera voor wat de gaat aanraken, zoals bij ALOHA.

ArmServo'sVoltageKosten onderdelenStatus
SO-100Feetech STS32157.4 V~110 tot 150 EURVolledige ondersteuning, referentiearm
SO-101Feetech STS32157.4 V~130 tot 170 EURVolledige ondersteuning
Koch v1.1Dynamixel XL330 / XL4305 V en 12 V rails~250 tot 350 EURCompatibel
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V basis~400 tot 500 EURCompatibel
7.4 V, geen 12 V

SO-100 en SO-101 gebruiken Feetech STS3215 servo's op een 7.4 V rail. Ze voeden met 12 V vernietigt ze, stil genoeg dat mensen eerst de software de schuld geven, en een Koch 12 V voeding past fysiek op een SO-100 bord. Controleer het label. Symptomen: servo reageert niet, arm trilt en zakt dan in. Zie ook SO-100 vs SO-101.

Van kale arm tot opgenomen dataset

De onderstaande workflow is voor lerobot 0.6.x. Sla deze over als je een gekalibreerde arm en een dataset hebt. Anders behandelt de SO-100 handleiding voor beginners de montage, de opnamehandleiding de opname en de dataset documentatie het formaat.

  1. 1
    Installeer lerobot met de juiste extra's

    Opnemen vereist core_scripts, training training, Feetech servo's feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Vind de USB-poort van elke arm

    Voer het uit met beide armen aangesloten, en koppel er één los wanneer daarom wordt gevraagd. Op Linux moet u mogelijk de node-permissies openen.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Stel de motor-ID's en baudrate in

    Bij de SO-100 gebeurt dit vóór de montage: in tegenstelling tot de SO-101 zijn de connectoren onbereikbaar zodra deze is gebouwd. Het script doorloopt de bus motor voor motor vanaf de grijper en schrijft ID's naar EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Kalibreer beide armen

    Zet elk gewricht in het midden van zijn bereik, druk op Enter en beweeg elk gewricht vervolgens door zijn volledige bereik. Kalibratie maakt het mogelijk dat een beleid dat op de ene arm is getraind, op een andere arm kan worden uitgevoerd. Hergebruik dezelfde id.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Teleopereer één keer met de camera's aan

    De vuistregel van lerobot: u moet de taak kunnen uitvoeren door alleen naar de camerabeelden te kijken. Als u dat niet kunt, kan ACT dat ook niet. Dit vangt meer slechte datasets op dan later debuggen.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --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} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Neem 50 episodes op

    50 is het minimum van AY-Robots en wat ALOHA per taak gebruikte. lerobot adviseert 10 per objectlocatie, vaste camera's, consistente greep. n beëindigt een episode, r neemt opnieuw op, q stopt en codeert.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --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} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
De AY-Robots opnamehandleidingpagina die uitlegt hoe een LeRobot-formaat dataset vast te leggen vanuit een teleoperatiesessie
De opnamehandleiding. De desktopclient schrijft dezelfde lay-out als lerobot-record.
De valkuil die een dag kost: een inconsistente dataset

ACT heeft geen voorkennis om op terug te vallen, dus elke inconsistentie wordt permanent. De drie duurste: een camera die tussen episode 20 en 21 werd verschoven, licht dat veranderde omdat u de helft van de set 's middags opnam, een greep die op twee manieren werd uitgevoerd. Elk geeft een perfect uitziende verliescurve en een arm die naar de verkeerde plaats gaat. Zie verlies daalt, beleid doet niets, beleid werkt alleen in één opstelling en gegevens van hoge kwaliteit verzamelen voor VLA-training.

Voordat u traint, speelt u minstens vijf episodes opnieuw af. slaat camerastromen, gewrichtstoestanden en acties op per , en het opnieuw afspelen stuurt die acties terug naar de arm. Als het opnieuw afspelen de taak niet uitvoert, bevatten de gegevens deze niet en zal de training deze ook niet uitvinden.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Afspelen van aflevering 0. Als dit mislukt, stop dan en neem opnieuw op.

De ACT-policy trainen

Dit is de volledige opdracht. Alles wat ACT-specifiek is, is al een standaardinstelling, daarom staat op de lerobot ACT-pagina dat je hiermee moet beginnen.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
De trainingsopdracht uit de lerobot 0.6.x documentatie, op een SO-100 dataset.

--policy.type=act laadt ACTConfig, die zich aanpast aan het aantal motoren en camera's dat uw dataset heeft opgenomen, zodat u nooit de observatievorm hoeft te declareren. --wandb.enable=true is optioneel en de moeite waard: de verliescurve is het enige goedkope signaal in een run van 100000 stappen. Het schema komt van lerobot's train config, niet ACTConfig: 100000 stappen, batch 8, seed 1000, een checkpoint elke 20000 stappen, loggen elke 200.

Een volledige run laat vijf checkpoint-mappen achter, 020000 tot en met 100000, plus een laatste symlink. Bewaar ze allemaal: het beste beleid is vaak niet het laatste.

Instellinglerobot standaardAY-Robots ACT formulierOpmerking
batchgrootte88Verlaag deze eerst als u VRAM-limieten bereikt.
leersnelheid1e-51e-5Hetzelfde als in het ALOHA-artikel.
max. stappen100000100000Ongeveer waar een set van 50 afleveringen niet meer verbetert.
gradiëntaccumulatie11, niet van toepassingWijzig in plaats daarvan de batchgrootte.
seed1000zichtbaarGR00T's tyro-ingangspunt heeft geen seed; ACT-runs zijn de reproduceerbare.
chunk_size / n_action_steps100 / 100100 / 100, bewerkbaarVoorspellings- en uitvoeringshorizon. Verlaag de tweede, niet de eerste.
checkpointfrequentie20000niet zichtbaarsaveSteps is hier een GR00T-instelling.
Onvoldoende geheugen is een batchgrootteprobleem, geen kaartprobleem

ACT met batchgrootte 8 en twee 640x480 camera's past comfortabel op 24 GB. Het past niet meer wanneer mensen de batchgrootte verhogen voor snelheid, of het de 1920x1080 frames voeren die een lerobot opnamevoorbeeld toont. Twee ResNet-18 backbones op 1080p hebben een heel ander geheugenprofiel. Verlaag --batch_size naar 4 voordat u een grotere kaart huurt. Zie onvoldoende geheugen tijdens training.

Duur: ongeveer 5 uur op een 11 GB RTX 2080 Ti in het paper, een paar uur voor 100k stappen volgens de ACT-pagina van lerobot, 2 tot 5 uur op de 24 GB tier van AY-Robots. Kort het niet in. De README van de referentie-repo zegt dat een schokkerig of pauzerend beleid meestal gewoon meer training, omdat succes en vloeiendheid blijven verbeteren nadat het verlies stabiliseert: voor real-world data zijn minstens 5000 epochs nodig, of 3 tot 4 keer de lengte opnieuw na het plateau.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Een onderbroken run hervatten vanaf het laatste checkpoint.

Het getrainde beleid uitvoeren op de arm

Implementatie gebruikt lerobot-rollout. Cameratoetsen moeten overeenkomen met de opgenomen toetsen: een beleid getraind op front en wrist accepteert niet cam0 en cam1, en rename_map helpt niet, aangezien het een vooraf getraind checkpoint nodig heeft. De taakstring kan worden weggelaten; lerobot's eigen voorbeeld markeert deze als over te slaan voor ACT.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --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} }" \
  --display_data=true \
  --duration=60
Autonome rollout zonder opname. Gebruik --strategy.type=sentry om de evaluatie-episodes op te nemen.
Dit commando is recentelijk hernoemd, dus oude tutorials komen niet overeen

Evaluatie werd uitgevoerd via lerobot-record --policy.path=.... In 0.6.x is dit lerobot-rollout met een --strategy.type selector: base, sentry (opname met auto-upload), highlight (ringbuffer opgeslagen via toetsaanslag), dagger (mens in de lus) en episodic. Vanaf 23 augustus 2026 vermeldt de ACT-documentatiepagina nog steeds "using the lerobot-record command" direct boven een blok dat lerobot-rollout uitvoert. Volg het commando, niet de zin.

Om een checkpoint vast te zetten in plaats van het uiteindelijke model, voeg toe --policy.pretrained_revision. Dat vereist dat de run is gestart met --save_checkpoint_to_hub=true, standaard uitgeschakeld: zonder dit pusht lerobot alleen het uiteindelijke model en niets anders. Hiermee wordt elk checkpoint getagd met zijn met nullen opgevulde stap, dus --policy.pretrained_revision=060000 herstelt die van stap 60000. Het vergelijken ervan met 100000 op de echte arm is het goedkoopste experiment dat beschikbaar is.

Twee routes naar hetzelfde checkpoint

Alles hierboven is de handmatige route en het werkt. De platformroute ruilt controle in voor het niet bezitten van een GPU of een Python-omgeving.

  1. Installeer lerobot 0.6.x met core_scripts, training, feetech, ffmpeg.
  2. Vind poorten, stel motor-ID's in, kalibreer beide armen, neem 50 afleveringen op.
  3. Speel een paar afleveringen opnieuw af om te bevestigen dat de gegevens de taak bevatten.
  4. Huur of bezit een 24 GB GPU, match CUDA en PyTorch, voer lerobot-train --policy.type=act uit.
  5. Wacht een paar uur en voer dan lerobot-rollout uit op de machine bij de arm.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Wat deze route u biedt

Volledige controle: bewerk configuration_act.py, voeg een camera toe, fork de trainer. Voor onderzoek in plaats van het opleveren van een taak, is een platform een afleiding.

De AY-Robots trainingsmatrix met vijf beleidsrijen en vier robotarmkolommen, waarbij elke cel linkt naar de specifieke trainingsgids voor die model- en armcombinatie
De matrix op /train. De ACT-rij tegen de SO-100-kolom is de gids van dit artikel.

Wat er daadwerkelijk misgaat

Bijna geen van de problemen zit in het trainingscommando. Het zit in de zaken eromheen, gerangschikt naar hoe vaak ze de eerste keer problemen veroorzaken.

SymptoomGebruikelijke oorzaakPagina
lerobot-find-port shows nothingDriver, kabel of knooppuntmachtigingenarm niet gedetecteerd
Camera ontbreekt tijdens opnameIndex gewijzigd na herstart, of twee camera's op één USB-controllercamera niet gedetecteerd
Training weigert de datasetACT wants v3.0, GR00T needs v2.1dataset geweigerd als v3
CUDA out of memoryBatchgrootte verhoogd, of 1080p frames in plaats van 480ponvoldoende geheugen tijdens training
Verlies ziet er goed uit, arm doet nietsDe data mist de taak, of een camera is verplaatstverlies daalt, beleid doet niets
Schokkerige beweging of een pauze midden in de episodeOndertraind, een blokgrensblokkade, of een time-out bij inferentiebeleid bevriest midden in de beweging

Twee rijen verdienen de nadruk. ACT traint op LeRobot v3.0 terwijl de loader van GR00T erop crasht en v2.1 nodig heeft, dus een dataset die ACT traint, kan een GR00T-uitvoering laten mislukken. En de laatste rij heeft twee oplossingen: de ACT-auteurs beantwoorden schokkerige bewegingen met meer training, terwijl met n_action_steps op 100 een echte blokkade op een blokgrens terechtkomt, een zichtbare pauze elke 3.3 seconden bij 30 fps. Nog twee om te weten: een enkel dood gewricht is meestal een servo-ID dat nooit is geschreven, en een grijper die nadert maar nooit sluit betekent te weinig grijperbereik in de demonstraties. Volledige index: de pagina's met storingsmodi.

Wat een run kost

NiveauModellenUitvoertijdPrijs per uurKosten per uitvoering
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Dit is het argument om met ACT te beginnen, zelfs als je later een VLA wilt. Een mislukte ACT-uitvoering kost de prijs van een kop koffie en vertelt je binnen enkele uren of je dataset de taak bevat. Een mislukte GR00T-uitvoering kost vier keer zoveel voor dezelfde les. Opschalen naar GR00T N1.7 of SmolVLA achteraf is een vormverandering, geen herbouw. Achtergrond: visie-taal-actie modellen, de complete SO-100 gids, train je eerste beleid en imitatie leren. Geen arm? De live pagina streamt een echte SO-100 om te besturen zonder aan te melden.

Train ACT op je SO-100

De gids voor deze exacte combinatie: standaardinstellingen, GPU-niveau en wat een uitvoering kost. Kies de dataset, de backend huurt de kaart en schrijft de checkpoints.

Open de trainingsgids
Is er een voorgegetraind ACT-model dat ik in plaats daarvan kan fine-tunen?

Nee. ACT heeft geen basismodel; het bestaat pas nadat je het getraind hebt. Dat is geen hiaat in de tooling, het is wat ACT is: de paper traint een beleid vanaf nul per taak. Gebruik voor een vendor checkpoint GR00T N1.7 of Pi0.5.

Hoeveel afleveringen heb ik echt nodig?

50: wat ALOHA per taak opnam (100 voor Thread Velcro, de moeilijkste) en het AY-Robots minimum. lerobot adviseert ongeveer 10 per objectlocatie, camera's vast, consistente greep. Vijftig schone afleveringen zijn beter dan honderd waarbij de camera bewoog.

Moet ik chunk_size van 100 wijzigen?

Meestal niet. De ablatie stijgt van 1 procent bij k = 1 naar 44 procent bij k = 100 en vlakt daarna af, dus 100 zit dicht bij de top. Als de arm te lang vastzit, verlaag dan n_action_steps: bij 30 fps, 25 her-query's elke 0,8 seconden.

Hoe lang duurt een trainingsrun, en kan ik deze vroegtijdig stoppen?

Twee tot vijf uur op een 24 GB kaart voor 100000 stappen. Checkpoints worden elke 20000 stappen opgeslagen en --resume=true pakt een run weer op, dus vroegtijdig stoppen is veilig. Alleen niet bij het eerste vlakke stuk: de soepelheid verbetert nadat het verlies stabiliseert.

Het verlies daalde en de arm faalt nog steeds. Wat nu?

Bijna altijd de dataset. Speel opgenomen afleveringen af met de arm: als de herhaling de taak niet uitvoert, bevat de data deze niet. Controleer dan of er iets bewoog, vooral een camera. ACT heeft geen voorkennis, dus een duwtje in aflevering 21 is permanent.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started