Son birkaç yılda doğal dil işleme (NLP) alanında hızlı bir gelişme görüldü. NVIDIA ve Amazon'un en yeni nesil hızlandırıcıları gibi donanımlar iyileşmiş olsa da, gelişmiş makine öğrenimi (ML) uygulayıcıları hala düzenli olarak büyük dil modellerini birden çok GPU'ya ölçeklendirme sorunlarıyla karşılaşıyor.
Bu blog gönderisinde, öncelikle Hugging Face tarafından sağlanan soyutlama ve Amazon SageMaker'ın modüler arka ucu ile büyük ve küçük ölçekli NLP modellerinin yükselişini kısaca özetliyoruz. Özellikle, müşteriler için 175 milyar parametreli NLP modeli ön eğitimi ve ince ayarının kilidini açan SageMaker modeli paralel kitaplığında dört ek özelliğin kullanıma sunulmasını vurguluyoruz.
Bu kitaplığı SageMaker eğitim platformunda kullandık ve 32 ml.p120d.4xlarge bulut sunucularında ve 24 milyar parametrede saniyede 175 örnek çıktısı elde ettik. Bunu 240 örneğe çıkarırsak, tam modelin eğitilmesinin 25 gün süreceğini tahmin ediyoruz.
Model paralelliği hakkında daha fazla bilgi için belgeye bakın. Amazon SageMaker Model Paralelliği: Büyük Model Eğitimi için Genel ve Esnek Bir Çerçeve.
Bu performans numaralarını oluşturmak için kullandığımız GPT2 not defterini de GitHub deposu.
Paralel SageMaker modelindeki yeni özelliklerin nasıl kullanılacağı hakkında daha fazla bilgi için bkz. PyTorch için SageMaker Model Paralel Kitaplığının Genişletilmiş Özellikleri, ve SageMaker Python SDK ile kullanın.
Amazon SageMaker'da NLP – Hugging Face ve model paralelliği
Hugging Face ve NLP'de yeniyseniz, bilmeniz gereken en önemli nokta, doğal dil işlemeyi (NLP) kullanan uygulamaların insan düzeyinde performans elde etmeye başladığıdır. Bu, büyük ölçüde, adı verilen bir öğrenme mekanizması tarafından yönlendirilir. Dikkatolarak adlandırılan bir derin öğrenme modeline yol açmıştır. transformatör, bu, önceki derin öğrenme sıralı yöntemlerinden çok daha ölçeklenebilir. Şimdi ünlü BERT modeli transformatörden yararlanmak için geliştirildi ve yol boyunca birkaç faydalı NLP taktiği geliştirdi. NLP'nin hem içinde hem de dışında BERT'den ilham alan transformatörler ve model paketi, Google arama sonuçlarınızın arkasındaki birincil motordursenin içinde Google çeviri sonuçları, ve bir dizi yeni girişim.
SageMaker ve Hugging Face, bunu müşteriler için her zamankinden daha kolay hale getirmek için ortaklık kurdu. Önceden eğitilmiş modelleri doğrudan Hugging Face's'ten eğitmeniz ve barındırmanız için Hugging Face derin öğrenme kapsayıcılarını (DLC'ler) kullanıma sunduk. 26,000'den fazla model deposu. başlattık SageMaker Eğitim Derleyicisi Hugging Face eğitim döngülerinizin çalışma süresini %50'ye kadar hızlandırmanız için. Biz de entegre ettik Hugging Face amiral gemisi Transformers SDK ile dağıtılmış eğitim kitaplıklarımız NLP modellerinizi ölçeklendirmeyi her zamankinden daha kolay hale getirmek için.
Amazon SageMaker'da Hugging Face Transformer modelleri hakkında daha fazla bilgi için bkz. Sarılma Yüz Transformatör Modelleri için Destek.
SageMaker model paralel kitaplığı ile büyük ölçekli NLP modeli eğitimi için yeni özellikler
AWS re:Invent 2020'de SageMaker, aşağıdaki gibi bilgisayarla görü modellerini eğitmek için bulutta en iyi performansı sağlayan dağıtılmış kitaplıkları başlattı: Maske-RCNN ve NLP modelleri gibi T5-3B. Bu, AWS'de NCCL'den %20-40 daha hızlı olan gelişmiş iletişim ilkeleri ve son derece büyük dil modellerinin onlarca, yüzlerce ve binlerce GPU'ya ölçeklenmesini sağlayan model dağıtım teknikleri ile mümkündür.
SageMaker model paralel kitaplığı (SMP), size her zaman, Hugging Face veya başka bir yerde, PyTorch'ta önceden tanımlı NLP modelinizi alma ve bu modeli kümenizdeki birden çok GPU'ya bölme yeteneği vermiştir. Başka bir deyişle, SMP, modelinizi daha küçük parçalara böler, böylece yetersiz bellek (OOM) hatalarıyla karşılaşmazsınız. Büyük ölçekli modeller için kritik olan ek bellek tasarrufu tekniklerini eklemekten memnuniyet duyuyoruz, yani:
- tensör paralelliği
- Optimize edici durum paylaşımı
- Aktivasyon kontrol noktası
- Aktivasyon boşaltma
Belleği daha verimli kullanmak ve yeni nesil aşırı ölçekli NLP modellerini eğitmek için bu dört özelliği birleştirebilirsiniz.
Dağıtılmış eğitim ve tensör paralelliği
Tensör paralelliğini anlamak için, birçok dağıtılmış eğitim veya paralellik türü olduğunu bilmek yardımcı olur.. Muhtemelen en yaygın türe zaten aşinasınızdır, veri paralelliği Veri paralelliğinin özü şu şekilde çalışır: SageMaker tahmincinizde bir ila iki ml.EC2 örneğine gitmek gibi, kümenize fazladan bir düğüm eklersiniz. Ardından Horovod, PyTorch Dağıtılmış Veri Paralel veya SageMaker Dağıtılmış gibi bir paralel veri çerçevesi kullanırsınız. Bu, her hızlandırıcı için bir tane olmak üzere modelinizin kopyalarını oluşturur ve verilerin her bir düğüme dağıtılmasını ve ayrıca sinir ağınızın geri yayılım adımı sırasında tüm sonuçların bir araya getirilmesini yönetir. Dağıtılmış gradyan inişini düşünün. Veri paralelliği sunucularda da popülerdir; tüm düğümlerinizdeki tüm GPU'lara ve ara sıra CPU'lara veri paylaşıyorsunuz. Aşağıdaki diyagram, veri paralelliğini göstermektedir.
Model paralellik biraz farklıdır. Aynı modelin kopyalarını yapmak yerine modelinizi parçalara ayırıyoruz. Sonra onu çalıştırmayı yönetiriz, böylece verileriniz hala matematiksel olarak aynı şekilde sinir ağınız üzerinden akıyor, ancak modelinizin farklı parçaları farklı GPU'larda oturuyor. Bir ml.p3.8xlarge kullanıyorsanız, dört NVIDIA V100'ünüz var, bu nedenle modelinizi GPU başına tek parça olmak üzere 4 parçaya bölmek isteyebilirsiniz. İki ml.p4d.24xlarge'a kadar atlarsanız, kümenizde toplam 16 A100 olur, bu nedenle modelinizi 16 parçaya bölebilirsiniz. Buna bazen denir boru hattı paralelliği Bunun nedeni, ağdaki katman kümesinin GPU'lar arasında bölümlenmesi ve GPU kullanımını en üst düzeye çıkarmak için ardışık düzende çalışmasıdır. Aşağıdaki diyagram model paralelliğini göstermektedir.
Model paralelliğini ölçekte gerçekleştirmek için üçüncü bir dağıtım türüne ihtiyacımız var: tensör paralelliği. Tensör paralelliği, aynı kavramları bir adım ötede uygular; sinir ağınızın en büyük katmanlarını parçalara ayırır ve katmanların parçalarını farklı cihazlara yerleştiririz. Bu, 175 milyar veya daha fazla parametreyle çalışırken ve bu transformatörü eğitmek için modelinizin parçalarıyla birlikte birkaç kaydı bile RAM'e sığdırmaya çalıştığınızda geçerlidir. Aşağıdaki diyagram tensör paralelliğini göstermektedir.
Etkinleştirmek tensör paralelliği, smp seçenekleri içinde ayarlayın tahmincinize geçersiniz.
Önceki kodda, pipeline_parallel_degree
yukarıda tartıştığımız ardışık düzen paralelliğine dayalı olarak modelinizin kaç parçaya bölünmesi gerektiğini açıklar. Bunun için başka bir kelime puanları.
Tensör paralelliğini etkinleştirmek için tensor_parallel_degree
istediğiniz seviyeye Örnek başına GPU sayısına eşit veya bundan daha küçük bir sayı seçtiğinizden emin olun, bu nedenle ml.p8d.4xlarge makineleri için 24'den büyük olmamalıdır. Ek komut dosyası değişiklikleri için bkz. Tensör Paralelliği ile SageMaker Dağıtılmış Model Paralel Eğitim İşi Çalıştırın.
ddp parametresi, dağıtılmış veri paralelini ifade eder. Model paralellik kitaplığı bu özellikler için DDP'ye dayandığından, veri paralelliği veya tensör paralelliği kullanıyorsanız bunu genellikle etkinleştirirsiniz.
Optimize edici durum paylaşımı, aktivasyon boşaltma ve kontrol noktaları
Son derece büyük bir modeliniz varsa, son derece büyük bir optimize edici durumuna da ihtiyacınız vardır. Optimize edicinizi SMP için hazırlamak basittir: basitçe betiğinizdeki diskten alın ve smp.DistributedOptimizer()
nesne.
Bunu ayarlayarak tahmin edicide etkinleştirdiğinizden emin olun. shard_optimizer_state
içinde True smp_options
SMP'yi yapılandırmak için kullanırsınız:
Tensör ve ardışık düzen paralelliğine benzer şekilde SMP, en iyi yerleştirme stratejilerini bulmak için modelinizin ve dünya boyutunuzun (tüm eğitim düğümlerinizdeki toplam GPU sayısı) profilini çıkarır.
Derin öğrenmede ara katman çıktılarına aktivasyonlar da denir ve bunların ileri geçiş sırasında saklanması gerekir. Bunun nedeni, geriye doğru geçişte gradyan hesaplaması için kullanılmaları gerekmesidir. Büyük bir modelde, tüm bu aktivasyonları aynı anda bellekte depolamak, önemli bellek darboğazları yaratabilir. Bu darboğazı gidermek için şunları kullanabilirsiniz: aktivasyon kontrol noktası, SageMaker model paralellik kitaplığındaki üçüncü yeni özellik. Aktivasyon kontrol noktası veya gradyan kontrol noktası, belirli katmanların aktivasyonlarını temizleyerek ve geriye doğru geçiş sırasında bunları yeniden hesaplayarak bellek kullanımını azaltmaya yönelik bir tekniktir. Bu, azaltılmış bellek kullanımı için ekstra hesaplama süresini etkili bir şekilde değiştirir.
Son olarak, aktivasyon boşaltma doğrudan aktivasyon kontrol noktasını kullanır. Model eğitimi sırasında GPU RAM'de yalnızca birkaç tensör aktivasyonunu tutmak bir stratejidir. Spesifik olarak, ileri geçiş sırasında kontrol noktası aktivasyonlarını CPU belleğine taşır ve belirli bir mikro partinin geri geçişi için bunları GPU'ya geri yükleriz.
Mikro partiler ve yerleştirme stratejileri
Bazen müşterilerin kafasını karıştıran diğer konular, mikro partiler ve yerleştirme stratejileridir. Bunların ikisi de SageMaker model paralel kitaplığına sağlayabileceğiniz hiper parametrelerdir. Özellikle mikro yığınlar, boyut olarak en az 30 milyar parametre veya daha fazlası gibi boru hattı paralelliğine dayanan modelleri uygularken önemlidir.
Mikro partiler, mini partilerin alt kümeleridir. Modeliniz eğitim döngüsündeyken, almak ve katmanlar arasında ileri ve geri geçmek için belirli sayıda kayıt tanımlarsınız; buna bir denir. mini partiveya bazen sadece bir yığın. Veri kümenizden tam geçişe denir çağ. SageMaker model paralel kitaplığı, ardışık düzen paralelliğiyle ileri ve geri geçişleri çalıştırmak için grupları, GPU kullanımını en üst düzeye çıkarmak için birer birer çalıştırılan mikro yığınlar adı verilen daha küçük alt kümelere ayırır. Ortaya çıkan, GPU başına çok daha küçük örnek kümesine mikro parti adı verilir. GPT-2 örneğimizde, doğrudan eğitim komut dosyasına varsayılan 1 mikro parti ekledik.
Antrenman yapılandırmanızı büyüttüğünüzde, Parti boyutunuzu ve mikro parti boyutunuzu buna göre değiştirmeniz şiddetle tavsiye edilir.. İyi bir performans sağlamanın tek yolu budur: boru hattı paralelliğine güvenirken parti boyutunu ve mikro parti boyutlarını genel dünya boyutunuzun bir fonksiyonu olarak düşünmelisiniz.
Yerleştirme stratejileri, SageMaker'a model bölümlerinizi nereye yerleştireceğinizi fiziksel olarak nasıl söyleyeceğinizdir. Hem model paralel hem de veri paralel kullanıyorsanız, ayar placement_strategy
için “cluster”
model kopyalarını, fiziksel olarak birbirine yakın olan cihaz kimliklerine (GPU'lar) yerleştirir. Ancak, paralellik stratejiniz hakkında gerçekten daha kuralcı olmak istiyorsanız, onu üç harften oluşan farklı kombinasyonlarla tek bir dizeye bölebilirsiniz: Veri paralelliği için D, P
boru hattı paralelliğini gösterir ve T
tensör paralelliği için. Genellikle varsayılan yerleşimi korumanızı öneririz. "cluster"
, çünkü bu büyük ölçekli model eğitimi için en uygun olanıdır. "Küme" yerleşimi "DPT
".
Yerleştirme stratejileri hakkında daha fazla bilgi için bkz. Tensör Paralelliği ile Yerleştirme Stratejisi.
Örnek kullanım durumu
Eğitim işinizde bir ml.p3.16xlarge olduğunu düşünelim. bu sana verir Düğüm başına 8 NVIDIA V100. Unutmayın, her ekstra örnek eklediğinizde, ek bant genişliği yükü yaşarsınız, bu nedenle tek bir düğümde daha fazla GP'U'ya sahip olmak her zaman daha iyidir. Bu durumda, örneğin iki ml.p3.16xlarge yerine bir ml.p3.8xlarge ile daha iyi durumdasınız. GPU sayısı aynı olsa da, ekstra düğümün ekstra bant genişliği yükü, veriminizi yavaşlatır.
Aşağıdaki şema, iki yönlü veri paralelliği ile birleştirilmiş dört yönlü model paralelliğini göstermektedir. Bu, aslında modelinizin iki kopyasına sahip olduğunuz anlamına gelir (verileri paralel düşünün), bunların her biri dört GPU'ya bölünür (model paralel).
Bu model bölümlerinden herhangi biri tek bir GPU'ya sığmayacak kadar büyükse, dağıtmak ve her iki cihazı kullanmak için ekstra bir dağıtım türü – tensör paralelliği – ekleyebilirsiniz.
Sonuç
Bu blog yazısında, özellikle model paralelliğine odaklanan SageMaker dağıtılmış eğitim kitaplıklarını tartıştık. Amazon SageMaker'da 32 ml.p120d.4xlarge bulut sunucularında ve 24B parametrelerde saniyede 175 örnek elde ederek en son testimizin performans karşılaştırmalarını paylaştık. Bunu 240 p4 örneğine çıkarırsak, 175B parametre modelini 25 günde eğitebileceğimizi tahmin ediyoruz.
Ayrıca, büyük ölçekli eğitimi etkinleştiren en yeni özellikleri, yani tensör paralelliği, optimize edici durum paylaşımı, etkinleştirme kontrol noktası ve etkinleştirme boşaltmasını da tartıştık. Amazon SageMaker'da eğitim yoluyla bunu sağlamak için bazı ipuçlarını ve püf noktalarını paylaştık.
kendin dene GitHub'da bulunan numaralarımızı oluşturan aynı not defterini kullanarak burada. Ayrıca AWS hesabınız için daha fazla GPU talep edebilirsiniz. burada bir hizmet limiti onayı istemek.
Yazarlar Hakkında
Emily Webber SageMaker başlatıldıktan hemen sonra AWS'ye katıldı ve o zamandan beri dünyaya bunu anlatmaya çalışıyor! Emily, müşteriler için yeni makine öğrenimi deneyimleri oluşturmanın dışında meditasyon yapmaktan ve Tibet Budizmi üzerinde çalışmaktan keyif alıyor.
aditya bindal AWS Deep Learning için Kıdemli Ürün Yöneticisidir. Müşterilerin AWS'de derin öğrenme modellerini eğitmesini kolaylaştıran ürünler üzerinde çalışıyor. Boş zamanlarında kızıyla vakit geçirmekten, tenis oynamaktan, tarihi kurgu okumaktan ve seyahat etmekten hoşlanıyor.
Luis Quintela AWS SageMaker modeli paralel kitaplığı için Yazılım Geliştirici Yöneticisidir. Boş zamanlarında SF Bay Area'da Harley'ini sürerken bulunabilir.
- Akıllı para. Avrupa'nın En İyi Bitcoin ve Kripto Borsası.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. SERBEST ERİŞİM.
- KriptoHawk. Altcoin Radarı. Ücretsiz deneme.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Hakkımızda
- hızlandırıcı
- Hesap
- elde
- karşısında
- Ek
- adres
- ileri
- Türkiye
- zaten
- Amazon
- Başka
- uygulamaları
- ALAN
- mevcut
- AWS
- Defne
- İYİ
- Biggest
- Milyar
- Blog
- bina
- Sebeb olmak
- değişiklik
- bulut
- kod
- kombinasyonları
- ortak
- Yakın İletişim
- yapılandırma
- karışıklık
- Konteynerler
- çekirdek
- olabilir
- Müşteriler
- veri
- gelişmiş
- Geliştirici
- gelişme
- cihaz
- Cihaz
- farklı
- dağıtıldı
- dağıtım
- aşağı
- tahrik
- etkinleştirme
- özellikle
- örnek
- deneyim
- Deneyimler
- aşırı
- Yüz
- Daha hızlı
- Özellikler(Hazırlık aşamasında)
- Özellikler
- Kurgu
- uygun
- takip etme
- ileri
- bulundu
- iskelet
- tam
- işlev
- genel
- oluşturmak
- GitHub
- gidiş
- Tercih Etmenizin
- Google Arama
- GPU
- donanım
- faydalı
- Vurgulamak
- tarihsel
- Ne kadar
- Nasıl Yapılır
- HTTPS
- Yüzlerce
- artmış
- bilgi
- ilham
- entegre
- sorunlar
- IT
- İş
- katıldı
- atlama
- koruma
- dil
- büyük
- son
- başlatmak
- ÖĞRENİN
- öğrenme
- seviye
- Kütüphane
- yük
- makine
- makine öğrenme
- Makineler
- Yapımı
- müdür
- Bellek
- ML
- model
- modelleri
- modüler
- çoğu
- hareket
- yani
- Doğal (Madenden)
- ağ
- Yeni Özellikler
- düğümler
- defter
- sayılar
- Diğer
- kâğıt
- ortaklık
- performans
- parça
- platform
- Popüler
- mümkün
- birincil
- PLATFORM
- Ürünler
- Profiller
- sağlamak
- RAM
- RE
- Okuma
- tavsiye etmek
- kayıtlar
- azaltmak
- Sonuçlar
- koşmak
- koşu
- Adı geçen
- ölçeklenebilir
- ölçek
- ölçekleme
- sdk
- Ara
- hizmet
- set
- ayar
- Kırma işlemi
- Paylaşılan
- önemli
- beden
- So
- Yazılım
- özellikle
- hız
- Harcama
- bölmek
- Eyalet
- stratejileri
- Stratejileri
- arz
- taktik
- teknikleri
- test
- Dünya
- Binlerce
- İçinden
- zaman
- ipuçları
- ipuçları ve püf noktaları
- birlikte
- Konular
- esnaf
- Eğitim
- anlamak
- kullanım
- kullanmak
- vizyonumuz
- içinde
- çalışma
- çalışır
- Dünya
- yıl