Model Pruning
Erfahre, wie Modellpruning die Größe und Komplexität neuronaler Netze für Edge-KI reduziert. Entdecke Strategien zur Optimierung von Ultralytics YOLO26 für schnellere Inferenz auf mobilen Geräten.
Das Beschneiden von Modellen ist eine Technik im maschinellen Lernen, mit der sich die Größe und die Rechenkomplexität eines neuronalen Netzes reduzieren lassen, indem unnötige Parameter systematisch entfernt werden. Ähnlich wie ein Gärtner abgestorbene oder übermäßig gewachsene Äste zurückschneidet, damit ein Baum besser gedeiht, beschneiden Entwickler künstliche Netze, um sie schneller, kleiner und energieeffizienter zu machen. Dieser Prozess ist entscheidend, um moderne Architekturen für Deep Learning auf Geräten mit begrenzten Ressourcen bereitzustellen, etwa auf Smartphones, eingebetteten Sensoren und Hardware für Edge Computing.
So funktioniert das Beschneiden von Modellen#
Die Grundidee hinter dem Beschneiden besteht darin, dass tiefe neuronale Netze häufig „überparametrisiert“ sind. Das bedeutet, dass sie deutlich mehr Gewichte und Bias-Terme enthalten, als zur Lösung eines bestimmten Problems unbedingt erforderlich sind. Während des Trainings lernt das Modell eine große Anzahl von Verbindungen, aber nicht alle tragen gleichermaßen zur endgültigen Ausgabe bei. Algorithmen zum Beschneiden analysieren das trainierte Modell, um diese redundanten oder nicht aussagekräftigen Verbindungen zu identifizieren – typischerweise solche mit Gewichten nahe null – und sie zu entfernen.
Der Lebenszyklus eines beschnittenen Modells umfasst im Allgemeinen die folgenden Schritte:
-
Training: Ein großes Modell wird bis zur Konvergenz trainiert, um komplexe Merkmale zu erfassen.
-
Beschneiden: Parameter mit geringer Bedeutung werden auf null gesetzt oder physisch aus der Netzwerkstruktur entfernt.
-
Feinabstimmung: Das Modell durchläuft eine weitere Runde der Feinabstimmung, damit sich die verbleibenden Parameter anpassen und ein während der Beschneidungsphase entstandener Verlust an Genauigkeit ausgeglichen werden kann.
Diese Methodik wird häufig mit der Lottery-Ticket-Hypothese in Verbindung gebracht. Sie besagt, dass dichte Netze kleinere, isolierte Teilnetze (Gewinnertickets) enthalten, die eine vergleichbare Genauigkeit wie das ursprüngliche Modell erreichen können, wenn sie isoliert trainiert werden.
Arten von Beschneidungsstrategien#
Methoden zum Beschneiden werden im Allgemeinen anhand der Struktur der entfernten Komponenten kategorisiert.
- Unstrukturiertes Beschneiden: Bei diesem Ansatz werden einzelne Gewichte an beliebigen Stellen im Modell anhand eines Schwellenwerts (z. B. der Magnitude) entfernt. Zwar wird dadurch die Anzahl der Parameter effektiv reduziert, doch entstehen dabei dünn besetzte Matrizen, die von Standardhardware nur schwer effizient verarbeitet werden können. Ohne spezielle Software oder Hardwarebeschleuniger führt unstrukturiertes Beschneiden möglicherweise nicht zu wesentlichen Geschwindigkeitssteigerungen.
- Strukturiertes Beschneiden: Bei dieser Methode werden vollständige geometrische Strukturen wie Kanäle, Filter oder Schichten innerhalb eines konvolutionalen neuronalen Netzes (CNN) entfernt. Da die dichte Matrixstruktur erhalten bleibt, ist das beschnittene Modell weiterhin mit standardmäßiger GPU- und CPU-Hardware kompatibel. Das führt zu direkten Verbesserungen bei Inferenzlatenz und Durchsatz.
Anwendungen in der Praxis#
Das Beschneiden ist ein entscheidender Wegbereiter für künstliche Intelligenz am Netzwerkrand, da es den Betrieb anspruchsvoller Modelle in Umgebungen ermöglicht, in denen keine Cloud-Verbindung verfügbar oder diese zu langsam ist.
- Mobile Objekterkennung: Anwendungen auf Mobilgeräten, etwa für die Echtzeitübersetzung von Sprache oder erweiterte Realität, nutzen beschnittene Modelle, um die Akkulaufzeit zu verlängern und die Speichernutzung zu reduzieren. Optimierte Architekturen wie YOLO26 werden für diese Aufgaben häufig als Grundlage bevorzugt, da sie von Haus aus besonders effizient sind.
- Automotive Sicherheit: Selbstfahrende Autos und autonome Fahrzeuge erfordern Entscheidungen innerhalb von Sekundenbruchteilen. Beschnittene Modelle ermöglichen es den Bordcomputern, hochauflösende Kamerabilder zur Erkennung von Fußgängern zu verarbeiten, ohne die Latenz, die durch die Übertragung der Daten an einen Server entsteht.
- Industrielles IoT: In der Fertigung verwenden Systeme zur visuellen Inspektion an Montagelinien kompakte Modelle, um Fehler zu erkennen. Durch das Beschneiden können diese Systeme auf kostengünstigen Mikrocontrollern statt in teuren Serverräumen ausgeführt werden.
Beschneiden im Vergleich zu verwandten Optimierungstechniken#
Obwohl das Beschneiden von Modellen ein leistungsfähiges Werkzeug ist, wird es häufig mit anderen Techniken zur Modelloptimierung verwechselt oder gemeinsam mit ihnen eingesetzt.
- Beschneiden im Vergleich zur Quantisierung: Beim Beschneiden wird die Anzahl der Parameter (Verbindungen) im Modell reduziert. Im Gegensatz dazu verringert die Quantisierung von Modellen die Genauigkeit dieser Parameter, beispielsweise indem 32-Bit-Gleitkommazahlen in 8-Bit-Ganzzahlen umgewandelt werden. Beide Verfahren werden häufig kombiniert, um die Effizienz bei der Bereitstellung von Modellen zu maximieren.
- Beschneiden im Vergleich zur Wissensdestillation: Beim Beschneiden wird das ursprüngliche Modell verändert, indem Teile daraus entfernt werden. Bei der Wissensdestillation wird ein vollständig neues, kleineres „Schüler“-Modell trainiert, das das Verhalten eines größeren „Lehrer“-Modells nachahmt.
Implementierungsbeispiel#
Das folgende Python-Beispiel zeigt, wie sich mithilfe von PyTorch unstrukturiertes Beschneiden auf eine konvolutionale Schicht anwenden lässt. Dies ist ein üblicher Schritt, bevor Modelle in optimierte Formate wie ONNX exportiert werden.
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 Nutzer, die den gesamten Lebenszyklus ihrer Datensätze und Modelle verwalten möchten – einschließlich Training, Evaluierung und Bereitstellung –, bietet die Ultralytics Platform eine übersichtliche Benutzeroberfläche. Sie vereinfacht die Erstellung hochoptimierter Modelle wie YOLO26 sowie deren Export in hardwarefreundliche Formate wie TensorRT oder CoreML.









