
Trajnoni një Action Chunking Transformer nga zero në një SO-100 me lerobot: konfigurimi i act, chunk_size dhe n_action_steps, orari i 100000 hapave, inferenca 20 ms.
ACT është i veçanti mes politikave SO-100. GR00T N1.7 dhe N1.5 fillojnë nga nvidia/GR00T-N1.7-3B dhe nvidia/GR00T-N1.5-3B, Pi0.5 nga lerobot/pi05_base. ACT fillon nga asgjëja: nuk ka pikë kontrolli bazë, sepse nuk është një model themelor. Është një transformator me rreth 80 milionë parametra që e trajnoni nga e para për një detyrë, në krahun tuaj, nën ndriçimin tuaj.
Kjo është edhe arsyeja pse ai ekzekuton një hap kontrolli në 20 ms, ndërsa një VLA me 3 miliardë parametra ka nevojë për 152 deri në 485 ms, dhe kushton 1 deri në 3 USD për ekzekutim në vend të 4 deri në 12. Ky udhëzues ndjek rrugën manuale me lerobot në një SO-100: regjistrimi, konfigurimi act, çfarë kontrollojnë chunk_size dhe n_action_steps, orari i 100000 hapave, dhe shpalosja. Më pas e njëjta punë në AY-Robots, duke përfshirë rastet kur platforma nuk ndihmon.
Çfarë duhet të dini
- •ACT trajnohet nga e para: pa model bazë, pa paratrajnim, pa hyrje gjuhësore. Një pikë kontrolli, një detyrë.
- •Punimi: rreth 80 M parametra, rreth 5 orë në një 11 GB RTX 2080 Ti, 0.01 s inferencë.
- •Parazgjedhjet e lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 hapa, seed 1000.
- •Në AY-Robots: 20 ms për hap, më i shpejti nga të pesë. Minimumi 50 episode, LeRobot v3.0, një kartë 24 GB, 1 deri në 3 USD për ekzekutim.
- •Fiton në një detyrë që e ka parë, dhe humbet në momentin që dëshironi kushtëzim gjuhësor.
Kontrolluar më 23 Gusht 2026 kundrejt lerobot 0.6.x: pyproject.toml on main lexon version = "0.6.2", etiketa më e re v0.6.1, 3 Gusht 2026. Një tutorial që fillon me python lerobot/scripts/train.py i paraprin pikave të hyrjes së konsolës lerobot-train, lerobot-record dhe lerobot-rollout.
Çfarë është në të vërtetë ACT
Ndarja e veprimeve me transformatorë vjen nga punimi ALOHA, Mësimi i manipulimit bimanual me detaje të imta me pajisje me kosto të ulët, nga Zhao, Kumar, Levine dhe Finn, arXiv, 23 Prill 2023. Pajisja regjistron në 50 Hz me katër kamera web që transmetojnë 480x640 në 30 fps: dy në kapëse, një sipër, një përpara. Abstrakti pretendon gjashtë aftësi me 80 deri në 90 për qind sukses, ndër to hapjen e një filxhani salce gjysmë të tejdukshëm dhe futjen e një baterie, nga 10 minuta demonstrime.
Pjesa kryesore është më e dobishme kur planifikoni një sesion regjistrimi: 50 demonstrime për detyrë, përveç Thread Velcro në 100, që është 10 deri në 20 minuta të dhëna dhe 30 deri në 60 minuta kohë reale pasi të numërohen rivendosjet. Suksesi nuk është uniform gjithashtu: Thread Velcro përfundon në 20 për qind, Put On Shoe në 92, Cup Open 84, Prep Tape 64.
| Hiperparametri | Punimi ALOHA, Tabela III | lerobot në main |
|---|---|---|
| shkalla e të mësuarit | 1e-5 | optimizer_lr = 1e-5 |
| madhësia e grupit | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| shtresat e enkoderit / dekoderit | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| madhësia e copës k | 100 | chunk_size = 100 |
| dimensioni latent i z | mungon; Fig. 11 tregon një projeksion 32 në 512 | latent_dim = 32 |
| ansambli kohor | mungon; --temporal_agg në kodin referencë | temporal_ensemble_coeff = None |
Punimi liston 7 shtresa dekoderi, lerobot dërgon 1, qëllimisht. Komenti në configuration_act.py thotë se implementimi origjinal ka një gabim që do të thotë se përdoret vetëm shtresa e parë, duke cituar çështjen 25 në tonyzhaozh/act: koka e veprimit lexon hs[0], kështu që të shtatë shtresat ekzekutohen, por vetëm dalja e parë arrin parashikimin. Kjo çështje është e hapur dhe pa përgjigje që nga 23 Prilli 2024. lerobot përputhet me sjelljen që prodhoi rezultatet e publikuara, jo me numrin e shtypur. Rritni --policy.n_decoder_layers dhe do të trajnoni një model që punimi nuk e ka vlerësuar kurrë.
Ndërthurja e veprimeve është e gjithë ideja
Klonimi i zakonshëm i sjelljes harton një vëzhgim në një veprim, dhe gabimet grumbullohen: një devijim e nxjerr krahun jashtë shpërndarjes, duke prodhuar një veprim më të keq, dhe tridhjetë hapa më vonë kapësi nuk është askund afër objektit. Ndërthurja e veprimeve parashikon k veprime menjëherë dhe i ekzekuton ato, duke ulur horizontin efektiv me një faktor k. Gjithashtu trajton një shqetësim specifik për të dhënat njerëzore: teleoperatorët bëjnë pauza, dhe një Markovian me një hap politikë nuk mund të modelojë një pauzë që varet nga ajo që ka ndodhur më parë.
Punimi ablaton k në vend që ta pohojë atë. Me ansamblimin kohor të fikur, mesatarisht mbi katër cilësime, suksesi rritet nga 1 përqind në k = 1 në 44 përqind në k = 100, pastaj zvogëlohet në 200 dhe 400 ndërsa politika i afrohet kontrollit me qark të hapur. Kjo kurbë është arsyeja pse vlera e paracaktuar është 100.
- chunk_size: sa veprime të ardhshme parashikon dekoderi për çdo kalim përpara. Parazgjedhja 100.
- n_action_steps: sa prej tyre ekzekutoni para se të bëni sërish pyetje. Parazgjedhja 100, kështu që lerobot ekzekuton të gjithë bllokun në qark të hapur.
- lerobot vërteton
n_action_steps <= chunk_sizedhe ngre njëValueErrornëse e vendosni mbrapsht.
Ajo që ka rëndësi operacionale është chunk_size e ndarë me shpejtësinë e kuadrove. Me 30 fps që përdorin shembujt SO-100 të lerobot, një bllok prej 100 veprimesh angazhon rreth 3.3 sekonda nga një vëzhgim. Nëse detyra kërkon një korrigjim brenda asaj dritareje, ulni n_action_steps, jo chunk_size: ju mbani parashikimin e gjatë dhe ri-vëzhgoni më shpesh.
# 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=cudaVendosni --policy.temporal_ensemble_coeff dhe lerobot kërkon n_action_steps = 1, duke ngritur NotImplementedError në të kundërt. Ansamblimi pyet politikën në çdo hap kohor dhe bashkon parashikimet e mbivendosura për atë hap kohor me pesha w_i = exp(-m * i), ku më i vjetri merr w_0. Punimi e vendos atë në 3.3 për qind për ACT: reale por modeste, dhe shumëzon numrin e inferencave me gjatësinë e bllokut. E përballueshme në 20 ms për hap, jo në 485 ms. Shih vonesën e inferencës.
Kur ACT tejkalon një model themelor
Pesë politikat e trajnueshme krah për krah, me numrat që AY-Robots mat dhe përdor për të përcaktuar madhësinë e GPU-së që merr me qira.
| Politika | Familja | Parametrat | Për hap | Niveli i GPU-së | Epizodat min. | Seti i të dhënave |
|---|---|---|---|---|---|---|
| ACT | Transformator me ndarje, nga e para | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | VLA kompakt | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | Themel VLA, kokë difuzioni | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | Themel VLA, paraardhës | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA me përputhje fluksi, shih përputhjen e fluksit | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms për hap veprimi, më i shpejti nga të pesë, në një kartë 24 GB jo një A100.
- 1 deri në 3 USD për ekzekutim kundrejt 4 deri në 12 për klasën 3 B.
- I saktë në punën me kontakt të pasur që ka parë: 88 dhe 96 për qind në Slide Ziploc dhe Slot Battery, ku metodat e mëparshme nuk kaluan kurrë fazën e parë.
- Pa kushtëzim gjuhësor: vargu i detyrës injorohet, kështu që një pikë kontrolli është një detyrë.
- Pa parakushte semantike: gjithçka që di erdhi nga 50 episodet tuaja.
- Gjeneralizim i ngushtë: lëvizni një kamerë dhe po ritrajnoni.
- Dështon në heshtje: humbja bie, krahu nuk bën asgjë, regjistrat nuk thonë asgjë.
- Avantazhi i shpejtësisë ndihmon vetëm nëse inferenca ndodhet pranë servove.
Zgjidhni ACT kur detyra dhe skena janë fikse dhe lëvizja duhet të jetë e shpejtë dhe e saktë. Zgjidhni një kur një pikë kontrolli duhet të mbulojë disa udhëzime. Dy faqe e trajtojnë vendimin kokë më kokë: dhe . Për standardet e publikuara, lidh çdo numër me burimin e tij.
Çfarë ju nevojitet para se të filloni
Një krah ndjekës, një krah udhëheqës për , të paktën një kamerë, një GPU 24 GB. ACT lexon vetëm imazhe dhe pozicione nyjesh. Dy kamera janë zgjidhja optimale: një pamje fikse nga përpara për vendndodhjen e objekteve, një kamerë dore për atë që është gati të prekë, si në ALOHA.
| Krahu | Servo | Tensioni | Kostoja e pjesëve | Statusi |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Mbështetje e plotë, krah referencë |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Mbështetje e plotë |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | I pajtueshëm |
| LeKiwi | Feetech STS3215 (arm) | Krah 7.4 V, bazë 12 V | ~400 to 500 EUR | I pajtueshëm |
SO-100 dhe SO-101 përdorin servo Feetech STS3215 në një shinë 7.4 V. Furnizimi i tyre me 12 V i shkatërron ato, aq qetë sa njerëzit fajësojnë fillimisht softuerin, dhe një furnizim Koch 12 V përshtatet fizikisht në një pllakë SO-100. Kontrolloni etiketën. Simptomat: servo nuk përgjigjet, krahu dridhet dhe më pas lëshohet. Gjithashtu SO-100 vs SO-101.
Nga krahu i zhveshur te grupi i të dhënave të regjistruara
Rrjedha më poshtë është lerobot 0.6.x. Anashkalojeni nëse keni një krah të kalibruar dhe një grup të dhënash. Përndryshe, udhëzuesi i fillimit me SO-100 mbulon montimin, udhëzuesi i regjistrimit mbulon kapjen dhe dokumentet e grupit të të dhënave formatin.
- 1Instaloni lerobot me shtesat e duhura
Regjistrimi kërkon
core_scripts, trajnimitraining, servot Feetechfeetech. 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 - 2Gjeni portën USB të secilit krah
Ekzekutojeni me të dy krahët të kyçur, duke shkëputur njërin kur të kërkohet. Në Linux mund t'ju duhet të hapni lejet e nyjes.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Vendosni ID-të e motorit dhe shpejtësinë e transmetimit
Në SO-100 kjo ndodh para montimit: ndryshe nga SO-101, lidhësit janë të paarritshëm pasi të ndërtohet. Skripti ecën nëpër autobus një motor në të njëjtën kohë nga kapësi, duke shkruar ID-të në EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Kalibroni të dy krahët
Vendosni çdo nyje në mes të diapazonit të saj, shtypni Enter, pastaj kaloni secilën nëpër diapazonin e saj të plotë. Kalibrimi lejon që një politikë e trajnuar në një krah të ekzekutohet në një tjetër. Ripërdorni të njëjtën
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 - 5Teleoperoni një herë me kamerat ndezur
Rregulli i përgjithshëm i lerobot: duhet të jeni në gjendje ta kryeni detyrën duke parë vetëm imazhet e kamerës. Nëse nuk mundeni, as ACT nuk mundet. Kjo kap më shumë grupe të dhënash të këqija sesa debugimi i mëvonshëm.
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 - 6Regjistroni 50 episode
50 është minimumi i AY-Robots dhe ajo që ALOHA përdori për detyrë. lerobot këshillon 10 për vendndodhje objekti, kamera të fiksuara, kapje konsistente.
npërfundon një episod,rri-regjistron,qndalon dhe kodon.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 nuk ka parashikime për t'u mbështetur, kështu që çdo mospërputhje bëhet e përhershme. Tre më të kushtueshmet: një kamerë e lëvizur midis episodit 20 dhe 21, drita që ndryshoi sepse regjistruat gjysmën e grupit në pasdite, një kapje e bërë në dy mënyra. Secila jep një kurbë humbjeje me pamje perfekte dhe një krah që shkon në vendin e gabuar. Shih humbja bie, politika nuk bën asgjë, politika funksionon vetëm në një konfigurim dhe mbledhja e të dhënave trajnuese me cilësi të lartë.
Para trajnimit, riprodhoni të paktën pesë episode. ruan transmetimet e kamerës, gjendjet e nyjeve dhe veprimet për , dhe riprodhimi i shtyn ato veprime përsëri te krahu. Nëse riprodhimi nuk e kryen detyrën, të dhënat nuk e përmbajnë atë dhe trajnimi nuk do ta shpikë atë.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Trajnimi i politikës ACT
Ky është komanda e plotë. Gjithçka specifike për ACT është tashmë një parazgjedhje, prandaj faqja e lerobot ACT thotë të filloni me to.
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 ngarkon ACTConfig, i cili përshtatet me sasinë e motorëve dhe kamerave që ka regjistruar grupi juaj i të dhënave, kështu që nuk deklaroni kurrë formën e vëzhgimit. --wandb.enable=true është opsionale dhe ia vlen: kurba e humbjes është sinjali i vetëm i lirë në një ekzekutim me 100000 hapa. Orari vjen nga konfigurimi i trajnimit i lerobot, jo ACTConfig: 100000 hapa, grup 8, farë 1000, një pikë kontrolli çdo 20000 hapa, regjistrim çdo 200.
Një ekzekutim i plotë lë pesë drejtori pikash kontrolli, 020000 deri në 100000, plus një last symlink. Mbajini të gjitha: politika më e mirë shpesh nuk është e fundit.
| Cilësimi | lerobot default | AY-Robots ACT form | Komenti |
|---|---|---|---|
| Madhësia e grupit | 8 | 8 | Uleni fillimisht nëse arrini kufijtë e VRAM-it. |
| Shkalla e të mësuarit | 1e-5 | 1e-5 | Njësoj si në punimin ALOHA. |
| Hapat maksimalë | 100000 | 100000 | Përafërsisht aty ku një grup prej 50 episodesh ndalon së përmirësuari. |
| Akumulimi i gradientit | 1 | 1, nuk zbatohet | Ndryshoni madhësinë e grupit në vend të kësaj. |
| fara | 1000 | e ekspozuar | Pika hyrëse tyro e GR00T nuk ka farë; ekzekutimet e ACT janë ato të riprodhueshme. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, e modifikueshme | Horizonti i parashikimit dhe ekzekutimit. Uleni të dytin, jo të parin. |
| Frekuenca e pikave të kontrollit | 20000 | jo e ekspozuar | saveSteps është një rregullator i GR00T këtu. |
ACT me madhësi grupi 8 dhe dy kamera 640x480 përshtatet komodisht në 24 GB. Nuk përshtatet më kur njerëzit rrisin madhësinë e grupit për shpejtësi, ose i japin kornizat 1920x1080 që tregon një shembull regjistrimi i lerobot. Dy shtylla kurrizore ResNet-18 në 1080p kanë një profil memorieje shumë të ndryshëm. Uleni --batch_size në 4 para se të merrni me qira një kartë më të madhe. Shih mungesë memorieje gjatë trajnimit.
Kohëzgjatja: rreth 5 orë në një RTX 2080 Ti me 11 GB në punim, disa orë për 100k hapa sipas faqes ACT të lerobot, 2 deri në 5 orë në nivelin 24 GB të AY-Robots. Mos e shkurtoni. README i depozitës referencë thotë se një politikë e ndërprerë ose me pauza zakonisht ka nevojë vetëm për më shumë trajnim, sepse suksesi dhe butësia vazhdojnë të përmirësohen pasi humbja stabilizohet: për të dhëna të botës reale kërkon të paktën 5000 epoka, ose 3 deri në 4 herë gjatësinë përsëri pas stabilizimit.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueEkzekutimi i politikës së trajnuar në krah
Vendosja përdor lerobot-rollout. Çelësat e kamerës duhet të përputhen me ato të regjistruara: një politikë e trajnuar në front dhe wrist nuk do të pranojë cam0 dhe cam1, dhe rename_map nuk ndihmon, pasi ka nevojë për një pikë kontrolli të paratrajnuar. Vargu i detyrës mund të hiqet; shembulli i vetë lerobot e shënon atë si të anashkalueshëm për 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=60Vlerësimi më parë kryhej me lerobot-record --policy.path=.... Në 0.6.x është lerobot-rollout me një përzgjedhës --strategy.type: base, sentry (regjistrim me ngarkim automatik), highlight (buffer unazor i ruajtur me shtypje tasti), dagger (njeri në qark) dhe episodic. Që nga 23 gushti 2026, faqja e dokumentacionit të ACT ende thotë "duke përdorur komandën lerobot-record" direkt mbi një bllok që ekzekuton lerobot-rollout. Ndiqni komandën, jo fjalinë.
Për të fiksuar një pikë kontrolli në vend të modelit përfundimtar, shtoni --policy.pretrained_revision. Kjo kërkon që ekzekutimi të ketë filluar me --save_checkpoint_to_hub=true, i çaktivizuar si parazgjedhje: pa të lerobot ngarkon modelin përfundimtar dhe asgjë tjetër. Me të, çdo pikë kontrolli etiketohet me hapin e saj të mbushur me zero, kështu që --policy.pretrained_revision=060000 rikuperon atë të hapit 60000. Krahasimi i tij me 100000 në krahun real është eksperimenti më i lirë i disponueshëm.
Dy rrugë drejt të njëjtës pikë kontrolli
Gjithçka më lart është rruga manuale dhe funksionon. Rruga e platformës shkëmben kontrollin me mos posedimin e një GPU ose një ambienti Python.
- Instaloni lerobot 0.6.x me
core_scripts,training,feetech, ffmpeg. - Gjeni portat, vendosni ID-të e motorëve, kalibroni të dy krahët, regjistroni 50 episode.
- Riluani disa episode për të konfirmuar që të dhënat përmbajnë detyrën.
- Merrni me qira ose zotëroni një GPU 24 GB, përputhni CUDA dhe PyTorch, ekzekutoni
lerobot-train --policy.type=act. - Prisni disa orë, pastaj ekzekutoni
lerobot-rolloutnë makinën pranë krahut.
# 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=cudaKontroll total: modifikoni configuration_act.py, shtoni një kamerë, forkoni trajnerin. Për kërkime, më tepër sesa për dërgimin e një detyre, një platformë është një shpërqendrim.
- Regjistroni me klientin e desktopit, ose sillni një ID repo të Hugging Face ose një dataset lokal.
- Hapni udhëzuesin ACT në SO-100 dhe zgjidhni modelin dhe datasetin. Parazgjedhjet janë ato të lerobot; chunkSize, nActionSteps, seed dhe logFreq janë të modifikueshme.
- Backend-i merr me qira një GPU të madhësisë sipas VRAM-it dhe shkruan pikat e kontrollit në ruajtjen e objekteve.
/api/inference/podmë pas i shërben politikën klientit lokal të robotit. Një watchdog i papunë shkatërron pod-in, kështu që asgjë nuk faturohet në heshtje.- Të njëjtat operacione ekzistojnë në CLI, serverin MCP dhe dokumentet e trajnimit.
Nuk i rregullon të dhënat tuaja: një dataset me një kamerë të lëvizur trajnohet po aq keq këtu, dhe formulari nuk mund ta zbulojë atë. As nuk e heq problemin e vonesës. Cikli i kontrollit është 20 deri në 485 ms për hap veprimi, me udhëtime vajtje-ardhje në internet publik sipër, dhe ACT dëmtohet më shumë sepse hapi i tij është më i shkurtër: 60 ms është një ngadalësim prej 12 për qind në 485 ms të Pi0.5, por katër herë hapi në 20 ms të ACT. Inferenca në distancë i përshtatet marrjes dhe vendosjes së ngadaltë, jo lëvizjes së shpejtë reaktive.

