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