LeRobot documentation

Руководство по вычислительному оборудованию для обучения LeRobot

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Руководство по вычислительному оборудованию для обучения LeRobot

Оценка ресурсов для обучения политики LeRobot: сколько VRAM требуется каждой политике, каковы ожидаемые сроки обучения и где выполнять обучение, если локального оборудования недостаточно.

Приведённые ниже цифры носят ориентировочный характер — это оценки порядка величины для выбора оборудования, а не точные прогнозы. Пропускная способность сильно зависит от ввода-вывода данных, разрешения изображений, размера батча и количества GPU.

Память по группе политик

Политики группируются по размеру базовой модели; приведённые ниже группировки задают единый объём VRAM для каждой группы, а не повторяют значения для каждой политики. Потребление памяти масштабируется примерно линейно с размером батча; AdamW (по умолчанию в LeRobot) хранит состояние оптимизатора, что добавляет ~30–100% к памяти, необходимой только для прямого и обратного проходов.

ГруппаПолитикиПиковое VRAM (BS 8, AdamW)Подходящие стартовые GPU
Light BCact, vqbet, tdmpc~2–6 ГБGPU ноутбука (RTX 3060), L4, A10G
Диффузияdiffusion, multi_task_dit~8–14 ГБRTX 4070+ / L4 / A10G
Маленький VLAsmolvla~10–16 ГБRTX 4080+ / L4 / A10G
Large VLApi0, pi0_fast, pi05, xvla, wall_x~24–40 ГБA100 40 ГБ+ (24 ГБ впритык при BS 1)
Мультимодальностьgroot, eo1~24–40 ГБA100 40 ГБ+
RLsacconfig-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 ГБ)act8~30–60 мин
Одна RTX 4090 / RTX 3090 (24 ГБ)diffusion8~2–4h
Один L4 / A10G (24 ГБ)act8~1–2h
Один L4 / A10G (24 ГБ)smolvla4~3–6h
Один A100 40 ГБsmolvla16~1–2h
Один A100 40 ГБpi0 / pi054~4–8h
Кластер 4× H100 80 ГБ (accelerate)diffusion32~30–60 мин
Кластер 4× H100 80 ГБ (accelerate)smolvla32~1–2h
Apple Silicon M1/M2/M3 Max (MPS)act4~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_sdataloading_sИспользование GPUЗначимые флаги
diffusion16m 17s0.1670.015~90%значения по умолчанию (обучение с нуля)
smolvla27m 49s0.3120.011~80%--policy.path=lerobot/smolvla_base, freeze_vision_encoder=false, train_expert_only=false
pi053h 41m2.5480.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 (или любой другой допустимой строки длительности). Задание автоматически останавливается после завершения команды.
  • Полное руководство — загрузка набора данных, стриминг контрольных точек, возобновление запуска на задаче — см. в руководстве по обучению с подражанием.
Update on GitHub