LeRobot documentation

Hướng dẫn phần cứng tính toán cho việc huấn luyện LeRobot

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Hướng dẫn phần cứng tính toán cho việc huấn luyện LeRobot

Ước tính kích thước cho việc huấn luyện một chính sách LeRobot: bao nhiêu VRAM mỗi chính sách cần, thời gian huấn luyện như thế nào, và chạy ở đâu khi phần cứng cục bộ không đủ.

Các con số bên dưới mang tính tham khảo — là các con số theo bậc độ lớn để chọn phần cứng, không phải dự đoán chính xác. Thông lượng phụ thuộc nhiều vào I/O của bộ dữ liệu, độ phân giải ảnh, kích thước lô và số lượng GPU.

Bộ nhớ theo nhóm chính sách

Các chính sách được nhóm theo kích thước backbone; các nhóm dưới đây cung cấp một giới hạn VRAM duy nhất cho mỗi nhóm thay vì lặp lại các con số cho từng chính sách. Bộ nhớ tăng gần như tuyến tính theo kích thước batch; AdamW (mặc định của LeRobot) mang theo trạng thái optimizer, làm tăng thêm khoảng 30–100% so với chỉ một bước forward+backward.

NhómChính sáchVRAM tối đa (BS 8, AdamW)Card đồ họa khởi đầu phù hợp
Light BCact, vqbet, tdmpc~2–6GBGPU trên laptop (RTX 3060), L4, A10G
Diffusiondiffusion, multi_task_dit~8–14GBRTX 4070+ / L4 / A10G
VLA nhỏsmolvla~10–16GBRTX 4080+ / L4 / A10G
VLA lớnpi0, pi0_fast, pi05, xvla, wall_x~24–40GBA100 40 GB+ (24 GB khá chật chội ở BS 1)
Đa phương thứcgroot, eo1~24–40GBA100 40 GB+
RLsacconfig-dep.Xem hướng dẫn HIL-SERL

Hạn chế bởi bộ nhớ? Hãy giảm kích thước lô (~tuyến tính), sử dụng tích lũy gradient để khôi phục kích thước lô hiệu dụng, hoặc với SmolVLA hãy giữ freeze_vision_encoder=True.

Thời gian huấn luyện

Học mô phỏng trong Robotics thường hội tụ sau 5–10 epochs trên tập dữ liệu, chứ không phải hàng trăm nghìn bước thô. Khi bạn đã biết số epoch, thời gian thực tế về cơ bản là:

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

Thời gian cho mỗi bước phụ thuộc vào chính sách và GPU. Các con số trong bảng dưới đây là mốc tham chiếu — hãy chọn hàng gần nhất với cấu hình của bạn và nhân tuyến tính với total_steps nếu bạn huấn luyện lâu hơn hoặc ngắn hơn.

Các kịch bản phổ biến

Thời gian thực tế tham khảo cho 5 epochs trên bộ dữ liệu ~50 tập (~45k khung hình ở 30 fps × 30 s), bộ tối ưu mặc định (AdamW), ảnh 640×480:

Cài đặtChính sáchBatchThời gian thực
Một GPU RTX 4090 / RTX 3090 (24 GB)act8~30–60 phút
Một GPU RTX 4090 / RTX 3090 (24 GB)diffusion8~2–4h
Một L4 / A10G (24 GB)act8~1–2h
Một L4 / A10G (24 GB)smolvla4~3–6h
Một A100 40 GBsmolvla16~1–2h
Một A100 40 GBpi0 / pi054~4–8h
Cụm 4× H100 80 GB (accelerate)diffusion32~30–60 phút
Cụm 4× H100 80 GB (accelerate)smolvla32~1–2h
Apple Silicon M1/M2/M3 Max (MPS)act4~6–14h

Đây là các con số theo bậc độ lớn. Các lần chạy thực tế có thể sai lệch ±50% tùy thuộc vào độ phân giải hình ảnh, I/O của bộ dữ liệu, luồng của dataloader và mã SKU GPU cụ thể. Chúng hữu ích như một trực giác để trả lời câu hỏi “lần chạy này sẽ mất một giờ hay một ngày?”, chứ không phải là các SLA.

Việc sử dụng nhiều GPU rất quan trọng

