Batch Size
Batch boyutunun makine öğrenimi eğitim hızını ve doğruluğunu nasıl etkilediğini öğren. Donanım kısıtlarını keşfet ve AutoBatch kullanarak Ultralytics YOLO26'yı optimize et.
Makine öğrenimi ve özellikle derin öğrenme alanında Batch Boyutu, model eğitiminin bir iterasyonunda kullanılan eğitim örneklerinin sayısını ifade eder. Tüm eğitim verilerini aynı anda sinir ağına vermek yerine (bellek kısıtlamaları nedeniyle bu genellikle hesaplama açısından mümkün değildir), veri kümesi batch adı verilen daha küçük alt kümelere ayrılır. Model bir batch'i işler, hatayı hesaplar ve sonraki batch'e geçmeden önce geri yayılım aracılığıyla dahili model ağırlıklarını günceller. Bu hiperparametre, hem eğitim hızının hem de öğrenme sürecinin kararlılığının belirlenmesinde önemli bir rol oynar.
Batch'lerle Eğitim Dinamikleri#
Batch boyutu seçimi, genellikle stokastik gradyan inişinin bir çeşidi olan optimizasyon algoritmasının kayıp uzayında nasıl ilerlediğini temelden değiştirir.
- Küçük Batch Boyutları: Küçük bir sayı kullanmak (ör. 8 veya 16) "gürültülü" güncellemelerle sonuçlanır. Gradyan tahmini veri kümesinin tamamı için daha az doğru olsa da bu gürültü bazen modelin yerel minimumlardan kaçmasına yardımcı olarak daha iyi genelleme sağlayabilir. Ancak daha küçük batch'ler her epoch'ta daha fazla güncelleme gerektirir; bu da ek yük nedeniyle gerçek geçen süre açısından eğitimi yavaşlatabilir.
- Büyük Batch Boyutları: Daha büyük bir batch (ör. 128 veya 256), gradyanın daha doğru bir tahminini sağlayarak kayıp fonksiyonunun daha düzgün yakınsamasına yol açar. Modern donanımlarda büyük ölçekte paralelleştirmeye olanak tanıyarak hesaplamayı önemli ölçüde hızlandırır. Ancak batch çok büyük olursa model keskin ve optimal olmayan minimumlara yerleşebilir; bu da aşırı öğrenmeye ve yeni verilere genelleme becerisinin azalmasına yol açabilir.
Donanım ve Bellek Etkileri#
Uygulayıcılar batch boyutunu çoğu zaman salt teorik tercihten ziyade donanım sınırlamalarına göre seçmek zorundadır. Özellikle Transformer'lar veya gelişmiş evrişimli ağlar gibi büyük mimarilere sahip derin öğrenme modelleri, bir GPU'nun VRAM'inde saklanır.
Hızlandırma için NVIDIA CUDA kullanılırken VRAM; model parametrelerini, giriş verisi batch'ini ve gradyan hesaplaması için gereken ara aktivasyon çıktılarını barındırmalıdır. Batch boyutu kullanılabilir belleği aşarsa eğitim, "Bellek Yetersiz" (OOM) hatasıyla çöker. Karma hassasiyet eğitimi gibi teknikler bellek kullanımını azaltmak için sıklıkla kullanılır ve aynı donanımda daha büyük batch boyutlarına olanak tanır.
İlişkili Kavramları Ayırt Etme#
Eğitimi etkili şekilde yapılandırmak için batch boyutunu eğitim döngüsündeki diğer zamansal terimlerden ayırt etmek önemlidir.
- Batch Boyutu ve Epoch: Epoch, tüm eğitim veri kümesinden bir kez eksiksiz geçişi ifade eder. Batch boyutu, verilerin bu epoch içinde kaç parçaya bölüneceğini belirler. Örneğin 1.000 görüntünüz ve 100 batch boyutunuz varsa bir epoch'u tamamlamak 10 iterasyon sürer.
- Batch Boyutu ve İterasyon: İterasyon (veya adım), bir batch'in işlenmesi ve ağırlıkların güncellenmesi işlemidir. Eğitimdeki toplam iterasyon sayısı, epoch başına batch sayısının toplam epoch sayısıyla çarpımına eşittir.
- Batch Boyutu ve Batch Normalization: Aynı adı paylaşsalar da Batch Normalization, katman girişlerini mevcut batch'in ortalamasına ve varyansına göre normalize eden belirli bir katman türüdür. Bu teknik batch boyutuna büyük ölçüde bağlıdır; batch boyutu çok küçükse (ör. 2) istatistiksel tahminler güvenilmez hâle gelerek performansı düşürebilir.
Gerçek Dünya Uygulamaları#
Batch boyutunu ayarlamak, bilgisayarlı görü çözümlerini çeşitli sektörlerde kullanıma alırken rutin bir gerekliliktir.
-
Yüksek Ayrıntılı Tıbbi Görüntüleme: Sağlık hizmetlerinde yapay zeka alanında uygulayıcılar genellikle MRI veya CT taramaları gibi 3B hacimsel verilerle çalışır. Bu dosyalar son derece yoğun ve bellek açısından maliyetlidir. Tıbbi görüntü analizi veya karmaşık görüntü segmentasyonu gibi görevleri sistemi çökertmeden gerçekleştirmek için mühendisler batch boyutunu çoğu zaman çok küçük bir sayıya, hatta bazen 1'e düşürür. Buradaki öncelik ham eğitim hızından ziyade yüksek çözünürlüklü ayrıntıların işlenmesidir.
-
Endüstriyel Kalite Kontrolü: Buna karşılık üretimde yapay zeka alanında hız çok önemlidir. Ürünleri konveyör bantlarında denetleyen otomatik sistemlerin saatte binlerce görüntüyü işlemesi gerekir. Çıkarım sırasında mühendisler, uç yapay zeka cihazlarının kullanımını en üst düzeye çıkarmak ve gerçek zamanlı kusur tespiti için yüksek aktarım hızı sağlamak amacıyla gelen kamera akışlarını daha büyük batch'lerde birleştirebilir.
Python'da Batch Boyutunu Yapılandırma#
Ultralytics Python paketi kullanılırken batch boyutunu ayarlamak kolaydır. Sabit bir tamsayı belirtebilir veya donanımının güvenli şekilde işleyebileceği maksimum batch boyutunu otomatik olarak hesaplamak için AutoBatch özelliğini kullanan dinamik batch=-1 ayarını kullanabilirsin.
Aşağıdaki örnek, hız ve doğruluk açısından en yeni standart olan belirli bir batch ayarını kullanarak bir YOLO26 modeli eğitmeyi gösterir.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Büyük ölçekli deneyleri yönetmek ve farklı batch boyutlarının eğitim metriklerini nasıl etkilediğini görselleştirmek için Ultralytics Platform gibi araçlar, çalıştırmaları günlüğe kaydetmek ve karşılaştırmak üzere kapsamlı bir ortam sağlar. Batch boyutunun uygun hiperparametre ayarı, modelinden en iyi performansı elde etmenin genellikle son adımıdır.









