Bosh sahifa Wiki Batch

Batch

Batch — machine-learning model bir forward va backward jarayonida birgalikda qayta ishlaydigan sample’lar guruhi. Batch hisoblashni GPU va boshqa acceleratorlarda parallel bajarishga yordam beradi. Batch size bir qadamda nechta sample ishlatilishini bildiradi.

Batch tushunchasi training, inference, data pipeline va distributed processingda uchraydi.

Batch size

Misol:

batch size = 32

har iterationda 32 sample modelga berilishini anglatadi.

Tensor shape ko‘pincha birinchi dimensionda batchni saqlaydi:

[batch, feature]
[batch, channel, height, width]

Framework conventioni farq qilishi mumkin.

Mini-batch training

Butun dataset gradientini bir marta hisoblash qimmat.

Bitta sample gradienti esa juda shovqinli.

Mini-batch ikki yondashuv orasida muvozanat beradi.

Zamonaviy neural networklar ko‘pincha mini-batch bilan train qilinadi.

Full batch

Barcha training dataset bitta qadamda ishlatiladi.

Gradient aniqroq, ammo memory va compute talabi katta.

Katta datasetda amaliy emas.

Kichik klassik optimization vazifalarida ishlatilishi mumkin.

Stochastic training

Batch size 1 bo‘lsa stochastic gradient descentning sof ko‘rinishiga yaqin.

Har sampledan keyin update qilinadi.

Gradient shovqinli, lekin memory kam.

GPU parallel imkoniyatidan kam foydalanadi.

Katta batch

Katta batch:

  • yuqori hardware utilization;
  • barqaror gradient;
  • yuqori throughput;
  • kam optimizer step

berishi mumkin.

Biroq memory oshadi va generalization o‘zgarishi ehtimoli bor.

Learning rate batch size bilan moslashtiriladi.

Kichik batch

Kichik batch:

  • kam memory;
  • ko‘proq update;
  • gradient noise;
  • ba’zan yaxshi generalization

beradi.

Batch normalization statistikasi kichik batchda beqaror bo‘lishi mumkin.

Training throughput pastroq.

Gradient accumulation

Device memory katta batchni sig‘dirmasa bir nechta micro-batch gradienti yig‘iladi.

Masalan:

micro batch = 8
accumulation = 4
effective batch = 32

Optimizer har to‘rt micro-batchdan keyin step qiladi.

Loss scaling to‘g‘ri boshqariladi.

Effective batch

Distributed trainingda effective batch:

per_device_batch
× device_count
× accumulation_steps

ga teng bo‘lishi mumkin.

Data parallel workerlar gradientlarni birlashtiradi.

World size o‘zgarsa effective batch va schedule ham o‘zgaradi.

Padding

Sequence batchda input uzunliklari farqli.

Qisqa sequence eng uzuniga qadar padding qilinadi.

Juda uzun va qisqa sample’ni bir batchga qo‘shish hisoblashni isrof qiladi.

Length bucketing o‘xshash uzunliklarni guruhlaydi.

Mask

Padding tokenlari attention va lossdan mask qilinadi.

Aks holda model paddingni real data deb o‘rganadi.

Mask shape batch va sequence dimensionlariga mos bo‘ladi.

Dynamic batching

Inference server yaqin vaqtda kelgan requestlarni bitta batchga birlashtiradi.

Maksimal kutish latency limitini belgilaydi.

Traffic yuqori bo‘lsa throughput oshadi.

Past trafficda request uzoq kutilmasligi kerak.

Static batching

Batch hajmi oldindan fixed.

Compiled accelerator va embedded deploymentda shape barqaror bo‘ladi.

Kam request bo‘lsa bo‘sh slot padding bilan to‘ldirilishi mumkin.

Resource utilization trafficga bog‘liq.

Batch normalization

BatchNorm trainingda batch bo‘yicha mean va variance hisoblaydi.

Batch composition outputga ta’sir qiladi.

Inference’da running statistikalar ishlatiladi.

Kichik batch uchun GroupNorm yoki LayerNorm alternativ bo‘lishi mumkin.

Hard negative batch

Contrastive learningda boshqa batch sample’lari negative sifatida ishlatilishi mumkin.

Katta batch ko‘proq negative beradi.

Ammo false negative — aslida o‘xshash sample’ni uzoqlashtirish — muammo yaratadi.

Data loader

Batch data loader tomonidan tayyorlanadi.

U:

  • sample o‘qish;
  • transform;
  • collate;
  • padding;
  • transfer

bajaradi.

Data loader sekin bo‘lsa GPU batch kutadi.

Prefetch va parallel worker ishlatiladi.

Collate function

Turli sample’lar bitta batch tensorga qanday birlashtirilishini belgilaydi.

Object detectionda har image boshqa box soniga ega.

Custom collate list yoki padded structure qaytarishi mumkin.

Noto‘g‘ri collate label va inputni aralashtiradi.

Last batch

Dataset soni batch size’ga bo‘linmasa oxirgi batch kichik bo‘ladi.

drop_last uni tashlab yuborishi mumkin.

BatchNorm yoki distributed workerlar uchun bir xil shape kerak bo‘lsa ishlatiladi.

Har epoch ayrim sample doim tushib qolmasligi uchun shuffle muhim.

Batch inference natijasi

Batch output tartibi input tartibiga mos map qilinadi.

Request IDlar bilan correlation saqlanadi.

Bir sample xato qilsa butun batchni buzmaslik uchun validation oldindan bajariladi.

Variable output alohida post-processing qilinadi.

Batch composition

Batch ichidagi samplelar bir-biriga juda o‘xshash bo‘lsa gradient ma’lum domain tomon og‘ishi mumkin. Stratified sampler class yoki source balansini saqlaydi. Contrastive taskda positive pairlar bir batchda, false negative’lar esa nazorat bilan joylashtiriladi.

Memory sarfi

Batch memory faqat inputdan iborat emas. Trainingda activation, gradient, optimizer va temporary workspace ham joy egallaydi. Sequence uzunligi ikki baravar oshsa attention memory keskin ko‘payishi mumkin. Shuning uchun maksimal batch faqat sample soni bilan belgilanmaydi.

Batch size schedule

Training boshida kichik batch, keyin katta batchga o‘tish mumkin. Yoki resolution va sequence uzunligi oshganda batch kamaytiriladi. Effective batch o‘zgarsa learning rate va optimizer dynamics qayta ko‘rib chiqiladi.

Inference isolation

Dynamic batchdagi bir request juda uzun bo‘lsa qolgan qisqa requestlar kechikishi mumkin. Scheduler uzunlik va priority bo‘yicha alohida queue ishlatadi.

Bog‘liq tushunchalar

Batch, Batch size, Mini-batch, Gradient accumulation, Effective batch, Dynamic batching, Padding, Data loader, Batch normalization, Training step