Descriere & Utilizare
Odată ce loss.backward() a calculat derivatele fiecărui parametru, intervine Optimizatorul (Optimizer): algoritmul care decide cu cât și în ce direcție să ajusteze milioanele de greutăți pentru ca la următorul pas pierderea să fie mai mică.
În timp ce SGD (Stochastic Gradient Descent) cu momentum este încă utilizat în Computer Vision clasic, torch.optim.AdamW este campionul absolut în procesarea limbajului natural și modelele Transformer. AdamW adaptează rata de învățare independent pentru fiecare parametru și decuplează corect regularizarea de tip Weight Decay (care penalizează greutățile exagerat de mari pentru a preveni supra-învățarea).
La fiecare pas al buclei de antrenare, este obligatoriu să respecți succesiunea: zero_grad() -> backward() -> step().
Cum să o reții ușor
💡 Dacă Autograd este busola care îți spune în ce direcție este panta muntelui, optimizatorul este ghidul montan cu experiență care decide cât de mare să fie pasul pe care îl faci (learning rate) și cum să prinzi inerție pe coborâre.
Opțiuni și parametri tehnici
params: lista parametrilor optimizați (model.parameters()).lr (Learning Rate): mărimea pasului de actualizare (valori tipice:1e-3pentru rețele mici,1e-4până la2e-5pentru fine-tuning LLM).weight_decay: coeficientul de penalizare L2 a mărimii greutăților (valoare standard în AdamW:0.01).set_to_none=True: înoptimizer.zero_grad(set_to_none=True)eliberează memoria gradientului în loc să scrie zerouri, economisind timp de CPU/GPU!
Exemple practice și cazuri de utilizare
- Trunchierea gradienților (Gradient Clipping) pentru a preveni exploziile numerice: adaugă
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)înainte deoptimizer.step(). - Rată de învățare diferită pe straturi: pasează grupuri de parametri
optim.AdamW([{"params": model.baza.parameters(), "lr": 1e-5}, {"params": model.cap.parameters(), "lr": 1e-3}]). - Optimizatorul clasic SGD cu momentum:
optim.SGD(model.parameters(), lr=0.01, momentum=0.9).
Sfaturi de configurare & capcane
Folosește întotdeauna optimizer.zero_grad(set_to_none=True) — setarea gradienților la None în loc de tensor plin de zerouri oferă o creștere vizibilă de viteză și reduce fragmentarea VRAM.
Comenzi și ghiduri înrudite
torch-autograd-backward: Resursă asociată din acest modul.torch-training-loop: Resursă asociată din acest modul.torch-learning-rate-scheduler: Resursă asociată din acest modul.