Yeni proje başlatma rehberi

Bu bölümde, bir ML projesinin başında aşağıdakilerden hangisinin seçileceği açıklanmaktadır:

  • model mimarisi
  • optimize edici
  • grup boyutu
  • ilk yapılandırma

Varsayımlar

Bu bölümdeki tavsiyede aşağıdakiler varsayılmaktadır:

  • Sorunu zaten formüle ettiniz ve eğitim verilerinizi bir ölçüde hazırladınız.
  • Zaten bir eğitim ve test ardışık düzeni oluşturdunuz.
  • Dağıtılan ortamda ölçmeyi planladığınız metrikleri olabildiğince iyi temsil eden metrikleri seçip uyguladınız.

Önceki tüm ön koşulları karşıladığınızı varsayarsak artık zamanınızı model mimarisine ve eğitim yapılandırmasına ayırabilirsiniz.

Model mimarisini seçin

Aşağıdaki tanımlarla başlayalım:

  • Model mimari, tahmin oluşturmaya yönelik bir sistemdir. Model mimarisi, giriş verilerini tahminlere dönüştüren çerçeveyi içerir ancak parametre değerlerini içermez. Örneğin; 10 düğüm, 5 düğüm ve 3 düğümden oluşan üç gizli katmanı olan bir nöral ağ, model mimarisidir.
  • model, bir model mimarisinin yanı sıra tüm parametreler için belirli değerler içerir. Örneğin, bir model, model mimarisinin tanımında açıklanan nöral ağ ile her düğümün ağırlıkları ve önyargısı için belirli değerlerden oluşur.
  • Model ailesi, bir dizi hiperparametre verilen bir model mimarisi oluşturmak için kullanılan bir şablondur.

Model mimarisini seçmek, gerçekten bir dizi farklı model seçmek anlamına gelir (model hiperparametrelerinin her ayarı için bir tane).

Mümkün olduğunda, mevcut soruna mümkün olduğunca yakın bir sorunu ele alan belgelenmiş bir kod tabanı bulmaya çalışın. Ardından, başlangıç noktası olarak bu modeli yeniden oluşturun.

Optimize Edici'yi seçin

Tüm makine öğrenimi problemleri ve model mimarileri arasında "en iyi" yöntem yoktur. Sadece optimize edicilerin performansını karşılaştırmak bile zordur. 🤖Özellikle yeni bir projeye başlarken köklü ve popüler optimize edicileri kullanmanızı öneririz.

Üzerinde çalıştığınız sorun türü için en popüler optimize ediciyi seçmenizi öneririz. Aşağıdaki köklü optimizasyon araçlarını öneririz:

Seçilen optimize edicinin tüm bağımsız değişkenlerine dikkat edin. Daha fazla hiperparametreye sahip optimize ediciler genellikle daha fazla ayarlama gerektirir. Bu, özellikle farklı hiperparametrelerin en iyi değerlerini (örneğin, öğrenme hızı) bulmaya çalıştığınız ve optimize edici bağımsız değişkenlerini sıkıntılar olarak değerlendirdiğiniz bir projenin başlangıç aşamalarında oldukça sıkıntıya neden olur. Bu nedenle, aşağıdaki yaklaşımı öneririz:

  1. Projenin başında, ayarlanabilir çok sayıda hiperparametresi olmayan bir optimize edici seçin. Aşağıda iki örnek verilmiştir:
    • Sabit momentumlu SGD.
    • Epsilon, Beta1 ve Beta2 düzeltildi.
  2. Projenin sonraki aşamalarında, daha fazla hiperparametreyi varsayılan değerlerle düzeltmek yerine ayarlayacak daha genel bir optimize ediciye geçiş yapın.

Grup boyutunu seçin

Özet: Grup boyutu, eğitim hızını belirler. Doğrulama grubu performansını doğrudan ayarlamak için grup boyutunu kullanmayın.

Toplu işlem boyutu, eğitim süresini ve bilgi işlem kaynağı tüketimini büyük ölçüde belirler. Grup boyutunun artırılması genellikle eğitim süresini kısaltır. Bunun nedeni:

  • Hiperparametreleri sabit bir zaman aralığı içinde daha kapsamlı şekilde ayarlamanıza ve böylece daha iyi bir nihai model elde etmenize olanak tanır.
  • Geliştirme döngüsünün gecikmesini azaltarak yeni fikirlerin daha sık test edilmesini sağlar.

