list_altİçindekilerexpand_more
Diyelim ki elinizde iyi çalışan bir model var: doğru tahminler yapıyor, makul benchmark sonuçları aldı. Ama onu bir akıllı telefona ya da gömülü sisteme koymak istediğinizde işler karmaşıklaşıyor. VRAM yok, RAM kısıtlı, pil hesabı var. Quantization bir seçenek, knowledge distillation başkası. Bazen cevap daha doğrudan: modeldeki işe yaramayan bağlantıları kesmek.
Model pruning bu fikre dayanıyor. Sinir ağındaki düşük değerli ağırlıkları sıfıra çekerek ya da tamamen kaldırarak modeli küçültüyor. Ağaç budama metaforu buraya iyi oturuyor: gereksiz dallar kesilince kalan yapı daha güçlü büyür. Doğru uygulandığında pruned bir model ince ayardan sonra orijinal doğruluğuna yakın kalıyor.
Bu yazıda pruning’in nasıl çalıştığını, farklı yöntemler arasındaki farkları, LLM’lerde nasıl kullanıldığını ve hangi araçların bu süreci kolaylaştırdığını inceliyoruz.
Pruning Nedir?
Bir sinir ağı eğitildikten sonra ağırlık matrislerinde çok sayıda küçük değerli parametre kalıyor. Bu parametreler model doğruluğuna katkı yapmıyor, ama çıkarım sırasında hesaplanmaya devam ediyor. Pruning bu ağırlıkları sıfıra çeker ya da mimariden çıkarır.
Sparsity oranı bu sürecin temel metriği. %50 sparsity: ağırlıkların yarısı sıfır. %80’de beşte dördü. Sparsity arttıkça model boyutu küçülüyor; doğru donanım ve kütüphane desteğiyle çıkarım hızı da artıyor.
Büyük modeller aşırı parameterize edilmiş durumda. Eğitim sırasında pek çok ağırlık belirli bir işleve katkı yapsa da model yakınsadıktan sonra önemli bir kısmı gereksiz hale geliyor. Bu ağırlıkları kaldırmak çoğu zaman tahmin kalitesini ciddi biçimde etkilemiyor.
Bu gözlemin teorik zemini 2019’da Frankle ve Carlin’in Lottery Ticket Hypothesis çalışmasında atıldı. Hipoteze göre büyük bir sinir ağı içinde, baştan beri sıfırdan eğitilebilecek küçük ve verimli alt ağlar gizli. Bunlara “kazanma bileti” (winning ticket) deniyor. Tam eğitim, bu bileti taşıyan alt ağın gün yüzüne çıkmasını sağlıyor; pruning ise onu örtülü olarak ayıklıyor. Büyük ağlara büyük veri harcamanın bir gerekçesi de bu: doğru alt ağ yapısının ortaya çıkması için yeterli sinyal gerekiyor.
Neden Pruning Yapılır?
Pruning’in üç somut getirisi var.
Boyut küçülmesi. Sıfır ağırlıklar sıkıştırılmış formatlarda yer tutmuyor. %70 sparse bir model diskte belirgin biçimde daha az yer kaplıyor.
Çıkarım hızı. Doğru donanım ve kütüphane kullanıldığında sıfırlarla yapılan çarpma işlemleri atlanıyor. NVIDIA’nın Sparse Tensor Core’ları ve DeepSparse gibi CPU çıkarım motorları bu ilkeye göre optimize edilmiş.
Edge AI deployment. Akıllı telefon, gömülü sistem ve IoT cihazlarında büyük modelleri çalıştırmak için bellek ve güç kısıtlarını aşmak gerekiyor. Pruning bu geçişi mümkün kılan temel araçlardan biri. Apple Neural Engine, Qualcomm AI Stack ve MediaTek APU gibi cihaz içi hızlandırıcılar düşük bit-width ağırlıklarla daha iyi çalışıyor; pruning bu donanımların güçlü noktalarına oynayan hafif ve verimli model elde etmenin ilk adımı oluyor.
Pruning Türleri
Unstructured Pruning
Tek tek ağırlıklar seçilerek sıfıra çekiliyor. En yaygın yaklaşım magnitude-based pruning: mutlak değeri düşük olan ağırlıklar kaldırılıyor. Uygulaması basit; %90 ve üzeri sparsity oranlarına ulaşmak mümkün.
Ancak bir sınırı var. Sıfırlanan ağırlıklar rastgele konumlarda dağılıyor. Bu düzensiz yapı standart GPU ve CPU’larda gerçek hız kazanımı sağlamıyor. Hız için sparse-aware donanım ya da kütüphane desteği şart.
Magnitude-based pruning’in alternatifi gradyan tabanlı yöntemler: hangi ağırlığın kaldırılmasının çıktı hatası üzerinde en az etkiyi yapacağını birinci ya da ikinci dereceden türev bilgisiyle hesaplıyorlar. Daha hassas ama hesaplama açısından çok daha pahalılar. Eski çalışmalarda optimal brain damage (OBD) ve optimal brain surgeon (OBS) adlarıyla bilinen bu yaklaşımlar, SparseGPT’nin dayandığı Optimal Brain Compression (OBC) ile modern bir versiyona kavuştu.
Structured Pruning
Tek ağırlık değil, tüm yapısal birimler kaldırılıyor: bir konvolüsyon filtresi, bir dikkat başlığı ya da bir katmanın tamamı. Model mimarisi küçülüyor ve standart donanımda ölçülebilir hız kazanımı ortaya çıkıyor.
Doğruluk kaybı riski unstructured’a kıyasla daha belirgin. Bir blok tamamen silinince o bilgi kalıcı olarak yok oluyor. Bu yüzden structured pruning sonrası recovery fine-tuning neredeyse kaçınılmaz.
Semi-structured (N:M) Pruning
Her M ağırlıktan tam N tanesi sıfır olacak biçimde düzenli bir seyreklik oluşturuluyor. NVIDIA’nın H100/A100 GPU’larının desteklediği 2:4 sparsity bunun en yaygın örneği: her 4 ağırlıktan 2’si sıfır.
Bu düzenlilik, Sparse Tensor Core’ların devreye girmesine zemin hazırlıyor. NVIDIA’nın verilerine göre 2:4 sparsity teorik olarak %2x throughput artışı getiriyor. Irregular sparsity için özel kütüphane gerekirken, 2:4 doğrudan donanım desteği alıyor.
Unstructured ile structured arasında makul bir denge: hem yüksek sparsity hem standart donanımda hız kazanımı.
LLM’lerde Pruning
2023’ten bu yana büyük dil modellerinde pruning araştırmaları ciddi ivme kazandı. Sorun açık: 7B, 13B ya da 175B parametreli bir modeli yeniden eğitmek zaman ve hesaplama açısından pratik değil. Post-training pruning tam bu boşlukta çıktı.
SparseGPT (Frantar ve Alistarh, 2023) bu alandaki önemli çalışmalardan biri. 175B parametreli bir GPT modelini tek GPU geçişinde, backpropagation gerektirmeden %50-60 sparse hale getiriyor. Ağırlıklar kaldırılırken geri kalanlar ikinci dereceden bir hata düzeltme adımıyla yeniden ayarlanıyor.
Wanda (Sun ve ark., 2023) daha basit bir yaklaşım getiriyor: ağırlığın büyüklüğü ile giriş aktivasyonunun büyüklüğü birlikte değerlendiriliyor. Küçük ağırlık ama yüksek aktivasyon kombinasyonu taşıyan parametreler korunuyor. SparseGPT’ye yakın sonuçlara çok daha az hesaplamayla ulaşmak mümkün.
LLM-Pruner yapısal pruning yolunu izliyor: dikkat başlıkları ve FFN katmanları selektif olarak kaldırılıyor, ardından LoRA ile hızlı recovery fine-tuning uygulanıyor.
Pratik bulgular tutarlı bir tablo ortaya koyuyor. %20-40 aralığında, özellikle recovery fine-tuning yapıldığında, doğruluk kaybı genellikle kabul edilebilir kalıyor. %50 civarından itibaren bozulma belirginleşiyor. %60 ve üzeri sistematik fine-tuning olmadan çoğu zaman ciddi performans düşüşü demek.
Pruned LLM’lerin production’a alınması için vLLM gibi çıkarım motorları sparse formatları giderek daha iyi destekliyor.
Sahada örnekler hızla artıyor. Mistral 7B tabanlı bazı türevler %30-40 oranında prune edilip ardından quantize edilerek tüketici GPU’larında çalışıyor. Meta’nın Llama serisi için açık araçlarla uygulanan post-training pruning + AWQ kombinasyonu, A100 GPU yerine RTX 4090 gibi tüketici donanımında production çıkarımı yapmayı mümkün kılıyor. Microsoft’un Phi-3 ve Phi-4 serisi ise distillation ile pruning’i birlikte kullanarak parametre sayısının çok üzerinde performans gösteriyor. Bu modeller on-device ve edge AI senaryolarında giderek standart referans noktasına dönüşüyor.
Quantization ile Karşılaştırma
Bu iki teknik sık karıştırılıyor. Temel ayrım şu:
- Pruning ağırlıkların bir kısmını sıfır yapıyor ya da tamamen kaldırıyor. Parametre sayısı düşüyor.
- Quantization ağırlıkların bit hassasiyetini düşürüyor: float32’den int8 ya da int4’e. Parametre sayısı aynı kalıyor, her parametre daha az yer tutuyor.
İkisi birbirini dışlamıyor. Önce SparseGPT ile prune etmek, ardından GPTQ ya da AWQ ile quantize etmek mümkün. Bu kombinasyon hem sparse hem düşük bit hassasiyetli bir model ortaya çıkarıyor.
Knowledge Distillation ile Karşılaştırma
Knowledge distillation farklı bir yol izliyor: büyük bir teacher modelinin bilgisini sıfırdan eğitilen küçük bir student modele aktarıyor. Yeni bir model doğuyor.
Pruning ise mevcut modelin ağırlıklarını kesiyor. Sıfırdan eğitime gerek yok, en azından teoride. Recovery fine-tuning gerekebilir, ama bu sıfırdan eğitimle karşılaştırıldığında çok daha kısa ve ucuz.
Ne zaman hangisi? Mevcut iyi bir modeliniz var ve hızla küçültmek istiyorsunuz: pruning. Belirli bir mimariye sıfırdan verimli bir model istiyorsunuz: distillation. İkisi birden isteniyorsa: distillation ile küçük bir model üretin, ardından onu da prune edin.
Pruning Adım Adım
Pratik bir pruning çalışması bu aşamalardan geçiyor:
- Baseline ölçümü: orijinal modelin doğruluk, latency ve bellek kullanımını kaydedin.
- Sparsity hedefi: kaç parametre kesilebilir? %20, %50, %80? Bu hedef kullanım senaryosuna göre değişiyor.
- Yöntem seçimi: unstructured magnitude pruning, SparseGPT, Wanda ya da yapısal bir yöntem.
- Pruning uygulaması: tek geçişte (one-shot) ya da iteratif olarak. İteratif pruning her adımda küçük bir miktar kesiyor ve doğruluğu ölçüyor.
- Recovery fine-tuning: %40 ve üzeri sparsity’de neredeyse zorunlu. LoRA veya QLoRA bu adımda yaygın kullanılan yollar.
- Deployment: DeepSparse (CPU için), ExecuTorch (mobil) ya da NVIDIA’nın sparse kütüphaneleri.
Bu adımlar için öne çıkan araçlar: SparseML (Neural Magic), önceden test edilmiş recipe’lerle BERT, RoBERTa, ResNet ve YOLO gibi modelleri belirli sparsity hedeflerine götürüyor. PyTorch’un yerleşik torch.nn.utils.prune modülü unstructured ve structured pruning’i birkaç satır kodla uyguluyor. Hugging Face optimum, Intel OpenVINO ve ONNX Runtime desteğiyle pruned modellerin hedef donanıma aktarılmasını kolaylaştırıyor. LLM’ler için ise llm-compressor (Neural Magic’in LLM odaklı paketi) doğrudan Hugging Face checkpoint’lerinden çalışıyor.
Neural Magic gibi bazı toolchain’ler bu adımları entegre bir pipeline olarak sunuyor. Pruning ve quantization kombinasyonunu tek akışta uygulamak mümkün.
Hangi Durumda Pruning Tercih Edilir?
| Pruning | Quantization | Distillation | |
|---|---|---|---|
| Mekanizma | Ağırlık silme | Bit hassasiyeti düşürme | Sıfırdan küçük model eğitimi |
| Uygulama zorluğu | Orta | Düşük-Orta | Yüksek |
| Hız kazanımı | Donanıma bağlı | Geniş destek | Mimari küçülmeden geliyor |
| Doğruluk kaybı riski | Orta (%50+ sparsity’de artar) | Düşük-Orta | Kontrollü |
| Yeniden eğitim | Recovery fine-tuning genellikle yeterli | Çoğunlukla gerekmez | Zorunlu |
| Donanım gereksinimleri | Sparse-aware kütüphane gerekebilir | Geniş destek | Standart |
Pruning birkaç senaryoda belirgin bir tercih:
- Edge/mobil deployment: Cihaz belleği ve gücü kısıtlı, modeli küçültmek şart.
- NVIDIA Hopper/Ampere GPU’ları: 2:4 sparsity için native donanım desteği mevcut; semi-structured pruning ile düzenli hız kazanımı mümkün.
- Post-training optimizasyon: Yeniden eğitim için zaman ya da veri yoksa, one-shot pruning (SparseGPT, Wanda) pratik bir yol.
- Quantization sonrası ek küçültme: Quantize edilmiş bir modeli biraz daha hafifletmek için pruning iyi bir tamamlayıcı.
Pruning, quantization ve distillation birbirinin rakibi değil. Her biri farklı kısıtlar için tasarlanmış teknikler; doğru kombinasyonu bulmak kullanım senaryonuza bağlı.
Pratik bir başlangıç noktası: önce quantization’a bakın, genellikle en hızlı ve en az riskli adım. Model hâlâ hedef bellek ya da latency sınırını geçiyorsa pruning devreye girer. Sıfırdan verimlilik hedefliyorsanız distillation ile küçük bir model üretin, ardından onu da prune edip quantize edin. Bu üç katmanlı yaklaşım özellikle edge AI deployment’larında tutarlı sonuçlar veriyor.



