Batch Boyutu
Batch boyutunun derin öğrenme üzerindeki etkisini keşfedin. Eğitim hızını, bellek kullanımını ve model performansını verimli bir şekilde optimize edin.
Toplu boyut, modelin iç parametreleri güncellenmeden önce işlenen eğitim örneklerinin sayısını tanımlayan makine öğrenmesinde temel bir hiperparametredir. Hesaplama açısından engelleyici olabilecek tüm eğitim veri kümesini aynı anda işlemek yerine, veriler daha küçük alt kümelere veya "toplu işlere" bölünür. Toplu boyut seçimi, modelin öğrenme dinamiklerini, eğitim hızını ve nihai performansı doğrudan etkileyen kritik bir karardır. Hesaplama verimliliği ile model ağırlıklarını güncellemek için kullanılan gradyan tahmininin doğruluğu arasında bir dengeyi temsil eder.
Model Eğitiminde Batch Boyutunun Rolü
Eğitim sırasında, bir sinir ağı (NN), yaptığı hataya göre ağırlıklarını ayarlayarak öğrenir. Bu ayarlama, gradyan inişi (gradient descent) gibi bir optimizasyon algoritması tarafından yönlendirilir. Küme boyutu, modelin gradyanı hesaplamadan ve bir ağırlık güncellemesi gerçekleştirmeden önce kaç örnek "gördüğünü" belirler.
- Stokastik Gradyan İnişi (SGD): Yığın boyutu 1 olduğunda, işleme stokastik gradyan inişi denir. Gradyan, her bir örnek için ayrı ayrı hesaplanır ve bu da sık ancak gürültülü güncellemelere yol açar.
- Yığın Gradyan İnişi (Batch Gradient Descent): Yığın boyutu, eğitim veri kümesindeki toplam örnek sayısına eşit olduğunda, bu yığın gradyan inişi olarak bilinir. Bu, çok doğru bir gradyan tahmini sağlar, ancak hesaplama açısından maliyetli ve bellek yoğundur.
- Mini-Batch Gradyan İnişi: Bu, toplu boyutunun 1 ile toplam veri kümesi boyutu arasında bir değere (örneğin, 32, 64, 128) ayarlandığı en yaygın yaklaşımdır. Toplu gradyan inişinin kararlılığı ile stokastik gradyan inişinin verimliliği arasında bir denge sunar.
Batch boyutunun seçimi, eğitim sürecini önemli ölçüde etkiler. Daha büyük bir batch boyutu, gradyanın daha doğru bir tahminini sağlarken, her güncelleme için hesaplama maliyeti daha yüksektir. Tersine, daha küçük bir batch boyutu daha az doğru gradyan tahminlerine yol açar, ancak daha hızlı güncellemelere olanak tanır.
Doğru Batch Boyutunu Seçme
Optimal toplu iş boyutunu bulmak, hiperparametre ayarlamasının önemli bir parçasıdır ve veri kümesine, model mimarisine ve mevcut donanıma bağlıdır.
- Büyük Yığın Boyutları: Aynı anda daha fazla veri işlemek, GPU'ların paralel işleme yeteneklerinden tam olarak yararlanarak epok başına daha hızlı eğitim sürelerine yol açabilir. Bununla birlikte, araştırmalar çok büyük yığınların bazen bir "genelleme boşluğuna" yol açabileceğini göstermiştir; burada model eğitim verilerinde iyi performans gösterir, ancak görülmeyen verilerde kötü performans gösterir. Ayrıca, önemli miktarda bellek gerektirirler, bu da sınırlayıcı bir faktör olabilir.
- Küçük Yığın Boyutları: Bunlar daha az bellek gerektirir ve genellikle daha iyi model genellemesine yol açar, çünkü gradyan güncellemelerindeki gürültü, modelin yerel minimumlardan kaçmasına ve daha sağlam bir çözüm bulmasına yardımcı olabilir. Bu, aşırı öğrenmeyi önlemeye yardımcı olabilir. Temel dezavantajı, ağırlık güncellemeleri daha sık olduğundan ve paralel olarak daha az veri işlendiğinden eğitimin daha yavaş olmasıdır.
Birçok uygulama için, ikiye katları olan (32, 64, 128, 256 gibi) toplu boyutları, GPU bellek mimarileriyle genellikle iyi uyum sağladıkları için önerilir. Ultralytics HUB gibi araçlar, modelleri eğitirken farklı toplu boyutlarıyla kolayca deneme yapılmasına olanak tanır.
Eğitimde ve Çıkarımda Toplu Boyut (Batch Size)
Yığın boyutu (batch size) eğitimde temel bir kavram olmakla birlikte, farklı bir amaçla çıkarıma (inference) da uygulanır. Çıkarım sırasında, verimliliği en üst düzeye çıkarmak için çoklu girdileri (örneğin, resimler veya cümleler) aynı anda işlemek için yığınlama kullanılır. Bu genellikle yığın çıkarımı (batch inferencing) olarak adlandırılır.
Örneğin, otonom bir araçta gerçek zamanlı çıkarım gibi acil sonuçlar gerektiren uygulamalar için, çıkarım gecikmesini en aza indirmek için 1'lik bir toplu iş boyutu kullanılır. Bir gecede büyük bir görüntü koleksiyonunu işlemek gibi çevrimdışı senaryolarda, verimliliği artırmak için daha büyük bir toplu iş boyutu kullanılabilir.
Gerçek Dünya Uygulamaları
- Tıbbi Görüntüleme Analizi: Tıbbi görüntülerde tümör tespiti için bir YOLO11 modeli eğitilirken, görüntüler genellikle yüksek çözünürlüklüdür. Bir GPU üzerindeki bellek kısıtlamaları nedeniyle, genellikle küçük bir batch boyutu (örneğin, 4 veya 8) kullanılır. Bu, modelin mevcut belleği aşmadan yüksek detaylı veriler üzerinde eğitilmesini sağlayarak kararlı bir eğitim sağlar.
- Üretim Kalite Kontrolü: Bir üretimde YZ ortamında, bir model bir montaj hattındaki kusurları tespit etmek için eğitilebilir. Milyonlarca ürün görüntüsünden oluşan büyük bir veri kümesiyle, güçlü bir dağıtılmış eğitim kümesinde daha büyük bir toplu iş boyutu (örneğin, 256 veya 512) kullanılabilir. Bu, eğitim sürecini hızlandırır, daha hızlı model yinelemesine ve dağıtımına olanak tanır.
Toplu Boyut ve İlgili Terimler
Yığın boyutunu (batch size) diğer ilgili kavramlardan ayırmak önemlidir:
- Yığın Boyutu - Epok ve İterasyon Karşılaştırması (Batch Size vs. Epoch and Iteration): Bir iterasyon (iteration), modelin ağırlıklarının bir kez güncellenmesidir. Bir epok (epoch), tüm eğitim veri kümesi üzerinde bir tam geçiştir. Bir epoktaki iterasyon sayısı, toplam eğitim örneği sayısının yığın boyutuna bölünmesiyle bulunur.
- Yığın Boyutu - Yığın Normalleştirme Karşılaştırması (Batch Size vs. Batch Normalization): Yığın Normalleştirme (Batch Normalization - BatchNorm), her mini yığın için girdileri standartlaştırmak üzere bir sinir ağı katmanı içinde kullanılan bir tekniktir. Etkinliği yığın boyutundan etkilenebilse de (daha büyük yığınlarla daha iyi performans gösterir), bir eğitim döngüsü parametresi değil, model mimarisinde ayrı bir katmandır. PyTorch ve TensorFlow gibi çoğu modern derin öğrenme çerçevesi, sağlam uygulamalar sağlar.