linear warmup
En træningsteknik hvor learning rate lineært øges fra en startværdi til en mållæringrate over et bestemt antal trin.
Kort fortalt
En metode til gradvist at øge læringshastigheden i begyndelsen af træningen for at undgå ustabilitet.
- Kategori
- træning
- Niveau
- øvet
- Udtale
- /ˈlɪniər ˈwɔːrmʌp/
Betydninger
1- 1
En fase i træningsprocessen hvor learning rate stiger lineært fra en lav startværdi til en forudbestemt maksimumværdi over et antal trin, for at forhindre ustabile gradienter i starten.
- Vi anvendte en linear warmup i de første 4000 trin, efterfulgt af cosine decay. — Transformer-træningsopsætning
- Uden linear warmup oplevede modellen divergens i de første iterationer. — Praktisk erfaring
Hvornår bruges det
Bruges typisk i kombination med andre schedulere som cosine decay eller step decay. Anvendes ofte ved træning af store sprogmodeller eller transformer-baserede netværk for at stabilisere den indledende træning.
Formel
lr(t) = lr_base * (t / warmup_steps), for t < warmup_steps; transition to target schedule afterwards.Kodeeksempel
class LinearWarmupScheduler:
def __init__(self, optimizer, warmup_steps, target_lr):
self.optimizer = optimizer
self.warmup_steps = warmup_steps
self.target_lr = target_lr
self.step_num = 0
def step(self):
self.step_num += 1
lr = self.target_lr * min(1.0, self.step_num / self.warmup_steps)
for param_group in self.optimizer.param_groups:
param_group['lr'] = lrEn simpel implementering af en linear warmup scheduler i Python.
Oprindelse
Fra engelsk 'linear' (lineær) og 'warmup' (opvarmning), beskriver en lineær stigning i learning rate som en opvarmningsfase.