Az AY-Robots képzési mátrix öt irányelv sorral és négy robotkar oszloppal, ahol minden cella egy specifikus modellhez és kar képzési útmutatóhoz kapcsolódik
ACTSO-100lerobotutánzásos tanulásirányelv képzés

Hogyan képezzünk ACT-t az SO-100-on a nulláról

AY-Robots ResearchAugust 23, 202616 perc olvasás

Képezzünk egy Action Chunking Transformert a nulláról egy SO-100-on a lerobot segítségével: az act config, chunk_size és n_action_steps, a 100000 lépéses ütemezés, 20 ms-os következtetés.

Az ACT kilóg a sorból az SO-100 irányelvek között. A GR00T N1.7 és N1.5 innen indul: nvidia/GR00T-N1.7-3B és nvidia/GR00T-N1.5-3B, a Pi0.5 pedig innen: lerobot/pi05_base. Az ACT a nulláról indul: nincs alap ellenőrzőpont, mert nem alapmodell. Ez egy nagyjából 80 millió paraméteres transzformátor, amit egyetlen feladatra, a saját karodon, a saját világításod mellett képzel el a nulláról.

Ezért is futtat egy vezérlési lépést 20 ms alatt, ahol egy 3 milliárd paraméteres VLA-nak 152-485 ms-ra van szüksége, és futtatásonként 1-3 USD-be kerül 4-12 helyett. Ez az útmutató a manuális útvonalat mutatja be a lerobot segítségével egy SO-100-on: a rögzítés, az act konfiguráció, hogy mit vezérel a chunk_size és a n_action_steps paraméter, a 100000 lépéses ütemezés, a rollout. Majd ugyanez a feladat az AY-Robots platformon, beleértve azokat az eseteket is, ahol a platform nem segít.

Amit tudnod kell

  • Az ACT a nulláról tanul: nincs alapmodell, nincs előképzés, nincs nyelvi bemenet. Egy ellenőrzőpont, egy feladat.
  • A tanulmány: körülbelül 80 millió paraméter, nagyjából 5 óra egy 11 GB-os RTX 2080 Ti-n, 0,01 mp-es következtetés.
  • lerobot alapértelmezések: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 lépés, seed 1000.
  • AY-Robots platformon: 20 ms lépésenként, a leggyorsabb az öt közül. Minimum 50 epizód, LeRobot v3.0, egy 24 GB-os kártya, 1-3 USD futtatásonként.
  • Nyert azon a feladaton, amit már látott, és veszít abban a pillanatban, amikor nyelvi kondicionálást szeretnél.
Mely verziókat írja le ez

Ellenőrizve 2026. augusztus 23-án a lerobot 0.6.x ellen: pyproject.toml a main ágon a version = "0.6.2" értéket mutatja, a legújabb címke v0.6.1, 2026. augusztus 3. Egy oktatóanyag, ami a python lerobot/scripts/train.py paranccsal kezdődik, megelőzi a konzolos belépési pontokat: lerobot-train, lerobot-record és lerobot-rollout.

Mi is az ACT valójában

Az Action Chunking with Transformers az ALOHA tanulmányból származik, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, Zhao, Kumar, Levine és Finn tollából, arXiv, 2023. április 23. A berendezés 50 Hz-en rögzít négy webkamerával, amelyek 480x640 felbontású videót streamelnek 30 fps sebességgel: kettő a megfogókon, egy felül, egy elöl. Az absztrakt hat készséget állít 80-90 százalékos sikerességgel, köztük egy áttetsző fűszeres pohár kinyitását és egy elem behelyezését, 10 percnyi demonstráció alapján.

A főszöveg hasznosabb a felvételi munkamenet tervezésekor: 50 demonstráció feladatonként, kivéve a Thread Velcro-t 100-nál, ami 10-20 perc adatot és 30-60 perc valós időt jelent, miután a visszaállításokat is beleszámoltuk. A sikeresség sem egységes: A Thread Velcro 20 százalékon, a Put On Shoe 92-n, a Cup Open 84-en, a Prep Tape 64-en végződik.

