Batch Size (Yığın (Küme) Boyutu)

Batch size, sinir ağı eğitiminde her gradyan güncellemesinde birlikte işlenen eğitim örneği sayısını belirleyen hiperparametredir.

Batch size (yığın boyutu), bir yapay sinir ağının eğitiminde her gradyan güncellemesinde aynı anda işlenen eğitim örneği sayısını belirleyen hiperparametredir. Model tüm veri setini tek seferde hafızaya almak yerine veriyi küçük gruplara böler; örneğin batch size 32 ise ağırlıklar her 32 örnekte bir güncellenir. 10.000 örneklik bir veri setinde bu, epoch başına yaklaşık 313 güncelleme adımı anlamına gelir. Bu değerin önemi iki noktada toplanır: donanım ve öğrenme dinamiği. Donanım tarafında batch, model ağırlıkları ve ara aktivasyonlarla birlikte GPU belleğine (VRAM) sığmak zorundadır; değer büyüdükçe bellek tüketimi artar ve sınır aşıldığında Out of Memory hatası alınır. Öğrenme tarafında ise küçük batch'ler gürültülü ama düzenleyici etki yapan gradyan tahminleri üretir ve genellemeyi iyileştirebilirken, büyük batch'ler daha kararlı gradyanlar ve daha yüksek GPU verimliliği sunar; ancak keskin minimumlara takılıp test performansını düşürme riski taşır. Pratikte üç yaklaşım ayırt edilir: batch size 1 ile çalışan stochastic gradient descent, tüm veriyi tek seferde işleyen full batch ve ikisinin ortasında duran mini-batch. Modern derin öğrenmede standart, 32-256 aralığındaki mini-batch değerleridir. Batch size tek başına değil, learning rate ile birlikte ayarlanır: batch büyütüldüğünde öğrenme hızı da genellikle orantılı artırılır (linear scaling rule). VRAM yetmediğinde gradient accumulation ile büyük sanal batch simüle edilebilir. Doğru batch size veri setine, model mimarisine ve eldeki donanıma göre deneysel olarak seçilir; 32 veya 64 ile başlayıp validation loss izleyerek ayarlamak en yaygın yöntemdir.

restaurant_menu Lokma Büyüklüğü Metaforu

10.000 fotoğraflı bir veri setiniz var. Bilgisayarınızın ekran kartı (VRAM) 10.000 resmi aynı anda hafızasına sığdıramaz; denerseniz Out of Memory hatası alırsınız. Bu yüzden 'Batch Size = 32' yaparsınız. Model fotoğrafları 32'li lokmalar halinde alır, okur, kendi hatasını hesaplar ve ağırlıklarını günceller; sonraki 32'ye geçer. Lokma büyüklüğü hem sistemin hızını hem de öğrenme karakterini değiştirir: küçük lokmalar sık ama gürültülü güncellemeler, büyük lokmalar seyrek ama kararlı güncellemeler üretir. Bu tek sayı, aynı modelin aynı veriyle bambaşka eğitim eğrileri çizmesine yol açabilir.

Batch Türleri

looks_one Stochastic Gradient Descent (SGD)

Batch Size = 1. Verileri tek tek okur, her örnekten sonra kendini günceller. Çok gürültülü ve yavaştır; buna karşılık gürültü, sığ lokal minimumlardan kaçmaya yardımcı olabilir. Modern pratikte saf haliyle nadiren kullanılır.

dns Mini-Batch

Batch Size = 32, 64, 128 gibi ara değerler. Gradyan tahmini yeterince kararlı, bellek kullanımı yönetilebilir ve GPU paralelliği iyi değerlendirilir. Modern derin öğrenmenin fiili standardıdır; 'batch size' dendiğinde çoğunlukla mini-batch boyutu kastedilir.

storage Full Batch

Tüm veri setini tek seferde işleyip tek güncelleme yapmak. Gradyan matematiksel olarak en kesin haliyle hesaplanır ama modern büyük veri setlerinde VRAM'e sığmaz; ayrıca güncelleme sayısı çok azaldığı için öğrenme verimsizleşir. Ancak çok küçük veri setlerinde pratiktir.

Batch Büyüklüğü Eğitimi Nasıl Etkiler?

