Model budama ile makine öğrenimi modellerini optimize edin. Kaynak kısıtlı dağıtımlar için daha hızlı çıkarım, azaltılmış bellek kullanımı ve enerji verimliliği elde edin.
Model budama bir model optimizasyon tekniği boyutunu ve hesaplama karmaşıklığını azaltmak için tasarlanmıştır. Gereksiz sinir ağlarını kaldırarak parametreler. Yapay zeka modelleri daha yüksek performans elde etmek için büyüdükçe, genellikle Nihai çıktıya çok az katkıda bulunan birçok bağlantı veya nöron içeren aşırı parametreli. Tanımlayarak ve bu gereksiz bileşenleri ortadan kaldırarak, geliştiriciler daha az bellek ve enerji gerektiren daha yalın modeller oluşturabilirler daha hızlı gerçek zamanlı çıkarım sunarken. Bu süreç özellikle aşağıdaki gibi sofistike mimarilerin dağıtımı için hayati önem taşır YOLO11 kaynakların kıt olduğu donanımlarda, örneğin cep telefonları veya gömülü sensörler.
Budama süreci tipik olarak üç ana aşamadan oluşur: eğitim, budama ve ince ayar. Başlangıçta, büyük bir model aşağıdakiler için eğitilir karmaşık özellikleri yakalamak için yakınsama. Budama aşaması sırasında bir algoritma, belirli bir algoritmanın önemini değerlendirir. parametreler-genellikle weights and biases-temelli büyüklük veya hassasiyet gibi kriterler. Önemsiz görülen parametreler sıfıra ayarlanır veya tamamen kaldırılır.
Ancak, bir ağın bazı bölümlerini kesmek, ağın kalitesini düşürebilir. doğruluk. Buna karşı koymak için, model bir daha sonra ince ayar olarak bilinen yeniden eğitim turu. Bu adım, kalan parametrelerin ayarlanmasına ve eksik bağlantıları telafi eder ve genellikle modelin performansını orijinal seviyelerine yakın hale getirir. Bu Bu yaklaşımın etkinliği, aşağıdaki hususlarla desteklenmektedir Piyango Bileti Hipotezi, yoğun ağların aşağıdakileri içerdiğini öne sürer Tek başına eğitildiğinde karşılaştırılabilir doğruluk elde edebilen daha küçük alt ağlar.
Budama stratejileri genellikle kaldırılan bileşenlerin yapısına göre kategorize edilir:
Her ikisi de popüler optimizasyon teknikleri olsa da, budama işlemini aşağıdakilerden ayırt etmek önemlidir model niceleme. Budama azaltmaya odaklanır parametrelerin (bağlantılar veya nöronlar) sayısını değiştirerek modelin mimarisini etkili bir şekilde değiştirir. İçinde Buna karşılık, niceleme bu parametrelerin hassasiyetini azaltır, örneğin 32-bit kayan noktalı sayıları 8 bitlik tam sayılara dönüştürür. Bu yöntemler genellikle birbirini tamamlar; bir geliştirici önce bir modeli budayabilir için bellek ayak izini daha da en aza indirmek için nicelleştirin. Dağıtım.
Budama, gelişmiş bir budama sistemi oluşturmada kritik bir rol oynar. pratikte erişilebilir bilgisayar görüşü Senaryolar:
Gibi çerçeveler PyTorch uygulamak için yerleşik yardımcı programlar sağlar programlı olarak budama. Aşağıdaki örnekte, yapılandırılmamış budamanın bir evrişimli yapıya nasıl uygulanacağı gösterilmektedir katmanı, bir modeli aşağıdaki gibi optimize edilmiş bir formata aktarmadan önce yapılan ortak bir işlemdir ONNX.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")

