A SmolVLA modelloldala az AY-Robots-on, amely bemutatja a paraméterek számát, a GPU szintet, a következtetési késleltetést akció lépésenként és a minimális epizódok számát
SmolVLALeRobotVLA KépzésFinomhangolásSO-100

Hogyan képezzük a SmolVLA-t egy 24 GB-os GPU-n (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 perc olvasás

A SmolVLA egy 450 millió paraméteres VLA, amely egyetlen 24 GB-os kártyán finomhangolható. Valós lerobot 0.6.1 parancsok, a tényleges alapértelmezések, az egy napba kerülő csapdák, és mennyibe kerül egy futtatás.

SmolVLA egy képernyőn

  • 450 millió paraméter, ebből körülbelül 100 millió egy áramlásillesztő akció szakértő. A lerobot csak ezt a szakértőt képzi, és a VLM-et befagyasztva tartja, ezért fér el egy kártyán.
  • A LeRobot számítási útmutatója szerint a smolvla csoport körülbelül 10-16 GB csúcs VRAM-ot igényel 8-as kötegmérettel és AdamW-vel. Ezért 24 GB.
  • A belépési pont a lerobot-train. A 2025. júniusi SmolVLA blogbejegyzés még mindig a python lerobot/scripts/train.py parancsot írja ki, ami egy már nem létező útvonal. Minden alábbi a lerobot 0.6.1-es verziója.
  • A koszinuszos ütemezés előre be van állítva, hogy 30000 lépésen keresztül csökkenjen. A lerobot 0.6.1 ezt lefelé skálázza egy rövidebb futtatáshoz és naplózza, de soha nem felfelé: a gyári 100000 lépéses futtatás 70000 lépésen keresztül a 2.5e-6-os alsó határon végződik.
  • Harminc epizód az AY-Robots minimuma, egy 24 GB-os szinten, ami 1-3 USD-be kerül futtatásonként, szemben a 80 GB-os modellek 4-12 USD-jével.

A legtöbb ember, aki látás-nyelv-akció modellt szeretne egy valódi karon, a hardveres korlátoknál megáll. GR00T N1.7 és Pi0.5 körülbelül hárommilliárd paramétert tartalmaznak, és A100 80 GB-os vagy H100-as kártyát igényelnek. Ha egy RTX 4090-es gamer PC-d van, akkor ez az út vége. SmolVLA a kivétel: 450 millió paraméter, a LeRobot keretében, úgy építve, hogy egyetlen fogyasztói kártyán finomhangolható és CPU-ról kiszolgálható legyen.

Először a manuális útvonal: telepítsd a lerobotot, húzd le a lerobot/smolvla_base ellenőrzőpontot, futtasd a valódi parancsot, olvasd a futtatást, amíg tart. Aztán a platform útvonal, és ahol az nem segít.

Mi az a SmolVLA, ellenőrizhető számokban

A SmolVLA egy áramlásillesztés alapú irányelv, amely egy kis látás-nyelvi modellre épül. A gerincmodell a SmolVLM2-500M-Video-Instruct; a tanulmány csak a nyelvi modelljének első 16 rétegét tartja meg, minden kamera képkockát 64 vizuális tokenre korlátoz pixelkeveréssel képkocka csempézés helyett, és minden második blokkban kereszt-figyelmet önfigyelmi réteggel váltogat. A következtetési költség tervezési korlát volt, nem utólagos gondolat.

TulajdonságÉrtékForrás
Összes paraméterkörülbelül 450 Mpaper
Akció szakértőkörülbelül 100 M, áramlásillesztéspaper
VLM gerincmodellHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Használt VLM rétegeka nyelvi modell első 16 rétegenum_vlm_layers = 16
Vizuális tokenek képkockánként64, pixelkeverés, csempézés nélkülpaper
Előtanítás481 közösségi adatkészlet, 22.9 K epizód, 10.6 M képkocka; 200000 lépés globális 256-os köteggel 4 GPU-npaper

A benchmarkok miatt foglalkoznak az emberek egy 450 M-es modellel. A LIBERO-n átlagosan 87.3 százalékot ér el, szemben az OpenVLA 7 B-s 76.5-ével és egy robotikára előtanított Pi0 3.3 B-s 86.0-jával; a Meta-World-ön 57.3-at 47.9 ellenében. Valódi SO-100 hardveren a többfeladatos tanítás 75 százalékot ad a felvétel és elhelyezés, 90-et a rakásolás, 70-et a válogatás terén, átlagosan 78.3-at, ahol ACT feladatonként tanítva átlagosan 48.3-at ért el. Ugyanezek a sorok minden publikált VLA mellett megtalálhatók a SmolVLA aréna bejegyzésben és az ACT és SmolVLA összehasonlításban.

A méretre vonatkozó állítás őszinte változata

A SmolVLA nem mindenben jobb, mint egy 3 B-s modell. A tanulmány saját SO-101 táblázata árulkodó: 90 százalékos siker a disztribúción belül, 50 százalék azon kívül, egy olyan platformon, amelyen soha nem volt előtanítva. Amit állít, és alátámaszt, az az, hogy a Pi0-hoz képest körülbelül 40 százalékkal gyorsabban tanítható 6-szor kevesebb memóriával.

Miért a 24 GB-os kártya a megfelelő első futtatáshoz

A LeRobot mellékel egy számítási méretezési útmutatót, ami a repó leghasznosabb oldala ehhez. A házirendeket a gerinchálózat mérete szerint csoportosítja, és minden csoporthoz egy VRAM-borítékot ad, amelyet 8-as kötegmérettel, AdamW-vel, a lerobot alapértelmezett beállításával mértek. Az optimalizáló állapota önmagában 30-100 százalékot ad hozzá egy puszta előre- és hátrafelé haladó lépéshez képest, így ezek nem csak súlyokra vonatkozó adatok.

CsoportHázirendekCsúcs VRAM (8-as köteg, AdamW)Kezdő GPU-k
Könnyű BCact, vqbet, tdmpckörülbelül 2-6 GBRTX 3060, L4
Diffúziódiffusion, multi_task_ditkörülbelül 8-14 GBRTX 4070+, L4
Kis VLAsmolvlakörülbelül 10-16 GBRTX 4080+, L4, A10G
Nagy VLApi0, pi0_fast, pi05, xvla, wall_xkörülbelül 24-40 GBA100 40 GB+
Multimodálisgroot, eo1körülbelül 24-40 GBA100 40 GB+

Tíz-tizenhat gigabájt 8-as kötegmérettel – ez az érv: egy 24 GB-os kártya ehhez, plusz az adatbetöltőhöz is elegendő. Az AY-Robots a SmolVLA-t az RTX 4090-re vagy bármely 24 GB-os kártyára helyezi, minimum 30 epizód, LeRobot v3.0 adat, 245 ms akció lépésenként. Bérelve ez 2-5 óra, óránként 0.30-0.60 USD-ért, körülbelül 1-3 USD egy finomhangolási futtatás, szemben a 4-12 USD-vel a 80 GB-os szinten, amit a GR00T és a Pi0.5 igényel (árazás). Egy sikertelen SmolVLA futtatás egy kávé; egy sikertelen GR00T futtatás egy ebéd.

AY-Robots költségtáblázat: kártya házirendenként, futási idő, futásonkénti ár, szükséges epizódok
SmolVLA és ACT a 24 GB-os sorban, a három 3 B modell a 80 GB-os sorban.
SmolVLA-val kezdeni egy 3 B modell helyett
Amit kap
  • Illeszkedik a már meglévő hardverhez: nagyjából 10-16 GB 8-as batch-nél.
  • Egy elpazarolt futás órákba és egyjegyű dollárokba kerül, így megengedheti magának, hogy tévedjen az adatkészlettel kapcsolatban.
  • Közösségi adatkészleteken előképzett, a lerobot címke alatt megosztva, valós SO-100 és SO-101 eredményekkel.
  • Magában a lerobotban él: nincs gyártói tároló, és a smolvla_base nincs korlátozva.
Amit felad
  • 450 M még mindig 450 M: a disztribúción kívüli siker 90-ről 50 százalékra esik a tanulmány SO-101 táblázatában.
  • LeRobot v3.0 adatokat igényel; egy v2.1 felvételt konvertálni kell (adatkészlet elutasítva v3).
  • 245 ms műveleti lépésenként egy kompetens pick and place vezérlő, nem reaktív.
  • A dokumentáció példája 64-es batch-et futtat egy A100-on; 24 GB-on a batch-et a valós időre cseréli.

0. lépés: az adatkészlet dönti el a futást, nem a flag-ek

Semmi sem számít az alábbiakból, ha a felvétel rossz. A LeRobot SmolVLA oldala nyersen fogalmaz: a referencia adatkészlet 50 epizód volt 5 kockapozícióban, 10 pozíciónként, és ugyanaz a feladat 25 epizóddal rosszul teljesített. A variációnkénti ismétlés általánosít, a nyers epizódszám nem. Soha nem rögzített még ilyet? Kezdje a első adatkészlet rögzítésével a asztali klienssel, amely LeRobot formátumot ír ki egy teleoperációs munkamenetből, vagy kölcsönözzön egyet az adatkészlet-könyvtárból.

  • Legalább 30 epizód AY-Robots-on, körülbelül 50 a LeRobot referencia recepthez.
  • Minden variáció, amit a bevezetéskor elvár, többször megismételve.
  • Egy feladatkarakterlánc, amelyet azonos módon írtak le a rögzítés és a bevezetés idején. A modell erre a szövegre van kondicionálva.
  • Rögzített kamerák. A rögzítés és a bevezetés között elmozdított kamera a leggyakoribb oka annak, hogy egy tiszta veszteséggörbe mozdulatlan kart eredményez.
  • Egy félretett variáció, amire soha nem képzett, így van valami őszinte, amivel tesztelhet.
Az adathalmaz csapda, ami egy napba kerül

SmolVLA, Pi0.5 és ACT LeRobot v3.0-t igényelnek. GR00T N1.7 és N1.5 v2.0 vagy v2.1-et igényelnek, és a betöltőjük összeomlik v3.0-n. Rögzítsen egyszer, tervezze meg a modellek későbbi összehasonlítását, és konvertálni fogja az egyik vagy másik módon: adathalmaz elutasítva v3.

bash
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_place
A konverter a leroboton belül található, így nincs semmi extra telepíteni való. Nincs konverter a másik irányba a csomagban.

További információ erről itt: hogyan gyűjtsünk kiváló minőségű VLA képzési adatokat robotmanipulációhoz. A rövid változat: 30-50 tiszta epizód egy feladatról, szándékos variációval, felülmúlja a három feladat 200 hanyag epizódját, olyan különbséggel, amit egyetlen hiperparaméter sem tud áthidalni.

A lerobot 0.6.1 telepítése

bash
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge

# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'

# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-info
A PyPI útvonal. A tréner javításához klónozza a repót, és használja helyette a pip install -e ".[smolvla,training]" parancsot.

Az alap lerobot telepítés vékony, és az extra csomagok mögé rejti a nagy függőségeket: smolvla hozzáadja a transzformereket, a num2words-t és az accelerate-et, training az adathalmaz-vermet és a wandb-t, core_scripts a hardver- és vizualizációs függőségeket. Linuxon a telepítési útvonal dönti el a CUDA wheel-t is: a PyPI alapértelmezettje egy cu130 wheel, 580.65-ös illesztőprogram-minimummal, így régebbi illesztőprogram esetén először a torch-ot telepítse a cu128 indexről, majd a lerobot-ot.

A policy.path és a policy.type nem ugyanaz a flag

A --policy.path=lerobot/smolvla_base betölti az előre betanított 450 M ellenőrzőpontot és finomhangolja azt. A --policy.type=smolvla egy friss SmolVLA-t épít, és a konfiguráció alapértelmezett load_vlm_weights = False értéke azt jelenti, hogy még a SmolVLM2 gerinc súlyait sem húzza le, hacsak nem kéri. Ha rosszul csinálja, a futtatás boldogan betanul, ugyanannyiba kerül, és semmi átvihetőt nem tanul.

A betanítási futtatás, parancsról parancsra

  1. 1
    Hitelesítés a Hubbal szemben

    Az alap ellenőrzőpont a Hubból származik, és valószínűleg az adatkészleted is.

    bash
    hf auth login
  2. 2
    Olvasd át az opciókat egyszer

    A pipeline és a policy konfiguráció minden mezője egy flag. Olvasd át gyorsan, mielőtt beleásnád magad a forráskódba.

    bash
    lerobot-train --help
  3. 3
    Indítsd el a finomhangolást

    A dokumentáció példája 64-es batch mérettel fut egyetlen A100-on; a számítási útmutató saját A100 40 GB-os horgonya 16-os batch méret, és a 8 a 24 GB-os megfelelője. Itt szándékosan nincs scheduler flag, lásd alább.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=${HF_USER}/so100_pick_place \
      --batch_size=8 \
      --steps=20000 \
      --save_freq=2000 \
      --log_freq=200 \
      --seed=1000 \
      --output_dir=outputs/train/smolvla_pick_place \
      --job_name=smolvla_pick_place \
      --policy.device=cuda \
      --wandb.enable=true
  4. 4
    Olvasd a log sort, ne csak a veszteséget

    Minden --log_freq lépésenként a lerobot kiírja a loss, grdn, lr, updt_s, data_s, smp/s értékeket, és CUDA esetén a mem_gb-t. A mem_gb megmondja, hogy a batch elfér-e, az lr, hogy a schedule csökken-e, és a data_s közeledése az updt_s-hez azt jelenti, hogy az adatbetöltő a szűk keresztmetszet, nem a GPU.

    bash
    # if data_s creeps toward updt_s
    lerobot-train ... --num_workers=8
  5. 5
    Gyűjts össze összehasonlítható ellenőrzőpontokat

    A save_freq alapértelmezett értéke 20000, így egy 20000 lépéses futtatás egyetlen ellenőrzőpontot hagy, és semmit, amivel összehasonlíthatnánk. Állítsd 2000-re. A Hubra való feltöltéshez szükség van a --policy.repo_id-ra.

    bash
    --save_freq=2000 \
    --policy.repo_id=${HF_USER}/smolvla_pick_place \
    --save_checkpoint_to_hub=true
  6. 6
    Folytatás, ha a gép leáll

    Mutass a --config_path-tal a train_config.json fájlra az ellenőrzőpont mellett. A lerobot nem hajlandó elindulni egy már létező output_dir-be, hacsak nem folytatod a futtatást, így véletlenül sem írhatsz felül egy futtatást.

    bash
    lerobot-train \
      --config_path=<path to the saved train_config.json> \
      --resume=true

Azok a flag-ek, amelyek ténylegesen megváltoztatják az eredményt

FlagMit csinál24 GB-on
--batch_sizeMinták lépésenként, nagyjából lineárisan a VRAM-ban4 to 8
--stepsÖsszes optimalizáló lépés20000 first pass
--policy.scheduler_decay_stepsKoszinuszos csökkenés hossza, előre beállított 30000Csak 30000 felett érvényesül
--policy.use_ampVegyes pontosság; a SmolVLA-nak nincs dtype mezőjetrue, ha szűkös a memória
--num_workersAdatbetöltő folyamatok, alapértelmezett 4Emeld, amíg a data_s nem áll meg a növekedésben
--dataset.eval_splitFeladatonként visszatartott epizódok aránya0.1, with --eval_steps
--policy.freeze_vision_encoderA látás-enkódert befagyasztva tartjatrue on 24 GB
--policy.train_expert_onlyCsak a ~100 M expert kap gradiensekettrue first
Az ütemezés: mit kezel a 0.6.1, és mit nem

A SmolVLA egy koszinuszos ütemezést állít be: scheduler_warmup_steps = 1000, scheduler_decay_steps = 30000, scheduler_decay_lr = 2.5e-6. Régebbi tanácsok szerint egy 20000 lépéses futás emiatt megakad a lecsengés közepén. A 0.6.1-ben ez nem történik meg: a CosineDecayWithWarmupSchedulerConfig.build() megkapja a --steps paramétert, és a num_decay_steps alatt mindkettőt átméretezi, a 1000-es felmelegedést 666-ra, a 30000-es lecsengést 20000-re, miközben kiírja az Auto-scaling LR scheduler üzenetet. Soha nem méretezi felülre: a lecsengés a min(current_step, decay_steps) értékkel van korlátozva, így az alapértelmezett --steps=100000 a 30000. lépéstől a végéig, a futás 70 százalékában a minimumon marad. Csak ez a hosszú oldal igényli továbbra is a --policy.scheduler_decay_steps paramétert. Az lr oszlopban ellenőrizheti.

Az alapértelmezések, amiket örököl, ha semmihez sem nyúl

A konfiguráció a lerobotban saját optimalizáló és ütemező előbeállítást tartalmaz, és hacsak nem állítja be a use_policy_training_preset=false értéket, ezek az előbeállítások érvényesülnek. A SmolVLA tréninggel kapcsolatos kérdések felére egy olyan alapértelmezés ad választ, amiről nem is tudtak.

BeállításAlapértelmezett a lerobot 0.6.1-benDefiniálva itt
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (flow matching denoise)10SmolVLAConfig
optimizer_lr1e-4SmolVLAConfig
scheduler_warmup_steps1000SmolVLAConfig
scheduler_decay_steps30000SmolVLAConfig
scheduler_decay_lr2.5e-6SmolVLAConfig
freeze_vision_encodertrueSmolVLAConfig
train_expert_onlytrueSmolVLAConfig
batch_size / steps8 / 100000TrainPipelineConfig
seed / save_freq / num_workers1000 / 20000 / 4TrainPipelineConfig

A két sor, ami meglepi az embereket, a freeze_vision_encoder és train_expert_only, mindkettő igaz. Alapértelmezetten körülbelül 100 M paramétert tanít, nem 450 M-et, ezért fér el 24 GB-on. A LeRobot saját referencia futtatása egy négy-GPU-s H100 klaszteren mindkettőt hamisra állítja; egy 24 GB-os kártyán ez egy működő futtatásból memórián kívüli összeomlást.

A hiányzó memóriaszabályzó

A útmutató tanácsa, ha memóriakorlátba ütközik, hogy csökkentse a kötegméretet (batch size) és használjon gradiens akkumulációt (gradient accumulation) a hatékony köteg visszaállításához. Nincs gradiens akkumuláció a lerobot 0.6.1-ben: TrainPipelineConfig nem tartalmaz ilyen mezőt, és a karakterlánc sehol sem jelenik meg a kiadott csomagban. Az AY-Robots űrlapja 8-as gradiens akkumulációs értéket mutat a SmolVLA számára, és azt sem alkalmazza. A 24 GB-os kártyán a karjai a --batch_size, a két freeze alapértelmezés, és a --policy.use_amp.

Mennyi ideig tart a futtatás, és hány lépés elegendő

A LeRobot öt epoch-ra vonatkozó valós idejű horgonyokat tesz közzé egy körülbelül 50 epizódos adathalmaz felett, ami körülbelül 45000 képkockát jelent 30 fps sebességgel. Nagyságrendi adatok, mondják a dokumentumok, de ezek jelentik a különbséget egy óra és egy nap elvárása között.

BeállításSzabályzatKötegTeljes idő
Egyetlen L4 / A10G (24 GB)smolvla4körülbelül 3-6 óra
Egyetlen A100 40 GBsmolvla16körülbelül 1-2 óra
4 x H100 80 GB gyorsítássalsmolvla32körülbelül 1-2 óra
Egyetlen RTX 4090 / RTX 3090 (24 GB)act8körülbelül 30-60 perc
Végezze el az epoch számítást, mielőtt kiválasztja a --steps értéket

A szabály 5-10 epoch a adathalmazon, nem pedig fix lépésszám: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Azon a referencia adathalmazon, amelyre a dokumentáció hivatkozik, lerobot/svla_so100_pickplace, a metaadatok 50 epizódot és 19631 képkockát jelentenek: a 8-as köteg körülbelül 2454 lépést ad epochonként, így 20000 lépés nagyjából 8 epoch. Felezze meg a köteget, és ugyanaz a költségvetés fele annyi epochot eredményez, ezért ismételje meg ezt, valahányszor módosítja a --batch_size értéket.

A finomhangolt szabályzat futtatása a karon

bash
lerobot-rollout \
  --strategy.type=base \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower_arm \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --task="Grasp the cube and put it in the box." \
  --policy.path=${HF_USER}/smolvla_pick_place
A feladat stringnek meg kell egyeznie azzal, amellyel rögzítette. A modell az adott szövegre van kondicionálva, így egy parafrázis más utasításnak minősül.

A 245 ms-os műveleti lépésenkénti idő könnyen félreérthető: a házirend chunk_size = 50 műveletet bocsát ki előremenő lépésenként, és végrehajt n_action_steps = 50 közülük, így az, hogy milyen gyakran fizeti ezt a költséget, ezek a beállítások határozzák meg, nem pedig az, hogy milyen gyakran kapnak parancsot a szervók. Ez az, amit az vásárol, és amiért egy 245 ms-os modell képes meghajtani egy 30 Hz-es kart. Ami marad, az az a darab végén.

Mérés (SmolVLA, valós SO-100)SzinkronAszinkron
Befejezési idő, felvétel és elhelyezés, 10 próba13.75 s9.70 s
Felvétel és elhelyezés ciklusok rögzített időablakban919
Sikerességi arány a három feladat átlagában78.3 %73.3 %

A harmadik sor az, amit a legtöbb írás kihagy. Az aszinkron következtetés körülbelül 30 százalékkal gyorsabb, és nagyjából megduplázza az átviteli sebességet egy rögzített időablakban, és a tanulmány összehasonlíthatónak nevezi a sikerességi arányokat, ami átlagosan igaz is. Ez alatt a rendezés 70-ről 50 százalékra esett, míg a felvétel és elhelyezés 5-öt javult. A lerobot 0.6.1 a másik kart ugyanabban a binárisban hordozza: --inference.type=rtc átkapcsolja a kigördítést valós idejű darabolásra, amit a szkript saját használati blokkja ajánl a lassú VLA-khoz, Pi0-hoz, Pi0.5-höz és SmolVLA-hoz.

A következtetésnek a szervók mellett kell lennie

A vezérlőhurok 20 és 485 ms között van műveleti lépésenként, modelltől függően, és a nyilvános internetes oda-vissza utak egy működő házirendet habozóvá tesznek. A távoli következtetés lassú felvétel és elhelyezés esetén életképes, nem gyors reaktív mozgásnál: ha a feladat gyors korrekciókat igényel, a GPU-nak ugyanazon a LAN-on kell lennie, mint a karnak.

7.4 V, nem 12 V

Ez a téma nem kapcsolódik közvetlenül a tréning futtatásához, de több SO-100 projektet tesz tönkre, mint bármely hiperparaméter. Az SO-100 és az SO-101 Feetech STS3215 szervói 7.4 V-on működnek; 12 V tönkreteszi őket. A LeKiwi egy 7.4 V-os kart kever egy 12 V-os alappal, így találja meg a rossz tápcsatlakozó a rossz aljzatot.

Két út ugyanahhoz a mentési ponthoz

Ön birtokolja a gépet, a környezetet és a hibakeresést. Az egyetlen felhőfüggőség az alap mentési pont Hubról való letöltése. Ez a megfelelő út, ha módosítani szeretné a szabályzatot, ha az adatok nem hagyhatják el a hálózatát, vagy ha a kártya tétlen.

  • Ön irányítja a CUDA kerék, a meghajtó, az ffmpeg build és az adatbetöltő működését.
  • Módosíthatja a configuration_smolvla.py fájlt, és még aznap délután újra betaníthatja.
  • Villamos energiában és időben fizet, nem futtatásonként, és maga végzi a TorchCodec hibakeresését.
bash
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=${HF_USER}/so100_pick_place \
  --batch_size=8 --steps=20000 \
  --save_freq=2000 --seed=1000 \
  --output_dir=outputs/train/smolvla_pick_place \
  --job_name=smolvla_pick_place \
  --policy.device=cuda --wandb.enable=true
A teljes manuális útvonal egy blokkban, lerobot 0.6.1.

Amikor a SmolVLA a rossz választás

Az, hogy a SmolVLA volt-e a megfelelő első futtatás, nem azon múlik, hogy működött-e, hanem azon, hogy a hiba mondott-e valamit. Érjen el 60 vagy 70 százalékot, és egy nagyobb modell ésszerű következő befektetés: az adatok jelet hordoznak. Érjen el 10 százalékot, és egy 3 B modell valószínűleg szintén 10 százalékot ér el, amit most tanult meg három dollárért tizenkettő helyett.

Az AY-Robots képzési mátrixa: öt irányelv sorokban, négy robotkar oszlopokban
Minden cella a saját útmutatója. A SmolVLA-nak mind a négy karhoz van egy.

Érdemes elolvasni, mielőtt többet költene: Pi0.5 a SmolVLA ellen a nagyobb kapacitásért ugyanazon az ötleten alapulva, és GR00T N1.7 a SmolVLA ellen az NVIDIA útvonalhoz, mindkettő 80 GB-os szinten, 4-12 USD futtatásonként. A másik irány, ACT az olcsóbb alapvonal: 80 M paraméter, 20 ms akció lépésenként, nyelvi kondicionálás nélkül. Mind az öt megtalálható a házirendek oldalán; arénában 85 modellt és 332 benchmark eredményt tartalmaz.

Az AY-Robots irányelvek összehasonlítása: paraméterek, GPU szint, késleltetés, minimális epizódok
A négy szám, ami egy futtatásról dönt.

Ellenőrzőlista, mielőtt bármit is skálázna

  1. Elérte az lr a 2.5e-6-os alsó határát? 30000 lépés alatt a lerobot átméretezi a csökkenést, és ezt jelzi indításkor; e fölött állítsa be a --policy.scheduler_decay_steps paramétert saját maga.
  2. Több ellenőrzőpont, és epizódok elkülönítve a --dataset.eval_split paraméterrel, hogy az értékelési veszteségnek legyen értelme.
  3. Mozog egyáltalán a policy? A csökkenő veszteség mozdulatlan karral specifikus okokra vezethető vissza: a veszteség csökken, a policy nem csinál semmit.
  4. Túléli a környezetváltozást? Ha nem: a policy csak egy beállításban működik.
  5. Leírta a seed-et? A lerobot alapértelmezés szerint 1000-et használ, így két érintetlen futtatás összehasonlítható marad.
  6. Csak ezután: több epizód, több variáció, vagy nagyobb modell. Ebben a sorrendben.

Arról, hogy miért léteznek ezek a modellek és mit csinálnak a nyelvi bemenettel, adják a hátteret; végigvezet az összeszerelésen a keresztül az első futtatásig. A kész ellenőrzőponthoz ; ha a kar soha nem jelenik meg, .

Képezze a SmolVLA-t saját karján

Válassza ki a modellt és a kart, és az útmutató megadja a pontos alapértelmezéseket, az adatkészlet formátumát és a futtatás költségeit. A SmolVLA a 24 GB-os szinten található, futtatásonként 1-3 USD áron.

Nyissa meg a képzési útmutatókat
Valóban finomhangolhatom a SmolVLA-t egy RTX 4090-en?

Igen. A LeRobot számítási útmutatója szerint a SmolVLA nagyjából 10-16 GB csúcs VRAM-ot igényel batch 8 mellett AdamW-vel, és a 24 GB-os fogyasztói kártyákat kényelmesnek tartja ehhez. A dokumentációban szereplő batch 64 példa egyetlen A100-zal van párosítva. A memória nagyjából lineárisan skálázódik a batch méretével, ezért használjon 4-et vagy 8-at, és figyelje a mem_gb-t.

Valójában hány epizódra van szükségem?

Az AY-Robots a minimumot 30-ban határozza meg. A LeRobot dokumentációja körülbelül 50-et ajánl, és arról számol be, hogy ugyanazon feladat 25 epizódja rosszul teljesített. A struktúra fontosabb, mint a szám: a referenciahalmaz 5 kockapozícióból állt, mindegyikhez 10 epizóddal, és ez az ismétlés az, ami általánosítható.

A dokumentáció batch 64-et ír, a platform batch 2-t küld. Melyik a helyes?

Mindkettő, különböző hardverekhez. A dokumentációban szereplő példa batch 64-et használ, és körülbelül 4 órát említ 20000 lépéshez egyetlen A100-on; a számítási útmutató A100 40 GB-os horgonya batch 16. A batch 2 az, amit az AY-Robots küld a 24 GB-os szinten. Helyileg a 4-8 a középút, és az epoch számítás ezzel változik.

SmolVLA vagy ACT egy első futtatáshoz egy SO-100-on?

ACT, ha a feladat egy ismétlődő mozgás, és a leggyorsabb ciklust szeretné: 20 ms akció lépésenként, 80 M paraméter, nyelvi kondicionálás nélkül. SmolVLA, ha nyelvi kondicionálást, több feladat stringet szeretne egy checkpointban, és egy előre betanított alapot. Mindkettő a 24 GB-os szinten van, így a választás a feladaton múlik, nem a költségvetésen.

Be kell állítanom a --policy.scheduler_decay_steps-t?

Csak akkor, ha a --steps értéke 30000 felett van. A SmolVLA 30000 lépésnél előre beállítja a koszinuszos lecsengést, és a lerobot 0.6.1 maga skálázza le egy rövidebb futtatáshoz, naplózva az „Auto-scaling LR scheduler” üzenetet, amikor ezt teszi. Soha nem skáláz fel, így a gyári --steps=100000 az utolsó 70000 lépést a 2.5e-6-os alsó határon hagyja.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started