LeRobot documentation

LeRobot 학습용 Compute HW 가이드

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 BCact, vqbet, tdmpc~2–6GBLaptop 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개의 에포크에서 수렴합니다. 에포크 수를 알면 실제 소요 시간은 기본적으로 다음과 같습니다:

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)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

이것들은 대략적인 규모(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_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, 비전 인코더 + 전문가 학습

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 GB40 GB$$$합리적인 배치 크기의 모든 정책.
A100 80 GB / H100 80 GB80 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 학습 가이드를 참고하세요.
Update on GitHub