HiperparaméterALOHA tanulmány, III. táblázatlerobot a main ágon
tanulási ráta1e-5optimizer_lr = 1e-5
kötegelt méret8batch_size = 8, in TrainPipelineConfig not ACTConfig
kódoló / dekódoló rétegek4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
darabméret k100chunk_size = 100
z látens dimenziójahiányzik; a 11. ábra 32-től 512-ig terjedő vetítést mutatlatent_dim = 32
temporális együtteshiányzik; --temporal_agg a referencia kódbantemporal_ensemble_coeff = None
A dekóder réteg sora nem elírás

A tanulmány 7 dekóder réteget sorol fel, a lerobot szándékosan 1-et szállít. A configuration_act.py fájlban lévő megjegyzés szerint az eredeti implementációban van egy hiba, ami azt jelenti, hogy csak az első réteg kerül felhasználásra, hivatkozva a tonyzhaozh/act 25. számú hibájára: az akciófej a hs[0]-t olvassa, így mind a hét réteg fut, de csak az első kimenet éri el az előrejelzést. Ez a probléma 2024. április 23. óta nyitott és megválaszolatlan. A lerobot a közzétett eredményeket produkáló viselkedést követi, nem a nyomtatott számot. Növelje a --policy.n_decoder_layers értékét, és olyan modellt fog képezni, amelyet a tanulmány soha nem értékelt.

Az akció darabolás a lényeg

A hagyományos viselkedésklónozás egy megfigyelést egy akcióhoz rendel, és a hibák összeadódnak: egy eltérés a kart elmozdítja az eloszlásból, rosszabb akciót eredményezve, és harminc lépéssel később a megfogó sehol sincs a tárgy közelében. Akció darabolás k akciót jósol meg egyszerre és hajt végre, k-szorosára csökkentve a tényleges horizontot. Kezel egy emberi adatokra jellemző kellemetlenséget is: a teleoperátorok szünetet tartanak, és egy egylépéses Markov-féle szabályzat nem tud modellezni egy olyan szünetet, amely attól függ, ami előtte történt.

A tanulmány k-t ablációval vizsgálja, ahelyett, hogy állítaná. Időbeli együttesítés kikapcsolásával, négy beállítás átlagában, a siker 1 százalékról (k = 1) 44 százalékra (k = 100) emelkedik, majd 200-nál és 400-nál csökken, ahogy a szabályzat megközelíti a nyílt hurkú vezérlést. Ez a görbe az oka annak, hogy az alapértelmezett érték 100.

  • chunk_size: hány jövőbeli akciót jósol meg a dekóder egy előremenő lépésben. Alapértelmezett 100.
  • n_action_steps: hányat hajt végre ezek közül, mielőtt újra lekérdez. Alapértelmezett 100, így a lerobot a teljes darabot nyílt hurkú módon futtatja.
  • lerobot ellenőrzi, hogy n_action_steps <= chunk_size, és ValueError hibát dob, ha fordítva adja meg.

Működési szempontból a chunk_size osztva a képkockasebességgel számít. A lerobot SO-100 példáiban használt 30 képkocka/másodperc sebességnél egy 100-as darab körülbelül 3,3 másodpercet fed le egyetlen megfigyeléstől. Ha a feladat korrekciót igényel ezen az időablakon belül, csökkentse az n_action_steps-t, ne a chunk_size-t: így megtartja a hosszú előrejelzést, és gyakrabban figyel meg újra.

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
A darab végrehajtott részének rövidítése az előrejelzés rövidítése nélkül.
Az időbeli együttesítés csapdája