Çfarë shkon vërtet keq
Pothuajse asnjë nga vështirësitë nuk është te komanda e trajnimit. Ato janë te gjërat përreth saj, të renditura sipas shpeshtësisë me të cilën shfaqen për herë të parë.
| Simptoma | Shkaku i zakonshëm | Faqja |
|---|---|---|
| lerobot-find-port nuk shfaq asgjë | Lejet e drajverit, kabllit ose nyjes | krahu nuk u detektua |
| Kamera mungon në kohën e regjistrimit | Indeksi ndryshoi pas rindezjes, ose dy kamera në një kontrollues USB | kamera nuk u detektua |
| Trajnimi refuzon grupin e të dhënave | ACT kërkon v3.0, GR00T ka nevojë për v2.1 | grupi i të dhënave u refuzua si v3 |
| CUDA pa memorie | Madhësia e grupit u rrit, ose korniza 1080p në vend të 480p | pa memorie gjatë trajnimit |
| Humbja duket mirë, krahu nuk bën asgjë | Të dhënat nuk kanë detyrën, ose një kamera u zhvendos | humbja bie, politika nuk bën asgjë |
| Lëvizje e çrregullt ose një pauzë në mes të episodit | I patrajnuar, një bllokim në kufirin e bllokut, ose një thirrje inferencë me kohë të skaduar | politika ngrin në mes të lëvizjes |
Dy rreshta meritojnë theksim. ACT trajnohet në LeRobot v3.0 ndërsa ngarkuesi i GR00T-it bllokohet në të dhe ka nevojë për v2.1, kështu që një grup të dhënash që trajnon ACT mund të dështojë një ekzekutim të GR00T. Dhe rreshti i fundit ka dy zgjidhje: autorët e ACT-së i përgjigjen lëvizjes së çrregullt me më shumë trajnim, ndërsa me n_action_steps në 100 një bllokim i vërtetë ndodh në kufirin e bllokut, një pauzë e dukshme çdo 3.3 sekonda në 30 fps. Dy të tjera për të ditur: një nyje e vetme e vdekur është zakonisht një ID servo që nuk u shkrua kurrë, dhe një kapëse që afrohet por nuk mbyllet kurrë do të thotë shumë pak diapazon kapëseje në demonstrime. Indeksi i plotë: faqet e mënyrave të dështimit.
Çfarë kushton një ekzekutim
| Niveli | Modelet | Kohëzgjatja e ekzekutimit | Çmimi për orë | Kostoja për ekzekutim |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
Ky është argumenti për të filluar me ACT edhe nëse dëshironi një VLA më vonë. Një ekzekutim i dështuar i ACT kushton sa çmimi i një kafeje dhe ju tregon brenda orësh nëse grupi juaj i të dhënave përmban detyrën. Një ekzekutim i dështuar i GR00T kushton katër herë më shumë për të njëjtin mësim. Kalimi në GR00T N1.7 ose SmolVLA më pas është një ndryshim forme, jo një rindërtim. Sfondi: modele vizion-gjuhë-veprim, udhëzuesi i plotë i SO-100, trajnoni politikën tuaj të parë dhe mësimi imitues. Nuk keni krah robotik? Faqja live transmeton një SO-100 real për ta drejtuar pa u regjistruar.
Trajnoni ACT në SO-100 tuaj
Udhëzuesi për këtë kombinim të saktë: parazgjedhjet, niveli i GPU-së dhe kostoja e një ekzekutimi. Zgjidhni grupin e të dhënave, backend-i merr me qira kartën dhe shkruan pikat e kontrollit.
Hapni udhëzuesin e trajnimitA ka një model ACT të paratrajnuar që mund ta rregulloj në vend të kësaj?▾
Jo. ACT nuk ka model bazë; ai ekziston vetëm pasi ta keni trajnuar. Ky nuk është një boshllëk në mjete, është ajo çfarë është ACT: dokumenti trajnon një politikë nga e para për çdo detyrë. Për një pikë kontrolli të shitësit, përdorni GR00T N1.7 ose Pi0.5.
Sa episode më duhen vërtet?▾
50: ajo që ALOHA regjistroi për detyrë (100 për Thread Velcro, më e vështira e saj) dhe minimumi i AY-Robots. lerobot këshillon rreth 10 për vendndodhje objekti, kamera të fiksuara, kapje konsistente. Pesëdhjetë episode të pastra janë më të mira se njëqind ku kamera lëvizi.
A duhet të ndryshoj chunk_size nga 100?▾
Zakonisht jo. Ablacioni ngjitet nga 1 përqind në k = 1 në 44 përqind në k = 100 dhe zvogëlohet më pas, kështu që 100 qëndron afër majës. Nëse krahu angazhohet shumë gjatë, ulni n_action_steps në vend të kësaj: në 30 fps, 25 ri-kërkesa çdo 0.8 sekonda.
Sa kohë zgjat një ekzekutim trajnimi, dhe a mund ta ndaloj herët?▾
Dy deri në pesë orë në një kartë 24 GB për 100000 hapa. Pikat e kontrollit vendosen çdo 20000 hapa dhe --resume=true rifillon një ekzekutim, kështu që ndalimi i hershëm është i sigurt. Vetëm jo në shtrirjen e parë të sheshtë: butësia përmirësohet pasi humbja stabilizohet.
Humbja ra dhe krahu ende dështon. Çfarë tani?▾
Pothuajse gjithmonë grupi i të dhënave. Riktheni episodet e regjistruara në krah: nëse riprodhimi nuk e kryen detyrën, të dhënat nuk e përmbajnë atë. Më pas kontrolloni nëse diçka lëvizi, veçanërisht një kamera. ACT nuk ka paraprakësi, kështu që një shtytje në episodin 21 është e përhershme.
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