
SmolVLA to VLA z 450 milionami parametrów, które można dostroić na pojedynczej karcie 24 GB. Prawdziwe komendy lerobot 0.6.1, rzeczywiste wartości domyślne, pułapki, które kosztują dzień pracy, oraz koszt uruchomienia.
SmolVLA na jednym ekranie
- •450 M parametrów, z czego około 100 M to ekspert akcji dopasowujący przepływ. lerobot trenuje tylko tego eksperta i utrzymuje VLM w stanie zamrożonym, dlatego mieści się na jednej karcie.
- •Przewodnik obliczeniowy LeRobot szacuje grupę smolvla na około 10 do 16 GB szczytowej pamięci VRAM przy batchu 8 z AdamW. Stąd 24 GB.
- •Punktem wejścia jest lerobot-train. Post na blogu SmolVLA z czerwca 2025 roku nadal wyświetla python lerobot/scripts/train.py, ścieżkę, która już nie istnieje. Wszystko poniżej dotyczy lerobot 0.6.1.
- •Harmonogram cosinusowy jest wstępnie ustawiony na zanik w ciągu 30000 kroków. lerobot 0.6.1 skaluje to w dół dla krótszego przebiegu i loguje, ale nigdy w górę: standardowy przebieg 100000 kroków kończy się na poziomie 2.5e-6 przez 70000 kroków.
- •Trzydzieści epizodów to minimum AY-Robots, na poziomie 24 GB kosztującym 1 do 3 USD za uruchomienie w porównaniu do 4 do 12 dla modeli 80 GB.
Większość ludzi, którzy chcą modelu wizualno-językowo-akcyjnego na prawdziwym ramieniu, zatrzymuje się na linii sprzętowej. GR00T N1.7 i Pi0.5 mają po około trzy miliardy parametrów i wymagają A100 80 GB lub H100. Jeśli posiadasz komputer gamingowy z RTX 4090, to koniec drogi. SmolVLA jest wyjątkiem: 450 M parametrów, wewnątrz LeRobot, zbudowany do dostrajania na jednej karcie konsumenckiej i serwowania z procesora.
Najpierw droga manualna: zainstaluj lerobot, pobierz checkpoint lerobot/smolvla_base, uruchom prawdziwe polecenie, obserwuj przebieg. Następnie droga przez platformę i miejsca, gdzie nie pomaga.
Czym jest SmolVLA, w liczbach, które możesz sprawdzić
SmolVLA to dopasowywanie przepływu polityka zaimplementowana w małym wizyjnym modelu językowym. Podstawą jest SmolVLM2-500M-Video-Instruct; artykuł zachowuje tylko pierwsze 16 warstw jego modelu językowego, ogranicza każdą klatkę kamery do 64 tokenów wizualnych z przetasowaniem pikseli zamiast kafelkowania obrazu i przeplata uwagę krzyżową z warstwą uwagi własnej co drugi blok. Koszt wnioskowania był ograniczeniem projektowym, a nie kwestią drugorzędną.
| Właściwość | Wartość | Źródło |
|---|---|---|
| Całkowita liczba parametrów | about 450 M | paper |
| Ekspert akcji | about 100 M, flow matching | paper |
| Podstawa VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Użyte warstwy VLM | first 16 of the language model | num_vlm_layers = 16 |
| Tokeny wizualne na klatkę | 64, pixel shuffle, no tiling | paper |
| Wstępne szkolenie | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
Benchmarki są powodem, dla którego ludzie zawracają sobie głowę modelem 450 M. Na LIBERO osiąga średnio 87,3 procenta w porównaniu do 76,5 dla OpenVLA o rozmiarze 7 B i 86,0 dla wstępnie wytrenowanego w robotyce Pi0 o rozmiarze 3,3 B; na Meta-World, 57,3 w porównaniu do 47,9. Na rzeczywistym sprzęcie SO-100, szkolenie wielozadaniowe daje 75 procent w zadaniach typu pick and place, 90 w układaniu, 70 w sortowaniu, średnio 78,3, gdzie ACT wytrenowany dla każdego zadania osiągnął średnio 48,3. Te same wiersze znajdują się obok każdego opublikowanego VLA w wpisie SmolVLA do areny oraz w porównaniu ACT ze SmolVLA.
SmolVLA nie jest lepszy od modelu 3 B we wszystkim. Własna tabela SO-101 z artykułu jest wymowna: 90 procent sukcesu w dystrybucji, 50 procent poza nią, na platformie, na której nigdy nie był wstępnie trenowany. To, co twierdzi i co potwierdza, to fakt, że w porównaniu do Pi0 trenuje się około 40 procent szybciej, zużywając 6 razy mniej pamięci.
Dlaczego karta 24 GB to dobry wybór na początek
LeRobot dostarcza przewodnik po rozmiarach obliczeniowych, najprzydatniejszą stronę w repozytorium w tym celu. Grupują one polityki według rozmiaru backbone i podają jedną kopertę VRAM na grupę, mierzoną przy rozmiarze wsadu 8 z AdamW, domyślnym dla lerobot. Sam stan optymalizatora dodaje od 30 do 100 procent w stosunku do samego przejścia w przód i w tył, więc nie są to wartości uwzględniające tylko wagi.
| Grupa | Polityki | Szczytowy VRAM (wsad 8, AdamW) | Rekomendowane GPU |
|---|---|---|---|
| Lekkie BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Dyfuzja | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| Małe VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| Duże VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Wielomodalne | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
Argumentem jest dziesięć do szesnastu gigabajtów przy rozmiarze wsadu 8: karta 24 GB mieści to plus dataloader. AY-Robots umieszcza SmolVLA na RTX 4090 lub dowolnej karcie 24 GB, minimum 30 epizodów, LeRobot v3.0 danych, 245 ms na krok akcji. Wynajęte, to jest od 2 do 5 godzin po 0.30 do 0.60 USD za godzinę, około 1 do 3 USD za dostrajanie uruchomienie, w porównaniu do 4 do 12 USD na poziomie 80 GB, którego potrzebują GR00T i Pi0.5 (cennik). Nieudane uruchomienie SmolVLA to koszt kawy; nieudane uruchomienie GR00T to koszt obiadu.

