
SmolVLA — это VLA с 450 миллионами параметров, который дообучается на одной карте с 24 ГБ. Реальные команды lerobot 0.6.1, фактические значения по умолчанию, подводные камни, которые могут стоить дня работы, и стоимость одного запуска.
SmolVLA на одном экране
- •450 млн параметров, около 100 млн из них — эксперт по сопоставлению потоков действий. lerobot обучает только этого эксперта и сохраняет VLM замороженным, поэтому он помещается на одной карте.
- •Руководство по вычислениям LeRobot указывает, что группа smolvla требует примерно от 10 до 16 ГБ пиковой видеопамяти при размере пакета 8 с AdamW. Отсюда 24 ГБ.
- •Точкой входа является lerobot-train. В блоге SmolVLA от июня 2025 года по-прежнему указывается python lerobot/scripts/train.py, путь, который больше не существует. Все ниже относится к lerobot 0.6.1.
- •Косинусное расписание предустановлено на затухание в течение 30000 шагов. lerobot 0.6.1 масштабирует его вниз для более короткого запуска и логирует это, но никогда не масштабирует вверх: стандартный запуск на 100000 шагов заканчивается на уровне 2.5e-6 в течение 70000 шагов.
- •Тридцать эпизодов — это минимум для AY-Robots, на уровне 24 ГБ стоимостью от 1 до 3 USD за запуск по сравнению с 4 до 12 USD для моделей на 80 ГБ.
Большинство людей, которые хотят модель зрения, языка и действий на реальной руке, останавливаются на аппаратной части. GR00T N1.7 и Pi0.5 имеют около трех миллиардов параметров каждая и требуют A100 80 ГБ или H100. Если у вас игровой ПК с RTX 4090, то это конец пути. SmolVLA является исключением: 450 млн параметров, внутри LeRobot, созданная для тонкой настройки на одной потребительской карте и обслуживания с CPU.
Сначала ручной путь: установите lerobot, загрузите контрольную точку lerobot/smolvla_base, запустите реальную команду, читайте вывод во время выполнения. Затем путь через платформу и то, где он не помогает.
Что такое SmolVLA, в числах, которые можно проверить
SmolVLA — это согласование потоков политика, прикрепленная к небольшой визуально-языковой модели. Основой является SmolVLM2-500M-Video-Instruct; в статье сохраняются только первые 16 слоев ее языковой модели, каждый кадр камеры ограничивается 64 визуальными токенами с перемешиванием пикселей вместо мозаичного расположения изображений, и перекрестное внимание чередуется со слоем самовнимания через каждый второй блок. Стоимость инференса была проектным ограничением, а не второстепенной задачей.
| Свойство | Значение | Источник |
|---|---|---|
| Общее количество параметров | about 450 M | paper |
| Эксперт по действиям | about 100 M, flow matching | paper |
| Основа VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Используемые слои VLM | first 16 of the language model | num_vlm_layers = 16 |
| Визуальные токены на кадр | 64, pixel shuffle, no tiling | paper |
| Предварительное обучение | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
Бенчмарки объясняют, почему люди обращают внимание на модель с 450 миллионами параметров. На LIBERO она показывает в среднем 87,3 процента против 76,5 у OpenVLA (7 млрд) и 86,0 у Pi0 (3,3 млрд), предварительно обученной для робототехники; на Meta-World — 57,3 против 47,9. На реальном оборудовании SO-100 многозадачное обучение дает 75 процентов на задачах «взять и положить», 90 на укладке, 70 на сортировке, в среднем 78,3, тогда как ACT, обученная для каждой задачи, в среднем показала 48,3. Те же строки находятся рядом с каждой опубликованной VLA в записи арены SmolVLA и в сравнении ACT со SmolVLA.
SmolVLA не превосходит 3-миллиардную модель во всем. Таблица SO-101 из самой статьи является показателем: 90 процентов успеха в распределении, 50 процентов вне его, на платформе, на которой она никогда не обучалась. Что она действительно утверждает и подтверждает, так это то, что по сравнению с Pi0 она обучается примерно на 40 процентов быстрее, используя в 6 раз меньше памяти.
Почему карта на 24 ГБ — правильный выбор для первого запуска
LeRobot поставляет руководство по расчету вычислительных ресурсов, самую полезную страницу в репозитории для этой цели. Оно группирует политики по размеру бэкбона и предоставляет один объем VRAM на группу, измеренный при размере батча 8 с AdamW, что является настройкой по умолчанию для lerobot. Только состояние оптимизатора добавляет от 30 до 100 процентов по сравнению с простым прямым и обратным проходом, поэтому это не только данные о весах.
| Группа | Политики | Пиковая VRAM (батч 8, AdamW) | Рекомендуемые GPU |
|---|---|---|---|
| Легкий BC | act, vqbet, tdmpc | около 2–6 ГБ | RTX 3060, L4 |
| Диффузия | diffusion, multi_task_dit | около 8–14 ГБ | RTX 4070+, L4 |
| Малый VLA | smolvla | около 10–16 ГБ | RTX 4080+, L4, A10G |
| Большой VLA | pi0, pi0_fast, pi05, xvla, wall_x | около 24–40 ГБ | A100 40 GB+ |
| Мультимодальный | groot, eo1 | около 24–40 ГБ | A100 40 GB+ |
Десять-шестнадцать гигабайт при размере батча 8 — вот аргумент: карта на 24 ГБ вмещает это плюс загрузчик данных. AY-Robots размещает SmolVLA на RTX 4090 или любой карте на 24 ГБ, минимум 30 эпизодов, LeRobot v3.0 данных, 245 ms за шаг действия. В аренду это 2–5 часов по 0.30–0.60 USD в час, около 1–3 USD за тонкую настройку запуск, против 4–12 USD на уровне 80 ГБ, который требуют GR00T и Pi0.5 (цены). Неудачный запуск SmolVLA — это стоимость кофе; неудачный запуск GR00T — стоимость обеда.

