LeRobot documentation
LeRobot 학습용 Compute HW 가이드
LeRobot 학습용 Compute HW 가이드
LeRobot 정책 학습을 위한 대략적인 규모 설정: 각 정책에 필요한 VRAM 양, 예상 학습 시간, 그리고 로컬 하드웨어가 부족할 경우 어디에서 실행해야 하는지
아래의 수치는 참고용입니다. 하드웨어를 선택하기 위한 규모 수준의 수치이며, 정확한 예측 값이 아닙니다. 처리량은 데이터셋 I/O, 이미지 해상도, 배치 크기, GPU 수에 크게 의존합니다.
정책 그룹별 메모리
Policies는 backbone 크기로 그룹화됩니다. 아래 그룹화는 각 정책별로 수치를 반복하는 대신 그룹당 단일 VRAM 범위를 제공합니다. 메모리는 배치 크기에 따라 대략 선형적으로 증가하며, AdamW(LeRobot의 기본값)는 forward+backward pass만으로 발생하는 것보다 약 30–100% 더 많은 optimizer state를 포함합니다.
| 그룹 | 정책 | 피크 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
Per-step time는 정책과 GPU에 따라 달라집니다. 아래 표의 수치는 기준점입니다. 사용 중인 환경에 가장 가까운 행을 선택하고, 학습 기간이 더 길거나 짧다면 total_steps에 따라 선형적으로 조정하세요.
일반적인 시나리오
~50에피소드 데이터셋(~45k 프레임, 30 fps × 30 s)에서 5 epochs에 걸리는 대략적인 실제 시간, 기본 옵티마이저(AdamW), 640×480 이미지:
| 설정 | 정책 | 배치 | 실시간 |
|---|---|---|---|
| 단일 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 |
이것들은 대략적인 규모(order-of-magnitude) 수치입니다. 실제 실행은 이미지 해상도, 데이터셋 I/O, dataloader 스레딩, 정확한 GPU SKU에 따라 ±50% 범위 내에서 편차가 발생할 수 있습니다. 이들은 SLA가 아니라 “이번 실행이 1시간이 걸릴지 하루가 걸릴지”를 가늠하는 직관적 기준으로 유용합니다.
멀티 GPU는 매우 중요합니다
accelerate launch --num_processes=N은 학습 시간을 줄이는 가장 쉬운 방법입니다. 각 옵티마이저 스텝은 단일 GPU 스텝과 거의 동일한 실제 시간(wall-clock) 동안 N × batch_size개의 샘플을 처리하므로, 4개의 GPU를 사용하면 컴퓨트 바운드(compute-bound) 실행에서 약 4배의 속도 향상을 기대할 수 있습니다. 전체 설정 방법은 Multi GPU training 가이드를 참고하세요.
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, 비전 인코더 + 전문가 학습 |
Training logs는 전체 반복을 dataloading_s (next(dl_iter)), preprocessing_s (이미지 변환 및 정책 파이프라인), update_s (옵티마이저 업데이트)로 구분합니다. step_s는 이 세 가지를 모두 포함하며 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. 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는 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 학습 가이드를 참고하세요.