LeRobot documentation

LeRobot 训练的硬件计算指南

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

LeRobot 训练的硬件计算指南

训练 LeRobot 策略的大致规模估算:每种策略所需的 VRAM 量、训练时长大概是多少,以及在本地硬件不足时应该在哪里运行。

以下数字仅为参考值——用于选择硬件的数量级估算,而非精确预测。吞吐量在很大程度上取决于数据集 I/O、图像分辨率、批处理大小以及 GPU 数量。

按策略组划分的内存

策略按骨干网络大小进行聚类;以下分组为每个组提供单一的 VRAM 上限,而非为每个策略重复列出数值。内存大致随批处理大小线性扩展;AdamW(LeRobot 的默认优化器)携带的优化器状态会在仅前向+反向传播的基础上额外增加约 30–100% 的内存开销。

组策略峰值 VRAM(BS 8,AdamW)适合入门的 GPU
Light BCact, vqbet, tdmpc~2–6GB笔记本电脑 GPU (RTX 3060)、L4、A10G
Diffusiondiffusion, multi_task_dit~8–14GBRTX 4070+ / L4 / A10G
小型 VLAsmolvla~10–16GBRTX 4080+ / L4 / A10G
大型 VLApi0, pi0_fast, pi05, xvla, wall_x~24–40GBA100 40 GB+(24 GB 在 BS 1 时较为紧张)
多模态groot, eo1~24–40GBA100 40 GB+
RLsacconfig-dep.参见 HIL-SERL 指南

内存受限?请减小批处理大小(约线性关系),使用梯度累积来恢复有效批处理大小,或者对于 SmolVLA,保留 freeze_vision_encoder=True。

训练时间

机器人模仿学习通常在数据集上经过 5–10 个 epoch 即可收敛,而非数十万个原始训练步。一旦确定了 epoch 数量,实际耗时基本上为:

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 进行线性缩放,以适配更长或更短的训练时长。

常见场景

在 约 50 个 episode 的数据集(约 45k 帧,30 fps × 30 秒)上训练 5 个 epoch 的大致实际耗时,使用默认优化器(AdamW),图像分辨率为 640×480:

设置策略Batch实际时间
单张 RTX 4090 / RTX 3090(24 GB)act8~30–60分钟
单张 RTX 4090 / RTX 3090(24 GB)diffusion8~2–4h
单个 L4 / A10G(24 GB)act8~1–2h
单个 L4 / A10G(24 GB)smolvla4~3–6h
单张 A100 40 GBsmolvla16~1–2h
单张 A100 40 GBpi0 / pi054~4–8h
4× H100 80 GB 集群(accelerate)diffusion32~30–60分钟
4× H100 80 GB 集群(accelerate)smolvla32~1–2h
Apple Silicon M1/M2/M3 Max (MPS)act4~6–14h

这些是数量级估算值。实际运行时间会根据图像分辨率、数据集 I/O、dataloader 线程数以及具体的 GPU 型号不同,产生 ±50% 的偏差。它们有助于建立“这次运行需要一小时还是一天?”的直觉,而非作为 SLA 使用。

多 GPU 至关重要

accelerate launch --num_processes=N 是缩短训练时间最简单的方法。每个优化器步骤在大约与单 GPU 步骤相同的墙钟时间内处理 N × batch_size 个样本,因此对于计算密集型任务,4 个 GPU 约等于 4 倍加速。完整的设置请参阅 多 GPU 训练 指南。

在 4×H100 80 GB 集群上的参考数据点(accelerate launch --num_processes=4),5000 步,batch 32,AdamW,数据集 imstevenpmwork/super_poulain_draft(约 50 个 episode,约 640×480 图像):

策略实际时间update_sdataloading_sGPU 利用率常用标志
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,视觉编码器 + 专家模型已训练

训练日志将完整的迭代拆分为 dataloading_s(next(dl_iter))、preprocessing_s(图像转换和策略流水线)以及 update_s(优化器更新)。step_s 涵盖以上全部三项,并驱动 samples_per_s。上述基准测试早于该拆分,因此其 dataloading_s 包含了预处理。

调度和检查点

如果缩短了训练(例如在小数据集上训练 5k–10k 步),也请相应缩短学习率调度,使用 --policy.scheduler_decay_steps≈--steps。否则学习率会一直保持在峰值附近,无法衰减。--save_freq 同理。

在哪里运行

VRAM 是第一道筛选标准。在同一档位内,请根据预算和可用性进行选择——$–$$$$ 列表示相对价格;请查看您实际使用的提供商的当前定价。

类VRAM层级适合
RTX 3090 / 4090(消费级)24 GB$Light BC、Diffusion、SmolVLA。对于 batch 为 1 的 VLA 来说,这很紧凑。
L4 / A10G(云端)24 GB$–$$相同的信封;常见于 Google Cloud、RunPod、AWS g5/g6。
A100 40 GB40 GB$$$在合理的批处理大小下,任何策略均可。
A100 80 GB / H100 80 GB80 GB$$$$多 GPU 集群;用于 VLA 的大批量处理。
仅 CPU——不要训练。使用 Colab 或租用 GPU。

Hugging Face 职位

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 GB)、a10g-small/large/largex2/largex4(A10G 24 GB 横向扩展)、a100-large(A100)。可通过 hf jobs hardware 查看当前目录及定价,或参阅 https://huggingface.co/docs/hub/jobs。
  • 任务默认超时时间为 2d(48 小时)。使用 --job.timeout=4h(或任何其他有效的时长字符串)可以缩短或延长超时时间。命令执行完成后,任务会自动停止。
  • 如需了解完整流程——包括数据集上传、检查点流式传输以及在任务上恢复运行——请参阅模仿学习训练指南。
Update on GitHub