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. 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'] = lr

En 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.

Kilder

1