accelerate launch --num_processes=N là cách dễ nhất để rút ngắn thời gian huấn luyện. Mỗi bước tối ưu hóa xử lý N × batch_size mẫu trong khoảng thời gian thực tế tương đương với một bước trên một GPU, do đó 4 GPU ≈ tăng tốc 4 lần cho các tác vụ bị giới hạn bởi khả năng tính toán. Xem hướng dẫn Multi GPU training để biết cách thiết lập đầy đủ.

Các điểm dữ liệu tham chiếu trên cụm 4×H100 80 GB (accelerate launch --num_processes=4), 5000 bước, batch 32, AdamW, tập dữ liệu imstevenpmwork/super_poulain_draft (~50 tập, ~640×480 ảnh):

Chính sáchThời gian thựcupdate_sdataloading_sTỷ lệ sử dụng GPUCác cờ đáng chú ý
diffusion16m 17s0.1670.015~90%mặc định (huấn luyện từ đầu)
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, bộ mã hóa thị giác + chuyên gia được huấn luyện

Nhật ký huấn luyện tách toàn bộ lượt lặp thành dataloading_s (next(dl_iter)), preprocessing_s (chuyển đổi ảnh và pipeline chính sách), và update_s (cập nhật bộ tối ưu hóa). step_s bao gồm cả ba phần và điều khiển samples_per_s. Benchmark ở trên được tạo trước khi có sự tách biệt này, do đó dataloading_s của nó bao gồm cả tiền xử lý.

Lịch trình và điểm kiểm tra

Nếu bạn rút ngắn quá trình huấn luyện (ví dụ: 5k–10k bước trên một tập dữ liệu nhỏ), hãy rút ngắn lịch trình LR với --policy.scheduler_decay_steps≈--steps. Nếu không, LR sẽ duy trì ở mức gần đỉnh và không bao giờ suy giảm. Tương tự với --save_freq.

Chạy ở đâu

VRAM là bộ lọc đầu tiên. Trong cùng một phân khúc, hãy chọn dựa trên ngân sách và khả năng cung cấp — các cột $–$$$$ là tương đối; hãy kiểm tra giá hiện tại trên nhà cung cấp mà bạn thực sự sử dụng.

LớpVRAMTierThoải mái cho
RTX 3090 / 4090 (tiêu dùng)24 GB$Light BC, Diffusion, SmolVLA. Chật cho VLAs ở batch 1.
L4 / A10G (đám mây)24 GB$–$$Cùng một envelope; phổ biến trên Google Cloud, RunPod, AWS g5/g6.
A100 40 GB40 GB$$$Bất kỳ chính sách nào ở kích thước lô hợp lý.
A100 80 GB / H100 80 GB80 GB$$$$Các cụm Multi-GPU; các lô lớn cho VLAs.
Chỉ CPU——Đừng huấn luyện. Hãy sử dụng Colab hoặc thuê một GPU.

Việc làm tại Hugging Face

Hugging Face Jobs cho phép bạn chạy huấn luyện trên hạ tầng HF được quản lý, tính phí theo từng giây, mà không cần sở hữu GPU. lerobot-train sẽ gửi và phát trực tiếp công việc cho bạn — chỉ cần thêm --job.target=<flavor> vào lệnh huấn luyện thông thường:

lerobot-train \
  --policy.type=act --dataset.repo_id=<USER>/<DATASET> \
  --policy.repo_id=<USER>/act_<task> \
  --job.target=a10g-large

Ghi chú:

  • Chạy hf auth login một lần trước khi gửi, công việc sẽ chạy dưới token của bạn.
  • --job.target tương ứng với bảng ở trên: t4-small/t4-medium (T4, chỉ ACT), l4x1/l4x4 (L4 24 GB), a10g-small/large/largex2/largex4 (A10G 24 GB mở rộng), a100-large (A100). Liệt kê danh mục hiện tại kèm giá cả bằng hf jobs hardware, hoặc xem https://huggingface.co/docs/hub/jobs.
  • Công việc mặc định có thời gian chờ 2d (48 giờ). Hãy ghi đè bằng --job.timeout=4h (hoặc bất kỳ chuỗi thời gian hợp lệ nào khác) để rút ngắn hoặc kéo dài thời gian chờ. Công việc sẽ tự động dừng khi lệnh hoàn tất.
  • Để xem hướng dẫn chi tiết — tải lên bộ dữ liệu, phát trực tiếp checkpoint, tiếp tục một lần chạy trên một tác vụ — hãy xem hướng dẫn huấn luyện học bắt chước.
Update on GitHub