
Tren en Action Chunking Transformer fra bunnen av på en SO-100 med lerobot: act config, chunk_size og n_action_steps, 100000-trinnsplanen, 20 ms inferens.
ACT er den som skiller seg ut blant SO-100-policyene. GR00T N1.7 og N1.5 starter fra nvidia/GR00T-N1.7-3B og nvidia/GR00T-N1.5-3B, Pi0.5 fra lerobot/pi05_base. ACT starter fra ingenting: det er ingen basis-sjekkpunkt, fordi det ikke er en grunnlagsmodell. Det er en transformermodell på omtrent 80 millioner parametere som du trener fra bunnen av på én oppgave, på din arm, under din belysning.
Det er også derfor den kjører et kontrolltrinn på 20 ms der en VLA med 3 milliarder parametere trenger 152 til 485 ms, og koster 1 til 3 USD per kjøring i stedet for 4 til 12. Denne guiden beskriver den manuelle ruten med lerobot på en SO-100: opptak, act konfigurasjonen, hva chunk_size og n_action_steps kontrollerer, 100000-trinnsplanen, utrullingen. Deretter den samme jobben på AY-Robots, inkludert der plattformen ikke hjelper.
Hva du trenger å vite
- •ACT trener fra bunnen av: ingen basismodell, ingen forhåndstrening, ingen språkinndata. Ett sjekkpunkt, én oppgave.
- •Artikkelen: omtrent 80 M parametere, rundt 5 timer på et 11 GB RTX 2080 Ti, 0.01 s inferens.
- •lerobot standardinnstillinger: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 trinn, seed 1000.
- •På AY-Robots: 20 ms per trinn, den raskeste av de fem. Minimum 50 episoder, LeRobot v3.0, et 24 GB kort, 1 til 3 USD per kjøring.
- •Den vinner på en oppgave den har sett, og taper i det øyeblikket du ønsker språk-kondisjonering.
Sjekket 23. august 2026 mot lerobot 0.6.x: pyproject.toml på main leser version = "0.6.2", nyeste tag v0.6.1, 3. august 2026. En veiledning som starter med python lerobot/scripts/train.py er eldre enn konsollinngangspunktene lerobot-train, lerobot-record og lerobot-rollout.
Hva ACT faktisk er
Action Chunking with Transformers kommer fra ALOHA-artikkelen, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, av Zhao, Kumar, Levine og Finn, arXiv, 23. april 2023. Riggen tar opp med 50 Hz med fire webkameraer som strømmer 480x640 ved 30 fps: to på griperne, ett på toppen, ett foran. Sammendraget hevder seks ferdigheter med 80 til 90 prosent suksess, blant dem å åpne en gjennomsiktig krydderkopp og sette inn et batteri, fra 10 minutter med demonstrasjoner.
Hovedteksten er mer nyttig når man planlegger en opptaksøkt: 50 demonstrasjoner per oppgave, unntatt Thread Velcro med 100, som er 10 til 20 minutter med data og 30 til 60 minutter med reell tid når tilbakestillinger er talt. Suksessen er heller ikke jevn: Thread Velcro ender på 20 prosent, Put On Shoe på 92, Cup Open 84, Prep Tape 64.
| Hyperparameter | ALOHA-artikkelen, tabell III | lerobot on main |
|---|---|---|
| læringsrate | 1e-5 | optimizer_lr = 1e-5 |
| batchstørrelse | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| enkoder / dekoder lag | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| klumpstørrelse k | 100 | chunk_size = 100 |
| latent dimensjon av z | fraværende; Fig. 11 viser en 32 til 512 projeksjon | latent_dim = 32 |
| temporal ensembling | fraværende; --temporal_agg i referansekoden | temporal_ensemble_coeff = None |
Artikkelen lister 7 dekoderlag, lerobot leverer 1, bevisst. Kommentaren i `configuration_act.py` sier at den originale implementeringen har en feil som betyr at bare det første laget brukes, og siterer issue 25 in tonyzhaozh/act: action head leser `hs[0]`, så alle syv lag kjører, men bare den første utgangen når prediksjonen. Dette problemet har vært åpent og ubesvart siden 23. april 2024. lerobot matcher oppførselen som produserte de publiserte resultatene, ikke det trykte tallet. Øk `--policy.n_decoder_layers`, og du trener en modell som artikkelen aldri evaluerte.
Handlingsklumping er hele ideen
Vanlig atferdskloning mapper én observasjon til én handling, og feil akkumuleres: et avvik plasserer armen utenfor distribusjonen, noe som produserer en dårligere handling, og tretti trinn senere er griperen ingensteds nær objektet. Handlingsklumping forutsier k handlinger samtidig og utfører dem, noe som reduserer den effektive horisonten med en faktor k. Det håndterer også et problem spesifikt for menneskelige data: teleoperatører pauser, og en ett-trinns Markovisk policy kan ikke modellere en pause som avhenger av det som kom før.
Artikkelen ablaterer k i stedet for å hevde det. Med temporal ensembling av, gjennomsnittlig over fire innstillinger, stiger suksessen fra 1 prosent ved k = 1 til 44 prosent ved k = 100, og flater deretter ut ved 200 og 400 ettersom policyen nærmer seg åpen-sløyfe-kontroll. Denne kurven er grunnen til at standardverdien er 100.
- chunk_size: hvor mange fremtidige handlinger dekoderen forutsier per fremoverpasning. Standard 100.
- n_action_steps: hvor mange av dem du utfører før du spør igjen. Standard 100, så lerobot kjører hele blokken i åpen sløyfe.
- lerobot validerer
n_action_steps <= chunk_sizeog utløser enValueErrorhvis du får det bakvendt.
Det som betyr noe operasjonelt er chunk_size delt på bildefrekvensen. Ved 30 bilder per sekund som lerobots SO-100-eksempler bruker, forplikter en blokk på 100 handlinger omtrent 3,3 sekunder fra én observasjon. Hvis oppgaven krever en korreksjon innenfor det vinduet, senk n_action_steps, ikke chunk_size: du beholder den lange prediksjonen og observerer på nytt oftere.
# 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=cudaSett --policy.temporal_ensemble_coeff og lerobot krever n_action_steps = 1, og utløser en NotImplementedError ellers. Ensembling spør policyen hvert tidsskritt og blander de overlappende prediksjonene for det tidsskrittet med vekter w_i = exp(-m * i), der den eldste får w_0. Artikkelen angir det til 3.3 prosent for ACT: reelt, men beskjedent, og det multipliserer inferenstellingen med blokklengden. Rimelig ved 20 ms per trinn, ikke ved 485 ms. Se inferenslatens.
Når ACT slår en grunnmodell
De fem trenbare retningslinjene side om side, med tallene AY-Robots måler og bruker for å dimensjonere GPU-en den leier.
| Policy | Familie | Parametre | Per trinn | GPU-nivå | Min. episoder | Datasett |
|---|---|---|---|---|---|---|
| ACT | Chunking-transformator, fra bunnen av | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | Kompakt VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA-grunnlag, diffusjonshode | ~3 B (~40 M trent) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 eller v2.1 |
| GR00T N1.5 | VLA-grunnlag, forgjenger | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 eller v2.1 |
| Pi0.5 | Flow-matching VLA, se flow matching | ~3 B, PaliGemma-ryggrad | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms per handlingstrinn, den raskeste av de fem, på et 24 GB-kort, ikke et A100.
- 1 til 3 USD per kjøring mot 4 til 12 for 3 B-klassen.
- Presis på kontaktrike oppgaver den har sett: 88 og 96 prosent på Slide Ziploc og Slot Battery, der tidligere metoder aldri kom forbi trinn én.
- Ingen språkkondisjonering: oppgavestrengen ignoreres, så ett sjekkpunkt er én oppgave.
- Ingen semantiske forhåndskunnskaper: alt den vet kom fra dine 50 episoder.
- Smal generalisering: flytt et kamera og du må trene på nytt.
- Den feiler stille: tapet faller, armen gjør ingenting, loggene sier ingenting.
- Hastighetsfordelen hjelper bare hvis inferens sitter ved siden av servoene.
Velg ACT når oppgave og scene er faste og bevegelsen må være rask og presis. Velg en når ett sjekkpunkt må dekke flere instruksjoner. To sider sammenligner beslutningen direkte: og . For publiserte ytelsestester, lenker hvert tall til sin kilde.
Hva du trenger før du starter
Én følgerarm, én lederarm for , minst ett kamera, en 24 GB GPU. ACT leser kun bilder og leddposisjoner. To kameraer er ideelt: en fast frontvisning for hvor ting er, et håndleddskamera for hva er i ferd med å berøre, som på ALOHA.
| Arm | Servoer | Spenning | Deler kostnad | Status |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Full støtte, referansearm |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Full støtte |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | Kompatibel |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | Kompatibel |
SO-100 og SO-101 bruker Feetech STS3215 servoer på en 7.4 V skinne. Å mate dem med 12 V ødelegger dem, stille nok til at folk først skylder på programvaren, og en Koch 12 V strømforsyning passer fysisk til et SO-100 kort. Sjekk etiketten. Symptomer: servo svarer ikke, arm rykker og synker så sammen. Se også SO-100 vs SO-101.
Fra bar arm til registrert datasett
Arbeidsflyten nedenfor er lerobot 0.6.x. Hopp over dette hvis du har en kalibrert arm og et datasett. Ellers dekker SO-100 startguide montering, opptaksveiledning dekker innspilling og datasett-dokumentasjon formatet.
- 1Installer lerobot med de riktige tilleggene
Opptak krever
core_scripts, treningtraining, Feetech-servoerfeetech. Python 3.12+.bashconda 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 - 2Finn USB-porten til hver arm
Kjør den med begge armene tilkoblet, og koble fra den ene når du blir bedt om det. På Linux må du kanskje åpne nodetillatelsene.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Angi motor-ID-er og baudrate
På SO-100 skjer dette før montering: i motsetning til SO-101 er kontaktene utilgjengelige når den er bygget. Skriptet går gjennom bussen én motor om gangen fra griperen, og skriver ID-er til EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Kalibrer begge armene
Sett hvert ledd til midten av sitt bevegelsesområde, trykk Enter, og før deretter hvert ledd gjennom hele sitt bevegelsesområde. Kalibrering lar en policy trent på én arm kjøre på en annen. Gjenbruk den samme
id.bashlerobot-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 - 5Teleoperer én gang med kameraene på
Lerobot-tommelfingerregelen: du skal kunne utføre oppgaven kun ved å se på kamerabildene. Hvis du ikke kan det, kan heller ikke ACT. Dette fanger opp flere dårlige datasett enn senere feilsøking.
bashlerobot-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 - 6Ta opp 50 episoder
50 er AY-Robots minimum og det ALOHA brukte per oppgave. lerobot anbefaler 10 per objektlokasjon, faste kameraer, konsistent grep.
navslutter en episode,rtar opp på nytt,qstopper og koder.bashHF_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

