GPipe: Mikro-Toplam Boru Hattı Paralelliğiyle Kolay Ölçekleme
2019 yılında Google tarafından yayımlanmış popüler “GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism” makalesinin Türkçe çevirisidir.
Basit Açıklama
Makale Hangi Problemi Çözüyor?
Diyelim ki devasa bir LEGO yapısı inşa etmeye çalışıyorsunuz ama o kadar büyük ki, bir kişinin bunu tek başına yapması imkansız. Birden fazla kişinin birlikte çalışması gerekir. Çok büyük yapay zeka (YZ) modellerini eğitmek de aynen böyledir, bir bilgisayar bu işi tek başına yapamaz. GPipe, bu işi birden fazla bilgisayar arasında bölerek YZ modellerini daha hızlı ve verimli şekilde eğitmemizi sağlayan bir işbirliği stratejisi gibidir.
GPipe Nedir?
GPipe, büyük yapay zeka modellerini eğitmek için bir yöntemdir. Şu şekilde çalışır:
- Modeli daha küçük parçalara böler.
- Veriyi daha küçük “mikro-toplamlara” (micro-batch) ayırır.
- Birden fazla bilgisayarın (veya işlemcinin) aynı anda farklı bölümlerde çalışmasını sağlar.
Buna işlem hattı paralelliği (pipeline parallelisation) denir. Bu, bir bilgisayar bir parçayı işlerken diğerinin bir sonraki parçayı işlemesi gibi bir üretim hattı gibidir.
GPipe Nasıl Çalışır?
Modelin Bölünmesi: Devasa bir yapay zeka modelini uzun bir tren gibi düşünün. GPipe, bu treni daha küçük parçalara (vagonlara) böler, böylece her parça tek bir bilgisayara sığar.
Verinin Bölünmesi: Tüm eğitim verisini bir kerede göndermek yerine, bunu mikro-toplamlara ayırır. Her mikro-parça, küçük bir LEGO seti gibi düşünülebilir.
Görevi Sırayla Devret: Bir bilgisayar modelin ilk parçası üzerinde bir mikro-toplamı işlerken, başka bir bilgisayar modelin ikinci parçasında bir sonraki mikro-toplamı işler. Böylece kimse boşta kalmaz.
Sonuçları Birleştir: “Üretim hattı”nın sonunda, farklı bilgisayarlardan gelen tüm sonuçlar birleştirilir. Bu, trenin tüm vagonlarını bir araya getirmek gibidir.
GPipe Neden Özeldir?
Verimlilik: Tüm bilgisayarların aynı anda çalışmasını sağlayarak zaman kaybını önler.
Ölçeklenebilirlik: Çok büyük YZ modellerini birden fazla makinede eğitmeyi mümkün kılar, hatta tek bir makine modelin tamamını işleyemese bile.
Doğruluk: GPipe, eğitim kalitesinden ödün vermez. Modeli tek bir bilgisayarda eğitmiş gibi doğru sonuçlar verir.
Google Translate veya görüntü tanıma gibi büyük YZ modelleri, çok fazla işlem gücü gerektirir. GPipe, bu modelleri daha hızlı eğitmemizi, daha az bellek kullanmamızı ve tek bir makineye sığmayan kadar büyük modelleri bile işleyebilmemizi sağlar. Bu, gökdelenler inşa etmek için daha iyi bir işbirliği sistemi icat etmek gibi bir şeydir çünkü bu yenilik YZ teknolojisini daha güçlü ve erişilebilir hale getirir.
Örnek:
Diyelim ki büyük bir pasta yapıyorsun:
- Tarif o kadar uzun ki, kimse bunu tek başına ezberleyemez (YZ modeli bir kişiye sığmayacak kadar büyük).
- Tarifi bölmeye karar veriyorsunuz: biri kek katmanlarını pişiriyor, biri kremayı yapıyor, bir diğeri ise pastayı birleştiriyor.
- İlk kişi ilk katmanı pişirirken, ikinci kişi kremayı yapmaya başlayabilir. Böylece herkes sırayla ve beklemeden çalışır.
GPipe, YZ modellerini eğitmek için aynı şekilde çalışır — işleri bölerek ve her şeyin paralel bir şekilde sorunsuz işlemesini sağlayarak.
Öz
Derin sinir ağı kapasitesini artırmanın, çeşitli makine öğrenimi görevlerinde model kalitesini iyileştirmek için etkili bir yaklaşım olduğu bilinmektedir. Çoğu durumda, model kapasitesini tek bir hızlandırıcının (accelerator) bellek sınırının ötesine çıkarmak, özel algoritmaların veya altyapıların geliştirilmesini gerektirmiştir. Ancak bu çözümler genellikle belirli mimarilere özgüdür ve diğer görevlere aktarılabilir değildir.
Görevden bağımsız ve verimli model paralelliği ihtiyacını karşılamak için, GPipe adlı bir boru hattı paralelliği kütüphanesini tanıtıyoruz. GPipe, katman dizileri olarak ifade edilebilen herhangi bir ağı ölçeklendirmeye olanak tanır. Katmanların farklı alt dizilerini ayrı hızlandırıcılarda işlem hattına alarak, GPipe çeşitli ağları devasa boyutlara verimli bir şekilde ölçeklendirme esnekliği sağlar. Ayrıca, GPipe, bir model birden fazla hızlandırıcıya bölündüğünde neredeyse doğrusal bir hızlanma sağlayan yeni bir toplam bölme işlem hattı algoritmasından yararlanır.
GPipe’in avantajlarını, farklı ağ mimarilerine sahip iki farklı görevde büyük ölçekli sinir ağları eğiterek gösteriyoruz:
(i) Görüntü Sınıflandırma: 557 milyon parametreli AmoebaNet modelini eğiterek ImageNet-2012 üzerinde %84,4'lük bir top-1 doğruluğu elde ettik.
(ii) Çok Dilli Sinirsel Makine Çevirisi: 100'den fazla dili kapsayan bir derlem üzerinde 6 milyar parametreli, 128 katmanlı tek bir transformatör modelini eğittik ve tüm ikidilli modellerden daha yüksek kalite elde ettik.
Giriş
Derin öğrenme, son on yılda büyük ilerlemeler kaydetmiştir ve bu ilerleme kısmen, sinir ağlarının etkili kapasitesini artırmayı kolaylaştıran yöntemlerin geliştirilmesi sayesinde olmuştur. Bu trend, özellikle ImageNet’teki model kapasitesinin artışıyla sağlanan doğruluk iyileştirmeleri (Şekil 1a) ile gösterildiği üzere, görüntü sınıflandırmada en belirgin şekilde gözlemlenmektedir. Benzer bir olgu, cümle temsillerinin basit yüzeysel modellerinin, daha derin ve daha büyük olan modeller tarafından geride bırakıldığı doğal dil işleme bağlamında da görülebilir (Şekil 1b). Daha büyük modeller, birçok alanda dikkate değer kalite iyileştirmeleri sağlamış olsa da, sinir ağlarını ölçeklendirmek önemli pratik zorluklar ortaya çıkarmaktadır. Donanım kısıtlamaları, bellek sınırlamaları ve hızlandırıcılar (GPU veya TPU) üzerindeki iletişim bant genişlikleri dahil olmak üzere, kullanıcıları daha büyük modelleri parçalara ayırmaya ve bu parçaları farklı hızlandırıcılara atamaya zorlar. Ancak, verimli model paralelliği algoritmalarını tasarlamak ve uygulamak son derece zordur ve uygulayıcıları genellikle kapasiteyi ölçeklendirme, esneklik (veya belirli görevlere ve mimarilere özgüllük) ve eğitim verimliliği arasında zor seçimler yapmaya mecbur bırakır. Sonuç olarak, en verimli model paralel algoritmalar genellikle mimariye ve göreve özgüdür. Derin öğrenmenin uygulama alanlarının artmasıyla birlikte, araştırmacıların çok çeşitli makine öğrenimi görevleri için sinir ağlarını kolayca ölçeklendirmesine olanak tanıyan güvenilir ve esnek bir altyapıya yönelik talep giderek artmaktadır.
Bu zorlukların üstesinden gelmek için, büyük sinir ağlarının verimli bir şekilde eğitilmesini sağlayan esnek bir kütüphane olan GPipe’ı tanıtıyoruz. GPipe, modeli farklı hızlandırıcılar arasında bölerek ve her bir hızlandırıcıda yeniden materyalizasyonu destekleyerek, tek bir hızlandırıcının bellek sınırlamalarını aşarak keyfi derin sinir ağı mimarilerinin ölçeklenmesine olanak tanır.
GPipe ile her model bir katmanlar dizisi olarak tanımlanabilir ve ardışık katman grupları hücrelere bölünebilir. Her hücre, ayrı bir hızlandırıcıya (accelerator’a) yerleştirilir. Bu bölümlendirilmiş yapı temelinde, toplam (batch) bölme ile yeni bir ardışık paralellik algoritması öneriyoruz. İlk olarak, bir mini-batch eğitim örneklerini daha küçük mikro-toplam’lara böleriz, ardından bu mikro-toplam kümelerinin her birinin yürütülmesini hücreler arasında ardışık şekilde hatlandırırız (pipeline). Eğitim için eşzamanlı mini-toplam gradyan inişi uygularız; burada gradyanlar bir mini-toplam içindeki tüm mikro-toplamlar boyunca biriktirilir ve mini-toplam’ın sonunda uygulanır. Sonuç olarak, GPipe kullanılarak yapılan gradyan güncellemeleri, bölümlerin sayısından bağımsız olarak tutarlı kalır ve araştırmacıların daha fazla hızlandırıcı kullanarak giderek daha büyük modelleri kolayca eğitmelerini sağlar.
GPipe, ayrıca eğitim ölçeklendirmesini daha da artırmak için veri paralelliği ile de tamamlanabilir. GPipe’ın esnekliğini ve verimliliğini görüntü sınıflandırma ve makine çevirisi üzerinde gösteriyoruz. Görüntü sınıflandırması için, ImageNet 2012 veri kümesinden 480 × 480 girdi boyutuna sahip AmoebaNet modelini eğittik. Model genişliğini artırarak, parametre sayısını 557 milyona kadar ölçeklendirdik ve %84.4'lük bir top-1 doğrulama doğruluğu elde ettik. Makine çevirisinde ise, 103 dilde (102 dilden İngilizceye) tek bir 128 katmanlı, 6 milyar parametreli çok dilli transformatör modelini eğittik. Bu modelin, 100 dil çiftinde ayrı ayrı eğitilmiş 350 milyon parametreli iki dilli Transformer Big [15] modellerini geride bırakabildiğini gösteriyoruz.
GPipe Kütüphanesi
Şimdi GPipe’ın arayüzünü ve ana tasarım özelliklerini açıklıyoruz. Bu açık kaynaklı kütüphane Lingvo çerçevesi altında uygulanmaktadır. GPipe’ın temel tasarım özellikleri genel olarak uygulanabilirdir ve diğer çerçeveler için uygulanabilir.
Arayüz
Herhangi bir derin sinir ağı, L katmandan oluşan bir dizilim (sequence) olarak tanımlanabilir. Her bir Li katmanı, bir ileri hesaplama fonksiyonu (fi) ve buna karşılık gelen bir parametreler kümesi (wi) içerir. GPipe, ayrıca kullanıcıya isteğe bağlı bir hesaplama maliyeti tahmin fonksiyonu (ci) belirtme olanağı tanır. Belirli bir K bölümü sayısı verildiğinde, L katmanlık dizi, K birleşik katmana veya hücrelere bölünebilir. pk’nın, i ile j arasındaki ardışık katmanlardan oluştuğunu varsayalım. pk’ya karşılık gelen parametreler kümesi, wi, wi+1, … , wj’nin birleşimiyle eşdeğerdir ve ileri hesaplama fonksiyonu, Fk = fj ◦ … ◦ fi+1 ◦ fi olarak ifade edilir. Buna karşılık gelen geri yayılım fonksiyonu Bk, Fk’den otomatik sembolik türevleme kullanılarak hesaplanabilir. Maliyet tahmin fonksiyonu, Ck = Σ j l=i cl olarak tanımlanır.
GPipe arayüzü, son derece basit ve sezgiseldir. Kullanıcıdan şu bilgilerin belirtilmesini gerektirir:
(i) model bölümlerinin sayısı (K),
(ii) mikro-toplam sayısı (M),
(iii) modeli tanımlayan L katmanlarının dizisi ve tanımları.
Algoritma
Kullanıcı, ağındaki katmanların sırasını model parametreleri w_i, ileri hesaplama fonksiyonu f_i ve maliyet tahmin fonksiyonu c_i açısından tanımladıktan sonra, GPipe ağı K hücreye böler ve k-inci hücreyi k-inci hızlandırıcıya yerleştirir. Veri transferine olanak tanımak için bölümlerin sınırlarına otomatik olarak iletişim primitifleri eklenir. Bölümleme algoritması, tüm hücrelerin tahmini maliyetlerindeki varyansı en aza indirerek, tüm bölümler arasında hesaplama süresini senkronize ederek boru hattının verimliliğini en üst düzeye çıkarır.
İleri geçiş sırasında GPipe, N boyutundaki her mini-toplamı M eşit mikro-toplama böler ve bu mikro-toplamlar K hızlandırıcı üzerinden işlem hattında iletilir. Geriye doğru geçiş (backpropagation) sırasında, her mikro-toplam için gradyanlar, ileri geçişte kullanılan aynı model parametrelerine dayanarak hesaplanır. Her mini-toplamın sonunda, M mikro-toplamdan gelen gradyanlar biriktirilir ve model parametrelerini tüm hızlandırıcılar üzerinde güncellemek için uygulanır. Bu işlem dizisi Şekil 2c’de gösterilmiştir. Eğer ağda toplam normalizasyonu kullanılıyorsa, eğitim sırasında girdilerin yeterli istatistikleri her mikro-toplam üzerinde ve gerekirse replikalar üzerinde hesaplanır. Ayrıca değerlendirme sırasında kullanılmak üzere tüm mini-parti boyunca yeterli istatistiklerin hareketli ortalaması takip edilir.
Performans Optimizasyonu
Etkinleştirme bellek gereksinimlerini azaltmak için, GPipe yeniden hesaplama desteği sağlar. İleri hesaplama sırasında, her hızlandırıcı yalnızca çıktı etkinleştirmelerini bölme sınırlarında depolar. Geriye doğru geçiş sırasında, k. hızlandırıcı bileşik ileri fonksiyon F_k’yı yeniden hesaplar. Bunun bir sonucu olarak, zirve etkinleştirme bellek gereksinimi O(N + L_k × N_m)’ye düşer, burada N_m mikro-yığın boyutunu ve L_k bölme başına katman sayısını ifade eder. Buna karşılık, yeniden hesaplama ve bölme olmadan bellek gereksinimi O(N × L) olur, çünkü gradyanları (b_i) hesaplamak, hem üst katman gradyanlarını (b_{i+1}) hem de önbelleğe alınmış etkinleştirmeleri (f_i(x)) gerektirir. Şekil 2c’de gösterildiği gibi, bölme işlemi her hızlandırıcı için bir miktar boş zaman oluşturur ve buna baloncuk ek yükü denir. Bu baloncuk süresi, mikro-adımların (M) sayısına yayılmış şekilde O((K-1)/(M+K-1))’dir. Deneylerimizde, M≥4×K olduğunda baloncuk ek yükünün ihmal edilebilir düzeyde olduğunu bulduk. Bunun bir nedeni de, geriye doğru geçiş sırasında yeniden hesaplamanın daha erken planlanabilmesi ve önceki katmanlardan gelen gradyanların beklenmesinin gerekmemesidir. GPipe ayrıca düşük iletişim ek yükü sunar, çünkü yalnızca hızlandırıcılar arasında bölme sınırlarında etkinleştirme tensörlerinin iletilmesi gerekir. Bu nedenle, yüksek hızlı bağlantılara sahip olmayan hızlandırıcılarda bile verimli ölçekleme performansı elde edebiliriz. Şekil 2c, bölmelerin eşit şekilde dengelendiğini varsayar. Ancak, farklı katmanlardaki bellek gereksinimleri ve hesaplama flops’ları genellikle oldukça dengesizdir. Bu tür durumlarda, mükemmel olmayan bölme algoritmaları yük dengesizliğine yol açabilir. Daha iyi bölme algoritmaları, sezgisel yaklaşımımıza kıyasla performansı potansiyel olarak artırabilir.
Performans Analizleri
GPipe performansını, çok farklı iki model mimarisi türü ile değerlendiriyoruz: Bir AmoebaNet evrişimli modeli ve bir transformatör dizilimden dizilime modeli. Deneylerimizi, bu modellerin ölçeklenebilirliklerini, verimliliklerini ve iletişim maliyetlerini incelemek için gerçekleştirdik. Yeniden materyalize etme (re-materialization) ve ardışık işlem hattı paralelliğinin (pipeline parallelism), bellek kullanımını iyileştirerek devasa modellerin eğitimini mümkün kılmasını bekliyoruz. GPipe’ın makul derecede büyük girdi boyutları altında destekleyebileceği en büyük model boyutunu Tablo 1'de rapor ediyoruz. AmoebaNet için deneyleri, her hızlandırıcıda 8GB belleğe sahip Cloud TPUv2'ler üzerinde gerçekleştirdik. Sabit bir girdi görüntü boyutu olarak 224 × 224 ve mini-batch boyutu olarak 128 kullandık. GPipe olmadan, tek bir hızlandırıcı cihaz bellek sınırları nedeniyle en fazla 82M parametreli bir AmoebaNet eğitebilir. Geri yayılımda yeniden malzeme oluşturma ve batch bölme sayesinde GPipe, ara aktivasyon bellek gereksinimlerini 6,26GB’dan 3,46GB’a düşürerek tek bir hızlandırıcı üzerinde 318M parametreli bir modelin eğitimine olanak tanır. Model paralelliği ile AmoebaNet’i 8 hızlandırıcı üzerinde 1,8 milyar parametreye kadar ölçeklendirebildik; bu, GPipe olmadan mümkün olandan 25 kat daha fazladır. Ancak, bu durumda, maksimum model boyutu AmoebaNet’teki farklı katmanlar üzerindeki model parametrelerinin dengesiz dağılımı nedeniyle tam olarak doğrusal bir şekilde ölçeklenmedi.
Transformatör modellerini ise, her hızlandırıcı çekirdeğinde 16GB belleğe sahip Cloud TPUv3'ler üzerinde eğittik. Sabit bir sözlük boyutu olarak 32k, dizilim uzunluğu olarak 1024 ve toplam boyutu olarak 32 kullandık. Her bir transformatör katmanı için model boyutu 2048, ileri besleme gizli boyutu 8192 ve dikkat başlıkları sayısı 32 olarak ayarlandı. Modeli, katman sayısını değiştirerek ölçeklendirdik. Yeniden malzeme oluşturma, tek bir hızlandırıcı üzerinde 2,7 kat daha büyük bir modelin eğitilmesine olanak tanır. 128 bölme ile GPipe, transformatör modelini 83,9 milyar parametreye kadar ölçeklendirebilir; bu, tek bir hızlandırıcıda mümkün olandan 298 kat daha fazladır. AmoebaNet’ten farklı olarak, tranformatör için maksimum model boyutu, her katmanın aynı sayıda parametreye ve girdi boyutlarına sahip olması nedeniyle hızlandırıcı sayısı ile doğrusal olarak ölçeklenir.
Verimliliği değerlendirmek için, Tablo 2'de farklı sayıda bölüm ve farklı sayıda mikro toplam ile GPipe kullanarak AmoebaNet-D (18, 256) ve Transformer-48'in normalize edilmiş eğitim verimini bildiriyoruz. Her bölüm ayrı bir hızlandırıcıya atanmıştır. Mikro parti sayısı M, bölüm sayısının en az 4 katı olduğunda, kabarcık ek yükünün neredeyse ihmal edilebilir olduğunu gözlemliyoruz. Transformatör modeli için, dört kat daha fazla hızlandırıcıya bölündüğünde 3,5 kat hızlanma oluyor. Dahası, hesaplama transformatör katmanlarına eşit olarak dağıtıldığı için eğitim verimi cihaz sayısıyla neredeyse doğrusal olarak ölçekleniyor. Bunun aksine, AmoebaNet modeli dengesiz hesaplama dağılımı nedeniyle alt doğrusal bir hızlanma elde ediyor. M nispeten küçük olduğunda, kabarcık ek yükü artık ihmal edilebilir olamaz. M 1 olduğunda, etkili bir şekilde hiçbir boru hattı paralelliği yoktur. Kullanılan hızlandırıcı sayısından bağımsız olarak nispeten sabit bir verim gözlemliyoruz; bu da herhangi bir anda yalnızca bir cihazın aktif olarak hesaplama yaptığını gösteriyor.
GPipe ile iletişim yükünün etkisini ölçmek için deneylerimizi birden fazla NVIDIA P100 GPU’su olan ancak NVLink’leri olmayan tek bir ana bilgisayarda çalıştırdık. GPU’lar arası veri aktarımı daha sonra PCI-E üzerinden nispeten yavaş cihazdan ana bilgisayara ve ana bilgisayardan cihaza aktarımları içermelidir. Mikro parti sayısı 32 olarak sabitlenmiştir. Tablo 3'te gösterildiği gibi, bölüm sayısını 2'den 8'e çıkardığımızda AmoebaNet-D (18, 128) için 2,7 kat hızlanma gözlemliyoruz. 24 katmanlı Transformatör için hızlanma 3,3 kattır. Yüksek hızlı ara bağlantıların donatıldığı TPU’larda gözlemlediğimiz hızlanmaya benzer bir doğrusal hızlanma söz konusudur. Cihazlar arasındaki iletişim bant genişliği artık model paralelliği için bir darboğaz değildir çünkü GPipe yalnızca bölümlerin sınırlarında aktivasyon tensörleri aktarır.
Görüntü Sınıflandırması
Kavram kanıtı olarak, AmoebaNet’i ölçeklendirmek için önce GPipe’ı kullandık. AmoebaNet’teki kanal sayısını artırdık ve girdi görüntü boyutunu 480 × 480'e ölçekledik. Bu 557 milyon parametreli AmoebaNet-B(18, 512)’yi, [12]’de açıklanan aynı hiper parametreleri kullanarak ImageNet 2012 veri kümesinde eğittik. Ağ 4 bölüme ayrıldı. Bu tek model, tek kırpma ile %84,4 ilk 1 ve %97 ilk 5 doğrulama doğruluğu elde eder.
Ayrıca, transfer öğrenimi [22, 23] yoluyla diğer görüntü veri kümelerinde dev evrişim ağlarının etkinliğini daha da gösteriyoruz. Özellikle, genelden ince taneli sınıflandırmaya kadar çeşitli hedef veri kümelerinde ince ayar yapmak için önceden eğitilmiş ImageNet modelini kullandık. Son softmax sınıflandırma katmanındaki çıktı birimi sayısını hedef veri kümesindeki sınıf sayısına değiştirdik ve yeni softmax katmanını rastgele başlattık. Diğer tüm katmanlar ImageNet ön eğitimiyle başlatıldı. Eğitim sırasında ağa girdi görüntüleri 480 × 480'e yeniden boyutlandırıldı, yatay olarak rastgele çevrildi ve kesme kullanılarak artırıldı. Eğitim hiper parametreleri, ImageNet için kullanılanlarla aynıydı (eğitim kurulumumuzun ayrıntılı bir açıklaması ek materyalde sağlanmıştır). Tablo 4'te, her veri kümesi için 5 ince ayar çalışması boyunca ortalama tek mahsul test doğruluğunu bildiriyoruz. Dev modellerimiz tüm hedef veri kümelerinde rekabetçi sonuçlar elde ediyor. Örneğin, CIFAR-10 hata oranı %1'e ve CIFAR-100 hata oranı %8,7'ye düşürülmüştür. Bu sonuçlar, Kornblith ve diğerlerinin bulgularını doğrulamaktadır, yani daha iyi ImageNet modelleri daha iyi transfer eder.
Devasa Büyükce Çok Dilli Makine Çevirisi (Massive Massively Multilingual Machine Translation)
Sonraki olarak, GPipe’in esnekliğini Doğal Dil İşleme (Natural Language Processing, NLP) için kullanılan modelleri ölçeklendirerek gösteriyoruz. Paralel metinlerin bolca mevcut olması nedeniyle, sinirsel makine çevirisi (Neural Machine Translation, NMT) NLP için kullanılan herhangi bir mimari için bir kıyaslama görevi haline gelmiştir. Bu nedenle, GPipe deneylerimizi geniş ölçekli çok dilli bir NMT görevi üzerinde sürdürüyoruz. 102 dil ve İngilizce arasında paralel belgelerden oluşan, toplamda 25 milyar eğitim örneği içeren bir veri kümesi kullanıyoruz. Bu veri kümesi, az veri bulunan (düşük kaynaklı) dillerden çok veri bulunan (yüksek kaynaklı) dillere kadar geniş bir dil yelpazesini kapsayarak ölçeklenebilirlik üzerine deneyler için gerçekçi bir test ortamı sunmaktadır. Makine çevirisi tarihinde ilk kez, yeterince büyük bir NMT modelinin, 100'den fazla dil çiftini aynı anda eşleştirmeyi öğrenebildiğini ve tüm dillerde iki dilli modellerden daha iyi bir performans elde ettiğini gösteriyoruz. Bu durum, verimli ve esnek model-paralellik araçlarına sahip olmanın önemini daha da vurgulamaktadır.
Karşılaştırmamız, bu veri kümesindeki tüm dil çiftlerinde eğitilmiş tek bir transformatör performansına dayanmaktadır. GPipe’in esnekliğini test etmek için mimariyi iki boyutta ölçeklendiriyoruz: (i) modeldeki katman sayısını artırarak derinlik boyunca ve (ii) çoklu başlı dikkat katmanlarındaki dikkat kanalları sayısına benzer şekilde, besleme-ileri katmanlarındaki gizli boyutu ve dikkat başlıklarının sayısını artırarak genişlik boyunca. Veri kümesi, kıyaslamalar, eğitim yapılandırması ve optimizasyon hiper-parametrelerinin ayrıntılı bir açıklaması için lütfen ek materyale bakınız. Chen ve arkadaşları tarafından tarif edilen, 64k kelime haznesine sahip standart bir 400M parametreli Transformer Big modeli, T(6, 8192, 16)1 ile başlıyoruz. Şekil 3’te, bu modelin performansını 1.3B parametreli derin bir model olan T(24, 8192, 16), 1.3B parametreli geniş bir model olan T(12, 16384, 32), 3B parametreli bir model olan T(32, 16384, 32) ve 6B parametreli bir model olan T(64, 16384, 32) ile karşılaştırıyoruz. Tüm modeller, çok dilli BERT2 [3] için kullanılan sıcaklık tabanlı örnekleme yöntemiyle, tüm dil çiftleri üzerinde eşzamanlı olarak eğitilmiştir. T(12, 16384, 32), T(24, 8192, 32), T(32, 16384, 32) ve T(64, 16384, 32) sırasıyla 2, 4, 8 ve 16 hızlandırıcı üzerine bölünmüştür.
Şekil 3’ten, model kapasitesini 400M parametreden 1.3B parametreye artırmanın tüm dillerde performansı önemli ölçüde iyileştirdiğini gözlemleyebiliriz. Modeli 1.3B parametreden 6B parametreye ölçeklendirmek, özellikle yüksek kaynaklı dillerde daha fazla iyileşme sağlasa da, modeli 1.3B’den 3B ve 6B parametreye ölçeklendirdiğimizde azalan getiriler gözlemlenebilir. Aşağıda, bu geniş ölçekli deneylere dayanan bazı ampirik bulgularımızı tartışıyoruz.
Derinlik-Genişlik Dengesi: Çok dilli kurulumumuzda derinlik ve genişlik arasındaki dengeyi inceliyor ve 1.3B geniş model T(12, 16384, 32) ile 1.3B derin model T(24, 8192, 16) performansını karşılaştırıyoruz. Bu iki modelin yüksek kaynaklı dillerdeki (Şekil 3’ün sol tarafı) kalite performansı oldukça benzerken, derin model düşük kaynaklı dillerde büyük farklarla üstünlük sağlamaktadır. Bu durum, model derinliğini artırmanın genelleme için daha iyi olabileceğini göstermektedir. Ayrıca, düşük kaynaklı dillerdeki kalite iyileştirmeleri (Şekil 3’ün sağ tarafı), 1.3B derin model ile 400M model karşılaştırıldığında, yüksek kaynaklı dillerdeki iyileştirmeler kadar büyük olduğu görülmektedir. Bu da derinliğin artırılmasının düşük kaynaklı görevlerde transfer miktarını artırabileceğine işaret etmektedir.
Derin Modellerle İlgili Eğitilebilirlik Zorlukları: Derinlik, sinir ağlarının temsil kapasitesini artırsa da, optimizasyon problemini karmaşıklaştırmaktadır. Büyük ölçekli deneylerimizde, keskin aktivasyonların (pozitif kurtosis) ve veri seti gürültüsünün bir kombinasyonundan kaynaklanan ciddi eğitilebilirlik sorunlarıyla karşılaştık. Birkaç bin adımlık eğitimden sonra model tahminlerinin aşırı pik yaptığı ve gürültüye karşı savunmasız hale geldiği gözlemlendi. Bu durum, sıklıkla sonsuz ya da büyük gradyanlara yol açarak öğrenme sürecini bozdu. Bu sorunları gidermek için iki yöntem uyguluyoruz:
1. Zhang ve arkadaşları çalışmasını izleyerek, tüm transformatör ileri besleme katmanlarının başlangıç değerlerini katman sayısına göre azaltıyoruz.
2. Logit tahminlerini (softmax öncesi aktivasyonlar) büyüklükleri belirli bir değeri aştığında kesiyoruz.
Bu iki yöntemin kombinasyonu, model derinliğini artırmanın neden olduğu eğitim kararsızlıklarını hafifletmemizi sağlamaktadır.
Büyük Toplamlar: Basitliği nedeniyle, veri paralelliği, sinir ağı eğitiminin ölçeklendirilmesinde baskın yaklaşımdır. Standart Transformer Big eğitimi için kullanılan grup boyutunu önemli ölçüde artırarak büyük grup eğitim sınırlarını test ediyoruz. 260 bin token ile başlayan grup boyutunu 4 milyon token’a çıkarıyoruz ve yüksek kaynaklı dil çifti olan Almanca-İngilizce üzerinde doğrulama kaybı ve BLEU skorlarını gözlemliyoruz (benzer bir eğilim diğer dil çiftleri için de gözlemlenebilir). Burada kullanılan optimizasyon parametreleri, önceki deneyler için kullanılanlarla aynıdır. Bildiğimiz kadarıyla, literatürde bugüne kadar NMT modellerinin eğitimi için kullanılan en büyük grup boyutu 4 milyon tokendir. Tablo 5, grup boyutunu artırdıkça her iki metrikte de önemli bir iyileşme olduğunu göstermektedir. Grup boyutunun daha da artırılmasının potansiyel olarak daha fazla iyileştirme sağlayabileceğine inanıyoruz.
Tasarım Özellikleri ve Karşılıklı Ödünleşimler
Büyük ölçekli model paralelliğini etkin bir şekilde sağlamak için çeşitli yaklaşımlar önerilmiştir. Ancak, her yaklaşım kendi ödün setini seçmekte ve bu da onu, belirli donanım kısıtlamaları altında belirli mimarilerin ölçeklendirilmesi için uygun hale getirmektedir. Bu çalışmada, çeşitli model paralelliği yaklaşımlarında yer alan tasarım tercihlerini ve ödünleri vurguluyoruz ve bunların esneklik, ölçeklenebilirlik ve verimlilik açısından GPipe ile nasıl karşılaştırıldığını inceliyoruz. Model paralelliğinin temel fikri, bir ağı farklı hesaplama birimlerine bölmek ve bu birimleri farklı cihazlara yerleştirmektir. Kavramsal olarak, bu, geniş bir model yelpazesinin büyük kapasitelere ölçeklenmesini destekler. Ancak, bu yaklaşımlar genellikle düşük donanım kullanımı ve cihazlar arası iletişim darboğazlarıyla mücadele eder. Bu zorluklara karşı, Tek Program Çoklu Veri (SPMD) ve boru hattı paralelliği gibi çözümler önerilmiştir.
Mesh-TensorFlow, veri paralelliğinde kullanılan Tek Komut Çoklu Veri (SIMD) yaklaşımını diğer tensör boyutlarına genişleten SPMD paradigmasını takip eder. SPMD, her hesaplamayı birden fazla cihaza bölmeye olanak tanıyarak, bireysel matris çarpımlarının (ve dolayısıyla bireysel katmanların model parametrelerinin) boyutunun hızlandırıcı sayısıyla doğrusal olarak ölçeklenmesini sağlar. Ancak bu, her paralelleştirilmiş matris çarpımının çıktısını birleştirmek için kullanılan çok sayıda AllReduce benzeri işlemin yol açtığı yüksek iletişim yükünü de beraberinde getirir. Bu durum, yaklaşımın yalnızca yüksek hızlı ara bağlantılarla bağlanmış hızlandırıcıların bulunduğu senaryolarda uygulanabilir olmasını sınırlar. Ayrıca, SPMD verimli bir şekilde ölçeklenebilecek işlem türlerini kısıtlar ve bu da kullanımını belirli bir ağ mimarisi ve makine öğrenimi görevleri setiyle sınırlar. Örneğin, bu paradigma altında evrişim katmanlarının kanal boyutuna göre bölünmesi verimli değildir çünkü kanallar esasen tam bağlantılıdır; buna karşılık, uzaysal boyut boyunca bölme, halo bölgeleri için karmaşık teknikler gerektirir. SPMD, her işlemi daha küçük hale getirerek model derinliğini ölçeklendirmeye olanak tanırken, her bir katmanı daha fazla sayıda hızlandırıcıya bölmeyi gerektirir ve bu da cihazlar arası iletişim yükünü daha da artırır.
Diğer yaklaşımlar, sinir ağlarını ölçeklendirmek için boru hattı paralelliğine dayalı yöntemler kullanmayı denemiştir. Boru hattı paralelliğinin sinir ağı eğitimine uygulanan en son yinelemesi, parametre sunucuları için iletişim yükünü azaltmayı hedefleyen PipeDream’dir. PipeDream, ileri geçişlerin yürütülmesini boru hatlarına alır ve bunları geri geçişlerle karıştırarak donanım kullanımını en üst düzeye çıkarmaya çalışır. Bu tasarım, eşzamansız geri geçiş güncellemelerinin neden olduğu ağırlık bayatlaması sorunundan muzdariptir. Ağırlık bayatlamasından kaynaklanan optimizasyon sorunlarını önlemek için PipeDream, gradyan güncellemelerini doğru bir şekilde hesaplamak adına her hızlandırıcıda model parametrelerinin birden çok sürümlü kopyasını tutmayı gerektirir ve bu da kullanıcıların daha büyük modelleri ölçeklendirmesine engel olur.
GPipe, mikro yığınların yürütülmesini boru hatlarına alıp, tüm mini-yığın için tek bir eşzamanlı gradyan güncellemesi uygulamadan önce bunları işlerken, boru hattı paralelliğine yeni bir yaklaşım sunar. Yenilikçi yığın bölme boru hattı paralelliği algoritmamız, yeniden malzeme oluşturma ile birleştirildiğinde, çok sayıda mikro yığını ölçeklendirmeye olanak tanır. Bu, eşzamansız gradyan güncellemelerine gerek kalmadan kabarcık yükünü en aza indirir. GPipe, model boyutunu kullanılan hızlandırıcı sayısıyla doğrusal olarak ölçeklendirme imkanı tanır. SPMD’nin aksine, boru hattı paralelliği, modeli ölçeklendirme sırasında çok az ek iletişim yükü getirir. Cihazlar arası iletişim yalnızca mikro-yığın başına bölme sınırlarında gerçekleşir ve eklenen iletişim yükü oldukça düşüktür; bu da GPipe’in yüksek hızlı cihaz bağlantılarının bulunmadığı durumlarda kullanımını genişletir. Ancak, GPipe şu anda tek bir katmanın bir hızlandırıcının bellek gereksinimleri dahilinde olduğunu varsayar. Ek olarak, mikro-yığın bölme, yığın boyunca hesaplama gerektiren katmanları (örneğin, BatchNorm eğitim sırasında mikro-yığın istatistiklerini kullanır ancak değerlendirme için mini-yığın istatistiklerini toplar) desteklemek için karmaşık stratejiler gerektirir.
Sonuç
Bu çalışmada, devasa sinir ağlarını eğitmek için ölçeklenebilir bir model-paralellik kütüphanesi olan GPipe’i tanıtıyoruz. Eşzamanlı gradyan güncellemeleri kullanan ve yüksek donanım kullanımı ile eğitim kararlılığı sağlayan yenilikçi bir toplam bölme işlem hattı paralellik algoritması öneriyor ve uyguluyoruz. GPipe’i kullanarak geniş ölçekli evrişimli ve transformatör (transformer) tabanlı modeller eğitiyor ve hem görüntü sınıflandırması hem de çok dilli makine çevirisi alanlarında güçlü deneysel sonuçlar elde ediyoruz.
GPipe kütüphanesinin üç temel özelliğini vurguluyoruz:
- Verimlilik: Yenilikçi bir toplam-bölme boru hattı algoritması kullanarak GPipe, cihaz sayısıyla neredeyse doğrusal bir hızlanma sağlar.
- Esneklik: GPipe, katmanlar dizisi olarak temsil edilebilen her türlü derin ağı destekler.
- Güvenilirlik: GPipe, eşzamanlı gradyan inişi kullanır ve bölümlerin sayısından bağımsız olarak tutarlı eğitim sonuçlarını garanti eder.
Kaynaklar
Google (Huang, Cheng, Bapna, Firat), (25 Jul 2019), GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism