LeRobot documentation

PyTorch hızlandırıcıları

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

PyTorch hızlandırıcıları

LeRobot, eğitim ve çıkarım için birden fazla donanım hızlandırma seçeneğini destekler.

Bu seçenekler şunları içerir:

  • CPU: CPU tüm hesaplamaları yürütür, özel bir hızlandırıcı kullanılmaz
  • CUDA: NVIDIA GPU'larla hızlandırma ve ROCm aracılığıyla AMD GPU'larla hızlandırma (bkz. AMD GPU'lar)
  • MPS: Apple Silicon GPU'ları ile hızlandırma
  • XPU: Intel entegre ve ayrık GPU'larla hızlandırma

Başlangıç

Belirli bir hızlandırıcıyı kullanmak için uygun bir PyTorch sürümünün yüklü olması gerekir.

CPU, CUDA ve MPS arka uçları için PyTorch kurulum sayfasında verilen talimatları izleyin. XPU arka ucu için PyTorch belgelerindeki talimatları izleyin.

AMD GPU'lar (ROCm)

PyTorch'un ROCm derlemeleri, HIP çalışma zamanını torch.cuda ad alanı üzerinden açığa çıkarır; bu nedenle --policy.device=cuda bir AMD GPU seçer ve LeRobot tarafında herhangi bir değişiklik gerekmez. Belirli kartları seçerken HIP_VISIBLE_DEVICES, CUDA_VISIBLE_DEVICES yerine tercih edilir.

Mevcut bir ROCm PyTorch üzerine LeRobot kurulumu dikkat gerektirir: LeRobot’ün torch, torchvision ve numpy sınırları, bir ROCm görüntüsünün sunduğu sürümlerden farklı olabilir ve normal bir kurulum, PyPI’den torch alır; PyPI’nin Linux tekerlekleri CUDA derlemeleridir, bu nedenle kısıtsız bir kurulum ROCm derlemesinin yerini alır ve GPU’ları kullanılamaz hale getirir. Ağacın geri kalanının normal şekilde çözümlenmesini sağlamak için bu paketleri uv pip install --override ile sabitleyin. docker/Dockerfile.rocm bunu yapar ve çalışan bir ortama en hızlı yoldur; ROCm’in gerektirdiği çalıştırma bayrakları için docker/README.md dosyasına bakın.

Kurulumu doğrulama

Kurulumdan sonra, hızlandırıcı kullanılabilirliği çalıştırılarak doğrulanabilir

import torch
print(torch.<backend_name>.is_available())  # <backend_name> is cuda, mps, or xpu

Eğitim veya değerlendirme nasıl çalıştırılır

İstenen hızlandırıcıyı seçmek için lerobot-train veya lerobot-eval çalıştırılırken --policy.device bayrağını kullanın. Örneğin, Apple Silicon üzerinde MPS kullanmak için şunu çalıştırın:

lerobot-train \
    --policy.device=mps ...
lerobot-eval \
    --policy.device=mps ...

Ancak çoğu durumda, bir hızlandırıcının varlığı otomatik olarak algılanır ve policy.device parametresi komut satırı komutlarından çıkarılabilir.

Karışık hassasiyet

Eğitim hassasiyeti, no (varsayılan), bf16 ve fp16 değerlerini kabul eden --accelerator.mixed_precision tarafından yönetilir:

lerobot-train \
    --policy.type=act \
    --accelerator.mixed_precision=bf16 ...

fp16 bir hızlandırıcı gerektirir: --policy.device=cpu durumunda reddedilir, çünkü accelerate bu durumda bir kayıp ölçekleyici (loss scaler) oluşturmaz ve çalışma sessizce tam hassasiyete (full precision) geri düşer. bf16 ise CPU üzerinde de otomatik döküm (autocast) yapabildiği için kısıtlanmaz.

bf16, donanım desteği gerektirir (NVIDIA GPU'larda Ampere veya daha yeni). V100 veya T4 gibi eski hızlandırıcılarda fp16 kullanın.

fp16 ve kayıp ölçekleyici

fp16, bf16'den çok daha küçük bir üstel aralığa sahiptir; bu nedenle gradyanlar geriye yayılım adımından önce ölçeklenir ve optimizör adımından önce tekrar ölçeklenir. LeRobot bunu accelerate'in GradScaler'ine devreder; bu bileşen taşan gradyanları da algılar ve ilgili optimizör güncellemelerini atlar. Bölünmüş eğitimde gradyanlar DTensor'lerdir ve PyTorch taşma bayrağını cihaz ızgarası üzerinde indirger; böylece bir sıradaki taşma, güncellemeyi tüm sıralarda atlatır.

Atlanan güncellemeler normaldir, özellikle ölçeğin başlangıç değerinden aşağı doğru kalibre edildiği ilk birkaç adımda. Günlüklerde scale metrikinin düşmesi olarak görülürler. Ölçek, her kontrol noktasıyla birlikte (training_state/scaler_state.json) kaydedilir ve devam ettirme sırasında geri yüklenir; bu nedenle devam ettirilen bir çalıştırmanın yeniden kalibrasyon yapmasına gerek yoktur.

Varsayılanlar bir politika için uygun değilse ölçekleyici ayarlanabilir:

lerobot-train \
    --policy.type=act \
    --accelerator.mixed_precision=fp16 \
    --accelerator.grad_scaler.init_scale=1024 \
    --accelerator.grad_scaler.growth_interval=2000 ...

TF32

Ampere ve daha yeni NVIDIA GPU'larında LeRobot, varsayılan olarak float32 matmulların ve cuDNN konvolüsyonlarının TF32 kullanmasını sağlar (--tf32=true). Tam float32 hassasiyetini korumak için --tf32=false kullanın; --tf32=null ise PyTorch varsayılan ayarlarını korur.

Update on GitHub