Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

Pruning

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.

Mechanismen und Methodik

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:

  • Unstrukturiertes Beschneiden: Bei dieser Methode werden einzelne Gewichte unabhängig von ihrer Position auf der Grundlage ihrer Größe entfernt. Dadurch wird zwar die Gesamtzahl der Parameter effektiv reduziert, es entstehen jedoch unregelmäßige spärliche Matrizen, die von Standard- CPUs und GPUs ohne spezielle Software nur schwer effizient verarbeitet werden können.
  • Strukturiertes Pruning: Bei diesem Ansatz werden ganze geometrische Strukturen wie Neuronen, Kanäle oder Schichten innerhalb eines Convolutional Neural Network (CNN) entfernt. Durch die Beibehaltung der Matrixstruktur ist das strukturierte Pruning in hohem Maße mit Standard-Hardwarebeschleunigern kompatibel, was häufig zu sofortigen Geschwindigkeitssteigerungen bei der Echtzeit-Inferenz führt.

Anwendungsfälle in der Praxis

Das Beschneiden ist unverzichtbar, um Edge-KI in verschiedenen Branchen mit begrenzten Hardware-Ressourcen zu ermöglichen:

  1. Autonome Drohnen: Unbemannte Luftfahrzeuge, die für Such- und Rettungsaktionen eingesetzt werden, sind auf Computer Vision angewiesen, um sich in komplexen Umgebungen zurechtzufinden. Dank Pruned Object Detection-Modellen können diese Geräte Videodaten lokal in Echtzeit verarbeiten, wodurch die mit der Cloud-Kommunikation verbundenen Latenzprobleme vermieden werden .
  2. Mobile Gesundheitsversorgung: Handheld-Medizinprodukte für die Ultraschallanalyse nutzen beschnittene Modelle, um detect direkt auf dem Gerät detect . Dies gewährleistet den Schutz der Patientendaten und ermöglicht eine anspruchsvolle Diagnostik in abgelegenen Gebieten ohne Internetzugang.

Beispiel für die Umsetzung

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}%")

Beschneiden vs. verwandte Optimierungstechniken

Um ein Modell für den Einsatz effektiv zu optimieren , ist es hilfreich, das Pruning von anderen Strategien zu unterscheiden :

  • Modellquantisierung: Im Gegensatz zum Pruning, bei dem Verbindungen entfernt werden, reduziert die Quantisierung die Genauigkeit der Gewichte (z. B. durch Umwandlung von 32-Bit-Gleitkommazahlen in 8-Bit-Ganzzahlen). Beide Techniken können zusammen verwendet werden, um die Effizienz auf eingebetteten Systemen zu maximieren.
  • Wissensdestillation: Hierbei wird ein kleineres „Schüler”-Modell trainiert, um das Verhalten eines größeren „Lehrer”-Modells nachzuahmen . Beim Pruning wird das ursprüngliche Modell direkt modifiziert, während bei der Destillation eine neue, kompakte Architektur trainiert wird.

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.

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten