Accelerate documentation

Derleme

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

and get access to the augmented documentation experience

to get started

Derleme

Genel Bakış

Pytorch 2.0, PyTorch kodunu optimize edilmiş çekirdeklere JIT derleyerek PyTorch kodunun daha hızlı çalışmasını sağlayan güçlü bir özellik olan torch.compile'i tanıttı. torch.compile'in ana özellikleri şunlardır:

  • Performans İyileştirmesi: Hesaplama grafiğini optimize ederek model çalıştırma hızını önemli ölçüde artırır.
  • Kullanım Kolaylığı: Uygulamak için minimal kod değişikliği gerektirir, bu da onu son derece erişilebilir kılar.
  • Uyumluluk: Mevcut PyTorch kodları ve modelleriyle sorunsuz çalışır.

Accelerate ile kullanıldığında, torch.compile dağıtık eğitim iş akışlarına sorunsuz bir şekilde entegre olur ve dağıtık yürütme ile derleme optimizasyonlarından aynı anda yararlanmanızı sağlar.

Derlenmiş kodun ilk çalıştırılması, derleme süresini içerdiği için genellikle daha uzun sürer, ancak sonraki çalıştırmalar önemli ölçüde daha hızlıdır. Farklı senaryolarda en iyi performansı elde etmek için torch.compile, "default", "reduce-overhead" (CUDA grafiklerini kullanarak ek yükü daha da azaltır) ve "max-autotune" (modeliniz için en iyi çekirdekleri bulmak için kapsamlı otomatik ayarlamalar yapar) gibi çeşitli modlar sunar.

Accelerate ile torch.compile kullanımı

Accelerate, eğitim betiklerinize torch.compile entegrasyonunu kolay ve sorunsuz hale getirmek için TorchDynamoPlugin sağlar.

from accelerate import Accelerator
from accelerate.utils import TorchDynamoPlugin

# Configure the compilation backend
dynamo_plugin = TorchDynamoPlugin(
    backend="inductor",  # Options: "inductor", "aot_eager", "aot_nvfuser", etc.
    mode="default",      # Options: "default", "reduce-overhead", "max-autotune"
    fullgraph=True,
    dynamic=False
)

# Initialize accelerator with the plugin
accelerator = Accelerator(dynamo_plugin=dynamo_plugin)
# This will apply torch.compile to your model
model = accelerator.prepare(model)

Accelerate'in karma hassasiyet, dağıtık eğitim (DDP, FSDP, Deepspeed) gibi diğer tüm özellikleri ve eklentileriyle uyumludur.

Bölgesel Derleme

Optimizasyon için genellikle büyük bir problem alanına sahip olan tüm modeli derlemeye çalışmak yerine, bölgesel derleme, aynı sınıfa ait tekrarlanan blokları hedefler ve bunları sıralı olarak derleyerek derleyicinin önbelleğine erişir. Örneğin, GPT2LMHeadModel içinde tekrarlanan blok/sınıf GPT2Block'tür ve model.transformer.h[0] olarak erişilebilir. Modelin geri kalanı (ör. model.lm_head) ayrı olarak derlenir.

Bu sayede LLM'ler ve genel olarak Transformers gibi modellerin derleme maliyeti / soğuk başlatma sürecini hızlandırabiliriz. Daha fazla ayrıntı için https://pytorch.org/tutorials/recipes/regional_compilation.html adresine bakın.

Bölgesel Derlemeyi Nasıl Kullanılır

TorchDynamoPlugin yapılandırmasında use_regional_compilation=True olarak ayarlanarak etkinleştirilebilir:

# Configure the compilation backend
dynamo_plugin = TorchDynamoPlugin(
    use_regional_compilation=True,
    ... # other parameters
)
# Initialize accelerator with the plugin
accelerator = Accelerator(dynamo_plugin=dynamo_plugin)
# This will apply compile_regions to your model
model = accelerator.prepare(model)

accelerate.utils.compile_regions yardımcı işlevini de torch.compile kullanırken olduğu gibi doğrudan kullanabilirsiniz.

Bölgesel Derlemenin Avantajları

PyTorch'taki torch.compile özelliğini kullanarak tam derleme ve bölgesel derlemeyi karşılaştıran kapsamlı testler gerçekleştirdik. Tam sonuçlar accelerate deposunda yer almaktadır. Testlerimizden elde edilen temel bulgular şunlardır:

  1. Benzer Performans: Bölgesel derleme, özellikle daha büyük modeller için, tam derlemeye benzer performans hızlandırmaları sağlar.
  2. Daha Hızlı Derleme: Bölgesel derleme, modellerin derlenmesi için gereken süreyi önemli ölçüde azaltarak dağıtım için daha verimli bir seçenek haline gelir.
  3. Toplam Boyut Etkisi: Derleme stratejileri arasındaki performans farkı, toplam boyutu arttıkça azalır; bu da derlemenin getirdiği ek maliyetin bu senaryolarda daha az etkili olduğunu gösterir.
  4. Model Boyutu Dikkat Edilmesi Gerekenler: Bölgesel derlemenin faydaları, derleme süresinden elde edilen tasarrufun önemli ölçüde olabildiği daha büyük modellerde daha belirgindir.
  5. Pratik Uygulama: Gerçek dünya uygulamaları için, özellikle büyük modellerle çalışırken eğitim soğuk başlatma sürelerini optimize etmek için bölgesel derleme pratik bir seçimdir.

Sonuç

Hem tam hem de bölgesel derleme, modellerinizi önemli ölçüde hızlandırabilir. Bölgesel derleme, özellikle büyük modelleri yüksek parti boyutlarıyla eğitirken, derleme süresi ile çalışma zamanı performansı arasında pratik bir denge sunar.

Update on GitHub