
Træn en Action Chunking Transformer fra bunden på en SO-100 med lerobot: act-konfigurationen, chunk_size og n_action_steps, 100000-trinsplanen, 20 ms inferens.
ACT er den afvigende blandt SO-100-politikkerne. 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: der er ingen basis-checkpoint, fordi det ikke er en grundmodel. Det er en transformer med cirka 80 millioner parametre, som du træner fra bunden på én opgave, på din arm, under din belysning.
Det er også derfor, den udfører et kontroltrin på 20 ms, hvor en VLA med 3 milliarder parametre behøver 152 til 485 ms, og koster 1 til 3 USD per kørsel i stedet for 4 til 12. Denne guide gennemgår den manuelle rute med lerobot på en SO-100: optagelse, act konfigurationen, hvad chunk_size og n_action_steps styrer, 100000-trinsplanen, udrulningen. Derefter det samme job på AY-Robots, inklusive hvor platformen ikke hjælper.
Hvad du skal vide
- •ACT træner fra bunden: ingen basismodel, ingen fortræning, ingen sproginput. Ét checkpoint, én opgave.
- •Artiklen: cirka 80 M parametre, omkring 5 timer på et 11 GB RTX 2080 Ti, 0,01 s inferens.
- •lerobot defaults: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
- •På AY-Robots: 20 ms per trin, den hurtigste af de fem. Minimum 50 episoder, LeRobot v3.0, et 24 GB kort, 1 til 3 USD per kørsel.
- •Den vinder på en opgave, den har set, og taber i det øjeblik, du ønsker sprogkonditionering.
Kontrolleret 23. august 2026 mod lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. En tutorial, der starter med python lerobot/scripts/train.py er ældre end konsolindgangspunkterne lerobot-train, lerobot-record and lerobot-rollout.
Hvad ACT egentlig er
Action Chunking with Transformers kommer fra ALOHA-artiklen, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, af Zhao, Kumar, Levine og Finn, arXiv, 23 April 2023. Riggen optager med 50 Hz med fire webcams, der streamer 480x640 ved 30 fps: to på gribere, en top, en front. Abstraktet hævder seks færdigheder med 80 til 90 procent succes, herunder åbning af en gennemsigtig krydderikop og indsættelse af et batteri, fra 10 minutters demonstrationer.
Brødteksten er mere nyttig, når man planlægger en optagelsessession: 50 demonstrationer pr. opgave, undtagen Thread Velcro med 100, hvilket er 10 til 20 minutters data og 30 til 60 minutters reel tid, når nulstillinger er talt med. Succesen er heller ikke ensartet: Thread Velcro ender på 20 procent, Put On Shoe på 92, Cup Open 84, Prep Tape 64.
| Hyperparameter | ALOHA-artikel, Tabel III | lerobot på main |
|---|---|---|
| læringshastighed | 1e-5 | optimizer_lr = 1e-5 |
| batchstørrelse | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| encoder- / decoder-lag | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| chunkstørrelse k | 100 | chunk_size = 100 |
| latent dimension af z | fraværende; Fig. 11 shows a 32 to 512 projection | latent_dim = 32 |
| temporal ensembling | fraværende; --temporal_agg in the reference code | temporal_ensemble_coeff = None |
Artiklen angiver 7 dekoderlag, lerobot leverer 1, bevidst. Kommentaren i configuration_act.py siger, at den originale implementering har en fejl, hvilket betyder, at kun det første lag bruges, med henvisning til issue 25 i tonyzhaozh/act: action head læser hs[0], så alle syv lag kører, men kun den første output når frem til forudsigelsen. Dette problem har været åbent og ubesvaret siden 23. april 2024. lerobot matcher den adfærd, der producerede de publicerede resultater, ikke det trykte tal. Øg --policy.n_decoder_layers, og du træner en model, som artiklen aldrig har evalueret.
Action chunking er hele ideen
Almindelig adfærdskloning mapper én observation til én handling, og fejl akkumuleres: en afvigelse placerer armen uden for distributionen, hvilket producerer en dårligere handling, og tredive trin senere er griberen ingen steder i nærheden af objektet. Handlingsopdeling forudsiger k handlinger på én gang og udfører dem, hvilket reducerer den effektive horisont med en faktor k. Den håndterer også en gene, der er specifik for menneskelige data: teleoperatører holder pause, og en enkelttrins Markov-baseret politik kan ikke modellere en pause, der afhænger af, hvad der kom før.
Artiklen ablaterer k i stedet for at fastslå det. Med temporal ensembling slået fra, gennemsnitligt over fire indstillinger, stiger succesraten fra 1 procent ved k = 1 til 44 procent ved k = 100, og aftager derefter ved 200 og 400, når politikken nærmer sig open-loop kontrol. Denne kurve er grunden til, at standardværdien er 100.
- chunk_size: hvor mange fremtidige handlinger dekoderen forudsiger per forward pass. Standard 100.
- n_action_steps: hvor mange af dem du udfører, før du forespørger igen. Standard 100, så lerobot kører hele chunken i åben sløjfe.
- lerobot validerer
n_action_steps <= chunk_sizeog udløser enValueError, hvis du vender det om.
Hvad der betyder noget operationelt, er chunk_size divideret med billedhastigheden. Ved de 30 fps, som lerobots SO-100 eksempler bruger, dækker en chunk på 100 handlinger omkring 3,3 sekunder fra én observation. Hvis opgaven kræver en korrektion inden for det vindue, skal du sænke n_action_steps, ikke chunk_size: du beholder den lange forudsigelse og observerer igen 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=cudaSæt --policy.temporal_ensemble_coeff, og lerobot kræver n_action_steps = 1, ellers udløses en NotImplementedError. Ensembling forespørger politikken ved hvert tidsskridt og blander de overlappende forudsigelser for det tidsskridt med vægte w_i = exp(-m * i), hvor den ældste får w_0. Artiklen angiver det til 3,3 procent for ACT: reelt, men beskedent, og det multiplicerer inferenstællingen med chunk-længden. Overkommeligt ved 20 ms per trin, ikke ved 485 ms. Se inferenslatens.
Når ACT slår en grundmodel
De fem trænbare politikker side om side, med de tal AY-Robots måler og bruger til at dimensionere den GPU, den lejer.
| Politik | Familie | Parametre | Pr. trin | GPU-niveau | Min. episoder | Datasæt |
|---|---|---|---|---|---|---|
| ACT | Chunking-transformer, fra bunden | ~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-fundament, diffusionshoved | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA-fundament, forgænger | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | Flow-matching VLA, se flow matching | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms pr. handlingstrin, den hurtigste af de fem, på et 24 GB kort, ikke et A100.
- 1 til 3 USD pr. kørsel mod 4 til 12 for 3 B-klassen.
- Præcis ved kontaktintensive opgaver, den har set: 88 og 96 procent på Slide Ziploc og Slot Battery, hvor tidligere metoder aldrig klarede første fase.
- Ingen sprogkonditionering: opgavestrengen ignoreres, så ét checkpoint er én opgave.
- Ingen semantiske forhåndsviden: alt, hvad den ved, kommer fra dine 50 episoder.
- Smal generalisering: flyt et kamera, og du skal gentræne.
- Den fejler stille: tabet falder, armen gør intet, loggene siger intet.
- Hastighedsfordelen hjælper kun, hvis inferens sidder ved siden af servoerne.
Vælg ACT, når opgave og scene er faste, og bevægelsen skal være hurtig og præcis. Vælg en , når ét checkpoint skal dække flere instruktioner. To sider behandler beslutningen direkte: og . For offentliggjorte benchmarks, linker hvert tal til dets kilde.
Hvad du skal bruge, før du starter
Én følgerarm, én lederarm til , mindst ét kamera, en 24 GB GPU. ACT læser kun billeder og ledpositioner. To kameraer er det optimale: et fast frontalt syn for, hvor tingene er, et håndledskamera for, hvad er ved at røre, som på ALOHA.
| Arm | Servoer | Spænding | Delepris | Status |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 til 150 EUR | Fuld support, referencearm |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 til 170 EUR | Fuld support |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V og 12 V skinner | ~250 til 350 EUR | Kompatibel |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 til 500 EUR | Kompatibel |
SO-100 og SO-101 kører Feetech STS3215 servoer på en 7.4 V skinne. At forsyne dem med 12 V ødelægger dem, stille nok til at folk først giver softwaren skylden, og en Koch 12 V strømforsyning passer fysisk til et SO-100 printkort. Tjek mærkaten. Symptomer: servo reagerer ikke, arm rykker og falder derefter sammen. Se også SO-100 vs SO-101.
Fra bar arm til optaget datasæt
Arbejdsgangen nedenfor er lerobot 0.6.x. Spring den over, hvis du har en kalibreret arm og et datasæt. Ellers dækker SO-100 startguide samling, optagelsesgennemgang dækker optagelse og datasætdokumentation formatet.
- 1Installer lerobot med de rette udvidelser
Optagelse kræver
core_scripts, træningtraining, 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 - 2Find USB-porten for hver arm
Kør den med begge arme tilsluttet, og tag den ene ud, når du bliver bedt om det. På Linux skal du muligvis åbne node-tilladelserne.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Indstil motor-ID'er og baudrate
På SO-100 sker dette før samling: i modsætning til SO-101 er stikkene utilgængelige, når den først er bygget. Scriptet gennemgår bussen én motor ad gangen fra gribearmen 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 arme
Indstil hvert led til midten af dets bevægelsesområde, tryk Enter, og før derefter hvert led gennem dets fulde bevægelsesområde. Kalibrering gør det muligt for en politik trænet på én arm at køre på en anden. Genbrug det 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 kameraerne tændt
Lerobot-tommelfingerreglen: du skal kunne udføre opgaven ved kun at se på kamerabillederne. Hvis du ikke kan, kan ACT heller ikke. Dette fanger flere dårlige datasæt end senere fejlfinding.
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 - 6Optag 50 episoder
50 er AY-Robots' minimum og hvad ALOHA brugte pr. opgave. lerobot anbefaler 10 pr. objektplacering, faste kameraer, konsistent greb.
nafslutter en episode,rgenoptager,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 forudgående viden at falde tilbage på, så enhver inkonsekvens bliver permanent. De tre dyreste: et kamera, der blev skubbet mellem episode 20 og 21, lys, der ændrede sig, fordi du optog halvdelen af sættet om eftermiddagen, et greb udført på to måder. Hver giver en perfekt udseende tabskurve og en arm, der går til det forkerte sted. Se tab falder, politik gør intet, politik virker kun i én opsætning og indsamling af træningsdata af høj kvalitet.
Før træning skal du afspille mindst fem episoder. LeRobot datasætformatet, gemmer kamerastrømme, ledtilstande og handlinger pr. episode, og genafspilning skubber disse handlinger tilbage til armen. Hvis genafspilningen ikke udfører opgaven, indeholder dataene den ikke, og træningen vil ikke opfinde den.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Træning af ACT-politikken
Dette er hele kommandoen. Alt ACT-specifikt er allerede en standard, hvilket er grunden til, at lerobot ACT-siden anbefaler at 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 indlæser ACTConfig, som tilpasser sig det antal motorer og kameraer, dit datasæt har optaget, så du aldrig behøver at deklarere observationsformen. --wandb.enable=true er valgfri og det værd: tabskurven er det eneste billige signal i et 100000-trins kørsel. Skemaet kommer fra lerobot's træningskonfiguration, ikke ACTConfig: 100000 trin, batch 8, seed 1000, et kontrolpunkt hvert 20000. trin, logning hvert 200. trin.
En fuld kørsel efterlader fem kontrolpunktsmapper, 020000 til 100000, plus et last symlink. Behold dem alle: den bedste politik er ofte ikke den sidste.
| Indstilling | lerobot standard | AY-Robots ACT-formular | Kommentar |
|---|---|---|---|
| batchstørrelse | 8 | 8 | Sænk den først, hvis du rammer VRAM-grænser. |
| læringshastighed | 1e-5 | 1e-5 | Samme som ALOHA-papiret. |
| maks. trin | 100000 | 100000 | Cirka hvor et sæt på 50 episoder holder op med at forbedre sig. |
| gradientakkumulering | 1 | 1, gælder ikke | Skift batchstørrelse i stedet. |
| seed | 1000 | eksponeret | GR00T's tyro-indgangspunkt har ingen seed; ACT-kørsler er de reproducerbare. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, redigerbar | Forudsigelses- og udførelseshorisont. Sænk den anden, ikke den første. |
| kontrolpunktsfrekvens | 20000 | ikke eksponeret | saveSteps er en GR00T-knap her. |
ACT ved batchstørrelse 8 med to 640x480 kameraer passer komfortabelt på 24 GB. Det holder op med at passe, når folk øger batchstørrelsen for hastighed, eller fodrer det med 1920x1080 frames, som et lerobot-optagelseseksempel viser. To ResNet-18 backbones ved 1080p er en meget anderledes hukommelsesprofil. Sænk --batch_size til 4, før du lejer et større kort. Se hukommelsesmangel under træning.
Varighed: omkring 5 timer på et 11 GB RTX 2080 Ti i artiklen, et par timer for 100k trin ifølge lerobots ACT-side, 2 til 5 timer på AY-Robots 24 GB-niveau. Afkort det ikke. README'en i reference-repoet angiver, at en hakkende eller pauserende politik typisk blot kræver mere træning, da succes og glathed fortsat forbedres, efter at tabet stabiliseres: for realtidsdata kræver det mindst 5000 epoker, eller 3 til 4 gange længden igen efter stabiliseringen.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueKørsel af den trænede politik på armen
Implementering bruger lerobot-rollout. Kameranøgler skal matche de optagede: en politik trænet på front og wrist vil ikke acceptere cam0 og cam1, og rename_map hjælper ikke, da den kræver et fortrænet checkpoint. Opgavestrengen kan udelades; 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 plejede at køre via lerobot-record --policy.path=.... I 0.6.x er det lerobot-rollout med en --strategy.type vælger: base, sentry (optagelse med auto-upload), highlight (ringbuffer gemt ved tastetryk), dagger (menneske i loopet) og episodic. Pr. 23. august 2026 siger ACT-dokumentationssiden stadig "using the lerobot-record command" direkte over en blok, der kører lerobot-rollout. Følg kommandoen, ikke sætningen.
For at fastgøre et checkpoint i stedet for den endelige model, tilføj --policy.pretrained_revision. Det kræver, at kørslen er startet med --save_checkpoint_to_hub=true, deaktiveret som standard: uden den skubber lerobot den endelige model og intet andet. Med den tagges hvert checkpoint med dets nul-polstrede trin, så --policy.pretrained_revision=060000 genopretter den med 60000 trin. At sammenligne den med 100000 på den rigtige arm er det billigste eksperiment, der er tilgængeligt.
To veje til det samme checkpoint
Alt ovenfor er den manuelle vej, og den virker. Platform-vejen bytter kontrol for ikke at skulle eje en GPU eller et Python-miljø.
- Installer lerobot 0.6.x med
core_scripts,training,feetech, ffmpeg. - Find porte, indstil motor-ID'er, kalibrer begge arme, optag 50 episoder.
- Afspil et par episoder for at bekræfte, at dataene indeholder opgaven.
- Lej eller ejer en 24 GB GPU, match CUDA og PyTorch, kør
lerobot-train --policy.type=act. - Vent et par timer, kør derefter
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=cudaFuld kontrol: rediger configuration_act.py, tilføj et kamera, fork træneren. Til forskning frem for at levere en opgave er en platform en distraktion.
- Optag med desktopklienten, eller medbring et Hugging Face repo-ID eller lokalt datasæt.
- Åbn ACT på SO-100 guiden og vælg model og datasæt. Standardindstillingerne er lerobot-standarderne; chunkSize, nActionSteps, seed og logFreq kan redigeres.
- Backend lejer en GPU dimensioneret efter VRAM og skriver checkpoints til objektlager.
/api/inference/podserverer derefter politikken til den lokale robotklient. En inaktiv watchdog ødelægger pod'en, så intet faktureres lydløst.- De samme operationer findes i CLI'en, MCP-serveren og træningsdokumentationen.
Det retter ikke dine data: et datasæt med et flyttet kamera træner lige så dårligt her, og formularen kan ikke opdage det. Det fjerner heller ikke latenstidsproblemet. Kontrolsløjfen er 20 til 485 ms pr. handlingstrin, med offentlige internet-round trips oveni, og ACT er mest skadet, fordi dets trin er kortest: 60 ms er en 12 procents forsinkelse på Pi0.5's 485 ms, men fire gange trinnet på ACT's 20 ms. Fjerninferens passer til langsom pick and place, ikke hurtig reaktiv bevægelse.

