Sıfır ve Parçalı Optimize Ediciler
ZeRO (Sıfır Yedeklilik Optimize Edici), optimize edici durumunu, degradeleri ve ağırlıkları GPU'lar arasında paylaştırarak veri paralelliğinin gereksiz bellek çoğaltmasını ortadan kaldırır.
Genel Bakış
It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.
Derin Dalış
Sıradan veri paralelliğinde her GPU, optimize edici durumunun, gradyanların ve parametrelerin yedekli tam bir kopyasını saklar; bu da özellikle optimizer durumunun modelin kendisinden birkaç kat daha büyük olabildiği Adam için son derece israftır. Microsoft tarafından DeepSpeed'de tanıtılan ZeRO, bu tensörleri GPU'lar arasında bölüştürerek bu fazlalığı ortadan kaldırır, böylece her cihaz yalnızca bir dilime sahip olur. ZeRO üç aşamalı aşamada gelir: Aşama 1'de parça optimizasyon durumu, Aşama 2'de degrade parçalama eklenir ve Aşama 3'te parametreler bizzat parçalanır. Gerektiğinde GPU'lar eksik dilimleri iletişim yoluyla toplar, hesaplar ve ardından serbest bırakır. Sonuç, veri paralelliğinin kolay programlama modelini korurken, milyarlarca ila trilyonlarca parametrenin eğitimine olanak tanıyan GPU başına önemli ölçüde daha düşük bellektir.
Teknik Bilgi
Zero, bellek tasarrufu için ekstra iletişim sağlar. Aşama 3'te, bir katmanın ileri geçişinden önce, tümünü toplayan bir sistem o katmanın tüm parametrelerini her bir GPU'da toplar; daha sonra sahip olunmayan dilimler hafızayı geri kazanmak için atılır. Degradeler azaltılarak dağıtılır, böylece her GPU yalnızca sahip olduğu parametrelerle eşleşen degrade dilimini tutar. PyTorch'un FSDP'si (Tamamen Parçalanmış Veri Paralel) aynı fikri yerel olarak uygular ve modülleri anında parçalamak ve yeniden parçalamak için sarar.
Stratejik Etki
Maliyet ve bütçe
Mimari kararlar yıllarca performansı ve işletme maliyetini etkiler.
Daha net kararlar
Teknik eğitim, ekiplerin yalnızca en yenisini değil, doğru yığını seçmesine de yardımcı olur.
Quality control
Daha iyi mühendislik seçenekleri, üretimdeki güvenilirlik olaylarını azaltır.
Sıfır ve Parçalı Optimize Edicilerin Geleceği
Parçalama, egzotik bir seçenek yerine büyük ölçekli eğitim için varsayılan seçenek haline geliyor. Boşaltmayla daha derin entegrasyon (ZeRO-Infinity aracılığıyla dilimleri CPU'ya veya NVMe'ye gönderme), maliyetlerini gizlemek için hesaplamayla tüm toplama ve azaltma-dağılımın daha iyi örtüşmesini ve tensör ve ardışık düzen paralelliğiyle kombinasyonları bekleyebilirsiniz. Modeller büyümeye devam ettikçe, bellek açısından verimli parçalı iyileştiriciler, bunları gerçekçi donanım bütçelerine uydurmak için merkezi bir öneme sahiptir.
Gerçek Dünya Uygulaması
Aksi takdirde GPU belleğini aşacak milyarlarca parametreli bir dil modeline ince ayar yapmak için DeepSpeed Zero Stage 2'yi kullanma.
GPU'lar genelinde parametreleri, degradeleri ve optimize edici durumunu parçalayan ve bunları isteğe bağlı olarak katman başına toplayan PyTorch FSDP ile eğitim.
Optimize edici durumunu CPU belleğine göndermek için Sıfır Boşaltma uygulayarak tek bir GPU'nun, VRAM'inden kat kat daha büyük bir modeli eğitmesine olanak tanır.
GPU ve CPU belleği tükendiğinde NVMe depolama alanından parametre parçalarını aktararak trilyon parametreli bir modeli ZeRO-Infinity ile ölçeklendirme.
Riskler ve Korkuluklar
Bir kıyaslamayı optimize etmek daha geniş sistem zayıflıklarını gizleyebilir.
Altyapı ve bakım maliyetleri genellikle hafife alınır.
Sistemler karmaşıklaştıkça güvenlik ve gözlemlenebilirlik boşlukları büyüyebilir.
Uygulama Yol Haritası
Uygulamadan önce gecikmeyi, kaliteyi ve maliyet hedeflerini tanımlayın.
Gerçekçi yük ve veri koşulları altında kıyaslama yapın.
Hatalar, sapmalar ve kullanıcı etkisi için cihaz izleme.
Ölçeklendirmeden önce geri alma ve olay müdahale yollarını hazırlayın.
Keşfetmeye Devam Edin
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the ZeRO and Sharded Optimizers quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Next guide
Lookahead ve Lion Optimizer'lar
Sık sorulan sorular
What is ZeRO and Sharded Optimizers?
ZeRO (Sıfır Yedeklilik Optimize Edici), optimize edici durumunu, degradeleri ve ağırlıkları GPU'lar arasında paylaştırarak veri paralelliğinin gereksiz bellek çoğaltmasını ortadan kaldırır. Veri paralelliğinin basitliğiyle ancak GPU başına belleğin küçük bir kısmıyla muazzam modelleri eğitmenize olanak tanır.
Sıfır, düz veri paralelliğine kıyasla hangi fazlalığı ortadan kaldırır?
Standart veri paralelliği, her GPU'da optimize edici durumunun, degradelerin ve ağırlıkların tam bir kopyasını saklar; ZeRO bunları parçalara ayırarak her GPU'nun yalnızca bir dilim tutmasını sağlar.
Optimize edici durumu neden Adam'ın en büyük hafıza domuzudur?
Adam, parametre başına birinci ve ikinci momentler gibi çalıştırma tahminlerini sürdürüyor ve bunlar, fp32 ana ağırlıklarıyla birleştirildiğinde, modelin kendi boyutunu gölgede bırakabiliyor.
Zero Stage 3, Aşama 1 ve Aşama 2'nin sağlayamadığı neyi sağlar?
Aşama 1, parça optimizasyon durumunu, Aşama 2, degradeler ekler ve Aşama 3, model parametrelerini GPU'lar arasında parçalayarak daha da ileri gider.
ZeRO Stage 3'te GPU, bir katmanın ileri geçişi için ihtiyaç duyduğu parametrelerin tamamını nasıl elde eder?
Bir katmanı hesaplamadan önce, bir all-gather, tüm parametrelerini her bir GPU'da birleştirir; işlem tamamlandıktan sonra, sahip olunmayan dilimler hafızayı geri kazanmak için serbest bırakılır.
Hangi PyTorch özelliği sıfır tarzı parçalamayı yerel olarak uygular?
PyTorch'un Tamamen Parçalanmış Veri Paraleli (FSDP), parametreleri, degradeleri ve optimize edici durumunu parçalar, bunları anında toplayıp yeniden parçalayarak Sıfır'ı yansıtır.