LeRobot documentation

SmolVLA

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SmolVLA

SmolVLA — это легкая базовая модель Hugging Face для робототехники. Она разработана для простого дообучения на наборах данных LeRobot и помогает ускорить вашу разработку!

SmolVLA architecture.
Рисунок 1. SmolVLA принимает на вход (i) изображения с нескольких камер, (ii) текущее сенсорно-моторное состояние робота и (iii) инструкцию на естественном языке, которые кодируются в контекстные признаки, используемые для настройки action expert при генерации action chunk.

Настройка окружения

  1. Установите LeRobot, следуя нашему Руководству по установке.

  2. Установите зависимости SmolVLA, выполнив:

    pip install -e ".[smolvla]"

Соберите набор данных

SmolVLA — это базовая модель, поэтому для достижения оптимальных результатов в вашей конфигурации необходимо выполнить дообучение на собственных данных. Мы рекомендуем записать около 50 эпизодов вашей задачи как отправную точку. Следуйте нашему руководству, чтобы начать: Запись набора данных

В вашем наборе данных убедитесь, что для каждого вводимого вами варианта (например, положение куба на столе, если это задача cube pick-place) имеется достаточно демонстраций.

Мы рекомендуем ознакомиться с набором данных, на который ссылается статья SmolVLA:

🔗 SVLA SO100 PickPlace

В этом наборе данных мы записали 50 эпизодов для 5 различных положений куба. Для каждого положения мы собрали 10 эпизодов взаимодействий «взять и положить». Такая структура, при которой каждая вариация повторяется несколько раз, помогла модели лучше обобщать. Мы попробовали аналогичный набор данных из 25 эпизодов, и этого оказалось недостаточно, что привело к плохой производительности. Таким образом, качество и количество данных — это, безусловно, ключевой фактор. После того как ваш набор данных станет доступен на Hub, вы можете использовать наш скрипт дообучения, чтобы адаптировать SmolVLA под ваше приложение.

Довыучите SmolVLA на своих данных

Используйте smolvla_base, нашу предобученную модель на 450 млн параметров, и дообучите её на ваших данных. Обучение модели в течение 20 тыс. шагов займёт примерно ~4 часа на одном GPU A100. Количество шагов следует подбирать в зависимости от производительности и вашей задачи.

Если у вас нет устройства gpu, вы можете обучать модель с помощью нашего ноутбука на Google Colab

Передайте свой набор данных в скрипт обучения с помощью --dataset.repo_id. Если вы хотите проверить установку, выполните следующую команду, в которой используется один из наборов данных, собранных для SmolVLA Paper. Замените его на свой собственный набор данных для дообучения на ваших данных.

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so100_pickplace \
  --policy.repo_id=${HF_USER}/my_smolvla \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --trackio.enable=true
  • --policy.repo_id — это репозиторий на Hub, в который загружается дообученная модель.
  • --rename_map сопоставляет имена камер набора данных с именами camera1, camera2 и camera3, которые ожидает smolvla_base. Без этого параметра обучение останавливается с ошибкой несоответствия признаков. Сопоставьте собственные имена камер аналогичным образом (см. Rename Map).
You can start with a small batch size and increase it incrementally, if the GPU allows it, as long as loading times remain short.

Доработка — это искусство. Для полного обзора вариантов доработки выполните

lerobot-train --help

Comparison of SmolVLA across task variations.
Рисунок 2: Сравнение SmolVLA при различных вариациях задач. Слева направо: (1) подсчет кубиков при выполнении pick-place, (2) подсчет кубиков при выполнении pick-place, (3) подсчет кубиков при выполнении pick-place с возмущениями и (4) обобщение на задачу pick-and-place с использованием блока Lego на реальном SO101.

Оцените дообученную модель и запустите её в реальном времени

Аналогично, при записи эпизода рекомендуется быть вошедшим в аккаунт HuggingFace Hub. Вы можете выполнить соответствующие шаги: Запись набора данных. После входа в систему вы можете выполнить инференс в вашей конфигурации, выполнив:

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_blue_follower_arm \
  --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --task="Grasp a lego block and put it in the bin." \
  --policy.path=${HF_USER}/FINETUNE_MODEL_NAME

Замените --robot.port, --robot.id, --robot.cameras и --policy.path на свой порт, идентификатор робота, камеры (те же имена камер и разрешение, что и в вашем наборе данных) и дообученную модель. Передайте тот же --rename_map, который вы использовали для обучения, и то же описание --task, что и при записи вашего набора данных.

Необязательные флаги, которые можно добавить к команде выше:

  • RTC (более плавное движение при медленном выводе, например, на устройствах с низким энергопотреблением): --inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0
  • Просмотр потока с камеры: --display_data=true
  • Остановить автоматически: --duration=60 (в секундах). По умолчанию политика выполняется до нажатия Ctrl+C.

Для записи эпизодов оценки, с возможностью использования телеоператора для сброса сцены между ними, используйте вместо этого --strategy.type=episodic. См. Развёртывание политики для всех стратегий.

Update on GitHub