LeRobot documentation
Руководство по вычислительному оборудованию для обучения LeRobot
Руководство по вычислительному оборудованию для обучения LeRobot
Оценка ресурсов для обучения политики LeRobot: сколько VRAM требуется каждой политике, каковы ожидаемые сроки обучения и где выполнять обучение, если локального оборудования недостаточно.
Приведённые ниже цифры носят ориентировочный характер — это оценки порядка величины для выбора оборудования, а не точные прогнозы. Пропускная способность сильно зависит от ввода-вывода данных, разрешения изображений, размера батча и количества GPU.
Память по группе политик
Политики группируются по размеру базовой модели; приведённые ниже группировки задают единый объём VRAM для каждой группы, а не повторяют значения для каждой политики. Потребление памяти масштабируется примерно линейно с размером батча; AdamW (по умолчанию в LeRobot) хранит состояние оптимизатора, что добавляет ~30–100% к памяти, необходимой только для прямого и обратного проходов.
| Группа | Политики | Пиковое VRAM (BS 8, AdamW) | Подходящие стартовые GPU |
|---|---|---|---|
| Light BC | act, vqbet, tdmpc | ~2–6 ГБ | GPU ноутбука (RTX 3060), L4, A10G |
| Диффузия | diffusion, multi_task_dit | ~8–14 ГБ | RTX 4070+ / L4 / A10G |
| Маленький VLA | smolvla | ~10–16 ГБ | RTX 4080+ / L4 / A10G |
| Large VLA | pi0, pi0_fast, pi05, xvla, wall_x | ~24–40 ГБ | A100 40 ГБ+ (24 ГБ впритык при BS 1) |
| Мультимодальность | groot, eo1 | ~24–40 ГБ | A100 40 ГБ+ |
| RL | sac | config-dep. | См. руководство HIL-SERL |
Ограничение по памяти? Уменьшите размер батча (примерно линейно), используйте накопление градиентов для восстановления эффективного размера батча или, в случае SmolVLA, оставьте freeze_vision_encoder=True.
Время обучения
Обычно обучение с подражанием в робототехнике сходится за 5–10 эпох по набору данных, а не за сотни тысяч сырых шагов. Когда вы знаете количество эпох, фактическое время выполнения в основном равно:
total_frames = sum of frames over all episodes # 50 ep × 30 fps × 30 s ≈ 45,000 steps_per_epoch = ceil(total_frames / (num_gpus × batch_size)) total_steps = epochs × steps_per_epoch wall_clock ≈ total_steps × per_step_time
Время на шаг зависит от политики и GPU. Значения в таблице ниже являются ориентирами — выберите строку, наиболее близкую к вашей конфигурации, и масштабируйте линейно по total_steps, если вы обучаете дольше или короче.
Частые сценарии
Ориентировочное время выполнения в реальном времени для 5 эпох на наборе данных из ~50 эпизодов (~45k кадров при 30 fps × 30 с), оптимизатор по умолчанию (AdamW), изображения 640×480:
| Настройка | Политика | Пакет | Реальное время |
|---|---|---|---|
| Одна RTX 4090 / RTX 3090 (24 ГБ) | act | 8 | ~30–60 мин |
| Одна RTX 4090 / RTX 3090 (24 ГБ) | diffusion | 8 | ~2–4h |
| Один L4 / A10G (24 ГБ) | act | 8 | ~1–2h |
| Один L4 / A10G (24 ГБ) | smolvla | 4 | ~3–6h |
| Один A100 40 ГБ | smolvla | 16 | ~1–2h |
| Один A100 40 ГБ | pi0 / pi05 | 4 | ~4–8h |
Кластер 4× H100 80 ГБ (accelerate) | diffusion | 32 | ~30–60 мин |
Кластер 4× H100 80 ГБ (accelerate) | smolvla | 32 | ~1–2h |
| Apple Silicon M1/M2/M3 Max (MPS) | act | 4 | ~6–14h |
Это оценки порядка величины. Реальные значения отклоняются на ±50% в зависимости от разрешения изображений, ввода-вывода данных, потоков загрузчика данных и конкретной модели GPU. Эти цифры полезны для интуитивной оценки, «займёт ли этот прогон час или день», но не являются гарантиями уровня обслуживания (SLA).
Многопроцессорность имеет большое значение
accelerate launch --num_processes=N — самый простой способ сократить время обучения. Каждый шаг оптимизатора обрабатывает N × batch_size примеров примерно за то же время, что и один шаг на одном GPU, поэтому 4 GPU ≈ 4-кратное ускорение для вычислительно-ограниченных задач. См. руководство Обучение на нескольких GPU для полной настройки.
Точки данных для справки на кластере 4×H100 80 ГБ (accelerate launch --num_processes=4), 5000 шагов, batch 32, AdamW, набор данных imstevenpmwork/super_poulain_draft (~50 эпизодов, изображения ~640×480):
| Политика | Реальное время | update_s | dataloading_s | Использование GPU | Значимые флаги |
|---|---|---|---|---|---|
diffusion | 16m 17s | 0.167 | 0.015 | ~90% | значения по умолчанию (обучение с нуля) |
smolvla | 27m 49s | 0.312 | 0.011 | ~80% | --policy.path=lerobot/smolvla_base, freeze_vision_encoder=false, train_expert_only=false |
pi05 | 3h 41m | 2.548 | 0.014 | ~95% | --policy.pretrained_path=lerobot/pi05_base, gradient_checkpointing=true, dtype=bfloat16, обучены vision encoder и expert |
Журналы обучения разделяют полную итерацию на dataloading_s (next(dl_iter)), preprocessing_s (конвертация изображений и конвейер политики) и update_s (обновление оптимизатора). step_s охватывает все три этапа и определяет samples_per_s. Приведённый выше бенчмарк был создан до этого разделения, поэтому его dataloading_s включает предобработку.
График и контрольные точки
Если вы сокращаете обучение (например, 5k–10k шагов на небольшом наборе данных), также сократите расписание LR с помощью --policy.scheduler_decay_steps≈--steps. В противном случае LR останется на пиковом уровне и не будет снижаться. То же самое касается --save_freq.
Где запускать
VRAM — это первый фильтр. В пределах одного уровня выбирайте в зависимости от бюджета и доступности — столбцы $–$$$$ являются относительными; проверяйте актуальные цены на том провайдере, которым вы действительно пользуетесь.
| Класс | VRAM | Уровень | Комфортно для |
|---|---|---|---|
| RTX 3090 / 4090 (потребительские) | 24 ГБ | $ | Light BC, Diffusion, SmolVLA. Тесно для VLAs при batch 1. |
| L4 / A10G (облако) | 24 ГБ | $–$$ | Та же самая обвязка; часто встречается на Google Cloud, RunPod, AWS g5/g6. |
| A100 40 ГБ | 40 ГБ | $$$ | Любая политика при разумных размерах батчей. |
| A100 80 ГБ / H100 80 ГБ | 80 ГБ | $$$$ | Кластеры с несколькими GPU; большие батчи для VLAs. |
| Только CPU | — | — | Не обучайте модель. Используйте Colab или арендуйте GPU. |
Hugging Face Jobs
С помощью Hugging Face Jobs можно запускать обучение на управляемой инфраструктуре HF с оплатой по секундам, не имея собственного GPU. Команда lerobot-train отправляет и транслирует задание за вас — достаточно добавить --job.target=<flavor> к обычной команде обучения:
lerobot-train \ --policy.type=act --dataset.repo_id=<USER>/<DATASET> \ --policy.repo_id=<USER>/act_<task> \ --job.target=a10g-large
Примечания:
- Выполните
hf auth loginодин раз перед отправкой, работа будет выполняться под вашим токеном. --job.targetсоответствует таблице выше:t4-small/t4-medium(T4, только ACT),l4x1/l4x4(L4 24 ГБ),a10g-small/large/largex2/largex4(A10G 24 ГБ с горизонтальным масштабированием),a100-large(A100). Текущий каталог с ценами можно посмотреть с помощьюhf jobs hardwareили по ссылке https://huggingface.co/docs/hub/jobs.- По умолчанию для задания установлен тайм-аут
2d(48 часов). Чтобы сократить или увеличить тайм-аут, переопределите его с помощью--job.timeout=4h(или любой другой допустимой строки длительности). Задание автоматически останавливается после завершения команды. - Полное руководство — загрузка набора данных, стриминг контрольных точек, возобновление запуска на задаче — см. в руководстве по обучению с подражанием.