Latent Space, büyük ölçekli transformatörlerin sınırlarını zorlamak için Amazon SageMaker model paralellik kitaplığını nasıl kullandı?

Kaynak Düğüm: 1204406

Bu blog, Sarah Jane Hong CSO, Darryl Barnhart CTO'su ve Latent Space CEO'su Ian Thompson ve AWS'den Prem Ranga tarafından ortak yazılmıştır.

Gizli alan, makine öğrenimi (ML) modellerinin öğrendiği soyut fikirlerin gizli bir temsilidir. Örneğin, "köpek", "çiçek" veya "kapı", gizli uzaydaki kavramlar veya konumlardır. Şurada: Gizli Uzay, bu alanı hem dil hem de görsel yönlendirmelerle değiştirmenize ve keşfetmenize olanak tanıyan bir motor üzerinde çalışıyoruz. Gizli Uzay ekibi, uzun süredir çok az örtüşen iki alandan geliyor: grafikler ve doğal dil işleme (NLP). Geleneksel olarak, görüntü ve metin modaliteleri, her biri kendi karmaşık, pahalı ve kırılgan özellik mühendisliği geçmişine sahip ayrı ayrı ele alınmıştır. Belge anlama veya soru yanıtlama gibi NLP görevlerinin genellikle sahne anlama veya oluşturma gibi görme görevleriyle çok az ortak yanı vardır ve genellikle her görev için çok farklı yaklaşımlar ve modeller kullanırız. Ancak bu hızla değişiyor.

Modalitelerin tek bir paylaşılan gizli alanda bu şekilde birleştirilmesi, oyundan belge anlamaya kadar yeni nesil yaratıcı ve ticari uygulamaların kilidini açar. Ancak bu yeni uygulamaların kilidini tek bir modelde açmak, Richard Sutton'ın "The Bitter Lesson" da vurgulandığı gibi yeni ölçeklendirme zorlukları ve son birkaç yılda ölçeklendirme yasaları üzerine yapılan heyecan verici çalışmayı ortaya çıkarıyor. Bunu mümkün kılmak için Latent Space, bu modaliteleri tek bir modelde birleştirmek, aynı zamanda ölçeklendirmek ve bunu verimli bir şekilde yapmak için en son araştırmalar üzerinde çalışıyor. Model paralelliği burada devreye giriyor.

Amazon Adaçayı Yapıcıbenzersiz otomatik model bölümleme ve verimli boru hattı yaklaşımı, model paralelliği benimsememizi çok az mühendislik çabasıyla mümkün kıldı ve model eğitimimizi 1 milyar parametrenin ötesine ölçeklendirdik ( p4d.24xlarge A100 örnekleri), bu bizim için önemli bir gerekliliktir. Ayrıca, SageMaker model paralellik kitaplığıyla 16 düğüm, sekiz GPU eğitim kurulumu ile eğitim yaparken, önceki eğitim çalışmalarımıza kıyasla verimlilikte% 38'lik bir iyileşme kaydettiğimizi gözlemledik.

Büyük ölçekli transformatör yetiştirmenin zorlukları

Latent Space'de, bir kullanıcının hayal gücünden kaynaklanan veya gerçek dünyada meydana gelen ancak eğitim verilerimizde olmayan "dağıtım dışı" kullanım durumlarını desteklemek için transformatör modellerinde dili ve vizyonu milyarlarca parametreyle birleştiriyoruz. Milyarlarca parametreye ve ötesine ölçeklendirmenin doğasında olan zorlukları iki farklı şekilde ele alıyoruz:

Bilgi erişim teknikleri uzun zamandır arama motorlarının ve kalite güvence görevlerinin önemli bir bileşeni olmuştur. Son zamanlarda, klasik IR tekniklerini modern transformatörlerle birleştirerek, özellikle bir modelin soruları yanıtlamaya yardımcı olmak için ilgili belgeleri almayı öğrenen bir nöral alıcı ile birlikte eğitildiği soru cevaplama görevleri için heyecan verici bir ilerleme kaydedildi. Genel bir bakış için, FAIR'in son çalışmalarına bakın: Retrieval Augmented Generation: Akıllı doğal dil işleme modellerinin oluşturulmasını kolaylaştırma ve Kod Çözücüde Füzyon, Google Brain's DİYARve Nvidia'nın sinir av köpeği soru cevaplama için.

