Обучение моделей
64 просмотра
Batch Size
Batch Size / Micro Batch / Global Batch
Batch Size — количество примеров, обрабатываемых за одну итерацию обучения. В распределённом обучении: micro batch (на GPU), gradient accumulation steps и global batch (суммарный).
Три уровня batch size
Global Batch Size = micro_batch × grad_accum_steps × num_gpus
Пример:
micro_batch = 4 (помещается в VRAM одного GPU)
grad_accum_steps = 8 (8 forward/backward до optimizer.step)
num_gpus = 32
Global Batch Size = 4 × 8 × 32 = 1024
| Уровень | Определение | Ограничение |
|---|---|---|
| Micro Batch | На 1 GPU за 1 forward pass | VRAM |
| Gradient Accumulation | Micro-batch до обновления весов | Скорость сходимости |
| Global Batch | Суммарный за 1 optimizer step | Качество обучения |
Влияние на обучение
Маленький global batch (~32-256):
- Лучше обобщение (generalization)
- Шумные градиенты → регуляризация
- Медленно на кластере
Большой global batch (~1K-10K):
- Быстрее (больше GPU-утилизация)
- Стабильнее градиенты
- Может ухудшить generalization
- Требует warm-up learning rate
Gradient Accumulation
accumulation_steps = 8
optimizer.zero_grad()
for i, batch in enumerate(dataloader):
loss = model(batch) / accumulation_steps
loss.backward()
if (i + 1) % accumulation_steps == 0:
optimizer.step()
optimizer.zero_grad()
Для LLM pretraining
| Фаза | Типичный Global Batch |
|---|---|
| Pretraining | 1M-4M токенов |
| SFT | 128-512 примеров |
| DPO/RLHF | 64-256 пар |
| LoRA | 32-128 примеров |
Связанные термины
Требует