Training
warmup
Начальная фаза обучения с постепенным ростом learning rate от нуля до целевого значения.
Что такое warmup
Warmup — фаза в начале обучения, в которой learning rate постепенно нарастает от нуля (или очень малого значения) до целевого. Обычно линейный рост за несколько сотен–тысяч шагов.
Зачем нужен warmup? В самом начале обучения:
- Веса модели (при fine-tuning) уже инициализированы и значимы
- Состояния оптимизатора Adam (m, v) ещё не набраны — первые оценки моментов ненадёжны
- Большой lr в этот момент → нестабильность, крупные некорректные шаги
Медленный старт даёт оптимизатору «разогреться» и накопить надёжные оценки моментов.
Практические значения
| Сценарий | warmup_steps | warmup_ratio |
|---|---|---|
| Fine-tuning 7B (1K шагов) | 50–100 | 0.05 |
| Fine-tuning 7B (5K шагов) | 100–200 | 0.02–0.05 |
| Pretraining (100K шагов) | 1000–2000 | 0.01 |
from transformers import TrainingArguments
# Через число шагов
args = TrainingArguments(warmup_steps=100, ...)
# Через долю от общего числа шагов
args = TrainingArguments(warmup_ratio=0.03, ...) # 3% = стандарт
Warmup + cosine decay
Стандартный combo: линейный warmup → cosine decay:
lr: 0 → peak_lr (warmup_steps) → 0 (total_steps, cosine)
Это самое популярное расписание для LLM: плавный старт, агрессивная середина, точная настройка к концу.
Связанные термины
- lr scheduler — компонент, реализующий warmup
- learning rate — что нарастает при warmup
- AdamW — оптимизатор, для которого warmup особенно важен
Готовы запустить GPU-задачу?
Запустить GPU-сервер