Model Pruning (Model Budama)

Model budama, eğitilmiş sinir ağlarındaki gereksiz ağırlıkları ve bağlantıları kaldırarak modeli küçülten ve hızlandıran bir model optimizasyon tekniğidir.

Model budama (model pruning), milyarlarca parametreye sahip büyük sinir ağlarında performansı en az etkileyen ağırlıkları veya yapısal bileşenleri belirleyip kaldıran bir model optimizasyon yöntemidir. Temel fikir basittir: iyi eğitilmiş bir ağda parametrelerin önemli bir bölümü tahmin kalitesine minimum katkı sağlar ve bu parametreler olmadan model neredeyse aynı doğrulukla çalışmaya devam edebilir. **Budama Türleri** Yapısal budama (structured pruning), nöron, filtre veya katman gibi tüm yapısal birimleri kaldırır. Bu yaklaşım, standart CPU/GPU donanımında doğrudan bellek ve hız kazanımı sağlar; karmaşık özel donanım gerekmez. Buna karşın yapısal olmayan budama (unstructured pruning), bireysel ağırlıkları sıfırlayarak seyrek (sparse) bir matris üretir. Sıkıştırma oranı çok yüksek olabilir ancak bu seyrekliği işlemek için özel seyrek matris donanımı ya da yazılım desteği gerekir. **Büyüklük Tabanlı Budama** En yaygın yöntem büyüklük tabanlı (magnitude-based) budamadır: mutlak değerleri eşik değerin altındaki ağırlıklar sıfırlanır. Uygulaması kolaydır ve pek çok durumda yeterli sonuç verir. Daha gelişmiş gradyan tabanlı yaklaşımlar ise ağırlığın kayıp fonksiyonuna katkısını (saliency) hesaplayarak gerçekten önemsiz olanları seçer. **Yinelemeli Budama ve Lottery Ticket Hipotezi** Tek adımda agresif budama doğruluğu düşürebilir. Bu nedenle pratikte "budama, ince ayar (fine-tune) ve tekrar budama" döngüsü tercih edilir. 2019'da Frankle ve Carlin tarafından öne sürülen Lottery Ticket Hipotezi, büyük sinir ağlarında küçük ama etkili alt ağlar (winning tickets) gizlendiğini; bu alt ağların sıfırdan aynı doğrulukla eğitilebildiğini ileri sürer. Bu hipotez, budamanın neden bu kadar iyi çalıştığını teorik olarak açıklar. **Pratik Kullanım Alanları** Model budama özellikle kenar cihazlarda (akıllı telefon, IoT sensörü, gömülü sistem) büyük modelleri çalıştırmak için kritik önem taşır. GPT, LLaMA gibi büyük dil modellerini mobil uygulamalarda kullanılabilir hale getiren yöntemlerin başında gelir. Niceleme (quantization) ve bilgi damıtma (knowledge distillation) ile birlikte kullanıldığında model boyutu ve çıkarım gecikme süresi dramatik biçimde azaltılabilir.

Model Budama Neden Gereklidir?

GPT-3 175 milyar, LLaMA 3 70 milyar parametre içerir; bu modelleri akıllı telefon veya kenar sunucuya sığdırmak ya da gerçek zamanlı çıkarım yapmak doğrudan imkânsızdır. İyi eğitilmiş bir sinir ağında parametrelerin önemli bir bölümünün tahmin kalitesine katkısı son derece düşüktür; bu parametreler silinse model neredeyse aynı doğrulukta çalışır. Model budama tam olarak bu fazlalığı tespit edip kaldırır: model boyutunu küçültür, bellek ayak izini düşürür, çıkarım hızını artırır ve kenar cihazlara (mobil, IoT) dağıtımı mümkün kılar. Eğitim sonrası ve eğitim sırasında budama olmak üzere iki ana zamanlama biçimi mevcuttur.

Budama Türleri

  • check_circle Yapısal Olmayan (Unstructured) Budama: Bireysel ağırlıkları sıfırlar; seyrek (sparse) matris üretir. Daha yüksek sıkıştırma oranı sunar ancak pratikte hız kazancı için özel seyrek donanım veya kütüphane gerektirir.
  • check_circle Yapısal (Structured) Budama: Nöron, filtre veya dikkat başlığı gibi tam yapısal bileşenleri kaldırır. Standart GPU/CPU'da anında hız ve bellek kazancı sağlar; üretime almak daha kolaydır.
  • check_circle Büyüklük Tabanlı Budama: Mutlak değeri küçük ağırlıklar (L1 normu düşük) önemsiz sayılır ve kaldırılır. Hızlı ve basit; çoğu pratik uygulamada başlangıç yöntemi olarak tercih edilir.
  • check_circle Hareket Tabanlı (Movement Pruning): Fine-tuning sırasında ağırlığın sıfırdan ne kadar uzaklaştığını izler; büyük pre-trained modellerden görev spesifik ince ayarda daha başarılı sonuçlar verir.

Budama Süreci Nasıl İşler?

  • check_circle 1. Ön Eğitim: Model tam kapasitesiyle eğitilir; parametre önemi ölçmek için gereken örüntüler bu aşamada ortaya çıkar.
  • check_circle 2. Önem Puanlaması: Her ağırlığın veya yapısal birimin kritikliği hesaplanır: gradyan büyüklüğü, Taylor açılımı veya sadece ağırlık büyüklüğü kullanılabilir.
  • check_circle 3. Budama: Belirlenen eşiğin altındaki ağırlıklar sıfırlanır ya da kaldırılır. Çoğunlukla kademeli budama (iterative pruning) tercih edilir: her turda küçük bir oran silinir.
  • check_circle 4. İnce Ayar (Fine-Tuning): Budanmış model kısa bir süre daha eğitilerek doğruluk kaybı telafi edilir. Bu adım genellikle tüm eğitim süresinin küçük bir bölümünü alır.

Budama ile Birleştirilen Teknikler

  • check_circle Kuantalama (Quantization): 32-bit kayan noktalı ağırlıkları 8-bit veya 4-bit tamsayıya indirir; budamayla birlikte kullanıldığında çok daha küçük modeller elde edilir.
  • check_circle Bilgi Damıtma (Knowledge Distillation): Büyük öğretmen modelin soft etiketlerini kullanarak küçük öğrenci modeli eğitir; budama ile kombinleyerek agresif boyut küçültme yapılabilir.
  • check_circle Lottery Ticket Hipotezi: Büyük ağlarda sıfırdan eğitilebilen küçük alt ağlar (kazanan biletler) gizlidir. Bu hipotez budamanın neden işe yaradığını teorik olarak açıklar.

Kullanım Alanları ve Araçlar

  • check_circle Kenar ve Mobil Dağıtım: TensorFlow Lite ve ONNX Runtime, budanmış ve kuantalanmış modelleri akıllı telefon, Raspberry Pi ve mikrodenetleyicilere dağıtır.
  • check_circle PyTorch torch.nn.utils.prune: Yapısal olmayan budama için yerleşik API; büyüklük tabanlı, L1/L2 norm ve özel kriterlerle çalışır.
  • check_circle SparseGPT ve Wanda: LLM'lere özgü tek geçişli budama yöntemleri; 70B+ modeli birkaç saat içinde %50+ seyrekliğe indirir ve doğruluk kaybı minimumdur.
  • check_circle Neural Magic / DeepSparse: Seyrek modelleri CPU üzerinde GPU hızına yakın çıkarımla çalıştıran çıkarım motoru; yapısal olmayan budamanın üretimdeki uygulamasını mümkün kılar.

Sık Sorulan Sorular

  • check_circle Model budama doğruluğu ne kadar düşürür? Dikkatli yapılırsa minimal. %50-70 yapısal olmayan budamada tipik doğruluk kaybı <1%'dir; ince ayar (fine-tuning) sonrasında büyük ölçüde telafi edilir. %90+ seyreklikte kayıplar daha belirgin olabilir.
  • check_circle Budama mı, kuantalama mı önce yapılmalı? Pratikte ikisi ardışık uygulanır: önce budama (parametreleri azalt), ardından kuantalama (hassasiyeti azalt). Tam tersi sıra da mümkündür; PTQ (post-training quantization) sonrası budama bazen daha iyi sonuç verir.
  • check_circle Yapısal ve yapısal olmayan budama arasında nasıl seçim yapmalıyım? Standart donanımda anında hız gerekiyorsa yapısal budama; maksimum sıkıştırma ve seyrek donanım/yazılım desteği varsa yapısal olmayan. Kenar cihazlara dağıtımda yapısal genellikle daha pratiktir.
  • check_circle Lottery Ticket Hipotezi pratikte ne anlam ifade ediyor? Büyük bir modeli eğitip budamak, sıfırdan küçük bir model eğitmekten genellikle daha iyi sonuç verir. Büyük modelin eğitim dinamikleri kazanan alt ağı keşfetmeye yardımcı olur.
  • check_circle LLM'lerde budama ne kadar yaygındır? Giderek yaygınlaşmaktadır. SparseGPT (2023), LLaMA ve OPT gibi modelleri 50-60% seyrekliğe getirirken minimal doğruluk kaybı gösterir. Kuantalama kadar olgunlaşmış olmasa da üretime girmeye başlamıştır.