- Подходит для оборудования, которое у вас уже может быть: примерно 10–16 ГБ при размере пакета 8.
- Неудачный запуск стоит часов и нескольких долларов, поэтому вы можете позволить себе ошибиться с набором данных.
- Предварительно обучен на общедоступных наборах данных, распространяемых под тегом lerobot, с реальными результатами SO-100 и SO-101.
- Он находится в самом lerobot: нет репозитория поставщика, и smolvla_base не ограничен.
- 450 M — это все еще 450 M: успех вне распределения падает с 90 до 50 процентов в таблице SO-101 статьи.
- Требуются данные LeRobot v3.0; запись v2.1 должна быть преобразована (набор данных отклонен v3).
- 245 мс на шаг действия — это компетентный контроллер для операций «взять и положить», а не реактивный.
- Пример из документации запускает пакет 64 на A100; на 24 ГБ вы меняете размер пакета на реальное время выполнения.
Шаг 0: набор данных определяет запуск, а не флаги
Ничто из нижеперечисленного не имеет значения, если запись плохая. Страница LeRobot SmolVLA прямо заявляет: эталонный набор данных состоял из 50 эпизодов по 5 позициям куба, по 10 на позицию, и та же задача с 25 эпизодами выполнялась плохо. Повторение для каждой вариации обобщает, а общее количество эпизодов — нет. Никогда не записывали? Начните с записи вашего первого набора данных, с настольным клиентом, который записывает данные в формате LeRobot из сессии телеуправления, или возьмите один из каталога наборов данных.
- Не менее 30 эпизодов на AY-Robots, около 50 для эталонного рецепта LeRobot.
- Каждая вариация, которую вы ожидаете при развертывании, повторенная несколько раз.
- Одна строка задачи, написанная идентично во время записи и развертывания. Модель обусловлена этим текстом.
- Фиксированные камеры. Камера, перемещенная между записью и развертыванием, является наиболее частой причиной того, что чистая кривая потерь приводит к неподвижной руке.
- Отложенная вариация, на которой вы никогда не обучались, чтобы у вас было что-то честное для тестирования.
SmolVLA, Pi0.5 и ACT требуют LeRobot v3.0. GR00T N1.7 и N1.5 требуют v2.0 или v2.1 и их загрузчик аварийно завершает работу на v3.0. Запишите один раз, планируйте сравнить модели позже, и вы так или иначе конвертируете: dataset rejected 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_placeПодробнее об этом в как собирать высококачественные данные для обучения VLA. Краткая версия: от 30 до 50 чистых эпизодов одной задачи с преднамеренными вариациями превосходят 200 небрежных эпизодов из трех, с отрывом, который не может сократить ни один гиперпараметр.
Установка 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-infoБазовая установка lerobot является минимальной и скрывает тяжелые зависимости за дополнительными пакетами: smolvla добавляет transformers, num2words и accelerate, training — стек данных и wandb, core_scripts — зависимости для оборудования и визуализации. В Linux путь установки также определяет ваш CUDA-пакет: по умолчанию PyPI предлагает пакет cu130 с минимальной версией драйвера 580.65, поэтому при использовании более старого драйвера сначала установите torch из индекса cu128, а затем lerobot.
--policy.path=lerobot/smolvla_base загружает предварительно обученную контрольную точку на 450 М и донастраивает ее. --policy.type=smolvla создает новый SmolVLA, а значение по умолчанию в конфигурации load_vlm_weights = False означает, что он даже не загружает веса основы SmolVLM2, если вы не запросите это явно. Если вы ошибетесь, запуск будет успешно выполнен, стоить столько же, но не научит ничему передаваемому.
Запуск обучения, команда за командой
- 1Аутентификация в Hub
Базовая контрольная точка берется из Hub, и ваш набор данных, вероятно, тоже.
bashhf auth login - 2Ознакомьтесь с опциями
Каждое поле конфигурации пайплайна и политики является флагом. Просмотрите их, прежде чем углубляться в исходный код.
bashlerobot-train --help - 3Начните дообучение
Пример в документации запускает пакет 64 на одной A100; собственная привязка A100 40 ГБ в руководстве по вычислениям — это пакет 16, а 8 — эквивалент для 24 ГБ. Флаг планировщика здесь отсутствует намеренно, см. ниже.
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 - 4Читайте строку лога, а не только потери
Каждые --log_freq шагов lerobot выводит loss, grdn, lr, updt_s, data_s, smp/s и, на CUDA, mem_gb. mem_gb показывает, помещается ли пакет, lr — затухает ли расписание, а data_s, приближающийся к updt_s, означает, что узким местом является загрузчик данных, а не GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Собирайте контрольные точки для сравнения
save_freq по умолчанию равен 20000, поэтому запуск на 20000 шагов оставляет одну контрольную точку, и не с чем ее сравнивать. Установите 2000. Для отправки в Hub требуется --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Возобновите, если машина выйдет из строя
Укажите --config_path на train_config.json рядом с контрольной точкой. lerobot отказывается запускаться в существующий output_dir, если вы не возобновляете работу, поэтому вы не сможете случайно перезаписать запуск.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Флаги, которые действительно влияют на результат
| Флаг | Что делает | На 24 ГБ |
|---|---|---|
| --batch_size | Образцы за шаг, примерно линейно зависящие от VRAM | от 4 до 8 |
| --steps | Общее количество шагов оптимизатора | 20000 первый проход |
| --policy.scheduler_decay_steps | Длина косинусного затухания, предустановка 30000 | Влияет только после 30000 |
| --policy.use_amp | Смешанная точность; SmolVLA не имеет поля dtype | true при нехватке памяти |
| --num_workers | Процессы загрузчика данных, по умолчанию 4 | Увеличивайте, пока data_s не перестанет расти |
| --dataset.eval_split | Доля эпизодов, отложенных для каждой задачи | 0.1, с --eval_steps |
| --policy.freeze_vision_encoder | Сохраняет визуальный энкодер замороженным | true на 24 ГБ |
| --policy.train_expert_only | Только эксперт (~100 М) получает градиенты | true сначала |
SmolVLA предустанавливает косинусное расписание: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Более ранние рекомендации утверждают, что выполнение в 20000 шагов при этом останавливается в середине фазы затухания. В версии 0.6.1 это не так: `CosineDecayWithWarmupSchedulerConfig.build()` передается `--steps`, и ниже `num_decay_steps` он масштабирует оба значения: разогрев с 1000 до 666 и затухание с 30000 до 20000, выводя при этом *Автоматическое масштабирование планировщика LR*. Он никогда не масштабирует вверх: затухание ограничивается `min(current_step, decay_steps)`, поэтому стандартный `--steps=100000` остается на минимальном уровне с шага 30000 до конца, что составляет 70 процентов выполнения. Только для этой длинной части по-прежнему требуется `--policy.scheduler_decay_steps`. Столбец `lr` — это то, что нужно проверить.
Настройки по умолчанию, которые вы наследуете, если ничего не меняете
Конфигурация политики в lerobot содержит свои собственные предустановки оптимизатора и планировщика, и если вы не установите use_policy_training_preset=false эти предустановки будут применены. Половина вопросов, которые люди задают об обучении SmolVLA, отвечаются настройкой по умолчанию, о существовании которой они не знали.
| Настройка | Значение по умолчанию в lerobot 0.6.1 | Определено в |
|---|---|---|
| размер_чанка / количество_шагов_действия | 50 / 50 | SmolVLAConfig |
| количество_шагов (удаление шума методом flow matching) | 10 | SmolVLAConfig |
| скорость_обучения_оптимизатора | 1e-4 | SmolVLAConfig |
| шаги_разогрева_планировщика | 1000 | SmolVLAConfig |
| шаги_затухания_планировщика | 30000 | SmolVLAConfig |
| скорость_обучения_затухания_планировщика | 2.5e-6 | SmolVLAConfig |
| заморозить_визуальный_кодировщик | true | SmolVLAConfig |
| обучать_только_эксперта | true | SmolVLAConfig |
| размер_пакета / шаги | 8 / 100000 | TrainPipelineConfig |
| зерно / частота_сохранения / количество_работников | 1000 / 20000 / 4 | TrainPipelineConfig |
Две строки, которые удивляют людей, это freeze_vision_encoder и train_expert_only, обе истинны. Из коробки вы обучаете примерно 100 M параметров, а не 450 M, поэтому это помещается на 24 ГБ. Собственный эталонный запуск LeRobot на кластере из четырех GPU H100 переключает обе в false; на одной 24 ГБ карте это превращает рабочий запуск в .
Совет руководства, когда вы ограничены памятью, — уменьшить размер пакета и использовать накопление градиента для восстановления эффективного пакета. В lerobot 0.6.1 нет накопления градиента: TrainPipelineConfig не имеет такого поля, и эта строка нигде не встречается в выпущенном пакете. Форма AY-Robots показывает значение накопления градиента 8 для SmolVLA и также не применяет его. Ваши рычаги на 24 ГБ — это --batch_size, два значения по умолчанию для заморозки и --policy.use_amp.
Сколько времени занимает запуск и сколько шагов достаточно
LeRobot публикует привязки реального времени для пяти эпох на наборе данных примерно из 50 эпизодов, около 45000 кадров при 30 fps. Порядок величин, как говорится в документации, но они представляют собой разницу между ожиданием часа и дня.
| Настройка | Политика | Пакет | Реальное время |
|---|---|---|---|
| Один L4 / A10G (24 ГБ) | smolvla | 4 | около 3–6 ч |
| Один A100 40 ГБ | smolvla | 16 | около 1–2 ч |
| 4 x H100 80 ГБ с accelerate | smolvla | 32 | около 1–2 ч |
| Один RTX 4090 / RTX 3090 (24 ГБ) | act | 8 | около 30–60 мин |
Правило состоит в 5–10 эпохах по всему набору данных, а не в фиксированном количестве шагов: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). В эталонном наборе данных, на который указывают документы, lerobot/svla_so100_pickplace, метаданные сообщают о 50 эпизодах и 19631 кадре: пакет из 8 дает около 2454 шагов за эпоху, поэтому 20000 шагов — это примерно 8 эпох. Уменьшите размер пакета вдвое, и тот же бюджет позволит выполнить вдвое меньше эпох, поэтому повторяйте это всякий раз, когда изменяете --batch_size.
Запуск доработанной политики на манипуляторе
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 мс на шаг действия легко неправильно истолковать: политика выдает chunk_size = 50 действий за один прямой проход и выполняет n_action_steps = 50 из них, поэтому частота оплаты этой стоимости определяется этими параметрами, а не частотой получения команд сервоприводами. Это то, что дает, и почему модель с задержкой 245 мс может управлять манипулятором с частотой 30 Гц. Что остается, так это в конце пакета.
| Измерение (SmolVLA, реальный SO-100) | Синхронный | Асинхронный |
|---|---|---|
| Время выполнения, захват и перемещение, 10 попыток | 13.75 s | 9.70 s |
| Циклы захвата и перемещения в фиксированном временном окне | 9 | 19 |
| Средний процент успеха по трем задачам | 78.3 % | 73.3 % |
Эта третья строка — то, что большинство статей пропускают. Асинхронный вывод примерно на 30 процентов быстрее и примерно удваивает пропускную способность в фиксированном окне, а в статье говорится, что показатели успеха сопоставимы, что в среднем так и есть. При этом сортировка упала с 70 до 50 процентов, в то время как захват и перемещение выросли на 5. lerobot 0.6.1 содержит другой рычаг в том же бинарном файле: --inference.type=rtc переключает развертывание на пакетирование в реальном времени, что собственный блок использования скрипта рекомендует для медленных VLA, Pi0, Pi0.5 и SmolVLA.
Контур управления составляет от 20 до 485 мс на шаг действия в зависимости от модели, а задержки при передаче данных через публичный интернет превращают работающую политику в нерешительную. Удаленный вывод жизнеспособен для медленного захвата и перемещения, но не для быстрого реактивного движения: если задача требует быстрых корректировок, GPU должен находиться в той же локальной сети, что и манипулятор.
Не по теме обучающего запуска, но это завершает больше проектов SO-100, чем любой гиперпараметр. Сервоприводы Feetech STS3215 в SO-100 и SO-101 работают при 7.4 В; 12 В их уничтожает. LeKiwi сочетает манипулятор на 7.4 В с основанием на 12 В, из-за чего неправильный штекер питания находит неправильное гнездо.
Два пути к одной контрольной точке
Вы владеете машиной, средой и отладкой. Единственная облачная зависимость — это загрузка базовой контрольной точки из Hub. Правильный путь, если вы хотите изменить политику, если данные не могут покинуть вашу сеть или если карта простаивает.
- Вы контролируете CUDA, драйвер, сборку ffmpeg и загрузчик данных.
- Вы можете исправить configuration_smolvla.py и переобучить модель в тот же день.
- Вы платите за электричество и время, а не за каждый запуск, и отлаживаете 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=trueТот же запуск через форму: вы выбираете модель и набор данных, бэкенд арендует GPU по требуемой VRAM, запускает тренажер и записывает контрольные точки в объектное хранилище. Набор данных может быть получен из Hugging Face repo id, из публичного каталога, или с вашей машины. Начните с SmolVLA на SO-100, или с матрицы на странице обучения.
| Поле | Значение по умолчанию, отправляемое платформой для SmolVLA | Примечание |
|---|---|---|
| размер батча | 2 | Консервативно для уровня 24 ГБ |
| скорость обучения | 1e-4 | Предустановка lerobot |
| максимум шагов | 20000 | Эталонный запуск в документации LeRobot |
| накопление градиента | 8 | Показано в форме, но не применяется |
| дополнительные параметры | seed, logFreq | Seed делает запуск повторяемым |
- От 2 до 5 часов на уровне 24 ГБ, около 1–3 USD за запуск.
- Те же операции из терминала по адресу /cli и от ИИ-агентов по адресу /mcp.
- Поды для инференса имеют сторожевой таймер простоя, поэтому забытый под уничтожает себя, вместо того чтобы тихо выставлять счета.
- Еще нет манипулятора? /live транслирует физический SO-100, которым вы можете управлять без регистрации.
Задание, застрявшее в очереди, является симптомом спотового рынка, а не ошибкой: задание обучения застряло в очереди. Пошагово: обучите свою первую политику и документация по обучению.
Когда SmolVLA — неправильный выбор
Критерий того, был ли SmolVLA правильным первым запуском, не в том, сработал ли он, а в том, дала ли неудача какую-то информацию. Достигните 60 или 70 процентов, и более крупная модель станет разумным следующим шагом: данные несут сигнал. Достигните 10 процентов, и модель в 3 миллиарда параметров, скорее всего, также достигнет 10 процентов, что вы только что узнали за три доллара вместо двенадцати.

