Gradyan Kırpma (Gradient Clipping)
Araç kavramlarıGradyan Kırpma (Gradient Clipping) nedir?
Gradient clipping, derin sinir ağı eğitiminde karşılaşılan "patlayan gradyan" (exploding gradient) sorununu engelleyen bir tekniktir. Backpropagation sırasında gradyanlar katman katman çarpıldıkça bazen astronomik değerlere ulaşabilir; bu da optimizer'ın parametre güncellemelerini o kadar büyük yapmasına yol açar ki model bir anda tamamen çöker. Gradient clipping bu durumu engeller: gradyan normu belirlenen bir eşiği aştığında tüm gradyanlar orantılı biçimde küçültülür.
Nasıl çalışır?
İki yaygın yöntem vardır:
Norm clipping (en yaygın): Tüm parametrelerin gradyanlarının global L2 normu hesaplanır. Bu norm max_norm eşiğini aşıyorsa gradyanlar ölçeklenir:
if ||g|| > max_norm:
g ← g * (max_norm / ||g||)
PyTorch'ta torch.nn.utils.clip_grad_norm_(parameters, max_norm=1.0) şeklinde kullanılır.
Value clipping: Her gradyan değeri tek tek [-clip_value, +clip_value] aralığına sıkıştırılır. Norm clipping'e göre daha kaba bir yöntemdir ve modern uygulamalarda tercih edilmez.
LLM eğitiminde max_norm=1.0 yaygın bir başlangıç değeridir. Eğitim loglarında grad_norm metriğini takip etmek, modelin ne zaman klipleme yaptığını gösterir — sürekli klipleme oluyorsa learning rate çok yüksek olabilir.
Neden önemli?
Transformer'lar ve RNN'ler gibi çok katmanlı mimarilerde, özellikle uzun dizilerle çalışırken patlayan gradyan ciddi bir risktir. Gradient clipping olmadan:
- Loss aniden NaN'a döner
- Model ağırlıkları çöp değerlere ulaşır
- Eğitim kurtarılamaz biçimde bozulur
Modern LLM eğitim pipeline'larında gradient clipping neredeyse zorunlu bir bileşendir; Llama, GPT ve benzeri modellerin hepsinin eğitim kodunda vardır.
Kullanım alanları
- LLM ön eğitimi ve fine-tuning
- RNN / LSTM ile zaman serisi ve dil modelleme
- Reinforcement learning'de policy gradient yöntemleri
- Diffusion model eğitimi
- Uzun context uzunluklarıyla çalışan transformer eğitimi