Erfahren Sie, wie das Beschneiden neuronale Netzwerke wie Ultralytics optimiert, indem redundante Parameter entfernt werden. Entdecken Sie strukturierte und unstrukturierte Methoden für Edge-KI.
Pruning ist eine strategische Technik zur Modelloptimierung , die dazu dient, die Größe und die rechnerische Komplexität von neuronalen Netzen zu reduzieren, indem unnötige Parameter entfernt werden. Ähnlich wie ein Gärtner abgestorbene oder zu stark gewachsene Äste zurückschneidet, damit ein Baum besser gedeihen kann, identifizieren und eliminieren Pruning-Algorithmen redundante weights and biases , die nur wenig zur Vorhersagekraft eines Modells beitragen. Das primäre Ziel besteht darin, ein komprimiertes, „spärliches” Modell zu erstellen, das eine hohe Genauigkeit beibehält und gleichzeitig deutlich weniger Speicher und Energie verbraucht. Diese Reduzierung ist für die Verbesserung der Inferenzlatenz unerlässlich, damit fortschrittliche Architekturen auf ressourcenbeschränkter Hardware wie Mobiltelefonen und eingebetteten Geräten effizient laufen können.
Moderne Deep-Learning-Modelle sind oft überparametrisiert, d. h. sie enthalten weit mehr Verbindungen als zur Lösung einer bestimmten Aufgabe erforderlich sind. Das Pruning nutzt dies aus, indem es Verbindungen mit Werten nahe Null entfernt, unter der Annahme, dass sie einen vernachlässigbaren Einfluss auf die Ausgabe haben. Nachdem die Parameter entfernt wurden, durchläuft das Modell in der Regel einen Prozess der Feinabstimmung, bei dem es kurz neu trainiert wird, um die verbleibenden Gewichte anzupassen und verlorene Leistung wiederherzustellen. Dieses Konzept steht in engem Zusammenhang mit der Lotterieticket-Hypothese, die besagt, dass große Netzwerke kleinere, hocheffiziente Subnetzwerke enthalten, die eine ähnliche Genauigkeit erreichen können.
Es gibt zwei Hauptkategorien von Schnittstrategien:
Das Beschneiden ist unverzichtbar, um Edge-KI in verschiedenen Branchen mit begrenzten Hardware-Ressourcen zu ermöglichen:
Während modernste Modelle wie YOLO26 auf Effizienz ausgelegt sind , können Entwickler durch Beschneiden die Schichten mithilfe von Bibliotheken wie PyTorch weiter optimieren. PyTorch. Das folgende Beispiel zeigt, wie man unstrukturiertes Pruning auf eine Faltungsschicht anwendet.
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}%")
Um ein Modell für den Einsatz effektiv zu optimieren , ist es hilfreich, das Pruning von anderen Strategien zu unterscheiden :
Für ein umfassendes Lebenszyklusmanagement, einschließlich Training, Annotation und Bereitstellung optimierter Modelle, können Nutzer die Ultralytics nutzen. Dies vereinfacht den Workflow von der Datenverwaltung bis zum Export von Modellen in hardwarefreundliche Formate wie ONNX oder TensorRT.