Стоит прочитать, прежде чем тратить больше: Pi0.5 против SmolVLA, для большей производительности на той же идее, и GR00T N1.7 против SmolVLA, для пути NVIDIA, оба уровня 80 ГБ по цене от 4 до 12 USD за запуск. Другой путь, ACT — это более дешевая базовая модель: 80 млн параметров, 20 мс на шаг действия, без языкового обусловливания. Все пять находятся на странице политик; арене имеет 85 моделей и 332 результата бенчмарков.

Чек-лист перед масштабированием
- Достиг ли
lrсвоего минимума в 2.5e-6? Ниже 30000 шагов lerobot перемасштабирует затухание и сообщает об этом при запуске; выше этого значения установите--policy.scheduler_decay_stepsсамостоятельно. - Более одного чекпоинта и эпизоды, отложенные с помощью
--dataset.eval_split, чтобы потери при оценке имели смысл. - Движется ли политика вообще? Падающие потери при неподвижной руке имеют конкретные причины: потери падают, политика ничего не делает.
- Выдерживает ли она смену сцены? Если нет: политика работает только в одной конфигурации.
- Записали ли вы сид? lerobot по умолчанию использует 1000, поэтому два нетронутых запуска остаются сопоставимыми.
- Только потом: больше эпизодов, больше вариаций или более крупная модель. В таком порядке.
О том, почему эти модели существуют и что они делают с языковым вводом, — это предыстория; описывает сборку от до первого запуска . Для готового чекпоинта ; если рука так и не появляется, .
Обучите SmolVLA на своей собственной руке
Выберите модель и руку, и руководство предоставит вам точные значения по умолчанию, формат набора данных и стоимость запуска. SmolVLA находится на уровне 24 ГБ по цене от 1 до 3 долларов США за запуск.
Открыть руководства по обучениюДействительно ли я могу дообучить SmolVLA на RTX 4090?▾
Да. Руководство по вычислениям LeRobot оценивает пиковое потребление VRAM SmolVLA примерно в 10–16 ГБ при размере батча 8 с AdamW и указывает, что потребительские карты с 24 ГБ комфортны для этого. Батч 64 в примере документации используется с одной A100. Память масштабируется примерно линейно с размером батча, поэтому используйте 4 или 8 и следите за mem_gb.
Сколько эпизодов мне на самом деле нужно?▾
AY-Robots устанавливает минимум в 30. Документация LeRobot рекомендует около 50 и сообщает, что 25 эпизодов одной и той же задачи показали плохие результаты. Структура важнее количества: эталонный набор состоял из 5 позиций куба по 10 эпизодов каждая, и именно это повторение обеспечивает обобщение.
Документация говорит батч 64, платформа отправляет батч 2. Что правильно?▾
Оба варианта, для разного оборудования. Пример в документации использует батч 64 и указывает около 4 часов для 20000 шагов на одной A100; для A100 40 ГБ в руководстве по вычислениям указан батч 16. Батч 2 — это то, что AY-Robots отправляет на уровне 24 ГБ. Локально 4–8 — это середина, и с этим меняется арифметика эпох.
SmolVLA или ACT для первого запуска на SO-100?▾
ACT, если задача — одно повторяющееся движение и вам нужен самый быстрый цикл: 20 мс на шаг действия, 80 млн параметров, без языкового обусловливания. SmolVLA, если вам нужно языковое обусловливание, несколько строк задач в одном чекпоинте и предварительно обученная база. Оба варианта работают на уровне 24 ГБ, поэтому выбор зависит от задачи, а не от бюджета.
Нужно ли мне устанавливать --policy.scheduler_decay_steps?▾
Только когда --steps превышает 30000. SmolVLA предустанавливает косинусное затухание на 30000 шагов, а lerobot 0.6.1 самостоятельно масштабирует его вниз для более короткого запуска, логируя "Auto-scaling LR scheduler" при этом. Он никогда не масштабируется вверх, поэтому стандартный --steps=100000 оставляет последние 70000 шагов на уровне 2.5e-6.
Sources
- SmolVLA: Модель зрения, языка и действий для доступной и эффективной робототехники
- SmolVLA: Эффективная модель зрения, языка и действий (блог Hugging Face)
- Карточка модели lerobot/smolvla_base
- Документация LeRobot: SmolVLA
- Документация LeRobot: Руководство по аппаратному обеспечению для обучения LeRobot
- Документация LeRobot: Установка
- Документация LeRobot: LeRobotDataset v3.0 и конвертер v2.1
- Документация LeRobot: Асинхронный вывод
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (стратегии и вывод RTC)
- lerobot v0.6.1: pyproject.toml (дополнения и точки входа консоли)
- lerobot на PyPI
- Набор данных lerobot/svla_so100_pickplace (50 эпизодов, 19631 кадр, 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