Geri çağırma artırılmış teknikler maliyetlere ve verimliliğe yardımcı olurken, en büyük modelimiz için modeli tek bir GPU'ya sığdıramıyoruz. Bu, onu eğitmek için model paralelliği kullanmamız gerektiği anlamına gelir. Bununla birlikte, geri alma mimarimizin doğası gereği, model bölme tasarımımızı tasarlamak, eğitim girdileri arasında alınan bağlamlar arasındaki karşılıklı bağımlılıklar nedeniyle zordu. Ayrıca, modelimizi nasıl böldüğümüzü belirlesek bile, model paralelliği sunmak, araştırma ve geliştirme yaşam döngümüz boyunca manuel olarak yapmamız gereken önemli bir mühendislik göreviydi.

SageMaker modeli paralellik kitaplığı

Model paralelliği, bir modeli birden fazla cihaz veya düğüm (GPU donanımlı örnekler gibi) arasında bölme ve GPU kullanımını en üst düzeye çıkarmak için modeli bu cihazlar arasında eğitmek için verimli bir işlem hattı oluşturma işlemidir. model paralellik kitaplığı SageMaker'da, otomatik model bölme sağlayarak model paralelizmini daha erişilebilir hale getirir. otomatik model bölümleme ve gelişmiş boru hattı çalıştırma çizelgeleme. Model bölme algoritmaları hız veya bellek tüketimini optimize edebilir. Kitaplık, belleği dengeleyen, cihazlar arasındaki iletişimi en aza indiren ve performansı optimize eden bir bölümleme algoritması kullanır.

Otomatik model bölümleme

PyTorch kullanım durumumuz için, model paralel kitaplığı dahili olarak model grafiğini oluşturan ve tensör ve parametre şekillerini belirleyen bir izleme adımını (ilk eğitim adımında) çalıştırır. Daha sonra iç içe geçmişten oluşan bir ağaç oluşturur. nn.Module modeldeki nesnelerin yanı sıra, depolanan miktar gibi izlemeden toplanan ek veriler nn.Parametersve her biri için çalışma zamanı nn.Module.

Kütüphane daha sonra bu ağacı kökten geçer ve hesaplama yükü ile bellek kullanımını dengeleyen ve örnekler arasındaki iletişimi en aza indiren bir bölümleme algoritması çalıştırır. Birden çok nn.Modülü aynı nn.Parametresini paylaşıyorsa, bu modüller aynı parametrenin birden çok sürümünün korunmasını önlemek için aynı cihaza yerleştirilir. Bölümleme kararı verildikten sonra atanan modüller ve ağırlıklar cihazlarına yüklenir.

Ardışık düzen çalıştırma planlaması

SageMaker dağıtılmış model paralel kitaplığının diğer bir temel özelliği de ardışık düzenlenmiş çalıştırmalar, model eğitimi sırasında hesaplamaların yapılma sırasını ve verilerin cihazlar arasında işlenmesini belirler. Ardışık düzen, bir mini partiyi mikro partilere bölmeye dayanır, bunlar eğitim hattına tek tek beslenir ve kütüphane çalışma zamanı tarafından tanımlanan bir çalışma programını takip eder.

Mikro yığın ardışık düzeni, tüm GPU'ların tam olarak kullanılmasını sağlar, bu da kendimiz inşa etmemiz gereken bir şeydir, ancak model paralellik kitaplığı ile bu, perde arkasında düzgün bir şekilde gerçekleşir. Son olarak kullanabiliriz Amazon FSxBu, geri alma ile çok modlu bir modelin eğitimi sırasında okunan dosya sayısı göz önüne alındığında okuma hızlarımızın hızlı olmasını sağlamak için önemlidir.

Eğitim mimarisi

