Optimieren Sie KI-Modelle durch Pruning – reduzieren Sie die Komplexität, steigern Sie die Effizienz und stellen Sie sie schneller auf Edge-Geräten bereit, ohne die Leistung zu beeinträchtigen.
Pruning ist eine wichtige Technik beim maschinellen Lernens, das darauf abzielt, die Größe und Rechenkomplexität eines neuronalen Netzes (NN) durch Entfernen unnötiger Parameter. Ähnlich wie beim Beschneiden toter Äste eines Baumes, um ein gesundes Wachstum zu fördern, werden beim Pruning von Modellen Gewichte oder Verbindungen identifiziert und und eliminiert Modellgewichte oder Verbindungen die nur minimal zum Ergebnis des Systems beitragen. Das Hauptziel besteht darin, ein spärliches Modell zu erstellen, das eine hohe Genauigkeit beibehält Genauigkeit beibehält und gleichzeitig die Speichernutzung und Latenzzeit der Schlussfolgerungen zu verbessern. Dieser Prozess ist wesentlich für den Einsatz anspruchsvoller Architekturen, wie z. B. Ultralytics YOLO11auf ressourcenbeschränkten Geräten mit begrenzter Speicher- und Verarbeitungsleistung begrenzt sind.
Der Prozess beginnt in der Regel mit einem vortrainierten Modell. Algorithmen analysieren das Netz, um Parameter zu finden - oft die Werte nahe Null haben oder nur einen begrenzten Einfluss auf die endgültige Vorhersage haben. Diese Parameter werden dann entfernt oder "auf Null gesetzt". Da das Entfernen von Verbindungen die Leistung vorübergehend beeinträchtigen kann, wird das Modell in der Regel einem Prozess unterzogen, der Feinabstimmung genannt wird, bei dem in dem es einige Epochen lang neu trainiert wird, damit die verbleibenden Gewichte anzupassen und die verlorene Genauigkeit wiederherzustellen.
Es gibt zwei Hauptkategorien von Beschneidungen:
Es ist wichtig, das Pruning von anderen Modelloptimierungsstrategien zu unterscheiden, obwohl sie oft zusammen verwendet werden:
Pruning spielt eine wichtige Rolle bei der Ermöglichung von Edge AI in verschiedenen Branchen:
Während Ultralytics YOLO Modelle von Haus aus stark optimiert sind, können Entwickler mit Hilfe von PyTorch mit dem Pruning experimentieren. Das folgende Beispiel zeigt, wie man unstrukturiertes Pruning auf eine standardmäßige Faltungsschicht anwendet, wie sie in Computer-Vision-Modellen zu finden ist.
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
Künftige Weiterentwicklungen der effizienten Architektur, wie das kommende YOLO26, zielen darauf ab, diese Optimierungsprinzipien zu integrieren, um Modelle zu schaffen, die von vornherein kleiner, schneller und genauer sind.