LeRobot documentation
LeRobot 训练的硬件计算指南
LeRobot 训练的硬件计算指南
训练 LeRobot 策略的大致规模估算:每种策略所需的 VRAM 量、训练时长大概是多少,以及在本地硬件不足时应该在哪里运行。
以下数字仅为参考值——用于选择硬件的数量级估算,而非精确预测。吞吐量在很大程度上取决于数据集 I/O、图像分辨率、批处理大小以及 GPU 数量。
按策略组划分的内存
策略按骨干网络大小进行聚类;以下分组为每个组提供单一的 VRAM 上限,而非为每个策略重复列出数值。内存大致随批处理大小线性扩展;AdamW(LeRobot 的默认优化器)携带的优化器状态会在仅前向+反向传播的基础上额外增加约 30–100% 的内存开销。
| 组 | 策略 | 峰值 VRAM(BS 8,AdamW) | 适合入门的 GPU |
|---|---|---|---|
| Light BC | act, vqbet, tdmpc | ~2–6GB | 笔记本电脑 GPU (RTX 3060)、L4、A10G |
| Diffusion | diffusion, multi_task_dit | ~8–14GB | RTX 4070+ / L4 / A10G |
| 小型 VLA | smolvla | ~10–16GB | RTX 4080+ / L4 / A10G |
| 大型 VLA | pi0, pi0_fast, pi05, xvla, wall_x | ~24–40GB | A100 40 GB+(24 GB 在 BS 1 时较为紧张) |
| 多模态 | groot, eo1 | ~24–40GB | A100 40 GB+ |
| RL | sac | config-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) | act | 8 | ~30–60分钟 |
| 单张 RTX 4090 / RTX 3090(24 GB) | diffusion | 8 | ~2–4h |
| 单个 L4 / A10G(24 GB) | act | 8 | ~1–2h |
| 单个 L4 / A10G(24 GB) | smolvla | 4 | ~3–6h |
| 单张 A100 40 GB | smolvla | 16 | ~1–2h |
| 单张 A100 40 GB | pi0 / pi05 | 4 | ~4–8h |
4× H100 80 GB 集群(accelerate) | diffusion | 32 | ~30–60分钟 |
4× H100 80 GB 集群(accelerate) | smolvla | 32 | ~1–2h |
| Apple Silicon M1/M2/M3 Max (MPS) | act | 4 | ~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_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,视觉编码器 + 专家模型已训练 |
训练日志将完整的迭代拆分为 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 GB | 40 GB | $$$ | 在合理的批处理大小下,任何策略均可。 |
| A100 80 GB / H100 80 GB | 80 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(或任何其他有效的时长字符串)可以缩短或延长超时时间。命令执行完成后,任务会自动停止。 - 如需了解完整流程——包括数据集上传、检查点流式传输以及在任务上恢复运行——请参阅模仿学习训练指南。