Állítsa be a --policy.temporal_ensemble_coeff paramétert, és a lerobot megköveteli, hogy n_action_steps = 1 legyen, ellenkező esetben NotImplementedError hibát dob. Az együttesítés minden időlépésben lekérdezi a szabályzatot, és az átfedő előrejelzéseket az adott időlépésre w_i = exp(-m * i) súlyokkal keveri, ahol a legrégebbi kapja a w_0 súlyt. A tanulmány szerint ez 3,3 százalék az ACT esetében: valós, de szerény, és megszorozza a következtetési számot a darab hosszával. Megfizethető 20 ms lépésenként, de nem 485 ms-nál. Lásd: következtetési késleltetés.

Amikor az ACT felülmúl egy alapmodellt

Az öt betanítható irányelv egymás mellett, az AY-Robots által mért és a bérelt GPU méretezéséhez használt számokkal.

IrányelvCsaládParaméterekLépésenkéntGPU szintMin. epizódokAdatkészlet
ACTDaraboló transzformer, a nulláról~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAKompakt VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA alap, diffúziós fej~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5VLA alap, előd~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5Áramlás-illesztő VLA, lásd áramlás-illesztés~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
Az AY-Robots irányelvek oldala, amely összehasonlító táblázatot mutat az ACT, SmolVLA, GR00T N1.5, GR00T N1.7 és Pi0.5 modellekről, paraméterszámokkal, GPU-követelményekkel, következtetési késleltetéssel és minimális epizódszámokkal
A /policies táblázat: Az ACT rendelkezik a legkisebb paraméterszámmal és a legrövidebb lépésidővel.
ACT betanítása a nulláról
Előnyök
  • 20 ms műveleti lépésenként, a leggyorsabb az öt közül, egy 24 GB-os kártyán, nem A100-on.
  • 1-3 USD futásonként, szemben a 3 B osztály 4-12 USD-jével.
  • Pontos az általa látott, érintkezésben gazdag munkáknál: 88 és 96 százalék a Slide Ziploc és Slot Battery feladatokon, ahol a korábbi módszerek soha nem jutottak túl az első szakaszon.
Kompromisszumok
  • Nincs nyelvi kondicionálás: a feladat string figyelmen kívül marad, így egy ellenőrzőpont egy feladat.
  • Nincsenek szemantikai előismeretek: minden, amit tud, az 50 epizódodból származik.
  • Szűk körű általánosítás: mozgass egy kamerát, és újra kell tanítanod.
  • Csendben hibázik: a veszteség csökken, a kar nem csinál semmit, a naplók semmit sem mondanak.
  • A sebességelőny csak akkor segít, ha az inferencia a szervók mellett van.

Válaszd az ACT-t, ha a feladat és a jelenet rögzített, és a mozgásnak gyorsnak és pontosnak kell lennie. Válassz egy akkor, ha egy ellenőrzőpontnak több utasítást kell lefednie. Két oldal segít a döntésben fej-fej mellett: és . A közzétett benchmarkokhoz minden számot a forrásához kapcsol.

Amire szükséged van, mielőtt elkezded

Egy követő kar, egy vezető kar a , legalább egy kamera, egy 24 GB-os GPU. Az ACT csak képeket és ízületi pozíciókat olvas. Két kamera az ideális: egy rögzített elölnézet arra, hogy hol vannak a dolgok, egy csuklóra szerelt kamera arra, hogy mit fog megérinteni a , mint az ALOHA-nál.

KarSzervókFeszültségAlkatrész költségStátusz
SO-100Feetech STS32157.4 V~110 to 150 EURTeljes támogatás, referencia kar
SO-101Feetech STS32157.4 V~130 to 170 EURTeljes támogatás
Koch v1.1Dynamixel XL330 / XL4305 V és 12 V-os sínek~250 to 350 EURKompatibilis
LeKiwiFeetech STS3215 (kar)7.4 V kar, 12 V alap~400 to 500 EURKompatibilis
7.4 V, nem 12 V

Az SO-100 és SO-101 Feetech STS3215 szervókat használ egy 7.4 V-os sínről. 12 V-tal táplálva tönkremennek, elég csendesen ahhoz, hogy az emberek először a szoftvert hibáztassák, és egy Koch 12 V-os tápegység fizikailag illeszkedik egy SO-100 alaplapra. Ellenőrizze a címkét. Tünetek: a szervó nem reagál, a kar rángatózik, majd megereszkedik. Lásd még: SO-100 vs SO-101.