ACT har ingen forhåndskunnskap å falle tilbake på, så enhver inkonsekvens blir permanent. De tre dyreste: et kamera som ble flyttet mellom episode 20 og 21, lys som endret seg fordi du spilte inn halve settet om ettermiddagen, et grep utført på to måter. Hver av disse gir en perfekt utseende tapskurve og en arm som går til feil sted. Se tapet faller, policyen gjør ingenting, policyen fungerer bare i ett oppsett og innsamling av høykvalitets treningsdata.
Før trening, spill av minst fem episoder. LeRobot datasettformatet lagrer kamerastrømmer, leddtilstander og handlinger per episode, og avspilling sender disse handlingene tilbake til armen. Hvis avspillingen ikke utfører oppgaven, inneholder ikke dataene den, og treningen vil ikke finne den opp.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Trening av ACT-policyen
Dette er hele kommandoen. Alt ACT-spesifikt er allerede en standard, og det er derfor lerobot ACT-siden sier at man skal starte med dem.
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--policy.type=act laster ACTConfig, som tilpasser seg hvor mange motorer og kameraer datasettet ditt registrerte, slik at du aldri trenger å deklarere observasjonsformen. --wandb.enable=true er valgfritt og verdt det: tapskurven er det eneste billige signalet i en kjøring på 100000 trinn. Tidsplanen kommer fra lerobot's train config, ikke ACTConfig: 100000 trinn, batch 8, seed 1000, et sjekkpunkt hvert 20000. trinn, med logging hvert 200. trinn.
En full kjøring etterlater fem sjekkpunktkataloger, 020000 til og med 100000, pluss en last symlink. Behold dem alle: den beste policyen er ofte ikke den siste.
| Innstilling | lerobot standard | AY-Robots ACT-skjema | Kommentar |
|---|---|---|---|
| batchstørrelse | 8 | 8 | Senk den først hvis du når VRAM-grensene. |
| læringsrate | 1e-5 | 1e-5 | Samme som ALOHA-artikkelen. |
| maks trinn | 100000 | 100000 | Omtrent der et sett med 50 episoder slutter å forbedre seg. |
| gradientakkumulering | 1 | 1, does not apply | Endre batchstørrelse i stedet. |
| seed | 1000 | exposed | GR00T's tyro-inngangspunkt har ingen seed; ACT-kjøringer er de reproduserbare. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, editable | Prediksjons- og utførelseshorisont. Senk den andre, ikke den første. |
| sjekkpunktfrekvens | 20000 | not exposed | saveSteps er en GR00T-justering her. |
ACT med batchstørrelse 8 og to 640x480-kameraer passer komfortabelt på 24 GB. Det slutter å passe når folk øker batchstørrelsen for hastighet, eller mater det med 1920x1080-rammene et lerobot-opptakseksempel viser. To ResNet-18-backbones ved 1080p gir en veldig annerledes minneprofil. Senk --batch_size til 4 før du leier et større kort. Se utilstrekkelig minne under trening.
Varighet: rundt 5 timer på et 11 GB RTX 2080 Ti i artikkelen, noen timer for 100k trinn per lerobots ACT-side, 2 til 5 timer på AY-Robots 24 GB-nivå. Ikke kutt det kort. README-filen til referanse-repoet sier at en rykkete eller pauserende policy vanligvis bare trenger mer trening, fordi suksess og jevnhet fortsetter å forbedres etter at tapet flater ut: for data fra den virkelige verden kreves minst 5000 epoker, eller 3 til 4 ganger lengden igjen etter platået.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueKjører den trente policyen på armen
Utplassering bruker lerobot-rollout. Kameranøkler må samsvare med de innspilte: en policy trent på front og wrist vil ikke akseptere cam0 og cam1, og rename_map hjelper ikke, siden den trenger et forhåndstrent sjekkpunkt. Oppgavestrengen kan utelates; lerobots eget eksempel markerer den som valgfri for ACT.
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=60Evaluering pleide å kjøre via lerobot-record --policy.path=.... I 0.6.x er det lerobot-rollout med en --strategy.type-velger: base, sentry (opptak med auto-opplasting), highlight (ringbuffer lagret med tastetrykk), dagger (menneske i loopen) og episodic. Per 23. august 2026 sier ACT-dokumentasjonssiden fortsatt "using the lerobot-record command" rett over en blokk som kjører lerobot-rollout. Følg kommandoen, ikke setningen.
For å feste et sjekkpunkt i stedet for den endelige modellen, legg til --policy.pretrained_revision. Det krever at kjøringen har startet med --save_checkpoint_to_hub=true, av som standard: uten det skyver lerobot den endelige modellen og ingenting annet. Med det blir hvert sjekkpunkt merket med sitt null-utfylte trinn, så --policy.pretrained_revision=060000 gjenoppretter den på 60000 trinn. Å sammenligne den med 100000 på den virkelige armen er det billigste eksperimentet tilgjengelig.
To veier til samme sjekkpunkt
Alt ovenfor er den manuelle ruten, og den fungerer. Plattformruten bytter kontroll mot å slippe å eie en GPU eller et Python-miljø.
- Installer lerobot 0.6.x med
core_scripts,training,feetech, ffmpeg. - Finn porter, sett motor-ID-er, kalibrer begge armene, ta opp 50 episoder.
- Spill av noen episoder for å bekrefte at dataene inneholder oppgaven.
- Lei eller eie en 24 GB GPU, match CUDA og PyTorch, kjør
lerobot-train --policy.type=act. - Vent noen timer, kjør deretter
lerobot-rolloutpå maskinen ved armen.
# 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=cudaTotal kontroll: rediger configuration_act.py, legg til et kamera, forgrene treneren. For forskning snarere enn å levere en oppgave, er en plattform en distraksjon.
- Ta opp med skrivebordsklienten, eller ta med en Hugging Face repo-ID eller lokalt datasett.
- Åpne ACT på SO-100-guiden og velg modell og datasett. Standardinnstillingene er lerobot sine; chunkSize, nActionSteps, seed og logFreq kan redigeres.
- Backend leier en GPU dimensjonert etter VRAM og skriver sjekkpunkter til objektlagring.
/api/inference/podserverer deretter policyen til den lokale robotklienten. En inaktiv vakthund ødelegger pod-en, slik at ingenting faktureres i det stille.- De samme operasjonene finnes i CLI, MCP-serveren og treningsdokumentasjonen.
Den fikser ikke dataene dine: et datasett med et flyttet kamera trener like dårlig her, og skjemaet kan ikke oppdage det. Den fjerner heller ikke latensproblemet. Kontrollsløyfen er 20 til 485 ms per handlingstrinn, med offentlige internett-tur-retur-turer på toppen, og ACT blir hardest rammet fordi trinnet er kortest: 60 ms er en 12 prosent nedbremsing på Pi0.5s 485 ms, men fire ganger trinnet på ACTs 20 ms. Fjerninferens passer for langsom plukking og plassering, ikke rask reaktiv bevegelse.

