Teknik KILAVUZ

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.

2 min readSon güncelleme

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ı

1

Uygulamadan önce gecikmeyi, kaliteyi ve maliyet hedeflerini tanımlayın.

2

Gerçekçi yük ve veri koşulları altında kıyaslama yapın.

3

Hatalar, sapmalar ve kullanıcı etkisi için cihaz izleme.

4

Ö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.

Testi başlat

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.