
Antrenează un Action Chunking Transformer de la zero pe un SO-100 cu lerobot: configurația act, chunk_size și n_action_steps, programul de 100000 de pași, inferență de 20 ms.
ACT este excepția printre politicile SO-100. GR00T N1.7 și N1.5 pornesc de la nvidia/GR00T-N1.7-3B și nvidia/GR00T-N1.5-3B, Pi0.5 de la lerobot/pi05_base. ACT pornește de la zero: nu există un punct de control de bază, deoarece nu este un model fundamental. Este un transformator cu aproximativ 80 de milioane de parametri pe care îl antrenezi de la zero pentru o singură sarcină, pe brațul tău, în condițiile tale de iluminare.
Acesta este și motivul pentru care execută un pas de control în 20 ms, în timp ce un VLA cu 3 miliarde de parametri necesită 152 până la 485 ms și costă 1 până la 3 USD per rulare în loc de 4 până la 12. Acest ghid prezintă ruta manuală cu lerobot pe un SO-100: înregistrarea, configurația act, ce controlează chunk_size și n_action_steps, programul de 100000 de pași, rularea. Apoi aceeași sarcină pe AY-Robots, inclusiv unde platforma nu ajută.
Ce trebuie să știi
- •ACT se antrenează de la zero: fără model de bază, fără pre-antrenare, fără intrare lingvistică. Un singur punct de control, o singură sarcină.
- •Lucrarea: aproximativ 80 M parametri, în jur de 5 ore pe un RTX 2080 Ti de 11 GB, 0.01 s inferență.
- •Setări implicite lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 pași, seed 1000.
- •Pe AY-Robots: 20 ms per pas, cel mai rapid dintre cele cinci. Minimum 50 de episoade, LeRobot v3.0, o placă de 24 GB, 1 până la 3 USD per rulare.
- •Câștigă la o sarcină pe care a mai văzut-o și pierde în momentul în care dorești condiționare lingvistică.
Verificat la 23 august 2026 față de lerobot 0.6.x: pyproject.toml pe main indică version = "0.6.2", cea mai nouă etichetă v0.6.1, 3 august 2026. Un tutorial care începe cu python lerobot/scripts/train.py precede punctele de intrare în consolă lerobot-train, lerobot-record și lerobot-rollout.
Ce este de fapt ACT
Action Chunking with Transformers provine din lucrarea ALOHA, Învățarea Manipulării Bimanuale Detaliate cu Hardware cu Cost Redus, de Zhao, Kumar, Levine și Finn, arXiv, 23 aprilie 2023. Instalația înregistrează la 50 Hz cu patru camere web care transmit 480x640 la 30 fps: două pe grippere, una de sus, una din față. Rezumatul susține șase abilități cu o rată de succes de 80 până la 90 la sută, printre care deschiderea unei cupe translucide pentru condimente și introducerea unei baterii, din 10 minute de demonstrații.
Corpul este mai util la planificarea unei sesiuni de înregistrare: 50 de demonstrații per sarcină, cu excepția Thread Velcro la 100, ceea ce înseamnă 10 până la 20 de minute de date și 30 până la 60 de minute de timp real odată ce resetările sunt numărate. Succesul nu este uniform: Thread Velcro se încheie la 20 la sută, Put On Shoe la 92, Cup Open 84, Prep Tape 64.
| Hiperparametru | Lucrarea ALOHA, Tabelul III | lerobot pe main |
|---|---|---|
| rată de învățare | 1e-5 | optimizer_lr = 1e-5 |
| dimensiune batch | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| straturi encoder / decoder | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| dimensiune chunk k | 100 | chunk_size = 100 |
| dimensiune latentă a lui z | absent; Fig. 11 arată o proiecție de la 32 la 512 | latent_dim = 32 |
| ansamblare temporală | absent; --temporal_agg în codul de referință | temporal_ensemble_coeff = None |
Lucrarea listează 7 straturi decodor, lerobot livrează 1, în mod deliberat. Comentariul din `configuration_act.py` afirmă că implementarea originală are un bug, ceea ce înseamnă că este utilizat doar primul strat, citând problema 25 din tonyzhaozh/act: capul de acțiune citește `hs[0]`, astfel încât toate cele șapte straturi rulează, dar doar prima ieșire ajunge la predicție. Această problemă este deschisă și fără răspuns din 23 aprilie 2024. lerobot se potrivește cu comportamentul care a produs rezultatele publicate, nu cu numărul tipărit. Măriți `--policy.n_decoder_layers` și veți antrena un model pe care lucrarea nu l-a evaluat niciodată.
Fragmentarea acțiunilor este întreaga idee
Clonarea comportamentală obișnuită mapează o observație la o acțiune, iar erorile se acumulează: o deviație scoate brațul din distribuție, producând o acțiune mai proastă, iar treizeci de pași mai târziu, cleștele nu este nicăieri lângă obiect. Fragmentarea acțiunilor prezice k acțiuni simultan și le execută, reducând orizontul efectiv cu un factor de k. De asemenea, gestionează o problemă specifică datelor umane: teleoperatorii fac pauze, iar o politică Markoviană într-un singur pas nu poate modela o pauză care depinde de ceea ce a precedat.
Lucrarea ablatează k, mai degrabă decât să-l afirme. Cu ansamblarea temporală dezactivată, în medie pe patru setări, succesul crește de la 1 la sută la k = 1 la 44 la sută la k = 100, apoi se stabilizează la 200 și 400 pe măsură ce politica se apropie de controlul în buclă deschisă. Această curbă este motivul pentru care valoarea implicită este 100.
- chunk_size: câte acțiuni viitoare prezice decodorul per trecere înainte. Implicit 100.
- n_action_steps: câte dintre ele executați înainte de a interoga din nou. Implicit 100, deci lerobot rulează întregul bloc în buclă deschisă.
- lerobot validează
n_action_steps <= chunk_sizeși generează o eroareValueErrordacă le introduceți invers.
Ceea ce contează operațional este chunk_size împărțit la rata de cadre. La 30 fps, utilizate de exemplele SO-100 ale lerobot, un bloc de 100 de acțiuni angajează aproximativ 3.3 secunde dintr-o singură observație. Dacă sarcina necesită o corecție în interiorul acelei ferestre, reduceți n_action_steps, nu chunk_size: păstrați predicția lungă și re-observați mai des.
# 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=cudaSetați --policy.temporal_ensemble_coeff și lerobot necesită n_action_steps = 1, generând o eroare NotImplementedError în caz contrar. Agregarea interoghează politica la fiecare pas de timp și combină predicțiile suprapuse pentru acel pas de timp cu ponderi w_i = exp(-m * i), cea mai veche primind w_0. Lucrarea o estimează la 3.3 procente pentru ACT: reală, dar modestă, și multiplică numărul de inferențe cu lungimea blocului. Accesibilă la 20 ms per pas, nu la 485 ms. Vezi latența inferenței.
Când ACT depășește un model fundamental
Cele cinci politici antrenabile, una lângă alta, cu numerele pe care AY-Robots le măsoară și le folosește pentru a dimensiona GPU-ul pe care îl închiriază.
| Politică | Familie | Parametri | Per pas | Nivel GPU | Episoade min. | Set de date |
|---|---|---|---|---|---|---|
| ACT | Transformer cu fragmentare, de la zero | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | VLA compact | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | Fundație VLA, cap de difuzie | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | Fundație VLA, predecesor | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA cu potrivire de flux, vezi potrivire de flux | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms per pas de acțiune, cel mai rapid dintre cele cinci, pe o placă de 24 GB, nu un A100.
- 1 până la 3 USD per rulare față de 4 până la 12 pentru clasa 3 B.
- Precis în lucrările cu contact intens pe care le-a văzut: 88 și 96 la sută pe Slide Ziploc și Slot Battery, unde metodele anterioare nu au trecut niciodată de prima etapă.
- Fără condiționare lingvistică: șirul sarcinii este ignorat, deci un punct de control este o singură sarcină.
- Fără cunoștințe semantice anterioare: tot ce știe provine din cele 50 de episoade ale tale.
- Generalizare restrânsă: mută o cameră și trebuie să reantrenezi.
- Eșuează silențios: pierderea scade, brațul nu face nimic, jurnalele nu spun nimic.
- Avantajul de viteză ajută doar dacă inferența se află lângă servomotoare.
Alege ACT când sarcina și scena sunt fixe, iar mișcarea trebuie să fie rapidă și precisă. Alege un când un singur punct de control trebuie să acopere mai multe instrucțiuni. Două pagini abordează decizia direct: și . Pentru benchmark-uri publicate, leagă fiecare număr de sursa sa.
Ce ai nevoie înainte de a începe
Un braț urmăritor, un braț conducător pentru , cel puțin o cameră, un GPU de 24 GB. ACT citește doar imagini și poziții ale articulațiilor. Două camere reprezintă soluția optimă: o vedere frontală fixă pentru unde se află lucrurile, o cameră de încheietură pentru ceea ce este pe cale să atingă, ca pe ALOHA.
| Braț | Servomotoare | Tensiune | Cost piese | Stare |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Suport complet, braț de referință |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Suport complet |
| Koch v1.1 | Dynamixel XL330 / XL430 | Șine de 5 V și 12 V | ~250 to 350 EUR | Compatibil |
| LeKiwi | Feetech STS3215 (arm) | Braț de 7.4 V, bază de 12 V | ~400 to 500 EUR | Compatibil |
SO-100 și SO-101 utilizează servomotoare Feetech STS3215 pe o șină de 7.4 V. Alimentarea lor cu 12 V le distruge, suficient de silențios încât oamenii să dea vina mai întâi pe software, iar o sursă Koch de 12 V se potrivește fizic pe o placă SO-100. Verificați eticheta. Simptome: servomotorul nu răspunde, brațul se smucește apoi cedează. De asemenea SO-100 vs SO-101.
De la brațul gol la setul de date înregistrat
Fluxul de mai jos este lerobot 0.6.x. Omiteți-l dacă aveți un braț calibrat și un set de date. În caz contrar, ghidul de inițiere SO-100 acoperă asamblarea, ghidul de înregistrare acoperă capturarea și documentația seturilor de date formatul.
- 1Instalați lerobot cu extensiile potrivite
Înregistrarea necesită
core_scripts, antrenamentultraining, servomotoarele 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 - 2Găsiți portul USB al fiecărui braț
Rulați-l cu ambele brațe conectate, deconectând unul la cerere. Pe Linux, ar putea fi necesar să deschideți permisiunile nodului.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Setați ID-urile motoarelor și rata de transmisie
Pe SO-100, acest lucru se întâmplă înainte de asamblare: spre deosebire de SO-101, conectorii sunt inaccesibili odată construit. Scriptul parcurge magistrala câte un motor pe rând, începând de la gripper, scriind ID-urile în EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Calibrați ambele brațe
Setați fiecare articulație la mijlocul intervalului său, apăsați Enter, apoi parcurgeți fiecare articulație pe întregul său interval. Calibrarea permite unei politici antrenate pe un braț să ruleze pe altul. Reutilizați același
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 - 5Teleoperați o dată cu camerele pornite
Regula de bază lerobot: ar trebui să puteți îndeplini sarcina privind doar imaginile camerei. Dacă nu puteți, nici ACT nu poate. Acest lucru detectează mai multe seturi de date proaste decât depanarea ulterioară.
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 - 6Înregistrați 50 de episoade
50 este minimul AY-Robots și ceea ce ALOHA a folosit per sarcină. lerobot recomandă 10 per locație de obiect, camere fixe, prindere consistentă.
nîncheie un episod,rreînregistrează,qoprește și codifică.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 nu are cunoștințe anterioare la care să se bazeze, așa că fiecare inconsecvență devine permanentă. Cele trei cele mai costisitoare: o cameră mișcată între episodul 20 și 21, lumina care s-a schimbat pentru că ați înregistrat jumătate din set după-amiaza, o prindere realizată în două moduri. Fiecare produce o curbă de pierdere perfectă și un braț care merge în locul greșit. Vezi pierderea scade, politica nu face nimic, politica funcționează doar într-o singură configurație și colectarea datelor de antrenament de înaltă calitate.
Înainte de antrenament, redați cel puțin cinci episoade. stochează fluxuri video, stări ale articulațiilor și acțiuni per , iar redarea împinge acele acțiuni înapoi către braț. Dacă redarea nu îndeplinește sarcina, datele nu o conțin și antrenamentul nu o va inventa.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Antrenarea politicii ACT
Aceasta este întreaga comandă. Tot ce este specific ACT este deja o valoare implicită, motiv pentru care pagina ACT lerobot recomandă să începeți cu ele.
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 încarcă ACTConfig, care se adaptează la numărul de motoare și camere înregistrate de setul dvs. de date, astfel încât nu declarați niciodată forma observației. --wandb.enable=true este opțional și merită: curba de pierdere este singurul semnal ieftin într-o rulare de 100000 de pași. Programul provine din configurația de antrenament a lerobot, nu din ACTConfig: 100000 de pași, lot 8, seed 1000, un punct de control la fiecare 20000 de pași, înregistrare la fiecare 200.
O rulare completă lasă cinci directoare de puncte de control, de la 020000 la 100000, plus un ultimul symlink. Păstrați-le pe toate: cea mai bună politică nu este adesea ultima.
| Setare | Valoare implicită lerobot | Formular ACT AY-Robots | Comentariu |
|---|---|---|---|
| dimensiune lot | 8 | 8 | Reduceți-o mai întâi dacă atingeți limitele VRAM. |
| rată de învățare | 1e-5 | 1e-5 | La fel ca în lucrarea ALOHA. |
| pași maximi | 100000 | 100000 | Aproximativ punctul în care un set de 50 de episoade nu mai înregistrează îmbunătățiri. |
| acumulare de gradient | 1 | 1, nu se aplică | Modificați dimensiunea lotului în schimb. |
| seed | 1000 | expus | Punctul de intrare tyro al GR00T nu are seed; rulările ACT sunt cele reproductibile. |
| dimensiune_bloc / n_pași_acțiune | 100 / 100 | 100 / 100, editabil | Orizont de predicție și execuție. Reduceți-l pe al doilea, nu pe primul. |
| frecvență puncte de control | 20000 | nu este expus | saveSteps este un parametru GR00T aici. |
ACT cu o dimensiune a lotului de 8 și două camere 640x480 se încadrează confortabil pe 24 GB. Nu se mai încadrează atunci când oamenii măresc dimensiunea lotului pentru viteză, sau îi furnizează cadrele 1920x1080 pe care le arată un exemplu de înregistrare lerobot. Două rețele ResNet-18 la 1080p reprezintă un profil de memorie foarte diferit. Reduceți --batch_size la 4 înainte de a închiria o placă mai mare. Consultați memorie insuficientă în timpul antrenamentului.
Durată: aproximativ 5 ore pe un RTX 2080 Ti de 11 GB în lucrare, câteva ore pentru 100k pași conform paginii ACT a lerobot, 2 până la 5 ore pe nivelul de 24 GB al AY-Robots. Nu o scurtați. Fișierul README al depozitului de referință menționează că o politică sacadată sau care se întrerupe are de obicei nevoie de mai mult antrenament, deoarece succesul și fluiditatea continuă să se îmbunătățească după ce pierderea se stabilizează: pentru date din lumea reală sunt necesare cel puțin 5000 de epoci, sau de 3 până la 4 ori lungimea din nou după platou.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueRularea politicii antrenate pe braț
Implementarea utilizează lerobot-rollout. Cheile camerei trebuie să corespundă celor înregistrate: o politică antrenată pe front și wrist nu va accepta cam0 și cam1, iar rename_map nu ajută, deoarece necesită un punct de salvare pre-antrenat. Șirul de sarcini poate fi omis; propriul exemplu al lerobot îl marchează ca fiind opțional pentru 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=60Evaluarea se realiza prin lerobot-record --policy.path=.... În 0.6.x este lerobot-rollout cu un selector --strategy.type: base, sentry (înregistrare cu încărcare automată), highlight (buffer circular salvat la apăsarea unei taste), dagger (om în buclă) și episodic. Începând cu 23 august 2026, pagina de documentație ACT încă menționează "utilizarea comenzii lerobot-record" direct deasupra unui bloc care rulează lerobot-rollout. Urmați comanda, nu propoziția.
Pentru a fixa un checkpoint în loc de modelul final, adăugați --policy.pretrained_revision. Acest lucru necesită ca rularea să fi început cu --save_checkpoint_to_hub=true, dezactivat implicit: fără el, lerobot încarcă modelul final și nimic altceva. Cu el, fiecare checkpoint este etichetat cu pasul său completat cu zerouri, deci --policy.pretrained_revision=060000 recuperează cel de la pasul 60000. Compararea acestuia cu cel de la pasul 100000 pe brațul real este cel mai ieftin experiment disponibil.
Două rute către același checkpoint
Totul de mai sus este ruta manuală și funcționează. Ruta prin platformă sacrifică controlul pentru a nu deține un GPU sau un mediu Python.
- Instalează lerobot 0.6.x cu
core_scripts,training,feetech, ffmpeg. - Găsește porturile, setează ID-urile motoarelor, calibrează ambele brațe, înregistrează 50 de episoade.
- Redă câteva episoade pentru a confirma că datele conțin sarcina.
- Închiriază sau deține un GPU de 24 GB, potrivește CUDA și PyTorch, rulează
lerobot-train --policy.type=act. - Așteaptă câteva ore, apoi rulează
lerobot-rolloutpe mașina de la braț.
# 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=cudaControl total: editează configuration_act.py, adaugă o cameră, bifurcă antrenorul. Pentru cercetare, mai degrabă decât pentru livrarea unei sarcini, o platformă este o distragere.
- Înregistrează cu clientul desktop, sau adu un ID de repo Hugging Face sau un set de date local.
- Deschide ghidul ACT pe SO-100 și alege modelul și setul de date. Valorile implicite sunt cele de la lerobot; chunkSize, nActionSteps, seed și logFreq sunt editabile.
- Backend-ul închiriază un GPU dimensionat după VRAM și scrie puncte de control în stocarea de obiecte.
/api/inference/podservește apoi politica clientului robot local. Un watchdog inactiv distruge pod-ul, astfel încât nimic nu este facturat în tăcere.- Aceleași operațiuni există în CLI, serverul MCP și documentația de antrenament.
Nu îți repară datele: un set de date cu o cameră mutată se antrenează la fel de prost aici, iar formularul nu poate detecta acest lucru. Nici nu elimină problema latenței. Bucla de control este de 20 până la 485 ms per pas de acțiune, cu călătorii dus-întors prin internet public în plus, iar ACT este cel mai afectat deoarece pasul său este cel mai scurt: 60 ms reprezintă o încetinire de 12 procente la 485 ms ale Pi0.5, dar de patru ori pasul la 20 ms ale ACT. Inferența la distanță se potrivește operațiunilor lente de tip pick and place, nu mișcărilor reactive rapide.