A csupasz kartól a rögzített adatkészletig

Az alábbi folyamat a lerobot 0.6.x-re vonatkozik. Hagyja ki, ha már van kalibrált karja és adatkészlete. Ellenkező esetben a SO-100 kezdő útmutató tárgyalja az összeszerelést, a rögzítési útmutató a rögzítést, és a adatkészlet dokumentáció a formátumot.

  1. 1
    A lerobot telepítése a megfelelő extrákkal

    A felvételhez core_scripts, a képzéshez training, a Feetech szervókhoz feetech szükséges. 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
    Keresse meg az egyes karok USB portját

    Futtassa mindkét kar bedugva, majd húzza ki az egyiket, amikor a rendszer kéri. Linuxon előfordulhat, hogy meg kell nyitnia a csomópont engedélyeit.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Állítsa be a motor azonosítóit és a baudrate-et

    Az SO-100-on ez az összeszerelés előtt történik: az SO-101-gyel ellentétben a csatlakozók az összeszerelés után elérhetetlenné válnak. A szkript a markolótól kezdve egyenként végigjárja a buszt, és az azonosítókat az EEPROM-ba írja.

    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
    Kalibrálja mindkét kart

    Állítsa az összes ízületet a tartományának közepére, nyomja meg az Entert, majd mozgassa végig mindegyiket a teljes tartományán. A kalibrálás lehetővé teszi, hogy egy karon képzett irányelv egy másikon is fusson. Használja újra ugyanazt az id-t.

    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
    Teleoperálás egyszer bekapcsolt kamerákkal

    A lerobot ökölszabálya: képesnek kell lennie a feladat elvégzésére kizárólag a kamera képeit nézve. Ha Ön nem képes rá, az ACT sem. Ez több rossz adatkészletet fog ki, mint a későbbi hibakeresés.

    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
    Rögzítsen 50 epizódot

    50 az AY-Robots minimuma, és amit az ALOHA használt feladatonként. A lerobot 10-et javasol objektumhelyenként, rögzített kamerákkal, konzisztens fogással. Az n befejez egy epizódot, az r újra felveszi, a q leállítja és kódolja.

    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
Az AY-Robots felvételi útmutató oldala, amely elmagyarázza, hogyan lehet LeRobot-formátumú adatkészletet rögzíteni egy teleoperációs munkamenetből
A felvételi útmutató. Az asztali kliens ugyanazt az elrendezést írja, mint a lerobot-record.
Az egy napot felemésztő csapda: egy inkonzisztens adatkészlet

Az ACT-nek nincsenek előzetes ismeretei, amelyekre támaszkodhatna, így minden inkonzisztencia állandóvá válik. A három legköltségesebb: egy kamera elmozdult a 20. és 21. epizód között, a fény megváltozott, mert a készlet felét délután rögzítette, egy fogás kétféleképpen történt. Mindegyik tökéletesnek tűnő veszteséggörbét és egy rossz helyre mozgó kart eredményez. Lásd: a veszteség csökken, az irányelv nem csinál semmit, az irányelv csak egy beállításban működik és kiváló minőségű képzési adatok gyűjtése.

A képzés előtt játsszon le legalább öt epizódot. A LeRobot adatkészlet formátuma tárolja a kamerafolyamokat, az ízületi állapotokat és a műveleteket epizódonként, és a visszajátszás visszatolja ezeket a műveleteket a karra. Ha a visszajátszás nem végzi el a feladatot, az adatok nem tartalmazzák azt, és a képzés sem fogja kitalálni.

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
0. epizód visszajátszása. Ha ez sikertelen, állítsa le és rögzítse újra.

Az ACT irányelv betanítása