Batch büyüklüğü, derin öğrenme eğitiminde gradyan gürültüsü ile hesaplama verimliliği arasındaki en kritik dengelerden birini belirler. Küçük batch (1-32): her güncelleme daha gürültülüdür, kayıp fonksiyonu sık dalgalanır. Bu gürültü paradoksal biçimde genelleme kapasitesini artırabilir — model düz minimum (flat minima) bölgelere yönelir ve yeni verilere daha iyi uyum gösterir. Büyük batch (256-8192): gradyan hesabı daha kesin ve kararlıdır, GPU paralelizasyonu daha verimli kullanılır; ancak keskin minimum (sharp minima) bölgelerine sıkışma riski artar ve test seti genellemesi zayıflayabilir. Bu nedenle büyük batch eğitiminde learning rate warmup ve linear scaling rule (batch büyüdükçe öğrenme hızını orantılı artırma) gibi teknikler uygulanır. Ayrıca batch size, batch normalization katmanlarının istatistiklerini de etkiler: çok küçük batch'lerde bu istatistikler güvenilmez hale gelir ve group normalization gibi alternatifler tercih edilir.

Batch Büyüklüğü Seçiminde Pratik Kurallar

  • check_circle GPU Belleği (VRAM) Kısıtı: Batch büyüklüğü öncelikle donanım kapasitesiyle sınırlıdır. Tüm batch, model ağırlıkları ve ara aktivasyonlar aynı anda VRAM'de bulunmalıdır. VRAM yetersizse gradient accumulation ile büyük sanal batch simüle edilebilir: N adım boyunca gradyanlar biriktirilir, sonra tek güncelleme yapılır. Mixed precision (fp16/bf16) ve gradient checkpointing de bellek ihtiyacını ciddi ölçüde azaltır.
  • check_circle Başlangıç Noktası: 32-128: Çoğu görüntü sınıflandırma ve metin görevi için batch size 32-128 arası iyi bir başlangıç noktasıdır. 2'nin kuvvetleri (32, 64, 128) GPU bellek hizalaması açısından gelenekselleşmiş tercihtir. Büyük dil modeli (LLM) ön eğitiminde global batch boyutları milyonlarca token'a ulaşabilir; bu durumda gradient accumulation ve data parallel dağıtım zorunlu hale gelir.
  • check_circle Learning Rate ile Birlikte Ayarla: Batch büyüklüğü artırıldığında öğrenme hızı (learning rate) genellikle orantılı artırılmalıdır (linear scaling rule). Warmup aşaması büyük batch eğitiminde kararlılık kazandırır; batch boyutu 2x artınca learning rate'i 2x artırmak yaygın bir başlangıç stratejisidir. Bu iki hiperparametreyi birbirinden bağımsız taramak yanıltıcı sonuçlar verebilir.
  • check_circle Deneysel Tarama ve Validation İzleme: Optimal değer veri setine, modele ve donanıma göre değişir. 8'den başlayıp iki katına çıkararak (8, 16, 32, 64, 128) kısa eğitimler koşmak ve her seferinde validation loss ile epoch süresini not etmek en güvenilir yöntemdir. Amaç en büyük batch değil, birim zamanda en iyi doğrulama performansını veren ayardır.

Batch Size Seçiminin Eğitime Etkisi

  • check_circle Küçük Batch (8-64): Düzenleyici Etki: Her güncelleme gürültülü gradyan tahminlerine dayanır; bu gürültü istemeden bir düzenleyici (regularizer) görevi görür ve genelleme kapasitesini artırabilir. Bellek kullanımı düşüktür, küçük GPU'larda ve hatta CPU'da çalışır. Daha sık ağırlık güncellemesi bazen daha hızlı ilk öğrenme getirir. Dezavantaj: toplam eğitim süresi uzar ve GPU verimliliği düşer.
  • check_circle Büyük Batch (512-4096): Hız ve Kararlılık: Donanım paralelleştirmesinden maksimum fayda alınır; gradyan tahminleri kararlıdır ve loss eğrisi pürüzsüz iner. Dezavantaj: keskin minimum sorununa düşme riski vardır; model genel geçer bir minimum yerine lokal keskin minimuma yakınsayabilir, bu da test performansını düşürür. Learning rate doğrusal veya karekök kuralıyla ölçeklendirilmeli, warmup ile eğitim kararlı hale getirilmelidir.
  • check_circle Gradient Accumulation: Sanal Büyük Batch: GPU belleği yetersizse birden fazla küçük batch'in gradyanları toplanır, ardından tek güncelleme yapılır. Örnek: 4 adım × 16 batch = sanal 64 batch etkisi. Büyük dil modeli fine-tuning'inde yaygın kullanılan tekniktir; tek dezavantajı, aynı sanal batch için daha fazla ileri-geri geçiş gerektiği için adım başına sürenin uzamasıdır.
  • check_circle Eğitim Süresi ve Maliyet Dengesi: Aynı epoch sayısında büyük batch daha az güncelleme adımı demektir; wall-clock süre kısalır ama her adımın bilgi içeriği görece azalır. Bu yüzden büyük batch ile eğitilen modeller bazen aynı doğruluğa ulaşmak için daha fazla epoch ister. Toplam maliyet hesaplanırken adım sayısı, adım süresi ve hedef doğruluk birlikte değerlendirilmelidir.