Ce merge de fapt prost
Aproape niciuna dintre dificultăți nu se află în comanda de antrenament. Ele sunt în lucrurile din jurul ei, ordonate după cât de des apar la prima încercare.
| Simptom | Cauză obișnuită | Pagină |
|---|---|---|
| lerobot-find-port nu afișează nimic | Permisiuni driver, cablu sau nod | |
| Cameră lipsă la momentul înregistrării | Index modificat la repornire, sau două camere pe un singur controler USB | |
| Antrenamentul respinge setul de date | ACT necesită v3.0, GR00T necesită v2.1 | |
| CUDA fără memorie | Dimensiunea lotului mărită, sau cadre 1080p în loc de 480p | |
| Pierderea arată bine, brațul nu face nimic | Datele nu conțin sarcina, sau o cameră s-a mișcat | |
| Mișcare sacadată sau o pauză la mijlocul episodului | Antrenat insuficient, o blocare la limita unui bloc, sau un apel de inferență expirat |
Două rânduri merită subliniate. ACT se antrenează pe LeRobot v3.0, în timp ce încărcătorul lui GR00T se blochează pe acesta și necesită v2.1, astfel încât un set de date care antrenează ACT poate eșua o rulare GR00T. Iar ultimul rând are două soluții: autorii ACT răspund mișcării sacadate cu mai mult antrenament, în timp ce cu n_action_steps la 100 o blocare reală apare la limita unui bloc, o pauză vizibilă la fiecare 3.3 secunde la 30 fps. Încă două de știut: o singură articulație moartă este de obicei un , și înseamnă o gamă prea mică a gripper-ului în demonstrații. Index complet: .
Cât costă o rulare
| Nivel | Modele | Durată rulare | Preț pe oră | Cost pe rulare |
|---|---|---|---|---|
| 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 |
Acesta este argumentul pentru a începe cu ACT chiar dacă doriți un VLA mai târziu. O rulare ACT eșuată costă prețul unei cafele și vă spune în câteva ore dacă setul de date conține sarcina. O rulare GR00T eșuată costă de patru ori mai mult pentru aceeași lecție. Trecerea la GR00T N1.7 sau SmolVLA ulterior este o schimbare de formă, nu o reconstrucție. Context: modele de viziune-limbaj-acțiune, ghidul complet SO-100, antrenați-vă prima politică și învățare prin imitație. Nu aveți un braț? pagina live transmite în flux un SO-100 real pe care îl puteți controla fără a vă înregistra.
Antrenați ACT pe SO-100-le dumneavoastră
Ghidul pentru această combinație exactă: setări implicite, nivelul GPU și costul unei rulări. Alegeți setul de date, backend-ul închiriază placa și scrie punctele de control.
Deschideți ghidul de antrenamentExistă un model ACT pre-antrenat pe care îl pot ajusta în schimb?▾
Nu. ACT nu are un model de bază; el există doar după ce îl antrenați. Aceasta nu este o lacună în instrumentar, ci este ceea ce ACT reprezintă: lucrarea antrenează o politică de la zero pentru fiecare sarcină. Pentru un punct de control de la un furnizor, utilizați GR00T N1.7 sau Pi0.5.
De câte episoade am nevoie cu adevărat?▾
50: ceea ce ALOHA a înregistrat per sarcină (100 pentru Thread Velcro, cea mai dificilă) și minimul AY-Robots. lerobot recomandă aproximativ 10 per locație de obiect, camere fixe, prindere consistentă. Cincizeci de episoade curate sunt mai bune decât o sută în care camera s-a mișcat.
Ar trebui să schimb chunk_size de la 100?▾
De obicei, nu. Ablarea crește de la 1 la sută la k = 1 la 44 la sută la k = 100 și se stabilizează ulterior, deci 100 se află aproape de vârf. Dacă brațul se angajează prea mult timp, reduceți n_action_steps în schimb: la 30 fps, 25 de re-interogări la fiecare 0.8 secunde.
Cât durează o rulare de antrenament și o pot opri mai devreme?▾
Două până la cinci ore pe o placă de 24 GB pentru 100000 de pași. Punctele de control sunt salvate la fiecare 20000 de pași, iar --resume=true reia o rulare, deci oprirea timpurie este sigură. Doar nu la prima porțiune plată: fluiditatea se îmbunătățește după ce pierderea se stabilizează.
Pierderea a scăzut și brațul tot eșuează. Ce urmează?▾
Aproape întotdeauna setul de date. Redați episoadele înregistrate la braț: dacă redarea nu îndeplinește sarcina, datele nu o conțin. Apoi verificați dacă s-a mișcat ceva, în special o cameră. ACT nu are cunoștințe anterioare, deci o mică modificare în episodul 21 este 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