Kırpma ile yapay zeka modellerini optimize edin; karmaşıklığı azaltın, verimliliği artırın ve performanstan ödün vermeden uç cihazlarda daha hızlı dağıtım yapın.
Budama, aşağıdakiler için kritik bir tekniktir makine öğrenimi boyutunu küçültmeyi ve hesaplama karmaşıklığı gereksiz olanları kaldırarak sinir ağı (NN) parametreler. Sağlıklı büyümeyi teşvik etmek için bir ağaçtaki ölü dalları kesmek gibi, model budama da model ağırlıklarını veya bağlantılarını ortadan kaldırır. sistemin çıktısına minimum düzeyde katkıda bulunur. Öncelikli hedef, yüksek kaliteyi koruyan seyrek bir model oluşturmaktır. bellek kullanımını önemli ölçüde azaltırken doğruluk ve çıkarım gecikmesinin iyileştirilmesi. Bu süreç gibi sofistike mimarileri dağıtmak için gereklidir. Ultralytics YOLO11kaynak kısıtlaması olan cihazlarda depolama ve işlem gücü sınırlıdır.
Süreç tipik olarak önceden eğitilmiş bir modelle başlar. Algoritmalar parametreleri bulmak için ağı analiz eder - genellikle sıfıra yakın değerlere sahip olan veya nihai tahmin üzerinde sınırlı etkisi olan tensörler olarak temsil edilir. Bu parametreler şunlardır daha sonra kaldırılır veya "sıfırlanır". Bağlantıların kaldırılması performansı geçici olarak düşürebileceğinden, model genellikle ince ayar adı verilen bir süreçten geçer. birkaç epok için yeniden eğitilir ve böylece kalan kayıp hassasiyeti ayarlamak ve geri kazanmak için ağırlıklar.
İki ana budama kategorisi vardır:
Budama işlemini diğer işlemlerden ayırmak önemlidir. model optimizasyon stratejileri, Ancak genellikle birlikte kullanılırlar:
Budama, Edge AI' nın tüm dünyada etkinleştirilmesinde hayati bir rol oynar çeşitli sektörler:
Bir yandan Ultralytics YOLO modelleri kutudan çıkar çıkmaz son derece optimize edilmiştir, geliştiriciler standart PyTorch yardımcı programlarını kullanarak budama işlemini deneyebilirler. Aşağıdaki örnekte nasıl yapılacağı gösterilmektedir bilgisayarla görme modellerinde bulunan standart bir evrişimsel katmana yapılandırılmamış budama uygular.
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
Yaklaşan YOLO26 gibi verimli mimarideki gelecekteki gelişmeler, bunları entegre etmeyi amaçlamaktadır optimizasyon ilkelerini yerel olarak uygulayarak, tasarım gereği daha küçük, daha hızlı ve daha doğru modeller oluşturur.

