Model budama ile Edge AI için sinir ağının boyutu ve karmaşıklığının nasıl azaltıldığını öğrenin. Mobil cihazlarda daha hızlı çıkarım için Ultralytics optimize etme stratejilerini keşfedin.
Model budama, makine öğreniminde, gereksiz parametreleri sistematik olarak kaldırarak sinir ağının boyutunu ve hesaplama karmaşıklığını azaltmak için kullanılan bir tekniktir . Bir bahçıvanın ağacın gelişmesini teşvik etmek için ölü veya fazla büyümüş dalları budaması gibi, geliştiriciler de yapay ağları daha hızlı, daha küçük ve daha enerji verimli hale getirmek için budarlar. Bu süreç, akıllı telefonlar, gömülü sensörler ve uç bilgi işlem donanımı gibi sınırlı kaynaklara sahip cihazlarda modern derin öğrenme mimarilerini dağıtmak için gereklidir.
Budamanın temelindeki fikir, derin sinir ağlarının genellikle "aşırı parametreleştirilmiş" olmasıdır, yani önemli ölçüde daha fazla weights and biases içerir. Eğitim süreci boyunca model çok sayıda bağlantı öğrenir, ancak bunların hepsi nihai çıktıya eşit katkıda bulunmaz. Budama algoritmaları, eğitilmiş modeli analiz ederek bu gereksiz veya bilgilendirici olmayan bağlantıları (genellikle ağırlıkları sıfıra yakın olanlar) belirler ve bunları kaldırır.
Budanan bir modelin yaşam döngüsü genellikle şu adımları izler:
Bu metodoloji genellikle Lottery Ticket Hipotezi ile ilişkilendirilir. Bu hipotez, yoğun ağların, izole bir şekilde eğitildiklerinde orijinal modelle karşılaştırılabilir doğruluk elde edebilen daha küçük, izole alt ağlar (kazanan biletler) içerdiğini öne sürer .
Budama yöntemleri genellikle çıkarılan bileşenlerin yapısına göre sınıflandırılır.
Budama, Edge AI için kritik bir kolaylaştırıcıdır ve gelişmiş modellerin bulut bağlantısının mevcut olmadığı veya çok yavaş olduğu ortamlarda çalışmasına olanak tanır.
Model budama güçlü bir araç olmakla birlikte, genellikle diğer model optimizasyon teknikleriyle karıştırılır veya bunlarla birlikte kullanılır.
Aşağıdaki Python , PyTorch kullanarak bir evrişimli katmana yapılandırılmamış budama uygulamanın nasıl yapıldığını göstermektedir. PyTorchkullanarak yapısal olmayan budama işleminin nasıl uygulanacağını göstermektedir. Bu, modelleri ONNX ONNXgibi
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)
# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)
# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")
Eğitim, değerlendirme ve dağıtım dahil olmak üzere veri kümelerinin ve modellerinin tüm yaşam döngüsünü yönetmek isteyen kullanıcılar için Ultralytics , modern bir arayüz sunar. YOLO26 gibi yüksek düzeyde optimize edilmiş modeller oluşturma ve bunları TensorRT gibi donanım dostu formatlara aktarma sürecini basitleştirir. TensorRT TensorRT veya CoreML gibi donanım dostu formatlara aktarma sürecini basitleştirir.