SmolVLA-modellsidan på AY-Robots visar antal parametrar, GPU-nivå, inferenslatens per åtgärdssteg och minsta antal episoder
SmolVLALeRobotVLA-träningFinjusteringSO-100

Hur man tränar SmolVLA på en 24 GB GPU (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 min läsning

SmolVLA är en VLA med 450 M parametrar som finjusteras på ett enda 24 GB-kort. Verkliga lerobot 0.6.1-kommandon, de faktiska standardinställningarna, fällorna som kostade en dag, och vad en körning kostar.

SmolVLA på en skärm

  • 450 M parametrar, varav cirka 100 M är en flow matching action expert. lerobot tränar endast den experten och håller VLM fryst, vilket är anledningen till att den får plats på ett kort.
  • LeRobots beräkningsguide anger smolvla-gruppen till ungefär 10 till 16 GB topp-VRAM vid batch 8 med AdamW. Därav 24 GB.
  • Startpunkten är lerobot-train. Blogginlägget om SmolVLA från juni 2025 skriver fortfarande ut python lerobot/scripts/train.py, en sökväg som inte längre existerar. Allt nedan är lerobot 0.6.1.
  • Cosinusschemat är förinställt att avta över 30000 steg. lerobot 0.6.1 skalar ner det för en kortare körning och loggar det, men aldrig upp: standardkörningen på 100000 steg slutar på 2.5e-6-golvet under 70000 steg.
  • Trettio episoder är AY-Robots minimum, på en 24 GB-nivå som kostar 1 till 3 USD per körning jämfört med 4 till 12 för 80 GB-modellerna.

De flesta som vill ha en visionsspråk-aktionsmodell på en riktig arm stannar vid hårdvarugränsen. GR00T N1.7 och Pi0.5 är runt tre miljarder parametrar vardera och kräver en A100 80 GB eller en H100. Om du äger en speldator med ett RTX 4090, är det slutet på vägen. SmolVLA är undantaget: 450 M parametrar, inuti LeRobot, byggd för att finjusteras på ett konsumentkort och köras från en CPU.

Den manuella vägen först: installera lerobot, hämta lerobot/smolvla_base checkpointen, kör det riktiga kommandot, läs körningen medan den pågår. Sedan plattformsvägen, och var den inte hjälper.

Vad SmolVLA är, i siffror du kan kontrollera

SmolVLA är en flödesmatchning policy kopplad till en liten vision-språkmodell. Ryggraden är SmolVLM2-500M-Video-Instruct; artikeln behåller endast de första 16 lagren av dess språkmodell, begränsar varje kamerabild till 64 visuella tokens med en pixel shuffle istället för bildplattläggning, och varvar korsuppmärksamhet med ett självuppmärksamhetslager varannat block. Inferenskostnaden var en designbegränsning, inte en eftertanke.

EgenskapVärdeKälla
Totala parametrarabout 450 Mpaper
Åtgärdsexpertabout 100 M, flow matchingpaper
VLM-ryggradHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Använda VLM-lagerfirst 16 of the language modelnum_vlm_layers = 16
Visuella tokens per bildruta64, pixel shuffle, no tilingpaper
Förträning481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUspaper

Prestandatesterna är anledningen till att folk bryr sig om en 450 M-modell. På LIBERO uppnår den i genomsnitt 87,3 procent mot 76,5 för OpenVLA vid 7 B och 86,0 för en robotik-förtränad Pi0 vid 3,3 B; på Meta-World, 57,3 mot 47,9. På verklig SO-100-hårdvara ger multi-task-träning 75 procent på plocka och placera, 90 på stapling, 70 på sortering, med ett genomsnitt på 78,3, där ACT tränad per uppgift i genomsnitt uppnådde 48,3. Samma rader finns bredvid varje publicerad VLA i SmolVLA arena-post och jämförelsen mellan ACT och SmolVLA.

Den ärliga versionen av storleksanspråket

SmolVLA är inte bättre än en 3 B-modell på allt. Artikelns egen SO-101-tabell avslöjar det: 90 procents framgång inom distribution, 50 procent utanför den, på en plattform den aldrig förtränades på. Vad den däremot hävdar, och stöder, är att den jämfört med Pi0 tränar cirka 40 procent snabbare på 6 gånger mindre minne.

Varför ett 24 GB-kort är det rätta för första körningen

LeRobot levererar en beräkningsstorleksguide, den mest användbara sidan i repot för detta. Den grupperar policyer efter backbone-storlek och ger en VRAM-budget per grupp, mätt vid batchstorlek 8 med AdamW, lerobots standard. Optimeringsstatusen ensam lägger till 30 till 100 procent utöver en ren framåt- och bakåtpass, så dessa är inte enbart viktsiffror.

GruppPolicyerTopp-VRAM (batch 8, AdamW)Start-GPU:er
Lätt BCact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
Diffusiondiffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
Liten VLAsmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
Stor VLApi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
Multimodalgroot, eo1about 24 to 40 GBA100 40 GB+

Tio till sexton gigabyte vid batch 8 är argumentet: ett 24 GB-kort rymmer det plus dataladdaren. AY-Robots placerar SmolVLA på RTX 4090 eller vilket som helst 24 GB-kort, minst 30 episoder, LeRobot v3.0 data, 245 ms per åtgärdssteg. Hyrt, det är 2 till 5 timmar för 0.30 till 0.60 USD i timmen, cirka 1 till 3 USD per finjusterings körning, jämfört med 4 till 12 USD på 80 GB-nivån som GR00T och Pi0.5 behöver (prissättning). En misslyckad SmolVLA-körning är en kaffe; en misslyckad GR00T-körning, lunch.

AY-Robots kostnadstabell: kort per policy, körtid, pris per körning, antal episoder som behövs
SmolVLA och ACT ligger på 24 GB-raden, de tre 3 B-modellerna på 80 GB-raden.
Börja med SmolVLA istället för en 3 B-modell
Vad du får
  • Passar hårdvara du kanske redan äger: ungefär 10 till 16 GB vid batch 8.
  • En bortkastad körning kostar timmar och ensiffriga dollar, så du har råd att ha fel om datasetet.
  • Förtränad på gemenskapsdataset delade under lerobot-taggen, med verkliga SO-100- och SO-101-resultat.
  • Den finns i lerobot själv: inget leverantörsrepo, och smolvla_base är inte spärrad.
Vad du ger upp
  • 450 M är fortfarande 450 M: framgång utanför distributionen sjunker från 90 till 50 procent i artikelns SO-101-tabell.
  • Den vill ha LeRobot v3.0-data; en v2.1-inspelning måste konverteras (dataset rejected v3).
  • 245 ms per åtgärdssteg är en kompetent pick-and-place-kontroller, inte en reaktiv.
  • Dokumentationsexemplet kör batch 64 på en A100; på 24 GB byter du batch mot väggklocka.

Steg 0: datasetet avgör körningen, inte flaggorna

Inget nedan spelar roll om inspelningen är dålig. LeRobot SmolVLA-sidan är rakt på sak: referensdatasetet var 50 episoder över 5 kubpositioner, 10 per position, och samma uppgift med 25 episoder presterade dåligt. Repetition per variation generaliserar, rått episodantal gör det inte. Har du aldrig spelat in en? Börja med spela in ditt första dataset med skrivbordsklienten, som skriver LeRobot-format från en teleoperation-session, eller låna en från datasetkatalogen.

  • Minst 30 avsnitt på AY-Robots, cirka 50 för LeRobot referensreceptet.
  • Varje variation du förväntar dig vid utrullning, upprepad flera gånger.
  • En uppgiftssträng, stavat identiskt vid inspelnings- och utrullningstillfället. Modellen är villkorad av den texten.
  • Fasta kameror. En kamera som flyttats mellan inspelning och utrullning är den vanligaste anledningen till att en ren förlustkurva ger en orörlig arm.
  • En undanhållen variation du aldrig tränat på, så att du har något ärligt att testa mot.
Datasetfällan som kostar en dag

SmolVLA, Pi0.5 och ACT vill ha LeRobot v3.0. GR00T N1.7 och N1.5 vill ha v2.0 eller v2.1 och deras laddare kraschar på v3.0. Spela in en gång, planera att jämföra modeller senare, och du kommer att konvertera på ett eller annat sätt: dataset rejected 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
Konverteraren levereras med lerobot, så det finns inget extra att installera. Det finns ingen konverterare i den andra riktningen i paketet.

Mer om detta i hur man samlar in högkvalitativ VLA-träningsdata. Den korta versionen: 30 till 50 rena avsnitt av en uppgift med avsiktlig variation slår 200 slarviga avsnitt av tre, med en marginal som ingen hyperparameter kan överbrygga.

Installera lerobot 0.6.1

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
PyPI-sökvägen. För att patcha tränaren, klona repot och använd istället pip install -e ".[smolvla,training]".

Bas-lerobot installationen är tunn och döljer tunga beroenden bakom tillägg: smolvla lägger till transformers, num2words och accelerate, training dataset-stacken och wandb, och core_scripts hårdvaru- och visualiseringsberoendena. På Linux bestämmer installationssökvägen även din CUDA-wheel: PyPI-standard är en cu130-wheel med ett drivrutinsgolv på 580.65, så med en äldre drivrutin installerar du torch från cu128-indexet först, sedan lerobot.

policy.path och policy.type är inte samma flagga

--policy.path=lerobot/smolvla_base laddar den förtränade 450 M checkpointen och finjusterar den. --policy.type=smolvla bygger en ny SmolVLA, och konfigurationsstandardvärdet load_vlm_weights = False innebär att den inte ens hämtar SmolVLM2-ryggradsvikterna om du inte ber om det. Gör du fel tränar körningen glatt, kostar lika mycket och lär sig inget överförbart.

Träningskörningen, kommando för kommando

  1. 1
    Autentisera mot Hubben

    Bas-checkpointen kommer från Hubben, och ditt dataset gör det förmodligen också.

    bash
    hf auth login
  2. 2
    Läs alternativen en gång

    Varje fält i pipeline- och policykonfigurationen är en flagga. Skumma igenom den innan du gräver i källkoden.

    bash
    lerobot-train --help
  3. 3
    Starta finjusteringen

    Exemplet i dokumentationen kör batch 64 på en enda A100; beräkningsguidens egen A100 40 GB-referens är batch 16, och 8 är motsvarigheten för 24 GB. Ingen scheduler-flagga här med avsikt, se nedan.

    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
    Läs loggraden, inte bara förlusten

    Varje --log_freq steg skriver lerobot ut loss, grdn, lr, updt_s, data_s, smp/s och, på CUDA, mem_gb. mem_gb anger om batchen får plats, lr om schemat avtar, och data_s som närmar sig updt_s betyder att dataloadern är flaskhalsen, inte GPU:n.

    bash
    # if data_s creeps toward updt_s
    lerobot-train ... --num_workers=8
  5. 5
    Samla checkpoints du kan jämföra

    save_freq är som standard 20000, så en körning på 20000 steg lämnar en checkpoint och inget att jämföra den med. Sätt 2000. Att pusha till Hubben kräver --policy.repo_id.

    bash
    --save_freq=2000 \
    --policy.repo_id=${HF_USER}/smolvla_pick_place \
    --save_checkpoint_to_hub=true
  6. 6
    Återuppta om maskinen dör

    Peka --config_path mot train_config.json bredvid checkpointen. lerobot vägrar att starta i en befintlig output_dir om du inte återupptar, så du kan inte skriva över en körning av misstag.

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

Flaggorna som faktiskt ändrar resultatet

FlaggaVad den görPå 24 GB
--batch_sizeExempel per steg, ungefär linjärt med VRAM4 till 8
--stepsTotalt antal optimeringssteg20000 första passet
--policy.scheduler_decay_stepsLängd för cosinusavtagande, förinställt 30000Påverkar endast över 30000
--policy.use_ampBlandad precision; SmolVLA har inget dtype-fälttrue när minnet är begränsat
--num_workersDataloader-processer, standard 4Öka tills data_s slutar klättra
--dataset.eval_splitAndel avsnitt som hålls undan per uppgift0.1, med --eval_steps
--policy.freeze_vision_encoderHåller vision-tornet frysttrue på 24 GB
--policy.train_expert_onlyEndast ~100 M experten får gradientertrue först
Schemat: vad 0.6.1 hanterar, och vad det inte gör

SmolVLA förinställer ett cosinusschema: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Äldre råd säger att en körning på 20000 steg därför stannar mitt i nedgången. I 0.6.1 gör den inte det: `CosineDecayWithWarmupSchedulerConfig.build()` får `--steps`, och under `num_decay_steps` skalar den om båda, uppvärmning 1000 till 666 och nedgång 30000 till 20000, och skriver ut Auto-scaling LR scheduler när den gör det. Den skalar aldrig uppåt: nedgången är begränsad med `min(current_step, decay_steps)`, så standard `--steps=100000` ligger på botten från steg 30000 till slutet, 70 procent av körningen. Endast den långa sidan behöver fortfarande `--policy.scheduler_decay_steps`. Kolumnen `lr` är där du kontrollerar.

Standardinställningarna du ärver om du inte rör något

En policy konfiguration i lerobot har sin egen optimerare och schemaläggare förinställd, och om du inte ställer in use_policy_training_preset=false vinner dessa förinställningar. Hälften av frågorna folk ställer om SmolVLA-träning besvaras av en standardinställning de inte visste fanns.

InställningStandard i lerobot 0.6.1Definierad i
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

De två rader som överraskar folk är freeze_vision_encoder och train_expert_only, båda sanna. Direkt ur lådan tränar du ungefär 100 M parametrar, inte 450 M, vilket är anledningen till att det passar på 24 GB. LeRobots egen referenskörning på ett H100-kluster med fyra GPU:er ändrar båda till falskt; på ett 24 GB-kort förvandlar det en fungerande körning till .

Minnesreglaget som inte finns

Guidens råd när du är minnesbegränsad är att sänka batchstorleken och använda gradientackumulering för att återställa den effektiva batchen. Det finns ingen gradientackumulering i lerobot 0.6.1: TrainPipelineConfig har inget sådant fält och strängen förekommer ingenstans i det släppta paketet. AY-Robots-formuläret visar ett gradientackumuleringsvärde på 8 för SmolVLA och tillämpar det inte heller. Dina spakar på 24 GB är --batch_size, de två frysstandardinställningarna och --policy.use_amp.

Hur lång tid körningen tar, och hur många steg som är tillräckligt

LeRobot publicerar referenspunkter för realtidsklockan för fem epoker över en dataset med ungefär 50 avsnitt, cirka 45000 bildrutor vid 30 fps. Storleksordningssiffror, säger dokumentationen, men de är skillnaden mellan att förvänta sig en timme och en dag.

KonfigurationPolicyBatchRealtid
Single L4 / A10G (24 GB)smolvla4about 3 to 6 h
Single A100 40 GBsmolvla16about 1 to 2 h
4 x H100 80 GB with acceleratesmolvla32about 1 to 2 h
Single RTX 4090 / RTX 3090 (24 GB)act8about 30 to 60 min
Gör epokberäkningen innan du väljer --steps

Regeln är 5 till 10 epoker över datamängden, inte ett fast antal steg: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). På referensdatamängden som dokumentationen pekar på, lerobot/svla_so100_pickplace, rapporterar metadata 50 episoder och 19631 bildrutor: batch 8 ger cirka 2454 steg per epok, så 20000 steg är ungefär 8 epoker. Halvera batchen och samma budget ger hälften så många epoker, så gör om detta när du ändrar --batch_size.

Köra den finjusterade policyn tillbaka på armen

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
Uppgiftssträngen måste matcha den du spelade in med. Modellen är villkorad av den texten, så en parafras är en annan instruktion.

De 245 ms per åtgärdssteg är lätta att misstolka: policyn avger chunk_size = 50 åtgärder per framåtkörning och exekverar n_action_steps = 50 av dem, så hur ofta du betalar den kostnaden styrs av dessa parametrar, inte av hur ofta servona får ett kommando. Det är vad åtgärdschunkning köper, och varför en 245 ms modell kan driva en 30 Hz arm. Vad som återstår är inferenslatens i slutet av chunken.

Mätning (SmolVLA, verklig SO-100)SynkronAsynkron
Slutförandetid, plocka och placera, 10 försök13.75 s9.70 s
Plocka och placera-cykler i ett fast tidsfönster919
Framgångsfrekvens i genomsnitt över de tre uppgifterna78.3 %73.3 %

Den tredje raden är vad de flesta rapporter utelämnar. Asynkron inferens är cirka 30 procent snabbare och fördubblar ungefär genomströmningen i ett fast tidsfönster, och artikeln kallar framgångsfrekvenserna jämförbara, vilket de i genomsnitt är. Under ytan sjönk sorteringen från 70 till 50 procent medan plocka och placera ökade med 5. lerobot 0.6.1 bär den andra spaken i samma binärfil: --inference.type=rtc växlar utrullningen till realtidschunkning, vilket skriptets eget användningsblock rekommenderar för de långsamma VLA:erna, Pi0, Pi0.5 och SmolVLA.