Aşağıdaki şema, eğitim mimarimizi nasıl kurduğumuzu gösterir. Öncelikli hedeflerimiz eğitim hızını artırmak ve maliyetleri düşürmekti. Eğittiğimiz görüntü ve dil dönüştürücüleri, içinde önemli ölçüde çok sayıda katman ve ağırlık bulunan, milyarlarca parametreye kadar çalışan ve bunların tümü tek bir düğümün belleğine sığmamasına neden olan oldukça karmaşıktır. Her düğüm, içinden veri aktığı ve dönüşümlerin paylaşıldığı ve derlendiği modelin bir alt kümesini taşır. 16 kurduk p4d.24xlarge Aşağıdaki mimari temsilini kullanan her biri sekiz GPU'ya sahip örnekler:

Modellerimizi büyütürken, ortak bir eğilim, her şeyin ağın ağırlıklarında saklanmasıdır. Bununla birlikte, pratik amaçlar için, oluşturma görevine yardımcı olmak için ilgili bağlamları nasıl arayacağımızı öğrenmek için modellerimizi büyütmek istiyoruz. Bu, görüntü kalitesinden ödün vermeden hizmet maliyetlerimizi düşük tutmamızı sağlar. Büyük bir transformatör tabanlı NLP modeli kullanıyoruz ve daha önce de belirtildiği gibi, aşağıda gösterildiği gibi SageMaker model paralellik kitaplığı ile eğitim verimliliğinde% 38'lik bir artış gözlemledik:

  • Tensör seviyesi paralelliği durumunda her hesaplama için tam bir azalmaya ihtiyacımız var. Bu, paralel O (log_2 n) adımlarını alır. Yani O (n log_2 n) toplam işlem için O (n) adım atan n makinedir.
  • Boru hattı paralelliği için, verileri boru hattından aşağı iletmek için O (1) paralel adımlara ihtiyacımız var
  • Sekiz GPU'lu 16 makine verildiğinde, paralel boru hattı için O (1) maliyetimiz ve derinlemesine model paralel için O (log_2 (8)) = O (3) maliyetimiz var.
  • Bu durumda, SageMaker model paralelliği ile kullandıklarımıza paralel boru hattına geçerek ağ maliyetinin 1 / 3'e düştüğünü ve genel eğitim maliyetinin 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 orijinal maliyete karşılık gelen bir verimlilik iyileştirmesine yol açar.

Genel olarak, ihtiyaç dağıtılmış eğitimi (ölçeklendirme modeli boyutu veya eğitim verileriyle ilgili sorunlar) gerektirdiğinde, hangi yaklaşımın en iyi sonucu verdiğini belirlemek için bir dizi en iyi uygulamayı izleyebiliriz.

Dağıtılmış eğitim için en iyi uygulamalar

Deneyimlerimize dayanarak, dağıtılmış veri paralel yaklaşımıyla başlamanızı öneririz. Gibi dağıtılmış veri paralelliği SageMaker dağıtılmış veri paralel kitaplığı Model çoğaltmalarıyla ilgili ağ sorunlarının çoğunu çözer, bu nedenle modelleri en az sayıda düğüme sığdırmanız ve ardından gerektiğinde toplu iş boyutunu ölçeklendirmek için çoğaltma yapmanız gerekir.

Bu senaryoda yaptığımız gibi, eğitim sırasında hafızanız tükenirse, model paralel yaklaşıma geçmek isteyebilirsiniz. Bununla birlikte, paralel eğitimi denemeden önce şu alternatifleri göz önünde bulundurun:

  • NVIDIA Tensor Core donanımlı donanımda, karışık hassasiyetli eğitim hızlanma yaratmak ve bellek tüketimini azaltmak için.
  • Toplu iş boyutunu azaltın (veya mümkünse görüntü çözünürlüğünü veya NLP sıra uzunluğunu azaltın).