Batch Size ve Learning Rate İlişkisi

Batch size ile learning rate birlikte ayarlanmalıdır. Linear scaling rule: batch size 2 kat artırılırsa learning rate de 2 kat artırılabilir; bazı optimizasyon senaryolarında karekök ölçekleme daha kararlı sonuç verir. Büyük learning rate ve büyük batch kombinasyonu kararlı eğitim için warmup dönemi gerektirir: ilk adımlarda düşük LR ile başlanır, kademeli olarak hedef değere çıkılır. LR finder aracıyla küçük bir batch üzerinde geniş bir LR aralığı taranır ve loss'un en hızlı düştüğü noktadan 1-2 büyüklük düşük bir değer seçilir. Literatürde yerleşmiş pratik başlangıç noktaları: ResNet eğitimi için 256 batch ve 0.1 SGD learning rate; BERT fine-tuning için 16-32 batch ve 2e-5 civarı Adam learning rate. Bu değerler reçete değil başlangıç noktasıdır; kendi veri setinizde kısa denemelerle doğrulanmalıdır.

Sıkça Sorulan Sorular (FAQ)

  • check_circle Batch size nedir?: Batch size (yığın boyutu), derin öğrenme eğitiminde her bir gradyan güncellemesinde kullanılan örnek sayısıdır. Örneğin batch_size=64 ise model 64 eğitim örneği üzerinden gradyanı hesaplar, parametreleri günceller ve sonraki 64 örneğe geçer. Bir epoch'taki toplam güncelleme sayısı veri_sayısı / batch_size formülüyle bulunur.
  • check_circle Batch size ne işe yarar?: Eğitimin bellek tüketimini, hızını ve öğrenme karakterini kontrol eder. Doğru seçilen batch size, GPU'yu verimli kullanırken modelin yeni verilere iyi genellemesini korur. Yanlış seçim ya bellek hatasına ya da zayıf test performansına yol açabilir.
  • check_circle Batch size ve epoch arasındaki fark nedir?: Batch size her güncelleme adımındaki örnek sayısıdır; epoch ise tüm eğitim verisinin bir kez baştan sona işlendiği tam tura denir. 1000 örnekli bir veri setinde batch_size=100 ile 1 epoch, 10 güncelleme adımına karşılık gelir.
  • check_circle Büyük batch mi küçük batch mi daha iyi?: İkisinin de avantajı vardır. Küçük batch daha iyi genelleme (flat minima etkisi) ve daha az bellek ister; büyük batch daha hızlı wall-clock eğitim ve yüksek GPU verimliliği getirir. Çoğu pratikte 32-256 arası dengeli bir seçimdir; büyük batch kullanılacaksa learning rate warmup ve linear scaling rule uygulanmalıdır.
  • check_circle Gradient accumulation nedir, batch size ile ilişkisi nedir?: Gradient accumulation (gradyan biriktirme), sınırlı VRAM ile büyük sanal batch simüle etme tekniğidir. N adım boyunca parametre güncellenmez, sadece gradyanlar biriktirilir; N adım sonunda toplu gradyanla tek güncelleme yapılır. Böylece fiziksel batch_size=16 ile mantıksal batch_size=128 elde edilebilir.
  • check_circle Batch size GPU belleğini nasıl etkiler?: Batch size arttıkça her adımda daha fazla aktivasyon bellekte tutulur ve VRAM tüketimi yaklaşık orantılı büyür. OOM (Out of Memory) hatası alındığında batch size yarıya indirilir veya gradient accumulation kullanılır. Mixed precision (fp16/bf16) ve gradient checkpointing bellek ihtiyacını önemli ölçüde azaltır.