Bu bölümde, eğitim ardışık düzeni ayrıntılı olarak açıklanmaktadır.
Giriş işlem hattını optimize etme
Özet: Giriş sınırlı işlem hatlarının nedenleri ve müdahaleleri, görevlere büyük ölçüde bağlıdır. Bir profil oluşturucu kullanın ve sık karşılaşılan sorunlara dikkat edin.
Girişle sınırlı işlem hatlarını teşhis etmek için aşağıdaki gibi uygun bir profil oluşturucu kullanın:
- JAX için Perfetto
- TensorFlow için TensorFlow profiler.
Sonuç olarak, belirli nedenler ve müdahaleler büyük ölçüde göreve bağlıdır. Daha kapsamlı mühendislik değerlendirmeleri (ör. disk alanını en aza indirme) giriş işlem hattı performansını olumsuz etkileyebilir.
Girişe bağlı işlem hatlarının yaygın nedenleri şunlardır:
- Veriler, eğitim süreciyle birlikte yerleştirilmediğinden G/Ç gecikmesine neden oluyor. Örneğin, eğitim verilerinin ağ üzerinden okunması G/Ç gecikmesine neden olabilir.
- Pahalı online veri ön işleme. Çevrimdışıyken bir kez ön işleme yapmayı ve sonuçları kaydetmeyi deneyin.
- Veri hattı önceden getirme işlemine müdahale eden, istenmeyen senkronizasyon engelleri. Örneğin, CommonLoopUtils'deki cihaz ile ana makine arasındaki metrikler senkronize edilirken.
Girişe bağlı işlem hatları için aşağıdaki müdahaleleri öneririz:
- Önceden getirme örnekleri için giriş işlem hattını kullanın (örneğin, tf.data.Dataset.prefetch).
- Kullanılmayan özellikleri ve meta verileri, işlem hattında mümkün olduğunca erken bir aşamada her birinden kaldırın.
- Giriş ardışık düzeni için örnek oluşturan işlerin sayısının çoğaltılmasını artırın. Örneğin, tf.data hizmetini kullanın.
Model performansını değerlendirme
Özet: Değerlendirmeyi eğitimden daha büyük toplu boyutlarda çalıştırın. Değerlendirmeleri düzenli zaman aralıklarıyla değil, düzenli adım aralıklarıyla çalıştırın.
Değerlendirme ayarları
Modellerinizin performansını değerlendirmek için aşağıdaki ayarları kullanabilirsiniz:
- Online değerlendirme: Model, üretim ortamında tahminler sunarken metrikleri toplar. Online değerlendirme, modelin kullanılma şekliyle eşleştiği için genellikle model kalitesinin en gerçekçi değerlendirmesini sağlar.
- Çevrimdışı değerlendirme: Model, üretim ortamını temsil eden çevrimdışı eğitim, doğrulama veya test kümelerinde çalıştırıldığında metrikleri toplar. Çevrimdışı değerlendirme, soruna bağlı olarak oldukça karmaşık ve hesaplama açısından maliyetli olabilir.
- Periyodik değerlendirmeler: Model eğitimi sırasında, çevrimdışı değerlendirme için vekil olabilecek ve/veya çevrimdışı değerlendirmede kullanılan verilerin bir alt kümesi üzerinde metrikler toplayın. Periyodik değerlendirmeler en pratik ve ekonomik seçenek olsa da üretim ortamını tam olarak temsil etmeyebilir. Eğitim sırasında alınan sinyalin güvenilirliğinden ödün vermeden, çevrimdışı değerlendirmenin uygun bir proxy'sini kullanmayı hedefleyin.
Düzenli değerlendirmeler ayarlama
Eğitim sırasında düzenli olarak değerlendirme yapmanızı öneririz. Bunun nedenleri şunlardır:
- Eğitimdeki ilerlemeyi gerçek zamanlı olarak izlemek için.
- Retrospektif model kontrol noktası seçimini kolaylaştırmak için.
- Eğitimin sonunda eğitim eğrilerini incelemek için.
En basit yapılandırma, hem eğitimi hem de periyodik değerlendirmeleri aynı işlem örneğinde gerçekleştirmektir. Bu durumda, eğitim ve değerlendirme arasında periyodik olarak geçiş yapılır. Bu durumda, değerlendirmeleri gerçekleştirmek için kullanılan toplu iş boyutu, eğitim için kullanılan toplu iş boyutu kadar veya daha büyük olmalıdır. Bunun nedeni, değerlendirme sırasında model etkinleştirmelerini sürdürmenize gerek olmamasıdır. Bu da örnek başına hesaplama gereksinimlerini azaltır.
Düzenli zaman aralıklarıyla değil, düzenli adım aralıklarıyla periyodik değerlendirmeler yapın. Eğitim işlerinin önceden sonlandırılması, ağ gecikmesi sorunları vb. nedeniyle eğitimden olumsuz etkilenme ihtimali varsa zaman aralıklarına göre değerlendirme yapmak eğitim eğrilerini yorumlamayı zorlaştırabilir.
Doğrulama ve test metriklerindeki periyodiklik (karıştırılmış bir eğitim kümesi, doğrulama kümesi ve test kümesi bölmesi kullanılırken) aşağıdaki gibi uygulama hatalarına işaret edebilir:
- Test verilerinin eğitim verileriyle çakışması.
- Eğitim verileri düzgün şekilde karıştırılmıyor.
Düzenli aralıklarla değerlendirme yapmak bu sorunların tespit edilmesini kolaylaştırabilir.
Değerlendirme kümeleri toplu iş boyutuna bölünemediğinde kısmi toplu işler oluşabilir. Kayıp işlevinin bu örneklerden etkilenmemesi için doldurulmuş örneklerin doğru şekilde ağırlıklandırıldığından (ör. toplu iş üzerindeki ortalama kaybı hesaplayan örnekler üzerinde ağırlıklı ortalama) emin olun. Genellikle bu doldurulmuş örneklere sıfır ağırlık verebilirsiniz.
Çevrimdışı analizi desteklemek için değerlendirme başına yeterli bilgi kaydedin. Hata ayıklama için çok değerli olabileceğinden tahminleri ideal olarak bağımsız örnekler üzerinde kaydedin. SavedModels gibi yapılar oluşturmak, değerlendirme işleri tamamlandıktan sonra geçici model incelemesini kolaylaştırır.
Periyodik değerlendirme için örnek seçme
Periyodik değerlendirme işi, metrikleri makul bir süre içinde tam çevrimdışı değerlendirme kümesi üzerinde hesaplamak için yeterince hızlı çalışmayabilir. Bu sorun genellikle verilerin periyodik olarak değerlendirilmesi için örnekleme yapılmasını gerektirir. Örneklenmiş bir veri kümesi oluştururken örnek boyutuyla ilgili sorunları ve dengesiz veri kümelerindeki özel durumları göz önünde bulundurun.
Örnek boyutu
Periyodik iş tarafından kullanılan örneklenmiş veri kümesinde hesaplanan performansın, çevrimdışı değerlendirme kümesinin tamamındaki performansla eşleştiğini kontrol edin. Diğer bir deyişle, örneklenmiş veri kümesi ile tam veri kümesi arasında bir çarpıklık olmadığından emin olun.
Periyodik değerlendirme için kullandığınız veri kümesi aşağıdaki özelliklere sahip olmalıdır:
- Model tahminlerini kolayca oluşturacak kadar küçük olmalıdır.
- Aşağıdakilerin ikisini de yapabilecek kadar büyük olmalıdır:
- Modeldeki iyileştirmeleri doğru şekilde ölçün. Diğer bir deyişle, ölçümler etiket gürültüsünden etkilenmemelidir.
- Denemelerde sırayla birden fazla değerlendirmeye uyum sağlayın ve yine de doğru tahminler üretin. Yani, ayrılmış bir test kümesine genelleştirilmeyen bir şekilde zaman içinde doğrulama kümesine uyarlanarak "sığdırılmayı" önleyecek kadar büyük olmalıdır. Ancak bu durum nadiren pratik bir sorun teşkil eder.
Dengesiz veri kümeleri
Dengesiz veri kümelerinde, nadir azınlık sınıflarındaki performans genellikle gürültülüdür. Yalnızca az sayıda azınlık örneği içeren veri kümelerinde, doğruluk iyileştirmeleri hakkında daha fazla bilgi edinmek için doğru tahmin edilen örneklerin sayısını kaydedin. Örneğin, %5 hassasiyet artışı heyecan verici görünüyor ancak bu artış yalnızca bir örneğin daha doğru olmasından mı kaynaklanıyor?
Kontrol noktalarını kaydetme ve en iyi kontrol noktasını geriye dönük olarak seçme
Özet: Eğitimi sabit sayıda adım için çalıştırın ve çalıştırmadan sonra en iyi kontrol noktasını seçin.
Çoğu derin öğrenme çerçevesi, model kontrol noktası oluşturmayı destekler. Yani modelin mevcut durumu periyodik olarak diske kaydedilir. Kontrol noktası oluşturma, eğitim işinin bilgi işlem örneği kesintilerine karşı dayanıklı olmasını sağlar. En iyi kontrol noktası genellikle son kontrol noktası değildir. Özellikle doğrulama kümesi performansı zaman içinde artmaya devam etmeyip belirli bir değer etrafında dalgalandığında bu durum geçerlidir.
Eğitim sırasında şimdiye kadar görülen en iyi N kontrol noktasını takip etmek için ardışık düzeni ayarlayın. Eğitimin sonunda model seçimi, en iyi kontrol noktasını seçmek anlamına gelir. Bu yaklaşıma geriye dönük optimum kontrol noktası seçimi adını veriyoruz. Deneme bütçesini önceden belirlediğiniz ve şu ana kadar görülen en iyi N kontrol noktasını koruduğunuz için, erken durdurma olasılığını desteklemeniz genellikle gerekli değildir.
Deneme izlemeyi ayarlama
Özet: Farklı denemeleri izlerken çalışmadaki bir kontrol noktasının en iyi performansı ve çalışmanın kısa bir açıklaması gibi temel bilgileri izleyin.
Deneme sonuçlarını bir e-tabloda izlemenizi öneririz. E-tablolarımızda genellikle aşağıdaki sütunlar bulunur:
- Çalışma adı
- Çalışmanın yapılandırmasının depolandığı yerin bağlantısı.
- Çalışmayla ilgili notlar veya kısa bir açıklama.
- Çalıştırılan deneme sayısı
- Çalışmadaki en iyi kontrol noktasının doğrulama kümesindeki performans.
- Eğitimin başlatılması için gönderilmeyen hangi değişikliklerin gerekli olduğuna dair notlar veya belirli yeniden üretme komutları.
En azından yukarıda listelenen bilgileri yakalayan uygun bir izleme sistemi bulun. İzlenmeyen denemeler yok sayılabilir.
Toplu normalleştirme uygulama ayrıntıları
Özet: Günümüzde toplu normalleştirme genellikle LayerNorm ile değiştirilebilir. Ancak bu değişikliği yapamadığınız durumlarda, toplu boyutunu veya ana makine sayısını değiştirirken dikkat etmeniz gereken bazı noktalar vardır.
Toplu normalleştirme, etkinleştirmeleri mevcut toplu işteki ortalama ve varyanslarını kullanarak normalleştirir. Ancak çok cihazlı ayarda, açıkça senkronize edilmediği sürece bu istatistikler her cihazda farklılık gösterir. Kişisel deneyimlere dayalı raporlar (çoğunlukla ImageNet'te) bu normalleştirme istatistiklerinin yalnızca yaklaşık 64 örnek kullanılarak hesaplanmasının pratikte daha iyi sonuç verdiğini gösteriyor. (Train longer, generalize better: closing the generalization gap in large batch training of neural networks [Daha uzun süre eğitim, daha iyi genelleme: Sinir ağlarının büyük toplu eğitiminde genelleme açığını kapatma] başlıklı makalede Ghost Batch Normalization'ın açıklamasına bakın.) Toplam toplu iş boyutu ile toplu iş normalleştirme istatistiklerini hesaplamak için kullanılan örnek sayısının ayrılması, toplu iş boyutu karşılaştırmaları için özellikle yararlıdır.
Hayalet toplu normalleştirme uygulamaları, cihaz başına toplu iş boyutunun sanal toplu iş boyutundan büyük olduğu durumu her zaman doğru şekilde işlemez. Bu durumda, toplu normalleştirme istatistik örneklerinin doğru sayısını elde etmek için her cihazda grubu alt örneklemeniz gerekir.
Test modunda toplu normalleştirme için kullanılan üstel hareketli ortalamalar (EMA'lar) yalnızca eğitim istatistiklerinin doğrusal bir kombinasyonudur. Bu nedenle, bu EMA'ları kontrol noktalarına kaydetmeden önce senkronize etmeniz yeterlidir. Ancak, toplu normalleştirmenin bazı yaygın uygulamaları bu EMA'ları senkronize etmez ve yalnızca ilk cihazdaki EMA'yı kaydeder.
Birden fazla ana makine içeren işlem hatlarıyla ilgili dikkat edilmesi gereken noktalar
Özet: Günlüğe kaydetme, değerlendirme, rastgele sayı üretme, kontrol noktası oluşturma ve veri parçalama için çoklu ana makine eğitimi, hataların eklenmesini çok kolaylaştırabilir.
Çok ana makine içeren ardışık düzenler için aşağıdakileri yapın:
- İşlem hattının yalnızca bir ana makinede günlük kaydı oluşturduğundan ve kontrol noktası oluşturduğundan emin olun.
- Toplu normalleştirme istatistiklerini değerlendirmeden veya kontrol noktası oluşturmadan önce ana makineler arasında senkronize edin.
- Genellikle performansı artırdığı için veri dosyalarını ana makineler arasında parçalayın.
Önemli: Ana makineler arasında aynı olan (model başlatma için) ve ana makineler arasında farklı olan (verileri karıştırma/ön işleme için) RNG tohumlarınız olduğundan emin olun. Bu nedenle, bunları uygun şekilde işaretlediğinizden emin olun.