Ez a teljes parancs. Minden ACT-specifikus dolog már alapértelmezett, ezért javasolja a lerobot ACT oldal, hogy ezekkel kezdje.

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
A lerobot 0.6.x dokumentációjában található betanítási parancs, SO-100 adathalmazon.

--policy.type=act betölti az ACTConfig-ot, amely alkalmazkodik a datasetben rögzített motorok és kamerák számához, így soha nem kell deklarálnia a megfigyelési alakzatot. --wandb.enable=true opcionális és megéri: a veszteséggörbe az egyetlen olcsó jel egy 100000 lépéses futtatás során. Az ütemezés a lerobot train configjából származik, nem az ACTConfig-ból: 100000 lépés, 8-as batch, 1000-es seed, egy ellenőrzőpont minden 20000 lépésenként, naplózás 200-onként.

Egy teljes futtatás öt ellenőrzőpont könyvtárat hagy maga után, 020000-től 100000-ig, plusz egy last szimbolikus linket. Tartsa meg mindet: a legjobb irányelv gyakran nem az utolsó.

Beállításlerobot alapértelmezettAY-Robots ACT űrlapMegjegyzés
batch méret88Először ezt csökkentse, ha VRAM korlátokba ütközik.
tanulási ráta1e-51e-5Megegyezik az ALOHA tanulmányban leírttal.
maximális lépések100000100000Körülbelül ott, ahol egy 50 epizódos készlet már nem javul.
gradiens akkumuláció11, does not applyEhelyett módosítsa a batch méretet.
seed1000exposedA GR00T tyro belépési pontjának nincs seedje; az ACT futtatások a reprodukálhatóak.
chunk_size / n_action_steps100 / 100100 / 100, editableElőrejelzési és végrehajtási horizont. Csökkentse a másodikat, ne az elsőt.
ellenőrzőpont gyakoriság20000not exposedA saveSteps itt egy GR00T beállítás.
A memóriahiány a batch méret problémája, nem a kártyáé

Az ACT 8-as batch mérettel és két 640x480-as kamerával kényelmesen elfér 24 GB-on. Akkor válik túl naggyá, ha az emberek a sebesség növelése érdekében megemelik a batch méretet, vagy az egyik lerobot felvételi példában látható 1920x1080-as képkockákat táplálják be neki. Két ResNet-18 backbone 1080p felbontáson egészen más memóriaprofilt jelent. Csökkentse a --batch_size értékét 4-re, mielőtt nagyobb kártyát bérelne. Lásd: memóriahiány a tréning során.

Időtartam: körülbelül 5 óra egy 11 GB-os RTX 2080 Ti-n a tanulmány szerint, néhány óra 100k lépésenként a lerobot ACT oldalán, 2-5 óra az AY-Robots 24 GB-os szintjén. Ne vágja rövidre. A referencia tároló README-je szerint egy rángatózó vagy megálló irányelv általában csak több betanítást igényel, mert a siker és a simaság a veszteség platója után is folyamatosan javul: valós adatok esetén legalább 5000 epoch-ra van szükség, vagy a plató után még 3-4-szeres hosszúságra.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Megszakított futtatás folytatása az utolsó ellenőrzőpontról.

A betanított irányelv futtatása a karon

A telepítés a lerobot-rollout-ot használja. A kamera kulcsoknak meg kell egyezniük a rögzítettekkel: egy irányelv, amelyet a front és wrist alapján képeztek, nem fogadja el a cam0 és cam1-t, és a rename_map nem segít, mivel előre betanított ellenőrzőpontra van szüksége. A feladat string elhagyható; a lerobot saját példája szerint az ACT-hez kihagyható.

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
Autonóm kigurítás felvétel nélkül. Használja a --strategy.type=sentry opciót az értékelési epizódok rögzítéséhez.
Ezt a parancsot nemrég átnevezték, így a régi oktatóanyagok eltérőek lehetnek

