# LeRobot Eğitim İçin Hesaplama Donanımı Kılavuzu

LeRobot politikası eğitmek için yaklaşık boyutlandırma: Her politikanın ne kadar VRAM'e ihtiyaç duyduğu, eğitim süresinin nasıl göründüğü ve yerel donanım yeterli olmadığında nerede çalıştırılacağı.

Aşağıdaki sayılar **gösterge niteliğindedir** — donanım seçimi için büyüklük mertebesi değerleridir, kesin tahminler değildir. Verimlilik, veri seti girdi/çıkışı, görüntü çözünürlüğü, parti boyutu ve GPU sayısına büyük ölçüde bağlıdır.

## Politika grubuna göre bellek

Policies, omurga boyutuna göre kümelenir; aşağıdaki gruplamalar, her politika için sayıları tekrarlamak yerine grup başına tek bir VRAM sınırı verir. Bellek, batch boyutuyla yaklaşık doğrusal olarak ölçeklenir; AdamW (LeRobot varsayılanı), yalnızca ileri+geri geçişe kıyasla ~%30–100 ekleyen optimizör durumu taşır.

| Grup      | Politikalar                                    | Zirve VRAM (BS 8, AdamW) | Uygun başlangıç GPU'ları             |
| ---------- | ------------------------------------------- | ----------------------: | --------------------------------- |
| Light BC   | `act`, `vqbet`, `tdmpc`                     |                  ~2–6GB | Laptop GPU (RTX 3060), L4, A10G   |
| Diffusion  | `diffusion`, `multi_task_dit`               |                 ~8–14GB | RTX 4070+ / L4 / A10G             |
| Küçük VLA  | `smolvla`                                   |                ~10–16GB | RTX 4080+ / L4 / A10G             |
| Büyük VLA  | `pi0`, `pi0_fast`, `pi05`, `xvla`, `wall_x` |                ~24–40GB | A100 40 GB+ (BS 1'de 24 GB dar) |
| Çok Modallı | `groot`, `eo1`                              |                ~24–40GB | A100 40 GB+                       |
| RL         | `sac`                                       |             config-dep. | [HIL-SERL kılavuzu](./hilserl)   |

Bellek kısıtlı mı? Batch boyutunu düşürün (~doğrusal), etkin batch boyutunu geri kazanmak için gradyan biriktirme kullanın veya SmolVLA için `freeze_vision_encoder=True` bırakın.

## Eğitim süresi

Robotik imitasyon öğrenmesi genellikle ham adım sayıları yerine veri seti üzerinde **5–10 epoch** içinde yakınsar. Epoch sayısını bildiğinizde, duvar saati süresi temelde şudur:

```text
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
```

Adım başına süre, politika ve GPU'ya bağlıdır. Aşağıdaki tablodaki sayılar referans noktalarıdır — kendi kurulumunuza en yakın satırı seçin ve daha uzun veya daha kısa süre eğitim yapıyorsanız `total_steps` ile lineer olarak ölçekleyin.

### Yaygın senaryolar

**~50 epizodluk bir veri setinde (~45k kare, 30 fps × 30 sn) 5 epoch** için gösterge niteliğinde duvar saati süresi, varsayılan optimizör (AdamW), 640×480 görüntüler:

| Kurulum                                | Politika         | Toplu | Gerçek zaman |
| ------------------------------------ | -------------- | ----- | ---------: |
| Tek RTX 4090 / RTX 3090 (24 GB)   | `act`          | 8     |  ~30–60dk |
| Tek RTX 4090 / RTX 3090 (24 GB)   | `diffusion`    | 8     |      ~2–4h |
| Tek L4 / A10G (24 GB)             | `act`          | 8     |      ~1–2h |
| Tek L4 / A10G (24 GB)             | `smolvla`      | 4     |      ~3–6h |
| Tek A100 40 GB                    | `smolvla`      | 16    |      ~1–2h |
| Tek A100 40 GB                    | `pi0` / `pi05` | 4     |      ~4–8h |
| 4× H100 80 GB kümesi (`accelerate`) | `diffusion`    | 32    |  ~30–60dk |
| 4× H100 80 GB kümesi (`accelerate`) | `smolvla`      | 32    |      ~1–2h |
| Apple Silicon M1/M2/M3 Max (MPS)     | `act`          | 4     |     ~6–14h |

Bunlar büyüklük sırası (order-of-magnitude) değerleridir. Gerçek çalıştırmalar, görüntü çözünürlüğü, veri seti girdi/çıkışı, dataloader iş parçacıkları (threading) ve tam GPU SKU'suna bağlı olarak ±%50 sapma gösterebilir. Bunlar, "bu çalıştırma bir saat mi yoksa bir gün mü sürecek?" sezgisi için faydalıdır; SLA'lar olarak kullanılmamalıdır.

### Çoklu GPU çok önemlidir

`accelerate launch --num_processes=N`, eğitim süresini kısaltmanın en kolay yoludur. Her optimizasyon adımı, tek GPU'lu bir adımla yaklaşık aynı duvar saati süresinde `N × batch_size` örnek işler; bu nedenle hesaplama kısıtlı çalışmalarda 4 GPU ≈ 4× hızlanma sağlar. Tam kurulum için [Multi GPU training](./multi_gpu_training) kılavuzuna bakın.

4×H100 80 GB kümesindeki referans veri noktaları (`accelerate launch --num_processes=4`), 5000 adım, batch 32, AdamW, veri seti [`imstevenpmwork/super_poulain_draft`](https://huggingface.co/datasets/imstevenpmwork/super_poulain_draft) (~50 bölüm, ~640×480 görüntüler):

| Politika      | Gerçek zaman | `update_s` | `dataloading_s` | GPU kullanımı | Öne çıkan bayraklar                                                                                                                  |
| ----------- | ---------- | ---------: | --------------: | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `diffusion` | 16m 17s    |      0.167 |           0.015 | ~90%     | varsayılanlar (sıfırdan eğitim)                                                                                               |
| `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`, görü kodlayıcı + uzman eğitildi |

Eğitim günlükleri, tam yinelemeyi `dataloading_s` (`next(dl_iter)`), `preprocessing_s` (görsel dönüştürme ve politika hattı) ve `update_s` (optimizör güncellemesi) olarak ayırır. `step_s` bu üçünü de kapsar ve `samples_per_s` değerini belirler. Yukarıdaki ölçüm bu bölünmeden önce yapıldığından, `dataloading_s` değeri ön işleme adımını da içerir.

### Zamanlama ve denetim noktaları

Eğitimi kısaltırsanız (ör. küçük bir veri setinde 5k–10k adım), LR zamanlamasını da `--policy.scheduler_decay_steps≈--steps` ile kısaltın. Aksi halde LR zirvesine yakın kalır ve asla azalmaz. `--save_freq` için de aynı durum geçerlidir.

## Nerede çalıştırılacak

VRAM ilk filtredir. Bir kademede seçim, bütçeye ve erişilebilirliğe göre yapılır — `$`–`$$$$` sütunları görecelidir; fiilen kullandığınız sağlayıcıdaki güncel fiyatları kontrol edin.

| Sınıf                      | VRAM  | Seviye   | Rahat                                             |
| -------------------------- | ----- | ------ | ----------------------------------------------------------- |
| RTX 3090 / 4090 (tüketici) | 24 GB | `$`    | Light BC, Diffusion, SmolVLA. Batch 1'de VLAs için dar.    |
| L4 / A10G (bulut)          | 24 GB | `$–$$` | Aynı zarf; Google Cloud, RunPod ve AWS `g5/g6` üzerinde yaygındır. |
| A100 40 GB                 | 40 GB | `$$$`  | Makul parti boyutlarında herhangi bir politika.                       |
| A100 80 GB / H100 80 GB    | 80 GB | `$$$$` | Çoklu GPU kümeleri; VLAs için büyük topluluklar.                 |
| **Sadece CPU**               | —     | —      | Eğitim yapmayın. Colab kullanın veya bir GPU kiralayın.                       |

### Hugging Face İş İlanları

[Hugging Face Jobs](https://huggingface.co/docs/hub/jobs), GPU sahibi olmadan, saniye bazlı faturalandırılan yönetilen HF altyapısında eğitim çalıştırmanızı sağlar. `lerobot-train` işi sizin için gönderir ve akışını sağlar — normal bir eğitim komutuna `--job.target=<flavor>` eklemeniz yeterlidir:

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

Notlar:

- Göndermeden önce `hf auth login` komutunu bir kez çalıştırın; iş, token'ınız altında çalışır.
- `--job.target` yukarıdaki tabloya karşılık gelir: `t4-small`/`t4-medium` (T4, yalnızca ACT), `l4x1`/`l4x4` (L4 24 GB), `a10g-small/large/largex2/largex4` (A10G 24 GB, ölçeklendirilmiş), `a100-large` (A100). Fiyatlandırma dahil güncel kataloğu `hf jobs hardware` ile listeleyebilir veya [https://huggingface.co/docs/hub/jobs](https://huggingface.co/docs/hub/jobs) adresine bakabilirsiniz.
- İş, varsayılan olarak `2d` (48 saat) zaman aşımına sahiptir. Zaman aşımını kısaltmak veya uzatmak için `--job.timeout=4h` (veya başka geçerli bir süre dizgesi) ile geçersiz kılın. İş, komut tamamlandığında otomatik olarak durdurulur.
- Tam anlatım için — veri seti yükleme, checkpoint akışı, bir işte çalışmayı sürdürme — [imitation-learning eğitim kılavuzu](./il_robots#train-using-hugging-face-jobs)'na bakın.

