Тонкая настройка модели SmolVLA
Обзор
SmolVLA (Small Vision-Language-Action) - это легкая модель визуального-языкового-действия, разработанная HuggingFace и специально предназначенная для задач обучения роботов. Эта модель имеет всего 450M параметров, подходит для работы на потребительском оборудовании и является идеальным выбором для исследований и разработки в области обучения роботов.
Предварительные требования
Системные требования
- Операционная система: Linux (рекомендуется Ubuntu 20.04+) или macOS
- Версия Python: 3.8+
- GPU: NVIDIA GPU (рекомендуется RTX 3080 или выше), минимум 8GB видеопамяти
- Память: Минимум 16GB RAM
- Дисковое пространство: Минимум 50GB свободного места
Подготовка среды
1. Установка LeRobot
# Клонировать репозиторий LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
# Создать виртуальную среду
conda create -n lerobot python=3.10
conda activate lerobot
# Установить зависимости
pip install -e .
2. Установка дополнительных зависимостей
# Установить Flash Attention (опционально, дл я ускорения обучения)
pip install flash-attn --no-build-isolation
# Установить Weights & Biases (для отслеживания экспериментов)
pip install wandb
wandb login
Подготовка данных
Данные формата LeRobot
SmolVLA требует использования наборов данных формата LeRobot. Убедитесь, что ваш набор данных содержит следующую структуру:
your_dataset/
├── data/
│ ├── chunk-001/
│ │ ├── observation.images.cam_high.png
│ │ ├── observation.images.cam_low.png
│ │ └── ...
│ └── chunk-002/
│ └── ...
├── meta.json
├── stats.safetensors
└── videos/
├── episode_000000.mp4
└── ...
Требования к качеству данных
Согласно рекоменд ациям HuggingFace, SmolVLA требует:
- Минимум 25 высококачественных эпизодов для достижения хорошей производительности
- Рекомендуется 100+ эпизодов для оптимальных результатов
- Каждый эпизод должен содержать полный процесс выполнения задачи
- Рекомендуемое разрешение изображения 224x224 или 256x256
Тонкая настройка обучения
Базовая команда обучения
# Установить переменные среды
export HF_USER="io-ai-data"
export CUDA_VISIBLE_DEVICES=0
# Запустить тонкую настройку SmolVLA
lerobot-train \
--policy.type smolvla \
--policy.pretrained_path lerobot/smolvla_base \
--dataset.repo_id ${HF_USER}/my_dataset \
--dataset.root /data/lerobot_dataset \
--batch_size 64 \
--steps 20000 \
--output_dir outputs/train/smolvla_finetuned \
--job_name smolvla_finetuning \
--policy.device cuda \
--policy.optimizer_lr 1e-4 \
--policy.scheduler_warmup_steps 1000 \
--policy.push_to_hub false \
--save_checkpoint true \
--save_freq 5000 \
--wandb.enable true \
--wandb.project smolvla_finetuning
Расширенная конфигурация обучения
Обучение на нескольких GPU
# Обучение на нескольких GPU с использованием torchrun
torchrun --nproc_per_node=2 --master_port=29500 \
$(which lerobot-train) \
--policy.type smolvla \
--policy.pretrained_path lerobot/smolvla_base \
--dataset.repo_id ${HF_USER}/my_dataset \
--dataset.root /data/my_dataset \
--batch_size 32 \
--steps 20000 \
--output_dir outputs/train/smolvla_finetuned \
--job_name smolvla_multi_gpu \
--policy.device cuda \
--policy.optimizer_lr 1e-4 \
--policy.push_to_hub false \
--save_checkpoint true \
--wandb.enable true