Az értékelés korábban a lerobot-record --policy.path=... paranccsal futott. A 0.6.x verzióban ez a lerobot-rollout egy --strategy.type választóval: base, sentry (automatikus feltöltéssel történő rögzítés), highlight (gyűrűpuffer billentyűleütéssel mentve), dagger (ember a körben) és episodic. 2026. augusztus 23-án az ACT dokumentációs oldala még mindig azt írja, hogy "a lerobot-record parancs használatával" közvetlenül egy olyan blokk felett, amely a lerobot-rollout parancsot futtatja. Kövesse a parancsot, ne a mondatot.

Egy ellenőrzőpont rögzítéséhez a végső modell helyett, adja hozzá a --policy.pretrained_revision. Ehhez a futtatásnak a --save_checkpoint_to_hub=true opcióval kellett volna indulnia, ami alapértelmezetten ki van kapcsolva: nélküle a lerobot csak a végső modellt tölti fel, semmi mást. Ezzel minden ellenőrzőpont a nullákkal kiegészített lépésszámával van megjelölve, így a --policy.pretrained_revision=060000 visszaállítja a 60000. lépésnél lévőt. Összehasonlítani azt a 100000. lépésnél lévővel a valós karon a legolcsóbb elérhető kísérlet.

Két út ugyanahhoz az ellenőrzőponthoz

Minden fentebb leírt a manuális út, és működik. A platform út a kontrollt cseréli el azért, hogy ne kelljen GPU-val vagy Python környezettel rendelkeznie.

  1. Telepítse a lerobot 0.6.x-et a core_scripts, training, feetech, ffmpeg csomagokkal.
  2. Keresse meg a portokat, állítsa be a motor azonosítókat, kalibrálja mindkét kart, rögzítsen 50 epizódot.
  3. Játsszon le néhány epizódot, hogy megbizonyosodjon arról, az adatok tartalmazzák a feladatot.
  4. Béreljen vagy birtokoljon egy 24 GB-os GPU-t, illessze össze a CUDA-t és a PyTorch-ot, futtassa a lerobot-train --policy.type=act parancsot.
  5. Várjon néhány órát, majd futtassa a lerobot-rollout parancsot a kar melletti gépen.
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
Amit ez az út nyújt

Teljes kontroll: szerkessze a configuration_act.py fájlt, adjon hozzá kamerát, forkolja a trainert. Kutatási célokra, nem pedig egy feladat szállítására, a platform elterelő tényező.

Az AY-Robots képzési mátrix öt policy sorral és négy robotkar oszloppal, ahol minden cella az adott modell és kar kombinációjának specifikus képzési útmutatójára mutat.
A mátrix a /train oldalon. Az ACT sor az SO-100 oszlop ellenében ennek a cikknek az útmutatója.

Mi romlik el valójában

A fájdalom szinte soha nem a betanítási parancsban rejlik. Hanem a körülötte lévő dolgokban, aszerint rendezve, hogy milyen gyakran okoznak problémát elsőre.

TünetGyakori okOldal
lerobot-find-port nem mutat semmitIllesztőprogram, kábel vagy csomópont jogosultságokkar nem érzékelhető
Kamera hiányzik felvételkorIndex megváltozott újraindításkor, vagy két kamera egy USB vezérlőnkamera nem érzékelhető
A betanítás elutasítja az adatkészletetACT v3.0-t igényel, GR00T v2.1-etadatkészlet elutasítva v3-ként
CUDA memória kifogyottKötegelt méret növelve, vagy 1080p képkockák 480p helyettmemória kifogyott a betanítás során
A veszteség jól néz ki, a kar nem csinál semmitAz adatokból hiányzik a feladat, vagy egy kamera elmozdultveszteség csökken, a szabályzat nem csinál semmit
Rángatózó mozgás vagy szünet az epizód közepénAlulbetanított, egy adatblokk határánál fellépő megakadás, vagy időtúllépéses következtetési hívása szabályzat megfagy mozgás közben

