Matrica e trajnimit AY-Robots me pesë rreshta politikash dhe katër kolona krahësh robotikë, çdo qelizë lidhet me një model specifik dhe udhëzues trajnimi krahu
ACTSO-100lerobotmësimi imituestrajnimi i politikës

Si të Trajnosh ACT në SO-100 nga Zero

AY-Robots ResearchAugust 23, 202616 min lexuar

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.
Cilat versione përshkruan kjo

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.

HiperparametriPunimi ALOHA, Tabela IIIlerobot në main
shkalla e të mësuarit1e-5optimizer_lr = 1e-5
madhësia e grupit8batch_size = 8, in TrainPipelineConfig not ACTConfig
shtresat e enkoderit / dekoderit4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
madhësia e copës k100chunk_size = 100
dimensioni latent i zmungon; Fig. 11 tregon një projeksion 32 në 512latent_dim = 32
ansambli kohormungon; --temporal_agg në kodin referencëtemporal_ensemble_coeff = None
Rreshti i shtresës së dekoderit nuk është një gabim shtypi

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_size dhe ngre një ValueError në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.

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
Shkurtimi i pjesës së ekzekutuar të bllokut pa shkurtuar parashikimin.
Kurthi i ansamblimit kohor

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

PolitikaFamiljaParametratPër hapNiveli i GPU-sëEpizodat min.Seti i të dhënave
ACTTransformator me ndarje, nga e para~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA kompakt~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Themel VLA, kokë difuzioni~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Themel VLA, paraardhës~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA me përputhje fluksi, shih përputhjen e fluksit~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
Faqja e politikave të AY-Robots që tregon një tabelë krahasimi të ACT, SmolVLA, GR00T N1.5, GR00T N1.7 dhe Pi0.5 me numrat e parametrave, kërkesat e GPU-së, vonesën e inferencës dhe numrin minimal të episodeve
Tabela /policies: ACT ka numrin më të vogël të parametrave dhe kohën më të shkurtër të hapit.
Trajnimi i ACT nga e para
Avantazhe
  • 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ë.
Kompromise
  • 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.

KrahuServoTensioniKostoja e pjesëveStatusi
SO-100Feetech STS32157.4 V~110 to 150 EURMbështetje e plotë, krah referencë
SO-101Feetech STS32157.4 V~130 to 170 EURMbështetje e plotë
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURI pajtueshëm
LeKiwiFeetech STS3215 (arm)Krah 7.4 V, bazë 12 V~400 to 500 EURI pajtueshëm
7.4 V, jo 12 V

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.

  1. 1
    Instaloni lerobot me shtesat e duhura

    Regjistrimi kërkon core_scripts, trajnimi training, servot 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
    Gjeni 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.

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

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

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

    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
    Regjistroni 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. n përfundon një episod, r ri-regjistron, q ndalon dhe kodon.

    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
Faqja e tutorialit të regjistrimit të AY-Robots që shpjegon se si të kapni një grup të dhënash në formatin LeRobot nga një sesion teleoperimi
Tutoriali i regjistrimit. Klienti i desktopit shkruan të njëjtin format si lerobot-record.
Kurthi që ha një ditë: një grup të dhënash jokonsistent

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

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
Riluajmë episodin 0. Nëse kjo dështon, ndaloni dhe regjistroni përsëri.

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

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
Komanda e trajnimit nga dokumentacioni i lerobot 0.6.x, në një grup të dhënash SO-100.

--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ësimilerobot defaultAY-Robots ACT formKomenti
Madhësia e grupit88Uleni fillimisht nëse arrini kufijtë e VRAM-it.
Shkalla e të mësuarit1e-51e-5Njësoj si në punimin ALOHA.
Hapat maksimalë100000100000Përafërsisht aty ku një grup prej 50 episodesh ndalon së përmirësuari.
Akumulimi i gradientit11, nuk zbatohetNdryshoni madhësinë e grupit në vend të kësaj.
fara1000e ekspozuarPika hyrëse tyro e GR00T nuk ka farë; ekzekutimet e ACT janë ato të riprodhueshme.
chunk_size / n_action_steps100 / 100100 / 100, e modifikueshmeHorizonti i parashikimit dhe ekzekutimit. Uleni të dytin, jo të parin.
Frekuenca e pikave të kontrollit20000jo e ekspozuarsaveSteps është një rregullator i GR00T këtu.
Mungesa e memories është problem i madhësisë së grupit, jo i kartës

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.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Rifillimi i një ekzekutimi të ndërprerë nga pika e tij e fundit e kontrollit.

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

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
Ekzekutim autonom pa regjistrim. Përdorni --strategy.type=sentry për të regjistruar episodet e vlerësimit.
Kjo komandë u riemërua së fundmi, prandaj tutorialet e vjetra nuk përputhen

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

  1. Instaloni lerobot 0.6.x me core_scripts, training, feetech, ffmpeg.
  2. Gjeni portat, vendosni ID-të e motorëve, kalibroni të dy krahët, regjistroni 50 episode.
  3. Riluani disa episode për të konfirmuar që të dhënat përmbajnë detyrën.
  4. Merrni me qira ose zotëroni një GPU 24 GB, përputhni CUDA dhe PyTorch, ekzekutoni lerobot-train --policy.type=act.
  5. Prisni disa orë, pastaj ekzekutoni lerobot-rollout në makinën pranë krahut.
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
Çfarë ju ofron kjo rrugë

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

Matrica e trajnimit AY-Robots me pesë rreshta politikash dhe katër kolona krahësh robotikë, ku çdo qelizë lidhet me udhëzuesin specifik të trajnimit për atë kombinim modeli dhe krahu
Matrica në /train. Rreshti ACT kundrejt kolonës SO-100 është udhëzuesi i këtij artikulli.

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

SimptomaShkaku i zakonshëmFaqja
lerobot-find-port nuk shfaq asgjëLejet e drajverit, kabllit ose nyjeskrahu nuk u detektua
Kamera mungon në kohën e regjistrimitIndeksi ndryshoi pas rindezjes, ose dy kamera në një kontrollues USBkamera nuk u detektua
Trajnimi refuzon grupin e të dhënaveACT kërkon v3.0, GR00T ka nevojë për v2.1grupi i të dhënave u refuzua si v3
CUDA pa memorieMadhësia e grupit u rrit, ose korniza 1080p në vend të 480ppa memorie gjatë trajnimit
Humbja duket mirë, krahu nuk bën asgjëTë dhënat nuk kanë detyrën, ose një kamera u zhvendoshumbja bie, politika nuk bën asgjë
Lëvizje e çrregullt ose një pauzë në mes të episoditI patrajnuar, një bllokim në kufirin e bllokut, ose një thirrje inferencë me kohë të skaduarpolitika 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

NiveliModeletKohëzgjatja e ekzekutimitÇmimi për orëKostoja për ekzekutim
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

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

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started