Budama işleminin, gereksiz parametreleri kaldırarak Ultralytics gibi sinir ağlarını nasıl optimize ettiğini öğrenin. Edge AI için yapılandırılmış ve yapılandırılmamış yöntemleri keşfedin.
Budama, gereksiz parametreleri kaldırarak sinir ağlarının boyutunu ve hesaplama karmaşıklığını azaltmak için kullanılan stratejik bir model optimizasyon tekniğidir. Bir bahçıvanın ağacın gelişmesine yardımcı olmak için ölü veya aşırı büyümüş dalları budaması gibi, budama algoritmaları da gereksiz ağ ağırlıklarını ve önyargıları belirler weights and biases belirleyip ortadan kaldırır. Birincil amaç, yüksek doğruluğu korurken önemli ölçüde daha az bellek ve enerji tüketen sıkıştırılmış, "seyrek" bir model oluşturmaktır. Bu azaltma, çıkarım gecikmesini iyileştirmek için gereklidir ve gelişmiş mimarilerin cep telefonları ve gömülü cihazlar gibi kaynakları sınırlı donanımlarda verimli bir şekilde çalışmasını sağlar.
Modern derin öğrenme modelleri genellikle aşırı parametrelidir, yani belirli bir görevi çözmek için gerekenden çok daha fazla bağlantı içerirler. Budama , çıktı üzerinde önemsiz bir etkiye sahip oldukları varsayımıyla, değeri sıfıra yakın olan bağlantıları kaldırarak bunu kullanır . Parametreler kaldırıldıktan sonra, model genellikle bir ince ayar sürecinden geçer ve bu süreçte, kalan ağırlıkları ayarlamak ve kaybedilen performansı geri kazanmak için kısa bir süre yeniden eğitilir. Bu kavram, büyük ağların benzer doğruluğa ulaşabilen daha küçük, yüksek verimli alt ağlar içerdiğini öne süren Lottery Ticket Hypothesis(Piyango Bileti Hipotezi) ile yakından ilgilidir.
Budama stratejileri iki ana kategoriye ayrılır:
Budama, donanım kaynaklarının sınırlı olduğu çeşitli endüstrilerde Edge AI'yı mümkün kılmak için vazgeçilmezdir: - Akıllı telefonlar: Akıllı telefonların işlem gücü sınırlıdır ve bu sınırlı işlem gücü, Edge AI'nın akıllı telefonlarda kullanılmasını zorlaştırır.
YOLO26 gibi son teknoloji modeller verimlilik için tasarlanmış olsa da geliştiriciler, PyTorch gibi kütüphaneleri kullanarak katmanları daha da optimize etmek için budama uygulayabilirler PyTorchkullanarak katmanları daha da optimize etmek için budama uygulayabilirler. Aşağıdaki örnek, yapısal olmayan budamanın bir evrişimli katmana nasıl uygulanacağını göstermektedir.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")
Bir modeli dağıtım için etkili bir şekilde optimize etmek için , budamayı diğer stratejilerden ayırmak yararlıdır:
Eğitim, açıklama ve optimize edilmiş modellerin dağıtımı dahil olmak üzere kapsamlı yaşam döngüsü yönetimi için kullanıcılar Ultralytics kullanabilirler. Bu, veri kümesi yönetiminden ONNX gibi donanım dostu formatlarda modellerin dışa aktarılmasına kadar iş akışını basitleştirir. ONNX veya TensorRTgibi donanım dostu formatlarda dışa aktarılmasına kadar iş akışını basitleştir