Inferensen måste sitta bredvid servona

Kontrollloopen är 20 till 485 ms per åtgärdssteg beroende på modell, och rundresor över det publika internet gör en fungerande policy tveksam. Fjärrinferens är genomförbart för långsam plocka och placera, inte snabb reaktiv rörelse: om uppgiften kräver snabba korrigeringar, hör GPU:n hemma på samma LAN som armen.

7.4 V, inte 12 V

Inte direkt relaterat till en träningskörning, men det avslutar fler SO-100-projekt än någon hyperparameter. Feetech STS3215-servona i SO-100 och SO-101 körs på 7.4 V; 12 V förstör dem. LeKiwi blandar en 7.4 V arm med en 12 V bas, vilket är hur fel DC-kontakt hittar fel uttag.

Två vägar till samma checkpoint

Du äger maskinen, miljön och felsökningen. Den enda molnberoendet är Hub-nedladdningen av bas-checkpointen. Rätt väg om du vill modifiera policyn, om datan inte kan lämna ditt nätverk, eller om kortet är ledigt.

  • Du kontrollerar CUDA-drivrutinen, drivrutinen, ffmpeg-byggnaden och dataloadern.
  • Du kan patcha configuration_smolvla.py och träna om samma eftermiddag.
  • Du betalar i el och tid, inte per körning, och felsöker TorchCodec själv.
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
Hela den manuella vägen i ett block, lerobot 0.6.1.