Két sor kiemelést érdemel. Az ACT LeRobot v3.0-n tanít, míg a GR00T betöltője összeomlik rajta és v2.1-et igényel, így egy ACT-t betanító adatkészlet meghiúsíthat egy GR00T futtatást. Az utolsó sorban két javítás található: az ACT szerzői a rángatózó mozgásra több betanítással válaszolnak, míg n_action_steps 100-nál egy valódi megakadás egy adatblokk határánál jelentkezik, ami egy látható szünetet jelent 3.3 másodpercenként 30 fps-nél. Még két dolog, amit érdemes tudni: egyetlen halott ízület általában egy soha nem írt szervó azonosító, és egy megközelítő, de soha be nem záró megfogó túl kevés megfogó tartományt jelent a demonstrációkban. Teljes index: a hibamód oldalak.

Mennyibe kerül egy futtatás

SzintModellekFutási időÓránkénti árFuttatásonkénti költség
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

Ez az érv amellett, hogy ACT-vel kezdjünk, még akkor is, ha később VLA-t szeretnénk. Egy sikertelen ACT futtatás egy kávé árába kerül, és órákon belül megmondja, hogy az adatkészleted tartalmazza-e a feladatot. Egy sikertelen GR00T futtatás négyszer annyiba kerül ugyanazért a tanulságért. A későbbi váltás GR00T N1.7 vagy SmolVLA utána egy formai változás, nem pedig újjáépítés. Háttér: látás-nyelv-akció modellek, a teljes SO-100 útmutató, képezd az első irányelvedet és utánzásos tanulás. Nincs kar? Az élő oldal valós SO-100-at közvetít, amit regisztráció nélkül vezethet.

ACT képzése az SO-100-adon

Útmutató ehhez a pontos kombinációhoz: alapértelmezések, GPU szint és a futtatás költsége. Válaszd ki az adatkészletet, a backend bérli a kártyát és írja a mentési pontokat.

Nyisd meg a képzési útmutatót
Van előre kiképzett ACT modell, amit finomhangolhatok helyette?

Nem. Az ACT-nek nincs alapmodellje; csak azután létezik, miután kiképezted. Ez nem hiányosság az eszközökben, hanem maga az ACT lényege: a tanulmány minden feladathoz a nulláról képez ki egy irányelvet. Szállítói mentési ponthoz használd a GR00T N1.7-et vagy a Pi0.5-öt.

Hány epizódra van valójában szükségem?

50: amit az ALOHA rögzített feladatonként (100 a Thread Velcro-hoz, ami a legnehezebb), és az AY-Robots minimuma. A lerobot körülbelül 10-et javasol objektumhelyenként, rögzített kamerákkal, konzisztens fogással. Ötven tiszta epizód jobb, mint száz, ahol a kamera mozgott.

Meg kellene változtatnom a chunk_size értékét 100-ról?

Általában nem. Az abláció 1 százalékról emelkedik k = 1-nél 44 százalékra k = 100-nál, majd utána lecseng, így a 100 közel van a csúcshoz. Ha a kar túl sokáig elkötelezi magát, inkább csökkentsd az n_action_steps értékét: 30 fps-nél 25 lekérdezés 0,8 másodpercenként.

Mennyi ideig tart egy képzési futtatás, és leállíthatom-e korábban?

Két-öt óra egy 24 GB-os kártyán 100000 lépéshez. A mentési pontok 20000 lépésenként készülnek, és a --resume=true folytatja a futtatást, így a korai leállítás biztonságos. Csak ne az első lapos szakasznál: a simaság javul, miután a veszteség platózik.

A veszteség csökkent, de a kar még mindig hibázik. Mi a teendő?

Szinte mindig az adatkészlet. Játszd le a rögzített epizódokat a karon: ha a visszajátszás nem hajtja végre a feladatot, akkor az adatok nem tartalmazzák azt. Ezután ellenőrizd, hogy mozgott-e valami, különösen egy kamera. Az ACT-nek nincsenek előzetes ismeretei, így a 21. epizódnál történt lökés végleges.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started