Hvad der faktisk går galt
Næsten ingen af problemerne ligger i træningskommandoen. De ligger i de ting, der omgiver den, sorteret efter hvor ofte de bider første gang.
| Symptom | Sædvanlig årsag | Side |
|---|---|---|
| lerobot-find-port viser intet | Driver, kabel eller node-tilladelser | arm ikke fundet |
| Kamera mangler ved optagelse | Indeks ændret ved genstart, eller to kameraer på én USB-controller | kamera ikke fundet |
| Træning afviser datasættet | ACT kræver v3.0, GR00T behøver v2.1 | datasæt afvist som v3 |
| CUDA løber tør for hukommelse | Batchstørrelse øget, eller 1080p billeder i stedet for 480p | løber tør for hukommelse under træning |
| Loss ser fin ud, armen gør intet | Data mangler opgaven, eller et kamera er flyttet | loss falder, policy gør intet |
| Rykvis bevægelse eller en pause midt i episoden | Under-trænet, et stop ved chunk-grænse, eller et timeoutet inferenskald | policy fryser midt i bevægelsen |
To rækker fortjener særlig opmærksomhed. ACT træner på LeRobot v3.0, mens GR00T's loader crasher på det og kræver v2.1, så et datasæt, der træner ACT, kan fejle et GR00T-kørsel. Og den sidste række har to løsninger: ACT-forfatterne svarer på rykvis bevægelse med mere træning, mens med n_action_steps på 100 lander et ægte stop ved en chunk-grænse, en synlig pause hvert 3.3 sekund ved 30 fps. Yderligere to at vide: et enkelt dødt led er normalt et servo-id, der aldrig blev skrevet, og en griber, der nærmer sig, men aldrig lukker betyder for lille griberækkevidde i demonstrationerne. Fuld indeks: siderne for fejltilstande.
Hvad en kørsel koster
| Niveau | Modeller | Køretid | Pris pr. time | Omkostning pr. kørsel |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 til 5 timer | 0.30 to 0.60 USD | ca. 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 | ca. 4 til 12 USD |
Dette er argumentet for at starte med ACT, selv hvis du ønsker en VLA senere. En mislykket ACT-kørsel koster prisen for en kop kaffe og fortæller dig inden for timer, om dit datasæt indeholder opgaven. En mislykket GR00T-kørsel koster fire gange så meget for den samme lektion. At opgradere til GR00T N1.7 eller SmolVLA bagefter er en formændring, ikke en genopbygning. Baggrund: vision-sprog-handlingsmodeller, den komplette SO-100 guide, træn din første politik og imitationslæring. Ingen arm? Livesiden streamer en rigtig SO-100, som du kan styre uden at tilmelde dig.
Træn ACT på din SO-100
Guiden til denne præcise kombination: standardindstillinger, GPU-niveau og hvad en kørsel koster. Vælg datasættet, backend lejer kortet og skriver checkpoints.
Åbn træningsguidenEr der en fortrænet ACT-model, jeg kan finjustere i stedet?▾
Nej. ACT har ingen grundmodel; den eksisterer kun, efter du har trænet den. Det er ikke et hul i værktøjerne, det er, hvad ACT er: artiklen træner en politik fra bunden pr. opgave. For et leverandør-checkpoint, brug GR00T N1.7 eller Pi0.5.
Hvor mange episoder har jeg virkelig brug for?▾
50: hvad ALOHA optog pr. opgave (100 for Thread Velcro, dens sværeste) og AY-Robots minimum. lerobot anbefaler omkring 10 pr. objektplacering, faste kameraer, konsistent greb. Halvtreds rene episoder slår hundrede, hvor kameraet bevægede sig.
Skal jeg ændre chunk_size fra 100?▾
Normalt ikke. Ablationen stiger fra 1 procent ved k = 1 til 44 procent ved k = 100 og aftager derefter, så 100 ligger nær toppen. Hvis armen forpligter sig for længe, sænk n_action_steps i stedet: ved 30 fps, 25 genforespørgsler hvert 0.8 sekund.
Hvor lang tid tager en træningskørsel, og kan jeg stoppe den tidligt?▾
To til fem timer på et 24 GB kort for 100000 trin. Checkpoints lander hvert 20000 trin, og --resume=true genoptager en kørsel, så det er sikkert at stoppe tidligt. Bare ikke ved den første flade strækning: glatheden forbedres, efter at tabet stabiliserer sig.
Tabet faldt, og armen fejler stadig. Hvad nu?▾
Næsten altid datasættet. Afspil optagede episoder ved armen: hvis afspilningen ikke udfører opgaven, indeholder dataene den ikke. Kontroller derefter, om noget har flyttet sig, især et kamera. ACT har ingen forudgående viden, så et skub i 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