Descriere & Utilizare
Păstrarea aceleiași rate de învățare (Learning Rate) de la începutul până la sfârșitul antrenării este ineficientă: la început ai nevoie de pași mari pentru a explora rapid peisajul de optimizare, dar pe măsură ce modelul se apropie de soluția optimă, pașii mari riscă să sară peste minimul global.
Pachetul torch.optim.lr_scheduler oferă algoritmi de adaptare automată a ratei de învățare:
Standardul de aur în LLM-uri și modele moderne este Cosine Annealing cu Warmup: rata crește liniar în primele câteva sute de pași (Warmup) pentru a evita șocarea greutăților inițiale, apoi coboară lin urmărind o curbă cosinusoidală până la o valoare minimă eta_min. Pentru rețele clasice, ReduceLROnPlateau reduce rata automat doar atunci când eroarea de validare stagnează.
Cum să o reții ușor
💡 Ca frânarea unei mașini la semafor: apeși pedala de accelerație când pleci de pe loc (warmup), mergi cu viteză constantă pe drum drept, iar pe măsură ce te apropii de linia de sosire începi să frânezi lin ca să oprești exact la milimetru.
Opțiuni și parametri tehnici
CosineAnnealingLR(optimizer, T_max, eta_min):T_maxeste numărul de pași până la atingerea minimului, iareta_mineste cea mai mică rată permisă.ReduceLROnPlateau(optimizer, mode="min", patience=3, factor=0.5): înjumătățește rata dacă pierderea nu scade timp de 3 epoci (atenție: se apelează cuscheduler.step(val_loss)!).OneCycleLR: accelerează spectaculos antrenarea pe parcursul unei singure runde complete.
Exemple practice și cazuri de utilizare
- Inspectarea ratei de învățare curente:
lr_curent = scheduler.get_last_lr()[0]. - Combinarea Warmup cu Cosine în PyTorch:
ChainedSchedulersauSequentialLR([warmup_scheduler, cosine_scheduler], milestones=[5]). - Salvarea stării scheduler-ului în checkpoint:
"scheduler": scheduler.state_dict().
Sfaturi de configurare & capcane
Atenție la plasarea apelului scheduler.step(): majoritatea scheduler-elor clasice (ex: StepLR, CosineAnnealingLR) se apelează o singură dată per epocă, dar scheduler-ele moderne de LLM (OneCycleLR, CosineAnnealingWarmRestarts) se apelează la fiecare pas de batch!
Comenzi și ghiduri înrudite
torch-optimizers-adamw: Resursă asociată din acest modul.torch-training-loop: Resursă asociată din acest modul.torch-save-load-state-dict: Resursă asociată din acest modul.