- Pasuje do sprzętu, który możesz już posiadać: około 10 do 16 GB przy batch 8.
- Zmarnowane uruchomienie kosztuje godziny i kilka dolarów, więc możesz pozwolić sobie na błąd w kwestii zbioru danych.
- Wstępnie wytrenowany na zbiorach danych społeczności udostępnionych pod tagiem lerobot, z rzeczywistymi wynikami SO-100 i SO-101.
- Żyje w samym lerobot: brak repozytorium dostawcy, a smolvla_base nie jest bramkowany.
- 450 M to wciąż 450 M: sukces poza dystrybucją spada z 90 do 50 procent w tabeli SO-101 artykułu.
- Wymaga danych LeRobot v3.0; nagranie v2.1 musi zostać przekonwertowane (dataset rejected v3).
- 245 ms na krok akcji to kompetentny kontroler typu pick and place, a nie reaktywny.
- Przykład z dokumentacji uruchamia batch 64 na A100; na 24 GB wymieniasz batch na czas rzeczywisty.
Krok 0: zbiór danych decyduje o uruchomieniu, a nie flagi
Nic poniżej nie ma znaczenia, jeśli nagranie jest złe. Strona LeRobot SmolVLA jest dosadna: referencyjny zbiór danych składał się z 50 epizodów w 5 pozycjach kostki, po 10 na pozycję, a to samo zadanie przy 25 epizodach wypadło źle. Powtórzenia na wariację uogólniają, surowa liczba epizodów nie. Nigdy nie nagrywałeś? Zacznij od nagrywania swojego pierwszego zbioru danych z klientem desktopowym, który zapisuje format LeRobot z sesji teleoperacji, lub pożycz jeden z katalogu zbiorów danych.
- Co najmniej 30 epizodów na AY-Robots, około 50 dla referencyjnej receptury LeRobot.
- Każda wariacja, której oczekujesz podczas wdrożenia, powtórzona kilkukrotnie.
- Jeden ciąg zadania, zapisany identycznie w czasie nagrywania i wdrożenia. Model jest warunkowany tym tekstem.
- Stałe kamery. Kamera przesunięta między nagrywaniem a wdrożeniem jest najczęstszym powodem, dla którego czysta krzywa strat daje nieruchome ramię.
- Wydzielona wariacja, na której nigdy nie trenowałeś, aby mieć coś uczciwego do testowania.
SmolVLA, Pi0.5 i ACT wymagają LeRobot v3.0. GR00T N1.7 i N1.5 wymagają v2.0 lub v2.1, a ich ładowarka ulega awarii na v3.0. Nagraj raz, zaplanuj porównanie modeli później, a i tak będziesz musiał dokonać konwersji w jedną lub drugą stronę: zbiór danych odrzucił v3.
# 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_placeWięcej na ten temat w jak zbierać wysokiej jakości dane treningowe VLA. Krótka wersja: 30 do 50 czystych epizodów jednego zadania z celową wariacją przewyższa 200 niedbałych epizodów trzech, z marginesem, którego żaden hiperparametr nie jest w stanie zamknąć.
Zainstaluj lerobot 0.6.1
# 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-infoPodstawowa instalacja lerobot jest lekka i ukrywa ciężkie zależności za dodatkami: smolvla dodaje transformery, num2words i accelerate, training stos danych i wandb, core_scripts zależności sprzętowe i wizualizacyjne. Na Linuksie ścieżka instalacji decyduje również o wersji CUDA wheel: domyślna wersja PyPI to cu130 wheel z minimalną wersją sterownika 580.65, więc na starszym sterowniku najpierw zainstaluj torch z indeksu cu128, a następnie lerobot.
--policy.path=lerobot/smolvla_base ładuje wstępnie wytrenowany punkt kontrolny 450 M i dostraja go. --policy.type=smolvla buduje świeży SmolVLA, a domyślna konfiguracja load_vlm_weights = False oznacza, że nie pobiera nawet wag rdzenia SmolVLM2, chyba że o to poprosisz. Jeśli popełnisz błąd, uruchomienie będzie przebiegać pomyślnie, kosztować tyle samo i nie nauczy się niczego, co można by przenieść.
Przebieg szkolenia, komenda po komendzie
- 1Uwierzytelnij się w Hub
Bazowy punkt kontrolny pochodzi z Hub, a Twój zestaw danych prawdopodobnie również.
bashhf auth login - 2Przeczytaj opcje raz
Każde pole konfiguracji potoku i polityki jest flagą. Przejrzyj je, zanim zagłębisz się w kod źródłowy.
bashlerobot-train --help - 3Rozpocznij dostrajanie
Przykład z dokumentacji uruchamia partię 64 na pojedynczym A100; własna kotwica A100 40 GB z przewodnika obliczeniowego to partia 16, a 8 to odpowiednik 24 GB. Celowo brak flagi harmonogramu, patrz poniżej.
bashlerobot-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 - 4Przeczytaj linię logu, nie tylko stratę
Co --log_freq kroków lerobot wyświetla loss, grdn, lr, updt_s, data_s, smp/s oraz, na CUDA, mem_gb. mem_gb informuje, czy partia mieści się w pamięci, lr czy harmonogram zanika, a data_s zbliżające się do updt_s oznacza, że wąskim gardłem jest dataloader, a nie GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Zbieraj punkty kontrolne, które możesz porównać
save_freq domyślnie wynosi 20000, więc uruchomienie na 20000 kroków pozostawia jeden punkt kontrolny i nic do porównania. Ustaw 2000. Wypychanie do Hub wymaga --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Wznów, jeśli maszyna się wyłączy
Wskaż --config_path na train_config.json obok punktu kontrolnego. lerobot odmawia uruchomienia w istniejącym output_dir, chyba że wznawiasz, więc nie możesz przypadkowo nadpisać uruchomienia.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Flagi, które faktycznie zmieniają wynik
| Flaga | Co robi | Na 24 GB |
|---|---|---|
| --batch_size | Próbki na krok, w przybliżeniu liniowe w VRAM | 4 do 8 |
| --steps | Całkowita liczba kroków optymalizatora | 20000 pierwsze przejście |
| --policy.scheduler_decay_steps | Długość zaniku cosinusowego, domyślnie 30000 | Działa tylko powyżej 30000 |
| --policy.use_amp | Mieszana precyzja; SmolVLA nie ma pola dtype | true, gdy pamięć jest ograniczona |
| --num_workers | Procesy dataloadera, domyślnie 4 | Zwiększaj, aż data_s przestanie rosnąć |
| --dataset.eval_split | Ułamek epizodów wstrzymanych na zadanie | 0.1, z --eval_steps |
| --policy.freeze_vision_encoder | Utrzymuje wieżę wizyjną zamrożoną | true na 24 GB |
| --policy.train_expert_only | Tylko ekspert ~100 M otrzymuje gradienty | true najpierw |
SmolVLA domyślnie ustawia harmonogram cosinusowy: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Starsze porady sugerują, że przebieg 20000 kroków zatrzymuje się w połowie zaniku. W wersji 0.6.1 tak się nie dzieje: `CosineDecayWithWarmupSchedulerConfig.build()` otrzymuje `--steps`, a poniżej `num_decay_steps` skaluje oba, rozgrzewkę z 1000 do 666 i zanik z 30000 do 20000, drukując przy tym Auto-scaling LR scheduler. Nigdy nie skaluje w górę: zanik jest ograniczony przez `min(current_step, decay_steps)`, więc domyślne `--steps=100000` pozostaje na minimalnym poziomie od kroku 30000 do końca, czyli przez 70 procent przebiegu. Tylko ta długa część nadal wymaga `--policy.scheduler_decay_steps`. Kolumna `lr` to miejsce, gdzie należy to sprawdzić.
Domyślne ustawienia, które dziedziczysz, jeśli niczego nie zmieniasz
Konfiguracja polityki w lerobot zawiera własny optymalizator i predefiniowany harmonogram, i chyba że ustawisz use_policy_training_preset=false te predefiniowane ustawienia mają pierwszeństwo. Połowa pytań, które ludzie zadają na temat treningu SmolVLA, znajduje odpowiedź w domyślnym ustawieniu, o którego istnieniu nie wiedzieli.
| Ustawienie | Domyślne w lerobot 0.6.1 | Zdefiniowane w |
|---|---|---|
| rozmiar_fragmentu / liczba_kroków_akcji | 50 / 50 | SmolVLAConfig |
| liczba_kroków (odszumianie dopasowania przepływu) | 10 | SmolVLAConfig |
| współczynnik_uczenia_optymalizatora | 1e-4 | SmolVLAConfig |
| kroki_rozgrzewki_harmonogramu | 1000 | SmolVLAConfig |
| kroki_zaniku_harmonogramu | 30000 | SmolVLAConfig |
| współczynnik_uczenia_zaniku_harmonogramu | 2.5e-6 | SmolVLAConfig |
| zamroź_koder_wizyjny | true | SmolVLAConfig |
| trenuj_tylko_eksperta | true | SmolVLAConfig |
| rozmiar_paczki / kroki | 8 / 100000 | TrainPipelineConfig |
| ziarno / częstotliwość_zapisu / liczba_pracowników | 1000 / 20000 / 4 | TrainPipelineConfig |
Dwie linie, które zaskakują ludzi, to freeze_vision_encoder i train_expert_only, obie ustawione na true. Domyślnie trenujesz około 100 M parametrów, a nie 450 M, dlatego mieści się to na 24 GB. Własne uruchomienie referencyjne LeRobot na klastrze czterech GPU H100 zmienia obie wartości na false; na jednej karcie 24 GB zamienia to działające uruchomienie w awarię z powodu braku pamięci.
Porada przewodnika, gdy masz ograniczenia pamięciowe, to zmniejszenie rozmiaru partii (batch size) i użycie akumulacji gradientów, aby odzyskać efektywną partię. W lerobot 0.6.1 nie ma akumulacji gradientów: TrainPipelineConfig nie ma takiego pola, a ten ciąg znaków nie pojawia się nigdzie w wydanym pakiecie. Formularz AY-Robots pokazuje wartość akumulacji gradientów równą 8 dla SmolVLA i również jej nie stosuje. Twoje dźwignie na 24 GB to --batch_size, dwie domyślne opcje zamrażania i --policy.use_amp.
Ile trwa uruchomienie i ile kroków wystarczy
LeRobot publikuje punkty odniesienia czasu rzeczywistego dla pięciu epok na zbiorze danych składającym się z około 50 epizodów, około 45000 klatek przy 30 fps. Są to wartości rzędu wielkości, jak podają dokumenty, ale stanowią różnicę między oczekiwaniem godziny a dnia.
| Konfiguracja | Polityka | Partia | Czas rzeczywisty |
|---|---|---|---|
| Pojedynczy L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| Pojedynczy A100 40 GB | smolvla | 16 | about 1 to 2 h |
| 4 x H100 80 GB z akceleracją | smolvla | 32 | about 1 to 2 h |
| Pojedynczy RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
Zasada to 5 do 10 epok na zbiorze danych, a nie stała liczba kroków: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Na referencyjnym zbiorze danych, na który wskazują dokumenty, lerobot/svla_so100_pickplace, metadane raportują 50 epizodów i 19631 klatek: partia 8 daje około 2454 kroków na epokę, więc 20000 kroków to w przybliżeniu 8 epok. Zmniejsz partię o połowę, a ten sam budżet kupi połowę epok, więc powtórz to za każdym razem, gdy zmienisz --batch_size.
Uruchamianie dostrojonej polityki z powrotem na ramieniu
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_place245 ms na krok akcji łatwo źle zinterpretować: polityka emituje chunk_size = 50 akcji na jedno przejście do przodu i wykonuje n_action_steps = 50 z nich, więc to, jak często ponosisz ten koszt, jest ustalane przez te parametry, a nie przez to, jak często serwa otrzymują polecenie. To właśnie fragmentowanie akcji zapewnia i dlatego model 245 ms może sterować ramieniem 30 Hz. Pozostaje opóźnienie wnioskowania na koniec fragmentu.
| Pomiar (SmolVLA, rzeczywisty SO-100) | Synchroniczny | Asynchroniczny |
|---|---|---|
| Czas ukończenia, podnieś i umieść, 10 prób | 13.75 s | 9.70 s |
| Cykle podnieś i umieść w stałym oknie czasowym | 9 | 19 |
| Współczynnik sukcesu uśredniony dla trzech zadań | 78.3 % | 73.3 % |
Ten trzeci wiersz to coś, co większość opracowań pomija. Asynchroniczne wnioskowanie jest o około 30 procent szybsze i z grubsza podwaja przepustowość w stałym oknie czasowym, a artykuł określa wskaźniki sukcesu jako porównywalne, co średnio jest prawdą. Pod tym, sortowanie spadło z 70 do 50 procent, podczas gdy podnoszenie i umieszczanie zyskało 5. lerobot 0.6.1 zawiera drugą dźwignię w tym samym pliku binarnym: --inference.type=rtc przełącza wykonanie na fragmentowanie w czasie rzeczywistym, co blok użycia skryptu zaleca dla wolnych VLA, Pi0, Pi0.5 i SmolVLA.
Pętla sterowania wynosi od 20 do 485 ms na krok akcji w zależności od modelu, a dodatkowe opóźnienia związane z przesyłem danych przez publiczny internet zamieniają działającą politykę w niepewną. Zdalne wnioskowanie jest wykonalne dla wolnego podnoszenia i umieszczania, ale nie dla szybkiego ruchu reaktywnego: jeśli zadanie wymaga szybkich korekt, GPU powinno znajdować się w tej samej sieci LAN co ramię.
Nie na temat dla przebiegu szkoleniowego, ale to kończy więcej projektów SO-100 niż jakikolwiek hiperparametr. Serwa Feetech STS3215 w SO-100 i SO-101 działają na 7.4 V; 12 V je niszczy. LeKiwi łączy ramię 7.4 V z podstawą 12 V, co jest powodem, dla którego niewłaściwy wtyk zasilania trafia do niewłaściwego gniazda.
Dwie drogi do tego samego punktu kontrolnego
Jesteś właścicielem maszyny, środowiska i debugowania. Jedyną zależnością chmurową jest pobranie bazowego punktu kontrolnego z Hubu. Właściwa droga, jeśli chcesz zmodyfikować politykę, jeśli dane nie mogą opuścić Twojej sieci lub jeśli karta jest bezczynna.
- Kontrolujesz stos CUDA, sterownik, kompilację ffmpeg i dataloader.
- Możesz załatać configuration_smolvla.py i ponownie trenować tego samego popołudnia.
- Płacisz za prąd i czas, nie za uruchomienie, i samodzielnie debugujesz TorchCodec.
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=trueTen sam przebieg za formularzem: wybierasz model i zbiór danych, backend wynajmuje GPU o wymaganej pamięci VRAM, uruchamia trener i zapisuje punkty kontrolne do pamięci obiektowej. Zbiór danych może pochodzić z repozytorium Hugging Face, publicznego katalogu, lub z Twojej maszyny. Zacznij od SmolVLA na SO-100, lub od macierzy na stronie szkoleniowej.
| Pole | Domyślne wartości wysyłane przez platformę dla SmolVLA | Uwaga |
|---|---|---|
| rozmiar wsadu | 2 | Zachowawczo dla warstwy 24 GB |
| tempo uczenia | 1e-4 | Ustawienie domyślne lerobot |
| maksymalna liczba kroków | 20000 | Uruchomienie referencyjne w dokumentacji LeRobot |
| akumulacja gradientu | 8 | Pokazane w formularzu, nie zastosowane |
| dodatkowe parametry | seed, logFreq | Seed sprawia, że uruchomienie jest powtarzalne |
- 2 do 5 godzin na warstwie 24 GB, około 1 do 3 USD za uruchomienie.
- Te same operacje z terminala pod /cli i od agentów AI pod /mcp.
- Pody inferencyjne posiadają bezczynny watchdog, więc zapomniany pod niszczy się sam, zamiast cicho naliczać opłaty.
- Nie masz jeszcze ramienia? /live transmituje fizyczny SO-100, którym możesz sterować bez rejestracji.
Zadanie utknięte w kolejce to objaw rynku spot, a nie błąd: zadanie szkoleniowe utknęło w kolejce. Krok po kroku: szkolenie pierwszej polityki i dokumentacja szkoleniowa.
Kiedy SmolVLA jest złym wyborem
Testem na to, czy SmolVLA był właściwym pierwszym uruchomieniem, nie jest to, czy zadziałał, ale to, czy awaria czegoś cię nauczyła. Osiągnij 60 lub 70 procent, a większy model jest rozsądnym kolejnym wydatkiem: dane niosą sygnał. Osiągnij 10 procent, a model 3 B najprawdopodobniej również osiągnie 10 procent, czego właśnie nauczyłeś się za trzy dolary zamiast dwunastu.