När SmolVLA är fel val

Testet för om SmolVLA var den rätta första körningen är inte om det fungerade, utan om felet berättade något. Nå 60 eller 70 procent och en större modell är en rimlig nästa investering: datan bär signal. Nå 10 procent och en 3 B-modell når troligen också 10 procent, vilket du just lärde dig för tre dollar istället för tolv.

AY-Robots träningsmatris: fem policyer som rader, fyra robotarmar som kolumner
Varje cell är sin egen guide. SmolVLA har en för var och en av de fyra armarna.

Värt att läsa innan du spenderar mer: Pi0.5 mot SmolVLA för mer kapacitet på samma idé, och GR00T N1.7 mot SmolVLA för NVIDIA-vägen, båda 80 GB-nivån till 4 till 12 USD per körning. Den andra vägen, ACT är den billigare baslinjen: 80 M parametrar, 20 ms per åtgärdssteg, ingen språkkonditionering. Alla fem finns på policysidan; arenan har 85 modeller och 332 benchmarkresultat.

AY-Robots policyjämförelse: parametrar, GPU-nivå, latens, minimiepisode
De fyra siffrorna som avgör en körning.

Checklistan innan du skalar något

  1. Nådde lr sin 2.5e-6 gräns? Under 30000 steg skalar lerobot om avklingningen och meddelar detta vid start; över det, ställ in --policy.scheduler_decay_steps själv.
  2. Mer än en checkpoint, och episoder undanhållna med --dataset.eval_split så att eval-förlusten betyder något.
  3. Rör sig policyn överhuvudtaget? En fallande förlust med en orörlig arm har specifika orsaker: förlusten faller, policyn gör ingenting.
  4. Överlever den ett miljöbyte? Om inte: policyn fungerar bara i en konfiguration.
  5. Skrev du ner seedet? lerobot använder 1000 som standard, så två orörda körningar förblir jämförbara.
  6. Först då: fler episoder, mer variation, eller en större modell. I den ordningen.

