Matricea de antrenament AY-Robots cu cinci rânduri de politici și patru coloane de brațe robotice, fiecare celulă legând la un ghid specific de antrenament pentru model și braț.
ACTSO-100lerobotînvățare prin imitațieantrenament de politici

Cum să antrenezi ACT pe SO-100 de la zero

AY-Robots ResearchAugust 23, 202616 min citire

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ă.
Ce versiuni descrie acest ghid

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.

HiperparametruLucrarea ALOHA, Tabelul IIIlerobot pe main
rată de învățare1e-5optimizer_lr = 1e-5
dimensiune batch8batch_size = 8, in TrainPipelineConfig not ACTConfig
straturi encoder / decoder4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
dimensiune chunk k100chunk_size = 100
dimensiune latentă a lui zabsent; Fig. 11 arată o proiecție de la 32 la 512latent_dim = 32
ansamblare temporalăabsent; --temporal_agg în codul de referințătemporal_ensemble_coeff = None
Rândul stratului decodor nu este o greșeală de tipar

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 eroare ValueError dacă 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.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Scurtarea părții executate a blocului fără a scurta predicția.
Capcana agregării temporale

Setaț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ăFamilieParametriPer pasNivel GPUEpisoade min.Set de date
ACTTransformer cu fragmentare, de la zero~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA compact~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Fundație VLA, cap de difuzie~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Fundație VLA, predecesor~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA cu potrivire de flux, vezi potrivire de flux~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
Pagina de politici AY-Robots care prezintă un tabel comparativ al ACT, SmolVLA, GR00T N1.5, GR00T N1.7 și Pi0.5 cu numărul de parametri, cerințele GPU, latența de inferență și numărul minim de episoade
Tabelul /policies: ACT are cel mai mic număr de parametri și cel mai scurt timp per pas.
Antrenarea ACT de la zero
Avantaje
  • 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ă.
Compromisuri
  • 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țServomotoareTensiuneCost pieseStare
SO-100Feetech STS32157.4 V~110 to 150 EURSuport complet, braț de referință
SO-101Feetech STS32157.4 V~130 to 170 EURSuport complet
Koch v1.1Dynamixel XL330 / XL430Șine de 5 V și 12 V~250 to 350 EURCompatibil
LeKiwiFeetech STS3215 (arm)Braț de 7.4 V, bază de 12 V~400 to 500 EURCompatibil
7.4 V, nu 12 V

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.

  1. 1
    Instalați lerobot cu extensiile potrivite

    Înregistrarea necesită core_scripts, antrenamentul training, servomotoarele Feetech feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Gă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.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Setaț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.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Calibraț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.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Teleoperaț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ă.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Î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, r reînregistrează, q oprește și codifică.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
The AY-Robots recording tutorial page explaining how to capture a LeRobot-format dataset from a teleoperation session
Tutorialul de înregistrare. Clientul desktop scrie același format ca lerobot-record.
Capcana care îți mănâncă o zi: un set de date inconsistent

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.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Redarea episodului 0. Dacă eșuează, opriți și reînregistrați.

Antrenarea 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.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
Comanda de antrenare din documentația lerobot 0.6.x, pe un set de date SO-100.

--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.

SetareValoare implicită lerobotFormular ACT AY-RobotsComentariu
dimensiune lot88Reduceți-o mai întâi dacă atingeți limitele VRAM.
rată de învățare1e-51e-5La fel ca în lucrarea ALOHA.
pași maximi100000100000Aproximativ punctul în care un set de 50 de episoade nu mai înregistrează îmbunătățiri.
acumulare de gradient11, nu se aplicăModificați dimensiunea lotului în schimb.
seed1000expusPunctul de intrare tyro al GR00T nu are seed; rulările ACT sunt cele reproductibile.
dimensiune_bloc / n_pași_acțiune100 / 100100 / 100, editabilOrizont de predicție și execuție. Reduceți-l pe al doilea, nu pe primul.
frecvență puncte de control20000nu este expussaveSteps este un parametru GR00T aici.
Memoria insuficientă este o problemă de dimensiune a lotului, nu o problemă de placă

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.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Reluarea unei execuții întrerupte de la ultimul său punct de salvare.

Rularea 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.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Rulare autonomă fără înregistrare. Utilizați --strategy.type=sentry pentru a înregistra episoadele de evaluare.
Această comandă a fost redenumită recent, așa că tutorialele vechi nu sunt de acord

Evaluarea 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.

  1. Instalează lerobot 0.6.x cu core_scripts, training, feetech, ffmpeg.
  2. Găsește porturile, setează ID-urile motoarelor, calibrează ambele brațe, înregistrează 50 de episoade.
  3. Redă câteva episoade pentru a confirma că datele conțin sarcina.
  4. Închiriază sau deține un GPU de 24 GB, potrivește CUDA și PyTorch, rulează lerobot-train --policy.type=act.
  5. Așteaptă câteva ore, apoi rulează lerobot-rollout pe mașina de la braț.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Ce îți oferă această rută

Control 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.

Matricea de antrenament AY-Robots cu cinci rânduri de politici și patru coloane de brațe robotice, unde fiecare celulă face legătura către ghidul de antrenament specific pentru acea combinație de model și braț.
Matricea de pe /train. Rândul ACT față de coloana SO-100 este ghidul acestui articol.

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.

SimptomCauză obișnuităPagină
lerobot-find-port nu afișează nimicPermisiuni driver, cablu sau nod
Cameră lipsă la momentul înregistrăriiIndex modificat la repornire, sau două camere pe un singur controler USB
Antrenamentul respinge setul de dateACT necesită v3.0, GR00T necesită v2.1
CUDA fără memorieDimensiunea lotului mărită, sau cadre 1080p în loc de 480p
Pierderea arată bine, brațul nu face nimicDatele nu conțin sarcina, sau o cameră s-a mișcat
Mișcare sacadată sau o pauză la mijlocul episoduluiAntrenat 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

NivelModeleDurată rularePreț pe orăCost pe rulare
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

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 antrenament
Există 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ă.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started