Warto przeczytać przed wydaniem więcej: Pi0.5 kontra SmolVLA dla większej pojemności na tej samej idei, oraz GR00T N1.7 kontra SmolVLA dla ścieżki NVIDIA, oba w tierze 80 GB za 4 do 12 USD za uruchomienie. Inna opcja, ACT to tańsza podstawa: 80 M parametrów, 20 ms na krok akcji, bez warunkowania językowego. Wszystkie pięć znajduje się na stronie polityk; arenie ma 85 modeli i 332 wyniki benchmarków.

Lista kontrolna przed skalowaniem czegokolwiek
- Czy
lrosiągnął swój dolny limit 2.5e-6? Poniżej 30000 kroków lerobot przeskalowuje zanik i informuje o tym przy uruchomieniu; powyżej, ustaw--policy.scheduler_decay_stepssamodzielnie. - Więcej niż jeden punkt kontrolny i epizody wyłączone z
--dataset.eval_split, aby strata ewaluacyjna miała sens. - Czy polityka w ogóle się porusza? Spadająca strata przy nieruchomym ramieniu ma konkretne przyczyny: strata spada, polityka nic nie robi.
- Czy przetrwa zmianę sceny? Jeśli nie: polityka działa tylko w jednej konfiguracji.
- Czy zapisałeś ziarno? lerobot domyślnie ustawia 1000, więc dwa nietknięte uruchomienia pozostają porównywalne.
- Tylko wtedy: więcej epizodów, więcej wariacji lub większy model. W tej kolejności.
Aby dowiedzieć się, dlaczego te modele istnieją i co robią z danymi językowymi, to podstawa; przeprowadza montaż poprzez do pierwszego uruchomienia . Aby uruchomić ukończony punkt kontrolny, ; jeśli ramię nigdy się nie pojawi, .
Trenuj SmolVLA na własnym ramieniu
Wybierz model i ramię, a przewodnik poda dokładne wartości domyślne, format zbioru danych i koszty uruchomienia. SmolVLA działa na warstwie 24 GB w cenie od 1 do 3 USD za uruchomienie.
Otwórz przewodniki szkolenioweCzy naprawdę mogę dostroić SmolVLA na karcie RTX 4090?▾
Tak. Przewodnik obliczeniowy LeRobot wskazuje, że SmolVLA wymaga około 10 do 16 GB szczytowej pamięci VRAM przy partii 8 z AdamW i wymienia karty konsumenckie 24 GB jako dla niego komfortowe. Partia 64 w przykładzie z dokumentacji jest sparowana z pojedynczym A100. Pamięć skaluje się mniej więcej liniowo z partią, więc użyj 4 lub 8 i obserwuj mem_gb.
Ile epizodów faktycznie potrzebuję?▾
AY-Robots ustala minimum na 30. Dokumentacja LeRobot zaleca około 50 i informuje, że 25 epizodów tego samego zadania wypadło słabo. Struktura jest ważniejsza niż liczba: zestaw referencyjny składał się z 5 pozycji kostki po 10 epizodów każda, i to właśnie ta powtarzalność uogólnia.
Dokumentacja mówi partia 64, platforma wysyła partię 2. Która jest prawidłowa?▾
Obie, dla różnego sprzętu. Przykład z dokumentacji używa partii 64 i podaje około 4 godzin dla 20000 kroków na pojedynczym A100; punkt odniesienia dla A100 40 GB w przewodniku obliczeniowym to partia 16. Partia 2 to to, co AY-Robots wysyła na poziomie 24 GB. Lokalnie 4 do 8 to środek, a arytmetyka epok zmienia się wraz z tym.
SmolVLA czy ACT na pierwsze uruchomienie na SO-100?▾
ACT, jeśli zadanie to jeden powtarzalny ruch i chcesz najszybszej pętli: 20 ms na krok akcji, 80 M parametrów, bez warunkowania językowego. SmolVLA, jeśli chcesz warunkowania językowego, kilka ciągów zadań w jednym punkcie kontrolnym i wstępnie wytrenowaną bazę. Oba mieszczą się na poziomie 24 GB, więc wybór zależy od zadania, a nie od budżetu.
Czy muszę ustawiać --policy.scheduler_decay_steps?▾
Tylko gdy --steps jest powyżej 30000. SmolVLA domyślnie ustawia zanik cosinusowy na 30000 kroków, a lerobot 0.6.1 samodzielnie go przeskalowuje w dół dla krótszego przebiegu, logując „Auto-scaling LR scheduler”, gdy to robi. Nigdy nie skaluje w górę, więc domyślne --steps=100000 pozostawia ostatnie 70000 kroków na poziomie 2.5e-6.
Sources
- SmolVLA: Model Wizualno-Językowo-Akcyjny dla Przystępnej Cenowo i Wydajnej Robotyki
- SmolVLA: Wydajny Model Wizualno-Językowo-Akcyjny (blog Hugging Face)
- Karta modelu lerobot/smolvla_base
- Dokumentacja LeRobot: SmolVLA
- Dokumentacja LeRobot: Przewodnik po Sprzęcie Obliczeniowym do Treningu LeRobot
- Dokumentacja LeRobot: Instalacja
- Dokumentacja LeRobot: LeRobotDataset v3.0 i konwerter v2.1
- Dokumentacja LeRobot: Asynchroniczna Inferencia
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategie i inferencja RTC)
- lerobot v0.6.1: pyproject.toml (dodatki i punkty wejścia konsoli)
- lerobot na PyPI
- Zbiór danych lerobot/svla_so100_pickplace (50 epizodów, 19631 klatek, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started