Training
batch size
Число примеров, обрабатываемых за один шаг оптимизатора; влияет на стабильность и скорость обучения.
Что такое batch size
Batch size — количество обучающих примеров, используемых для вычисления одного обновления весов. Большой batch size даёт более точную оценку градиента (менее шумную), но требует больше VRAM и может привести к хуждшей генерализации (sharp minima).
Effective batch size
Из-за ограничений VRAM нельзя всегда использовать желаемый batch size напрямую. Effective batch size (реальный) = per_device_batch_size × gradient_accumulation_steps × num_GPUs.
# Пример: effective batch size = 2 × 8 × 4 = 64
from transformers import TrainingArguments
args = TrainingArguments(
per_device_train_batch_size=2, # умещается в VRAM
gradient_accumulation_steps=8, # накопить 8 шагов
# Запускается на 4 GPU → effective BS = 64
)
Влияние batch size на обучение
- Слишком маленький (1–4): шумные градиенты, нестабильное обучение, медленная сходимость
- Оптимальный (32–256 для LLM): стабильное обучение, быстрая сходимость
- Слишком большой (1024+): без соответствующего scaling lr → деградация качества; требует Linear Scaling Rule:
lr = base_lr × batch_size/256
Практические рекомендации для LLM
- Fine-tuning LLM: effective batch 16–64 токенов/шаг или 2–8 сэмплов/шаг
- Pretraining: effective batch 1M–4M токенов/шаг
- При LoRA/QLoRA: per_device_batch_size=1–4 + gradient_accumulation=8–16
Связанные термины
- gradient accumulation — имитация большого batch size
- microbatch — единица при gradient accumulation
- VRAM — ограничивает per_device_batch_size
- learning rate — нужно масштабировать вместе с batch size
Готовы запустить GPU-задачу?
Запустить GPU-сервер