Оптимизация обучения

Batch size

Размер батча

актуальноТекущий рабочий стандарт

Число объектов на одно обновление весов: влияет на скорость, память и качество обобщения.

Ключевые тезисы

  • Большие батчи ускоряют эпоху, но требуют пропорционально большего lr.
  • Малые батчи дают регуляризующий шум.
  • Gradient accumulation имитирует большой батч на ограниченной памяти.
Тема также относится к главам:Глубокое обучениеОбучение

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Что меняется с размером батча

Скорость, память, шум и обобщение.

  • Память растёт линейно: активации всех слоёв хранятся для каждого объекта батча.
  • Скорость эпохи растёт: GPU лучше загружается большими матрицами.
  • Число обновлений падает — приходится увеличивать lr.
  • Обобщение может ухудшиться из-за потери полезного шума.
# Эффективный батч 512 при памяти на 64
accum = 8
for i, batch in enumerate(loader):
    loss = model(batch) / accum
    loss.backward()
    if (i + 1) % accum == 0:
        optimizer.step()
        optimizer.zero_grad()
Gradient accumulation: имитируем большой батч без дополнительной памяти
2

Правила масштабирования

Как менять learning rate вместе с батчем.

  • Линейное правило: увеличили батч в раз — увеличьте lr в раз (работает до умеренных размеров).
  • Корневое правило: — часто устойчивее для адаптивных оптимизаторов.
  • При больших батчах обязателен warmup, иначе первые шаги разрушают инициализацию.
  • После некоторого размера батча прирост скорости прекращается — это точка «критического батча».

Связанные темы

Оптимизаторы

Optimization85%

Оптимизация · Основы

Поиск параметров, минимизирующих функцию потерь. Свойства задачи — выпуклость, гладкость, обусловленность — определяют, насколько это просто.

Optimizers85%

Оптимизаторы · Глубокое обучение

Правила обновления весов по градиенту: от чистого SGD до адаптивных методов.

Gradient Descent85%

Градиентный спуск · Оптимизация обучения

Итеративный шаг против градиента функции потерь — базовый алгоритм обучения.

SGD85%

Стохастический градиентный спуск · Оптимизация обучения

Градиент оценивается по мини-батчу: быстрее, шумнее и, как оказалось, полезнее для обобщения.

Momentum85%

Момент · Оптимизация обучения

Накопление экспоненциального среднего градиентов — движение по инерции сквозь колебания.

Adam85%

Adam · Оптимизация обучения

Адаптивный метод: хранит средние градиента и его квадрата, подбирая шаг для каждого параметра.

AdamW85%

AdamW · Оптимизация обучения

Adam с корректно отделённым weight decay — регуляризация применяется к весам, а не к градиенту.

RMSProp85%

RMSProp · Оптимизация обучения

Нормирует шаг на скользящее среднее квадратов градиента, выравнивая масштаб обновлений.

Learning Rate Scheduling85%

Расписание скорости обучения · Оптимизация обучения

Изменение шага по ходу обучения: большой в начале для исследования, малый в конце для точной настройки.