Ek olarak, aşağıda açıklandığı gibi parti normalizasyonu olmayan model tasarımlarını tercih ediyoruz. Normalleştirme olmadan yüksek performanslı büyük ölçekli görüntü tanıma. Önlenemiyorsa, toplu normalizasyonun cihazlar arasında senkronize edildiğinden emin olun. Dağıtılmış eğitimi kullandığınızda, grubunuz GPU'lara bölünür, bu nedenle doğru toplu istatistiklerin tüm cihazlarda senkronizasyonu gerekir. Bu olmadan, normalleştirme hatası artar ve dolayısıyla yakınsama bozulur.

Aşağıdaki kısıtlamalara sahip olduğunuzda model paralel eğitimle başlayın:

  • Modeliniz tek bir cihaza sığmıyor
  • Model boyutunuz nedeniyle, model ağırlıklarınızın GPU belleğinizin çoğunu kaplaması ve daha küçük, yetersiz bir parti boyutu seçmek zorunda kalmanız gibi daha büyük parti boyutlarını seçmede sınırlamalarla karşı karşıyasınız.

Performans için optimize ederken aşağıdakileri yapın:

  • Gecikmeyi en aza indirmek ve verimi artırmak için düğümler arası iletişim için ardışık düzen kullanın
  • Kabarcıkları en aza indirmek için boru hatlarını olabildiğince kısa tutun. Mikro partilerin sayısı, hesaplama verimliliğini kabarcık boyutu ile dengelemek için ayarlanmalı ve en azından boru hattı uzunluğu kadar olmalıdır. Gerekirse, aşağıda açıklandığı gibi token düzeyinde mikro partiler oluşturabilirsiniz. TeraPipe: Büyük ölçekli dil modellerini eğitmek için Token Level Pipeline Parallelism

Maliyet için optimize ederken, eğitim için SageMaker tarafından yönetilen Spot Bulut Sunucularını kullanın. Bu, isteğe bağlı örneklere göre eğitim modellerinin maliyetini% 90'a kadar optimize edebilir. SageMaker, Spot kesintilerini sizin adınıza yönetir.

Dikkate alınacak diğer faktörler:

  • Bir düğüm içinde hızlı bir ara bağlantı olduğunda, daha inceliklidir. Çok sayıda düğüm içi ağ kapasitesi varsa, verileri daha optimum hesaplama için yeniden karıştırmak bir fayda sağlayabilir.
  • Etkinleştirmeler ağırlık tensörlerinden çok daha büyükse, parçalanmış bir optimize edici de yardımcı olabilir. Bakınız Sıfır daha fazla ayrıntı için.

Aşağıdaki tablo, bazı yaygın eğitim ölçeklendirme senaryolarını ve bunları AWS'de nasıl yapılandırabileceğinizi gösterir.

senaryo Ne zaman geçerlidir? Çözüm
Tek bir GPU'dan birçok GPU'ya ölçeklendirme Eğitim verisi miktarı veya modelin boyutu çok büyük olduğunda Veri ve işlemenin sekiz GPU'ya bölündüğü ve modelinizi eğitmek için geçen sürede neredeyse doğrusal bir hızlanma üreten sekiz GPU'ya sahip p3.16xlarge gibi çoklu GPU örneğine geçin.
Tek bir örnekten birden çok örneğe ölçekleme Ölçeklendirme ihtiyacı, örnek boyutunu değiştirmenin ötesine geçtiğinde Örnek_tipinizi p3.16xlarge ve instance_count'u 2'ye ayarlayarak SageMaker Python SDK'nın tahminci işleviyle örnek sayısını ölçeklendirin. Tek bir p3.16xlarge'daki sekiz GPU yerine, iki benzer örnekte 16 GPU'ya sahipsiniz. Kullanmayı düşünün SageMaker dağıtılmış veri paralel kitaplığı.
Eğitim için bir model paralel yaklaşım seçme Eğitim sırasında yetersiz bellek hatalarıyla karşılaşıldığında Kullanarak model paralel yaklaşıma geçin SageMaker dağıtılmış model paralel kitaplığı.
Düğümler arası iletişim için ağ performansı Birden çok örneğe sahip dağıtılmış eğitim için (örneğin, bir AllReduce işlemi yaparken kümedeki düğümler arasındaki iletişim) Örneklerinizin aynı Bölgede ve aynı Erişilebilirlik Alanında olması gerekir. SageMaker Python SDK'yı kullandığınızda, bu sizin için halledilir. Eğitim verileriniz de aynı Erişilebilirlik Alanında olmalıdır. Kullanmayı düşünün SageMaker dağıtılmış veri paralel kitaplığı.
Optimize edilmiş GPU, ağ ve Depolama Büyük ölçekli dağıtılmış eğitim ihtiyaçları için P4d.24xlarge bulut sunucusu tipi, hızlı yerel depolama ve 400 gigabit'e kadar hızlı bir ağ arka planı için tasarlandı ve bunu, dağıtılmış eğitim için en performanslı seçenek olarak kesinlikle öneriyoruz.

