Training

AdamW

Стандартный оптимизатор для обучения трансформеров: Adam с корректным L2-регуляризатором.

Что такое AdamW

AdamW (Adam with Weight Decay) — оптимизатор, де-факто стандарт для обучения и fine-tuning трансформеров. Предложен Loshchilov & Hutter (2017) как исправление оригинального Adam: L2-регуляризация (weight decay) применяется к весам напрямую, а не к градиентам — это критично для правильной регуляризации.

Adam адаптирует learning rate для каждого параметра, отслеживая первый момент (среднее) и второй момент (дисперсию) градиентов. AdamW дополнительно добавляет weight decay после step.

Ключевые гиперпараметры

Параметр Описание Типичное значение
lr Base learning rate 1e-4 – 5e-5
betas Факторы сглаживания моментов (0.9, 0.95) или (0.9, 0.999)
eps Числовая стабильность 1e-8
weight_decay Коэффициент L2-регуляризации 0.01 — 0.1
from torch.optim import AdamW

optimizer = AdamW(
    model.parameters(),
    lr=2e-4,
    betas=(0.9, 0.95),
    eps=1e-8,
    weight_decay=0.01
)

Состояние оптимизатора и VRAM

AdamW хранит для каждого параметра 2 состояния — первый и второй момент (m, v). Суммарный объём: 3× объём весов (веса + m + v). Для 7B в FP32: 7B × 4 × 3 = ~84 ГБ только на оптимизатор. Именно поэтому ZeRO и FSDP шардируют состояния оптимизатора.

Оптимизаторы с меньшим footprint: Adafactor (~1× по весам), 8-bit Adam от bitsandbytes (~2× в INT8).

# 8-bit AdamW через bitsandbytes (экономит VRAM)
import bitsandbytes as bnb
optimizer = bnb.optim.AdamW8bit(model.parameters(), lr=2e-4, weight_decay=0.01)

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

  • learning rate — ключевой гиперпараметр AdamW
  • weight decay — регуляризация в AdamW
  • ZeRO — шардирование состояния AdamW между GPU
  • VRAM — ресурс, потребляемый AdamW

Готовы запустить GPU-задачу?

Запустить GPU-сервер