Erfahren Sie, wie durch Modellbeschneidung die Größe und Komplexität neuronaler Netze für Edge-KI reduziert werden kann. Entdecken Sie Strategien zur Optimierung Ultralytics für schnellere Inferenz auf Mobilgeräten.
Modellbeschneidung ist eine Technik im maschinellen Lernen, die dazu dient, die Größe und Rechenkomplexität eines neuronalen Netzwerks zu reduzieren, indem unnötige Parameter systematisch entfernt werden. Ähnlich wie ein Gärtner abgestorbene oder übermäßig gewachsene Äste zurückschneidet, um das Wachstum eines Baumes zu fördern, beschneiden Entwickler künstliche Netzwerke, um sie schneller, kleiner und energieeffizienter zu machen. Dieser Prozess ist unerlässlich für den Einsatz moderner Deep-Learning-Architekturen auf Geräten mit begrenzten Ressourcen, wie Smartphones, eingebetteten Sensoren und Edge-Computing-Hardware.
Die Kernidee hinter dem Pruning ist, dass tiefe neuronale Netze oft „überparametrisiert” sind, was bedeutet, dass sie deutlich mehr weights and biases als für die Lösung eines bestimmten Problems unbedingt erforderlich sind. Während des Trainingsprozesses lernt das Modell eine Vielzahl von Verbindungen, die jedoch nicht alle gleichermaßen zur endgültigen Ausgabe beitragen. Pruning-Algorithmen analysieren das trainierte Modell, um diese redundanten oder nicht informativen Verbindungen – in der Regel solche mit Gewichten nahe Null – zu identifizieren und zu entfernen.
Der Lebenszyklus eines beschnittenen Modells umfasst im Allgemeinen die folgenden Schritte:
Diese Methodik wird oft mit der Lotterielos-Hypothese in Verbindung gebracht, die besagt, dass dichte Netzwerke kleinere, isolierte Subnetzwerke (Gewinnlose) enthalten, die eine mit dem ursprünglichen Modell vergleichbare Genauigkeit erreichen können, wenn sie isoliert trainiert werden.
Die Schnittmethoden werden im Allgemeinen anhand der Struktur der zu entfernenden Bestandteile kategorisiert.
Das Trimmen ist ein entscheidender Faktor für Edge-KI, da es die Ausführung komplexer Modelle in Umgebungen ermöglicht, in denen keine oder nur eine zu langsame Cloud-Verbindung verfügbar ist.
Obwohl das Modell-Pruning ein leistungsfähiges Werkzeug ist, wird es oft mit anderen Modelloptimierungstechniken verwechselt oder zusammen mit diesen verwendet.
Das folgende Python zeigt, wie man unstrukturiertes Pruning auf eine Faltungsschicht mit PyTorch. Dies ist ein üblicher Schritt vor dem Exportieren von Modellen in optimierte Formate wie ONNX.
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}%")
Für Benutzer, die den gesamten Lebenszyklus ihrer Datensätze und Modelle verwalten möchten – einschließlich Training, Bewertung und Bereitstellung – bietet die Ultralytics eine optimierte Schnittstelle. Sie vereinfacht den Prozess der Erstellung hochoptimierter Modelle wie YOLO26 und deren Export in hardwarefreundliche Formate wie TensorRT TensorRT oder CoreML.