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-сервер