Bir sinir ağının eğitimini hızlandırmak için 7 püf noktası
Sinir ağlarını daha süratli eğitmek, derin öğrenmede mühim faktörlerden biridir. Çoğu zaman sinir ağlarının karmaşık mimarisine ve kullanılan fazlaca sayıda parametreye kadar bu tür zorluklarla karşılaşırız. Verilerin, ağların ve ağırlıkların boyutu arttıkça modellerin eğitim süresi de artar ki bu da modelciler ve uygulayıcılar için iyi değildir. Bu yazıda, sinir ağlarının eğitimini hızlandırabilecek bazı ipuçlarını ve püf noktalarını tartışacağız. Makalede tartışılacak ana noktalar aşağıda listelenmiştir.
İçindekiler
- Çoklu GPU Eğitimi
- Öğrenme hızı ölçeklendirme
- Döngüsel öğrenme oranı programları
- Eğitimi karıştır
- Etiket yumuşatma
- Öğrenimi aktarın
- Karma kırılgan eğitim
Çoklu GPU eğitiminin öğrenme hızını iyi mi artırabileceğini tartışarak başlamış olalım.
Çoklu GPU eğitimi
Bu ipucu tamamen, modellerin performansıyla hiçbir bağlantısı olmayan sinir ağlarını hızlandırmak içindir. Bu ipucu maliyetli olabilir fakat fazlaca etkilidir. Bir GPU’nun uygulanması, sinir ağlarının eğitimini de hızlandırabilir, sadece daha çok GPU’nun uygulanması daha çok yarar sağlar. Herhangi biri sistemlerinde GPU’yu ima edemezse, çevrimiçi olarak GPU ve TPU için destek elde eden google ortak emek harcama not defterlerini inceleyebilir.
Veri biliminde kullanılan Python kitaplıklarının eksiksiz bir deposunu mu aramıştınız? burayı denetim et.
Eğitimde birden fazla GPU uygulamak, verileri değişik GPU’larda dağıtır ve bu GPU’lar ağ ağırlığını meblağ ve verilerin mini parti boyutunu öğrenmelerini sağlar. Mesela, 8192’lik bir toplu iş boyutumuz ve uygulanan 256 GPU’muz var ise, o vakit her GPU’nun 32 boyutunda bir mini yığını olacaktır yada bir ağı eğitmek için 32 örnek söyleyebiliriz. Bu, ağın eğitiminin daha süratli olacağı anlamına gelir.
Öğrenme hızı ölçeklendirme
Bu, sinir ağlarını eğitme hızını artırmada bizlere destek olabilecek ipuçlarından biridir. Genel olarak, büyük bir parti boyutuna haiz sinir ağının eğitimi, düşük doğrulama doğruluğunu temsil eder. Yukarıdaki bölümde, ağın yavaş eğitimini önlemek için birden fazla GPU uygulamanın toplu iş boyutunu dağıttığını gördük.
GPU’ların bulunmadığı bir senaryoda da gerçekleştirebileceğimiz bir şey, öğrenme oranını ölçeklendirmektir; bu ipucu, mini partinin haiz olduğu averaj alma tesirini telafi edebilir. Mesela dört GPU üstünden eğitim verirken parti boyutunu 4 kat arttırabiliyoruz. Ek olarak eğitimin hızını çoğaltmak için öğrenme oranını 4 ile çarpabiliriz.
Bu yöntemin öğrenme oranları yüksek olan modelin eğitimine adım atmak için rahat bir strateji olan öğrenme hızı ısınması bulunduğunu da söyleyebiliriz. En başta, daha azca öğrenme oranı ile antrenmana başlayabilir ve ısınma aşamasında evvelde ayarlanmış bir değere yükseltebiliriz. Daha azca öğrenme oranı, ilk birkaç dönem süresince olabilir. Arkasından, standart eğitimde çoğu zaman olduğu şeklinde öğrenme oranı düşebilir.
Bu hilelerin her ikisi de, birden fazlaca GPU kullanarak ağın dağıtılmış eğitimini kullanırken kullanışlıdır. Ek olarak, öğrenme hızı ısınmasında, parti boyutu ve kullandığımız GPU sayısı ne olursa olsun, eğitilmesi daha zor modellerin stabilize edilebileceğini görebiliriz.
Döngüsel Öğrenme Hızı Çizelgeleri
Öğrenme hızı çizelgeleri çeşitli tiplerde olabilir, bunlardan biri döngüsel öğrenme hızı çizelgeleridir ve bu da sinir ağlarının eğitiminin hızını artırmaya destek sağlar. Bu, temel olarak, evvelde tanımlanmış alt ve üst sınırlar altında bir döngüde öğrenme oranını artırarak ve azaltarak çalışır. Bazı çizelgelerde, eğitim prosedürü ilerledikçe üst sınırın azaldığını görüyoruz.
Tek seferlik döngüsel öğrenme oranı programları, tüm eğitim süreci süresince öğrenme oranını yalnızca bir kez artıran ve azaltan döngüsel öğrenme hızı programlarının bir çeşididir. Bunu yukarıdaki bölümde tartıştığımız öğrenme hızı ısınmasına da benzetebiliriz. Bu ipucu, optimize edicinin momentum parametresine de uygulanabilir, sadece ters sırada
Eğitimi karıştır
Bu fazlaca rahat bir ipucudur ve çoğunlukla bilgisayarla görme alanındaki ağlarla çalışan bir karışım olarak da adlandırılabilir. Bu ipucu fikri bu makaleden alınmıştır. Karıştırma süreci, fazla takmayı önlemeye destek sağlar ve modellerin karşıt veriler karşısındaki hassasiyetini azaltır. Bu işlemi girdi örnekleri üstünde rastgele harmanlama meydana getiren bir veri büyütme tekniği olarak da düşünebiliriz. Daha derine inersek, bu ipucunun bir çift veri örneği topladığını ve girdi ve çıktıların ağırlıklı ortalamasını hesaplarken yeni örnekler oluşturduğunu görüyoruz.
Makalelerimizden biri, karıştırma işlemi tarafınca kullanılan harmanlama işlemini açıklamaktadır. Mesela bir görüntü sınıflandırma görevinde süreç, çıktı etiketlerinin ağırlıklı ortalamasını hesaplamak için girdideki görüntüleri ve aynı karıştırma parametresini karışmasını sağlayarak çalışacaktır.
Etiket yumuşatma
Etiket yumuşatma, sinir ağlarının eğitim sürecini hızlandırmak için genel bir tekniktir. Düzgüsel bir sınıflandırma veri seti, gerçek bir sınıfın birinin değerlerine haiz olduğu ve öteki sınıfların sıfır değerine haiz olduğu, tek-sıcak kodlanmış etiketlerden oluşur. Bu şekilde bir durumda, bir softmax işlevi hiçbir vakit tek-sıcak kodlanmış vektörlerin çıktısını vermez. Bu prosedür, esas olarak, kati informasyon etiketlerinin dağılımları ile model tahminleri içinde bir boşluk yaratır.
Etiket yumuşatma uygulamak, kati informasyon etiketlerinin dağılımı ile model tahminleri arasındaki boşluğu azaltabilir. Etiket yumuşatmada, esas olarak gerçek etiketlerden bir miktar epsilon çıkarırız ve çıkarma neticelerini diğerlerine ekleriz. Bunu gerçekleştirerek, modeller aşırı takmayı önler ve bir düzenleyici olarak çalışır. Burada dikkat edilmesi ihtiyaç duyulan bir şey, epsilon’un kıymeti fazlaca büyük olursa etiketlerin fazlaca fazla düzleşebileceğidir.
Etiket yumuşatmanın kuvvetli kıymeti, etiketlerdeki bilgilerin daha azca tutulmasını sağlar. Etiket yumuşatmanın tesiri, sinir ağlarının eğitiminin hızında da görülebilir, şu sebeple model, sert hedeflerin ağırlıklı averajı olan yumuşak hedeflerden ve etiketler üstündeki muntazam dağılımdan daha süratli öğrenir. Bu yöntem, görüntü sınıflandırma, dil çevirisi ve konuşma tanıma şeklinde çeşitli modelleme prosedürleriyle kullanılabilir.
Öğrenimi aktarın
Geçirme öğrenme, bir modelin sıfırdan eğitim yerine öteki modellerden ağırlıkları aktararak eğitimine başladığı süreç olarak açıklanabilir. Bu, modelin eğitimini artırmanın fazlaca iyi bir yoludur ve ek olarak modelin performansını artırmaya da destek olabilir, şu sebeple süreçle beraber kullandığımız ağırlıklar aslına bakarsan bir yerde eğitilmiştir ve büyük oranda eğitim süresi kesilebilir. tüm eğitim süresi. Makalelerimizden biri, bu tür bir öğrenmenin iyi mi gerçekleştirilebileceğini açıklıyor.
Karma kırılgan eğitim
Modelin daha süratli öğrenebilmesi ve modelin eğitim süresinin azaltılabilmesi için hem 16 bit hem de 32 bit kayan noktaları öğrenecek bir model yapmak için bu tür bir eğitim tanımlayabiliriz. Modelin görüntülerden bir nesneyi algılaması ihtiyaç duyulan rahat bir sinir ağı örneğini ele alalım. Bu şekilde bir modelin eğitilmesi, ağın uç ağırlığının, verilerden nesne algılamayı gerçekleştirebilecek şekilde bulunması anlamına gelir. Bu kenar ağırlıkları 32 bit biçiminde saklanabilir.
Bu genel eğitim, ileri ve geri yayılımı içerebilir ve böylece noktalar 32 bit ise milyarlarca çarpma gerektirecektir. Eğitim esnasında bir sayıyı temsil etmek için 32 bit noktasından kaçınabiliriz. Ağın hesapladığı geri yayılım gradyanlarında fazlaca düşük değerler olabilir ve bu şeklinde durumlarda sayıları temsil etmek için fazlaca fazla hafıza zorlamamız gerekir. Bu sayıları temsil etmek için fazlaca fazla belleğe gerekseme duymamak için bu degradeleri de şişirebiliriz.
Ek olarak sayıları 16 bit ile temsil edebiliriz ve modelin fazlaca fazla hafıza deposundan tutum edebiliriz ve eğitim programı eskisinden daha süratli olabilir. Bu prosedür, aritmetik işlemler fazlaca azca bit varken modeli eğitmek olarak açıklanabilir. Bu şekilde bir eğitimde dikkate alınması ihtiyaç duyulan tek şey doğruluktur. Bu, modelin doğruluğunun mühim seviyede daha azca olması sebebiyle olabilir.
Yukarıda açıklanmış olduğu şeklinde, gerçek ağırlık parametrelerinin ana kopyasını orijinal 32-bit kesinlik formatında koruduğu karma kesinlik eğitimini kullanarak modeli hem 16 bit hem de 32 bit olarak eğitebiliriz. Ve eğitimden sonrasında modelle kullandığımız ağırlıkların gerçek bir seti olarak kullanabiliriz.
Eğitimler içinde 32 biti 16-bit hassasiyete çevirebilir ve daha azca hafıza ile tüm aritmetik işlemlerle ileri yayılımı gerçekleştirebiliriz ve bir süre sonrasında gradyanların olduğu geri yayılıma ölçeklendirerek yitik beslemek için hesaplanabilir. da büyütülür.
Geri yayılımda, 16 bitlik gradyanları hesaplıyoruz ve son gradyanlar, modelde kullandığımız gerçek ağırlık kümesine gidiyor. Yukarıda verilen prosedür bir yinelemedir ve bu birçok yineleme için olur. Aşağıdaki görüntü, tartıştığımız tüm prosedürü açıklamaktadır.
Görüntü deposu
Bu prosedürün arkasındaki tüm fikri burada bulabiliriz. Ek olarak, TensorFlow burada bu tür eğitimin bir örneğini sağlar.
Son sözler
Yazımızda sinir ağlarının eğitimini hızlandırmak için kullanılabilecek püf noktalarını ve püf noktalarını tartıştık. Modellerin eğitim süresi ve performansı modellemede dikkate alınması ihtiyaç duyulan mühim faktörler olduğundan, bu tarz şeyleri süreçlerimizde kullanmaya çalışmalıyız.
Yoruma kapalı.