Grup boyutunu artırmak kaynak tüketimini azaltabilir, artırabilir veya kaynak tüketimini değiştirebilir.

Grup boyutunu, doğrulama grubu performansı için ayarlanabilen bir hiperparametre olarak değerlendirmeyin. Aşağıdaki koşulların tümü karşılanırsa model performansı toplu boyutuna bağlı olmamalıdır:

  • Tüm optimize edici hiperparametreleri doğru ayarlanmıştır.
  • Düzenli olarak yapmanız yeterli olur ve iyi ayarlanır.
  • Eğitim adımlarının sayısı yeterlidir.

Aynı nihai performans, herhangi bir grup boyutu kullanılarak elde edilebilir olmalıdır (bkz. Shallue ve diğerleri 2018 ve Doğrulama grubu performansını doğrudan iyileştirmek için neden grup boyutu ayarlanmamalıdır?).

Uygun grup boyutlarını belirleme ve eğitim işleme hızını tahmin etme

Belirli bir model ve optimize edici için mevcut donanım genellikle çeşitli toplu boyutları destekler. Sınırlayıcı faktör genellikle hızlandırıcı bellektir. Maalesef tam eğitim programını çalıştırmadan veya en azından derlemeden hangi grup boyutlarının belleğe sığacağını hesaplamak zor olabilir. Genellikle en kolay çözüm, eğitim işlerini farklı toplu boyutlarda çalıştırmak (örneğin, 2'nin güçlerini artırmak) işlerden biri mevcut belleği aşana kadar az sayıda adımla çalışmaktır. Her grup boyutu için, eğitim işleme hızının güvenilir bir tahminini elde edecek kadar uzun eğitim yapın:

eğitim işleme hızı = saniyede işlenen örnek sayısı

veya eşdeğer olarak adım başına süre:

adım başına süre = grup boyutu / eğitim işleme hızı

Hızlandırıcılar henüz doymamışken grup boyutu iki katına çıkarsa eğitim işleme hızı da ikiye katlanır (veya en az iki katına çıkar). Diğer bir deyişle, grup boyutu büyüdükçe adım başına süre sabit (veya en azından hemen hemen sabit) olmalıdır. Böyle bir durum söz konusu değilse eğitim ardışık düzeninde G/Ç veya işlem düğümleri arasında senkronizasyon gibi bir performans sorunu olur. Devam etmeden önce performans sorununu teşhis edip düzeltmeyi düşünün.

Eğitim işleme hızı yalnızca bir maksimum grup boyutuna kadar artarsa donanım daha büyük bir grup boyutunu desteklese bile yalnızca bu maksimum toplu işlem boyutuna kadar grup boyutlarını dikkate alın. Daha büyük bir grup boyutu kullanmanın sağladığı tüm avantajlar, eğitim işleme hızının artacağını varsayar. Sorun çözülmezse sorunu düzeltin veya daha küçük grup boyutunu kullanın.

Gradyan birikmesi, donanımın destekleyebileceğinden daha büyük bir grup boyutunu simüle eder ve bu nedenle işleme hızı konusunda avantaj sağlamaz. Uygulamalı çalışmalarda gradyan birikmesinden genellikle kaçınmalısınız.

Modeli veya optimize ediciyi her değiştirdiğinizde bu adımları tekrarlamanız gerekebilir. Örneğin, farklı bir model mimarisi, daha büyük bir grup boyutunun belleğe sığmasına izin verebilir.

Eğitim süresini en aza indirmek için grup boyutunu seçin

Eğitim süresi tanımımız şöyledir:

  • eğitim süresi = (adım başına süre) x (toplam adım sayısı)

Genellikle adım başına sürenin, tüm uygun grup boyutları için yaklaşık sabit olduğunu düşünebilirsiniz. Bu durum aşağıdaki durumlarda geçerlidir:

  • Paralel hesaplamalardan kaynaklanan ek yük yoktur.
  • Eğitimle ilgili tüm performans sorunları teşhis edilip düzeltildi. (Eğitim sorunlarını nasıl tanımlayacağınızı öğrenmek için önceki bölümü inceleyin. Pratikte, grup boyutunu büyütmek genellikle en azından bir miktar ek yük gerektirir.

Grup boyutu büyüdükçe, grup boyutunu değiştirirken ilgili tüm hiperparametreleri yeniden ayarlamanız koşuluyla sabit bir performans hedefine ulaşmak için gereken toplam adım sayısı genellikle azalır. (Bkz. Shallue ve diğerleri 2018.) Örneğin, grup boyutunu iki katına çıkarmak, gereken toplam adım sayısını yarıya düşürebilir. Bu ilişkiye mükemmel ölçeklendirme denir ve kritik grup boyutuna kadar tüm grup boyutları için geçerli olacaktır.

Kritik grup boyutunun ötesinde, grup boyutunun artırılması getirilerin azalmasına neden olur. Yani, toplu işlem boyutunun artırılması sonuçta eğitim adımlarının sayısını azaltmaz ancak hiçbir zaman artırmaz. Bu nedenle, eğitim süresini en aza indiren grup boyutu, genellikle gerekli eğitim adımları sayısını azaltan en büyük grup boyutudur. Bu grup boyutu veri kümesine, modele ve optimize ediciye bağlıdır ve her yeni soru için deneysel olarak bulmak dışında, bunun nasıl hesaplanacağına dair açık bir sorundur. 🤖

Grup boyutlarını karşılaştırırken, aşağıdakiler arasındaki farka dikkat edin:

  • Örnek bütçe veya dönem bütçesi: Eğitim örneği sunularının sayısını sabitlerken tüm denemeleri çalıştırma.
  • Tüm denemeleri sabit sayıda eğitim adımıyla çalıştıran adım bütçesi.

Grup boyutlarının sıfır dönem bütçesiyle karşılaştırılması, daha büyük paket boyutları yine de gereken eğitim adımı sayısını azaltarak anlamlı bir hız sağlayabilecek olsa bile yalnızca mükemmel ölçeklendirme sistemini araştırır. Çoğu zaman mevcut donanım tarafından desteklenen en büyük grup boyutu, kritik grup boyutundan daha küçüktür. Bu nedenle, en iyi kural (hiçbir deneme çalıştırmadan) mümkün olan en büyük grup boyutunu kullanmaktır.Sonuçta eğitim süresi uzarsa, daha büyük bir grup boyutu kullanmanın bir anlamı yoktur.

Kaynak tüketimini en aza indirmek için grup boyutunu seçin

Grup boyutunu büyütmeyle ilişkili iki tür kaynak maliyeti vardır:

  • Ön maliyetler. Örneğin, çoklu GPU / çoklu TPU eğitimini uygulamak için yeni donanım satın alınabilir ya da eğitimin ardışık düzeninin yeniden yazılması verilebilir.
  • Kullanım maliyetleri. Örneğin, ekibin kaynak bütçelerine göre faturalandırma, bulut sağlayıcıdan faturalandırma, elektrik / bakım maliyetleri.

Grup boyutunu artırmanın önemli miktarda ön maliyeti varsa proje olgunlaşana ve fayda maliyet dengesini değerlendirmek daha kolay olana kadar grup boyutunu büyütmeyi ertelemek daha iyi olabilir. Çok ana makineli paralel eğitim programları uygulamak, bugs ve ufak tefek sorunlarla sonuçlanabilir. Bu nedenle, daha basit bir ardışık düzen ile başlamak muhtemelen daha iyi olur. Diğer yandan, çok sayıda ayarlama denemesi yapılması gerektiğinde, eğitim süresini büyük ölçüde hızlandırmak sürecin başlarında çok faydalı olabilir.

Toplam kullanım maliyetini (birden fazla farklı maliyet türünü içerebilir) kaynak tüketimi olarak değerlendiririz ve aşağıdaki şekilde hesaplanır:

kaynak tüketimi = adım başına kaynak tüketimi x toplam adım sayısı

Grup boyutunun artırılması genellikle toplam adım sayısını azaltır. Kaynak tüketiminin artması veya azalması, adım başına tüketimin nasıl değiştiğine bağlıdır. Bu, aşağıdaki gibi toplu işlem boyutuna bağlıdır:

  • Grup boyutunun artırılması, kaynak tüketiminin azalmasına neden olabilir. Örneğin, daha büyük grup boyutuna sahip her adım, daha küçük grup boyutuyla aynı donanım üzerinde çalıştırılabiliyorsa (adım başına sürede yalnızca küçük bir artışla) adım sayısındaki düşüş, adım başına kaynak tüketimindeki herhangi bir artıştan ağır basabilir.
  • Grup boyutunun artırılması, kaynak tüketimini değiştirmeyebilir. Örneğin, grup boyutu iki katına çıkarsa gereken adım sayısı yarıya iner ve kullanılan GPU sayısı iki katına çıkarsa toplam tüketim (GPU saati cinsinden) değişmez.
  • Grup boyutunun artırılması kaynak tüketimini artırabilir. Örneğin, grup boyutunu artırmak yükseltilmiş donanım gerektiriyorsa adım başına tüketimdeki artış, adım sayısındaki düşüşe ağır basabilir.

Grup boyutunun değiştirilmesi çoğu hiperparametrenin yeniden ayarlanmasını gerektirir

Çoğu hiperparametrenin optimum değeri grup boyutuna duyarlıdır. Bu nedenle, grup boyutunun değiştirilmesi genellikle ayarlama işlemine baştan başlamayı gerektirir. Grup boyutuyla en güçlü şekilde etkileşime giren ve bu nedenle her grup boyutu için ayrı ayrı ayar yapılması en önemli olan hiperparametreler şunlardır:

  • Optimize Edici hiperparametreleri (örneğin, öğrenme hızı ve momentum)
  • Normalleştirme hiperparametreleri

Bir projenin başında grup boyutunu seçerken bunu göz önünde bulundurun. Daha sonra farklı bir grup boyutuna geçmeniz gerekirse diğer hiperparametreleri yeni grup boyutu için yeniden ayarlamak zor, zaman alıcı ve pahalı olabilir.

Toplu grup kuralının grup boyutuyla etkileşimi

Toplu grup normları karmaşıktır ve istatistikleri hesaplamak için genellikle gradyan hesaplamasından farklı bir grup boyutu kullanmalıdır. Ayrıntılı bir açıklama için Toplu normalleştirme uygulama ayrıntılarına bakın.

İlk yapılandırmayı seçin

Hiperparametre ayarının ilk aşaması, aşağıdakiler için başlangıç noktalarını belirlemektir:

  • model yapılandırması (ör. katman sayısı)
  • optimize edici hiperparametreleri (ör. öğrenme hızı)
  • eğitim adımlarının sayısı

Bu ilk yapılandırmanın belirlenmesi, manuel olarak yapılandırılmış bazı eğitim çalıştırmaları ve deneme yanılma gerektirir.

Yol gösterici ilkemiz şöyledir:

Makul bir performans sağlayan basit, nispeten hızlı ve nispeten düşük kaynak tüketimine sahip bir yapılandırma bulun.

Bu örnekte:

  • Basit, özel düzenlileştirmeler veya mimari püf noktaları gibi gereksiz ardışık düzen özelliklerinden kaçınma anlamına gelir. Örneğin, dışarı düzenleme özelliği olmayan (veya bırakma normalleştirmesi devre dışı olan) bir ardışık düzen, bırakma normalleştirmesinin kullanıldığı bir ardışık düzene kıyasla daha basittir.
  • Makul performans, soruna göre değişir ancak en azından, eğitimli bir model, doğrulama kümesinde rastgele olasılıktan çok daha iyi performans gösterir.

Hızlı ve minimum kaynak tüketen bir ilk yapılandırmanın seçilmesi, hiperparametre ayarını çok daha verimli hale getirir. Örneğin, daha küçük bir modelle başlayın.

Eğitim adımlarının sayısını seçerken şu gerilimin dengelenmesi gerekir:

  • Daha fazla adıma yönelik eğitim, performansı artırabilir ve hiperparametre ayarını basitleştirir. (Daha fazla ayrıntı için Shallue ve diğerleri 2018 sayfasına bakın).
  • Buna karşılık, daha az adımla eğitim, her eğitim çalışmasının daha hızlı olmasını ve daha az kaynak kullanmasını sağlar. Bu sayede döngüler arasındaki süreyi kısaltarak ayarlama verimliliğini artırır ve paralel olarak daha fazla deneme çalıştırabilirsiniz. Dahası, projenin başında gereksiz büyük bir adım bütçesi seçerseniz, bu bütçeyi projenin ilerleyen aşamalarında değiştirmek zor olabilir. Örneğin, belirlediğiniz sayıda adım için öğrenme hızı takvimini ayarladıktan sonra.