Sonuç

SageMaker'daki model paralel kitaplığıyla, otomatik model bölümleme ve verimli ardışık düzen oluşturma gibi kutudan çıkardığımız pek çok avantajı elde ediyoruz. Bu gönderide, ML kullanım örneğimizle ilgili zorluklarımızı, farklı eğitim yaklaşımlarıyla ilgili düşüncelerimizi ve eğitimimizi hızlandırmak için Amazon SageMaker model paralellik kitaplığını nasıl kullandığımızı paylaştık. Hepsinden iyisi, burada açıklanan model paralelliği ve performans iyileştirmeleri için en iyi uygulamaları benimsemek artık yalnızca birkaç saat sürebilir. Bu gönderi size yardımcı oluyorsa veya bir sorunu çözmeniz için size ilham veriyorsa, bunu duymak isteriz! Lütfen yorumlarınızı ve görüşlerinizi paylaşın.

Referanslar

Daha fazla bilgi için lütfen aşağıdakilere bakın:


Yazarlar Hakkında

prem ranga Atlanta, GA merkezli bir Kurumsal Çözüm Mimarıdır. Makine Öğrenimi Teknik Alan Topluluğu'nun bir parçasıdır ve makine öğrenimi ve yapay zeka yolculuklarında müşterilerle çalışmayı çok seviyor. Prem robotik konusunda tutkulu, otonom bir araç araştırmacısı ve aynı zamanda Houston ve diğer yerlerde Alexa kontrollü Beer Pours'u inşa etti.

Sarah Jane Hong Latent Space'in kurucu ortağı ve Baş Bilim Görevlisidir. Geçmişi, insan-bilgisayar etkileşimi ve makine öğreniminin kesişme noktasında yatmaktadır. Daha önce, sohbet yapay zeka alanında işletmelere hizmet veren Sonar'da (Marchex tarafından satın alındı) NLP araştırmasını yönetti. Aynı zamanda Oculus, Mozilla Mixed Reality ve Microsoft Hololens'ten ödüller ve burslar almış saygın bir AR / VR geliştiricisidir.

Darryl Barnhart Latent Space'in kurucu ortağı ve Baş Teknoloji Sorumlusu. GPU hızlandırma, bilgisayar grafikleri, büyük ölçekli veriler ve makine öğrenimi konularında tecrübeli deneyimli bir geliştiricidir. Diğer tutkular arasında matematik, oyun geliştirme ve bilgi çalışması yer alır.

Ian Thompson Latent Space'in kurucusu ve CEO'sudur. Ian, “bitişik olası” dan - hayatlarımız üzerinde büyük bir etkisi olacak teknolojilerden - esinlenen bir mühendis ve araştırmacıdır. Şu anda, güvenli ve yaratıcı yapay zeka oluşturmaya yardımcı olmak için çok modlu temsil öğrenmeyi basitleştirmeye ve ölçeklendirmeye odaklandı. Daha önce grafik / sanal gerçeklik (AltspaceVR, Microsoft tarafından satın alındı) ve eğitim / NLP (HSE) alanlarında şirketlerin kurulmasına yardımcı oldu.

Kaynak: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- ölçek transformatörleri /

Zaman Damgası:

Den fazla AWS Makine Öğrenimi Blogu