LeRobot documentation
LeRobotトレーニング用のCompute HWガイド
LeRobotトレーニング用のCompute HWガイド
LeRobotのポリシーを学習するための大まかなサイズ感: 各ポリシーに必要なVRAM量、学習時間の目安、そしてローカルハードウェアが不足している場合にどこで実行すべきか。
以下の数値は参考値であり、ハードウェア選定のための桁数の目安であり、正確な予測ではありません。スループットは、データセットのI/O、画像の解像度、バッチサイズ、GPUの台数に大きく依存します。
ポリシーグループ別のメモリ
Policies はバックボーンサイズごとにクラスタリングされます。以下のグループ分けでは、各ポリシーごとに数値を繰り返す代わりに、グループごとに単一の VRAM 上限を示しています。メモリはバッチサイズに対して概ね線形にスケーリングされます。AdamW(LeRobot のデフォルト)はオプティマイザ状態を保持するため、フォワードパスとバックワードパスのみの場合と比べて、約 30〜100% 追加のメモリが必要です。
| グループ | ポリシー | ピークVRAM(BS 8、AdamW) | おすすめの入門用GPU |
|---|---|---|---|
| Light BC | act, vqbet, tdmpc | 約2〜6GB | Laptop 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エポックで収束します。エポック数がわかれば、実時間は基本的に次のようになります。
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エピソードのデータセット(30 fps × 30秒で約45kフレーム)での5エポックの目安となる実時間、デフォルトのオプティマイザー(AdamW)、640×480の画像:
| セットアップ | ポリシー | バッチ | 実時間 |
|---|---|---|---|
| 単一のRTX 4090 / RTX 3090 (24 GB) | act | 8 | 約30〜60分 |
| 単一のRTX 4090 / RTX 3090 (24 GB) | diffusion | 8 | ~2–4h |
| Single L4 / A10G (24 GB) | act | 8 | ~1–2h |
| Single L4 / A10G (24 GB) | smolvla | 4 | ~3–6h |
| Single A100 40 GB | smolvla | 16 | ~1–2h |
| Single 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のSKUによって±50%程度変動します。これらはSLAとしてではなく、「この実行は1時間かかるのか、1日かかるのか?」という直感的な目安としてご利用ください。
マルチGPUは非常に重要です
accelerate launch --num_processes=N は、学習時間を短縮する最も簡単な方法です。各オプティマイザーステップで、N × batch_size サンプルを、単一 GPU の 1 ステップとほぼ同じ実時間で処理できるため、計算リソースがボトルネックとなる実行では、4 GPU で約 4 倍の高速化が期待できます。完全なセットアップについては、マルチ GPU での学習 ガイドを参照してください。
4×H100 80 GB クラスタでの参考データポイント(accelerate launch --num_processes=4)、5000 ステップ、バッチサイズ 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、ビジョンエンコーダーとエキスパートを学習済み |
トレーニングログでは、1回のイテレーション全体をdataloading_s(next(dl_iter))、preprocessing_s(画像変換とポリシーのパイプライン)、update_s(オプティマイザーの更新)に分離して記録します。step_sはこれら3つのすべてを含み、samples_per_sを決定します。上記のベンチマークはこの分離以前のものであるため、そのdataloading_sには前処理が含まれています。
スケジュールとチェックポイント
学習を短縮する場合(例:小規模なデータセットで5k〜10kステップ)、--policy.scheduler_decay_steps≈--steps でも LR スケジュールを短縮してください。そうしないと、LR がピーク付近に留まったまま減衰しません。--save_freq も同様です。
実行場所
VRAMが最初のフィルタです。同じティア内では、予算と入手可能性で選びます。$〜$$$$の列は相対的なものです。実際に利用するプロバイダーの最新価格を確認してください。
| クラス | VRAM | ティア | 快適な |
|---|---|---|---|
| RTX 3090 / 4090(コンシューマー向け) | 24 GB | $ | Light BC、Diffusion、SmolVLA。バッチサイズ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 Jobs
Hugging Face Jobs を使用すると、GPU を所有することなく、管理された HF インフラ上でトレーニングを実行でき、秒単位で課金されます。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(または他の有効な期間文字列)を指定して、タイムアウトを短縮または延長できます。コマンドが完了すると、ジョブは自動的に停止します。 - 完全な手順(データセットのアップロード、チェックポイントのストリーミング、ジョブでのランの再開)については、imitation-learning 学習ガイドを参照してください。