Pruning
Budama, eğitilmiş bir sinir ağındaki önemi düşük ağırlıkları, filtreleri veya katmanları kaldırarak ağı küçültür ve çıkarımı hızlandırır; ardından kaybedilen performansı geri kazanmak için ince ayar yapar.
Budama, eğitilmiş bir sinir ağının çıktısına çok az katkıda bulunan ağırlıkları, nöronları, filtreleri, dikkat başlıklarını veya tüm katmanları kaldıran bir model optimizasyonu tekniğidir. Sonuçta daha az bellek, hesaplama gücü ve enerji gerektiren daha küçük bir model elde edilir. Derin öğrenmede bu terim, model budama ile eş anlamlıdır. Çoğu ağda gerekenden çok daha fazla parametre bulunur: Han ve diğerleri, ImageNet üzerinde AlexNet'i 61 milyondan 6,7 milyon parametreye, VGG-16'yı ise 138 milyondan 10,3 milyon parametreye indirdi; düşük genlikli bağlantıları kaldırıp kalanları yeniden eğiterek doğruluk kaybı yaşamadı. Bellek, güç ve çıkarım gecikmesi bütçelerinin kısıtlı olduğu uç AI dağıtımlarından önce budama sık kullanılan bir adımdır.
Budama Nasıl Çalışır#
Her budama yöntemi hangi parametrelerin ne zaman kaldırılacağına karar verir. Önem puanı genellikle ağırlık büyüklüğüdür; çünkü sıfıra yakın ağırlıkların çıktıyı değiştirme etkisi en azdır. Gradyan tabanlı puanlar ise her parametrenin kayıp fonksiyonu üzerindeki etkisini daha doğrudan tahmin eder. Büyük bir oranı tek seferde kaldırmak, küçük bir oranı kaldırıp kalan ağırlıkları toparlanmaları için ince ayar yapan ve boyut ya da hız hedefine ulaşana kadar bu işlemi yineleyen yinelemeli budamaya kıyasla genellikle doğruluğa daha çok zarar verir. Piyango Bileti Hipotezi, yoğun ağlarda özgün başlangıç değerlerine döndürüldüğünde kendi başlarına eğitilerek tüm ağla karşılaştırılabilir doğruluğa ulaşan seyrek alt ağlar bulunduğunu öne sürer.
Yapısal Olmayan, Yapısal ve Yarı Yapısal Budama#
Yapısal olmayan budama, tensörün herhangi bir yerindeki tek tek ağırlıkları sıfırlar. Belirli bir doğruluk düzeyinde en yüksek seyrekliği sağlar; ancak ortaya düzensiz bir seyrek matris çıkar. Seyrek bir çalışma zamanı sıfırları atlamadığı sürece yoğun GPU ve CPU çekirdekleri bu matrisi tam maliyetle işlemeye devam eder. Yapısal budama, bir evrişimli sinir ağından veya Transformer modelinden filtrelerin, kanalların, dikkat başlıklarının ya da katmanların tamamını kaldırır. Böylece budanan her katman, daha fazla doğruluk kaybı pahasına her donanımda daha hızlı çalışan, daha küçük ve yoğun bir katmana dönüşür. PyTorch budama yardımcı programları, her iki yöntemi de mevcut bir katmana maske uygulayarak kullanır:
import copy
from torch import nn
from torch.nn.utils import prune
# Two copies of one convolution layer with 32 filters of shape 16x3x3
unstructured = nn.Conv2d(16, 32, kernel_size=3)
structured = copy.deepcopy(unstructured)
# Unstructured: zero the 50% of individual weights with the smallest magnitude
prune.l1_unstructured(unstructured, name="weight", amount=0.5)
# Structured: zero the 50% of whole filters (dim=0) with the smallest L2 norm
prune.ln_structured(structured, name="weight", amount=0.5, n=2, dim=0)
for name, layer in [("Unstructured", unstructured), ("Structured", structured)]:
zeros = (layer.weight == 0).float().mean()
empty_filters = (layer.weight.flatten(1).abs().sum(dim=1) == 0).sum()
print(f"{name}: {zeros:.0%} of weights zeroed, {empty_filters}/32 filters entirely empty")Her iki katman da ağırlıklarının %50'sini kaybeder; ancak yalnızca yapısal katmandaki 32 filtrenin 16'sı tamamen boşalır ve bunlar fiziksel olarak kaldırılarak 16 filtreli yoğun bir evrişim katmanı elde edilebilir.
Yarı yapılandırılmış budama, bu iki yöntemin arasında yer alır. NVIDIA'nın 2:4 seyrekliķ örüntüsü, art arda gelen her dört ağırlığın ikisini sıfırlar; Ampere ve sonraki GPU'lardaki Sparse Tensor Cores bu ağırlıkları atlayarak aynı matris işlemini yarı sürede yapar. NVIDIA, A100 üzerinde TensorRT ile çalışan seyrek ResNeXt-101 için uçtan uca %20'ye varan kazanımlar ölçmüştür. Yoğun donanımda dağınık sıfırlar tek başına hız kazandırmaz: Ultralytics YOLOv5x'i budamak için prune() yardımcı programını kullanıp ince ayar yapmadan küresel yapılandırılmamış seyrekliği %30'a çıkarmak, COCO mAP50-95 değerini 0,507'den 0,489'a düşürdü ve V100 çıkarım süresini görüntü başına 5,2 ms'de bıraktı.
Gerçek Dünya Uygulamaları#
Budama en çok, modelin kısıtlı donanımda çalışması gereken durumlarda önem taşır. Kanal budaması uygulanmış nesne tespiti ağları; dronların, akıllı kameraların ve telefonların bellek ve güç bütçelerine sığar. Böylece bulut bağlantısı olmadan gerçek zamanlı çıkarım yapılabilir ve görüntüler veri gizliliği için cihazda kalır. Üretim denetimlerinde aynı sıkıştırma, kusur tespit sisteminin üretim hattının yanındaki düşük maliyetli bir uç modülde çalışmasını sağlar.
Büyük dil modelleri de budanır. SparseGPT, yeniden eğitim yapmadan OPT-175B ve BLOOM-176B modellerini tek seferde %60 yapısal olmayan seyrekliğe budar ve karmaşıklıkta yalnızca ihmal edilebilir bir artışa neden olur. NVIDIA'nın Minitron çalışması, Llama 3.1 8B modelini katmanları veya gizli boyutları kaldırarak 4B'lik bir modele budadı, ardından özgün modelden bilgi damıtımı uygulayarak kaliteyi geri kazandırdı.
Budama ve İlişkili Teknikler#
Budama çoğunlukla diğer sıkıştırma yöntemleriyle birlikte kullanılır; bu terimin sinir ağlarının dışında daha eski bir anlamı da vardır.
- Model niceleme: Niceleme tüm ağırlıkları korur ve sayısal duyarlıklarını, örneğin 32 bit kayan noktalı sayılardan 8 bit tam sayılara düşürür. Budanmış modellere ek tasarruf sağlamak için çoğu zaman sonradan niceleme uygulanır.
- Bilgi damıtımı: Damıtım, ayrı ve küçük bir öğrenci modeli daha büyük bir öğretmen modeli taklit edecek şekilde eğitir. Yoğun biçimde budanmış bir modelin kaybettiği doğruluğu geri kazandırmanın yaygın bir yoludur.
- Dropout katmanı: Dropout, düzenlileştirme amacıyla tek bir eğitim adımında rastgele etkinleştirmeleri sıfırlar ve parametre sayısını değiştirmez; budama ise parametreleri kalıcı olarak kaldırır.
- Karar ağacı budaması: Klasik makine öğrenmesinde budama, aşırı öğrenmeyi azaltmak için eğitilmiş bir karar ağacının dallarını keser. Scikit-learn'ün maliyet-karmaşıklık budaması da
ccp_alphaparametresi arttıkça en zayıf alt ağaçları kaldırır.