För varför dessa modeller existerar och vad de gör med språkinmatningen, är bakgrunden; går igenom montering från till den första . För den färdiga checkpointen, ; om armen aldrig dyker upp, .

Träna SmolVLA på din egen arm

Välj modell och arm så ger guiden dig de exakta standardinställningarna, datasetformatet och vad körningen kostar. SmolVLA ligger på 24 GB-nivån till 1 till 3 USD per körning.

Öppna träningsguiderna
Kan jag verkligen finjustera SmolVLA på ett RTX 4090?

Ja. LeRobots beräkningsguide anger SmolVLA till ungefär 10 till 16 GB topp-VRAM vid batch 8 med AdamW och listar 24 GB konsumentkort som bekväma för det. Batch 64 i dokumentationsexemplet är parat med ett enda A100. Minnet skalas ungefär linjärt med batch, så använd 4 eller 8 och håll koll på mem_gb.

Hur många episoder behöver jag egentligen?

AY-Robots sätter minimum till 30. LeRobot-dokumentationen rekommenderar cirka 50 och rapporterar att 25 episoder av samma uppgift presterade dåligt. Struktur slår antal: referensuppsättningen var 5 kubpositioner med 10 episoder vardera, och den upprepningen är det som generaliserar.

Dokumentationen säger batch 64, plattformen skickar batch 2. Vilket är rätt?

Båda, för olika hårdvara. Dokumentationsexemplet använder batch 64 och anger cirka 4 timmar för 20000 steg på ett enda A100; beräkningsguidens A100 40 GB-ankare är batch 16. Batch 2 är vad AY-Robots skickar på 24 GB-nivån. Lokalt är 4 till 8 mitten, och epokaritmetiken ändras med det.

SmolVLA eller ACT för en första körning på en SO-100?

ACT om uppgiften är en repetitiv rörelse och du vill ha den snabbaste loopen: 20 ms per åtgärdssteg, 80 M parametrar, ingen språkkonditionering. SmolVLA om du vill ha språkkonditionering, flera uppgiftssträngar i en checkpoint och en förtränad bas. Båda ligger på 24 GB-nivån, så valet är uppgiften, inte budgeten.

Måste jag ställa in --policy.scheduler_decay_steps?

Endast när --steps är över 30000. SmolVLA förinställer cosinusavfallet vid 30000 steg, och lerobot 0.6.1 skalar ner det själv för en kortare körning, och loggar "Auto-scaling LR scheduler" när det sker. Det skalar aldrig upp, så standard --steps=100000 lämnar de sista 70000 stegen på 2.5e-6-golvet.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started