Optimieren Sie Modelle für maschinelles Lernen mit Modellbeschneidung. Erzielen Sie schnellere Inferenz, reduzierten Speicherbedarf und Energieeffizienz für ressourcenbeschränkte Bereitstellungen.
Modellbereinigung ist eine Technik der Modelloptimierung um die Größe und Rechenkomplexität neuronaler Netze zu reduzieren neuronaler Netze durch das Entfernen unnötiger Parameter. Da Modelle der künstlichen Intelligenz immer größer werden, um eine höhere Leistung zu erzielen, werden sie oft überparametrisiert und enthalten viele Verbindungen oder Neuronen, die wenig zur endgültigen Ausgabe beitragen. Durch die Identifizierung Durch die Identifizierung und Eliminierung dieser überflüssigen Komponenten können Entwickler schlankere Modelle erstellen, die weniger Speicher und Energie benötigen und gleichzeitig eine schnellere Echtzeit-Inferenz liefern. Dieser Prozess ist besonders wichtig für den Einsatz von anspruchsvollen Architekturen wie YOLO11 auf Hardware mit knappen Ressourcen, wie z. B. auf Handys oder eingebettete Sensoren.
Der Beschneidungsprozess umfasst in der Regel drei Hauptphasen: Training, Beschneidung und Feinabstimmung. Zunächst wird ein großes Modell trainiert, um Konvergenz trainiert, um komplexe Merkmale zu erfassen. Während der Pruning-Phase bewertet ein Algorithmus die Bedeutung bestimmter Parameter - in der Regel weights and biases-auf der Grundlage von Kriterien wie Größe oder Empfindlichkeit. Parameter, die als unbedeutend eingestuft werden, werden auf Null gesetzt oder ganz entfernt.
Das einfache Ausschneiden von Teilen eines Netzes kann jedoch die Genauigkeit beeinträchtigen. Um dem entgegenzuwirken, durchläuft das Modell eine Um dem entgegenzuwirken, durchläuft das Modell eine anschließende Umschulungsrunde, die als Feinabstimmung bezeichnet wird. Dieser Schritt ermöglicht es den verbleibenden Parametern, sich anzupassen und die fehlenden Verbindungen zu kompensieren, wodurch die Leistung des Modells oft fast wieder auf das ursprüngliche Niveau gebracht wird. Die Wirksamkeit dieses Ansatzes wird durch die Lotterieschein-Hypothese, die besagt, dass dichte Netze kleinere Teilnetze enthalten kleinere Teilnetze enthalten, die eine vergleichbare Genauigkeit erreichen, wenn sie isoliert trainiert werden.
Pruning-Strategien werden im Allgemeinen nach der Struktur der zu entfernenden Komponenten kategorisiert:
Obwohl beides beliebte Optimierungsverfahren sind, ist es wichtig, zwischen Pruning und Modellquantisierung zu unterscheiden. Pruning konzentriert sich auf die Reduzierung die Anzahl der Parameter (Verbindungen oder Neuronen), wodurch die Architektur des Modells effektiv verändert wird. Unter Im Gegensatz dazu wird bei der Quantisierung die Genauigkeit dieser Parameter reduziert, z. B. durch die Umwandlung von 32-Bit Gleitkommazahlen in 8-Bit-Ganzzahlen. Diese Methoden ergänzen sich häufig; ein Entwickler könnte zunächst ein Modell beschneiden um Redundanzen zu entfernen und es dann zu quantisieren, um den Speicherbedarf für den Einsatz weiter zu minimieren. Einsatz.
Pruning spielt eine entscheidende Rolle, um fortgeschrittene Computer Vision in der Praxis zugänglich Szenarien:
Frameworks wie PyTorch bieten eingebaute Hilfsprogramme, um das Beschneidung programmatisch anzuwenden. Das folgende Beispiel zeigt, wie man unstrukturiertes Pruning auf eine Faltungsschicht anwendet Schicht anwendet, eine übliche Operation vor dem Exportieren eines Modells in ein optimiertes Format wie 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%}")