Hva som faktisk går galt
Nesten ingen av problemene ligger i treningskommandoen. De ligger i tingene rundt den, sortert etter hvor ofte de oppstår første gang.
| Symptom | Vanlig årsak | Side |
|---|---|---|
| lerobot-find-port viser ingenting | Driver, kabel eller nodetillatelser | arm ikke oppdaget |
| Kamera mangler ved opptakstidspunkt | Indeks endret ved omstart, eller to kameraer på én USB-kontroller | kamera ikke oppdaget |
| Trening avviser datasettet | ACT krever v3.0, GR00T trenger v2.1 | datasett avvist som v3 |
| CUDA tom for minne | Batchstørrelse økt, eller 1080p-bilder i stedet for 480p | tom for minne under trening |
| Tap ser bra ut, armen gjør ingenting | Dataene mangler oppgaven, eller et kamera flyttet seg | tap faller, policy gjør ingenting |
| Rykkete bevegelse eller en pause midt i episoden | Under-trent, en chunk-grense-stopp, eller et tidsavbrutt inferanse-kall | policy fryser midt i bevegelsen |
To rader fortjener å fremheves. ACT trener på LeRobot v3.0 mens GR00Ts laster krasjer på den og trenger v2.1, så et datasett som trener ACT kan føre til at en GR00T-kjøring feiler. Og den siste raden har to løsninger: ACT-forfatterne svarer på rykkete bevegelse med mer trening, mens med n_action_steps på 100 lander en ekte stopp ved en chunk-grense, en synlig pause hvert 3.3 sekund ved 30 fps. To ting til å vite: et enkelt dødt ledd er vanligvis en servo-ID som aldri ble skrevet, og en griper som nærmer seg, men aldri lukkes betyr for liten griperrekkevidde i demonstrasjonene. Full indeks: sidene for feilmoduser.
Hva en kjøring koster
| Nivå | Modeller | Kjøretid | Pris per time | Kostnad per kjøring |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 til 5 timer | 0.30 to 0.60 USD | omtrent 1 til 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 til 6 timer | 1.20 to 2.00 USD | omtrent 4 til 12 USD |
Dette er argumentet for å starte med ACT selv om du ønsker en VLA senere. Et mislykket ACT-kjøring koster prisen av en kaffe og forteller deg innen timer om datasettet ditt inneholder oppgaven. En mislykket GR00T-kjøring koster fire ganger så mye for den samme lærdommen. Å flytte opp til GR00T N1.7 eller SmolVLA etterpå er en formendring, ikke en gjenoppbygging. Bakgrunn: syn-språk-handling-modeller, den komplette SO-100-guiden, tren din første policy og imitasjonslæring. Ingen arm? Livesiden strømmer en ekte SO-100 å kjøre uten å registrere deg.
Tren ACT på din SO-100
Guiden for denne eksakte kombinasjonen: standardinnstillinger, GPU-nivå og hva en kjøring koster. Velg datasettet, bakenden leier kortet og skriver sjekkpunktene.
Åpne treningsguidenFinnes det en forhåndstrent ACT-modell jeg kan finjustere i stedet?▾
Nei. ACT har ingen grunnmodell; den eksisterer kun etter at du har trent den. Det er ikke et hull i verktøyene, det er hva ACT er: artikkelen trener en policy fra bunnen av per oppgave. For et leverandørsjekkpunkt, bruk GR00T N1.7 eller Pi0.5.
Hvor mange episoder trenger jeg egentlig?▾
50: hva ALOHA registrerte per oppgave (100 for Thread Velcro, den vanskeligste) og AY-Robots minimum. lerobot anbefaler omtrent 10 per objektlokasjon, faste kameraer, konsistent grep. Femti rene episoder slår hundre der kameraet beveget seg.
Bør jeg endre chunk_size fra 100?▾
Vanligvis ikke. Ablasjonen klatrer fra 1 prosent ved k = 1 til 44 prosent ved k = 100 og flater ut etterpå, så 100 ligger nær toppen. Hvis armen forplikter seg for lenge, senk n_action_steps i stedet: ved 30 fps, 25 re-forespørsler hvert 0.8 sekund.
Hvor lang tid tar en treningskjøring, og kan jeg stoppe den tidlig?▾
To til fem timer på et 24 GB kort for 100000 steg. Sjekkpunkter lander hvert 20000 steg og --resume=true gjenopptar en kjøring, så det er trygt å stoppe tidlig. Bare ikke ved den første flate strekningen: jevnheten forbedres etter at tapet flater ut.
Tapet gikk ned og armen feiler fortsatt. Hva nå?▾
Nesten alltid datasettet. Spill av innspilte episoder ved armen: hvis avspillingen ikke utfører oppgaven, inneholder ikke dataene den. Sjekk deretter om noe beveget seg, spesielt et kamera. ACT har ingen forhåndskunnskap, så et dytt på episode 21 er permanent.
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started