Page cover

Pruning

Pruning bezieht sich auf den Prozess der Entfernung von redundanten oder weniger wichtigen Parametern in einem neuronalen Netz, was zu einer kompakteren Modellgröße führt. Gewichtspruning entfernt individuelle Gewichte, während strukturiertes Pruning bspw. ganze Neuronen entfernt. Diese Techniken tragen dazu bei, die Leistung und Effizienz von TinyML-Modellen zu verbessern, indem sie Overhead reduzieren und die Inferenzgeschwindigkeit erhöhen. In diesem Kapitel werden die Grundlagen von Gewichtspruning und strukturiertem Pruning vorgestellt. Im nachfolgenden Abschnitt werden die allgemeinen Vor- und Nachteile von Pruning beschrieben.

Vorteile:

  • Kompaktere Modellgröße: Pruning führt zu einer Reduzierung der Modellgröße, was für TinyML-Anwendungen mit begrenzten Ressourcen entscheidend ist.

  • Effizientere lokale Ausführung: Durch die Reduzierung von redundanten oder weniger wichtigen Parametern wird die Effizienz bei der lokalen Ausführung auf eingebetteten Geräten verbessert.

  • Beschleunigte Inferenzgeschwindigkeit: Pruning-Techniken tragen dazu bei, die Inferenzgeschwindigkeit zu erhöhen, indem sie Overhead reduzieren.

Nachteile:

  • Potenzieller Genauigkeitsverlust: Das Entfernen von Parametern kann zu einem Verlust an Modellgenauigkeit führen.

  • Komplexität der Implementierung: Die Implementierung von Pruning-Techniken erfordert zusätzlichen Implementierungsaufwand und eine sorgfältige Auswahl der Pruningparameter.

  • Sensibilität gegenüber Auswahlkriterien: Die Auswahl der Pruningparameter und -methoden kann einen signifikanten Einfluss auf die Leistung des Modells haben.

Gewichtspruning (engl. weight pruning)

Im Folgenden wird der Prozess für das Gewichtspruning beschrieben:

  1. Training eines Basis-Modells.

  2. Berechnung der Wichtigkeit:

    • Bestimmung der Wichtigkeit jedes Gewichts im Netz, oft anhand der Gewichtswerte.

  3. Kriterium für Pruning:

    • Festlegung eines Schwellenwerts oder Prozentsatzes, um zu entscheiden, welche Gewichte entfernt werden.

    • Iterative Beschränkung anhand eines Kriteriums: Gewichte werden schrittweise entfernt, während das Modell weiter trainiert wird, basierend auf einem vordefinierten Kriterium wie Gewichtsgröße oder Aktivierungshäufigkeit.

    • Sensitivitätsbasiertes Pruning: Gewichte werden basierend auf ihrem Beitrag zur Gesamtleistung des Modells entfernt.

  4. Pruning:

    • Entfernung von Gewichten, die das Kriterium erfüllen. In Abbildung 44 wird das Vorher und Nachher durch das Pruning visualisiert. Fehlende Pfeile sind Gewichte, welche als unbedeutend erkannt und entfernt wurden.

      Abbildung 44: Beim Gewichtspruning wird das Netz verkleinert, in dem redundante Gewichte entfernt werden
  5. Fine-tuning:

    • Möglichkeit zur Wiederherstellung der Modellleistung durch erneutes Training des beschnittenen Netzes.

  6. Bewertung und Analyse:

    • Auswertung des geprunten Netzes auf dem Validierungs- oder Testdatensatz, um Auswirkungen auf Modellgröße und -effizienz zu bewerten und mit dem Basis-Modell zu vergleichen.

In diesem Code wird das Modell durch Gewichtspruning optimiert, wodurch bestimmte Gewichte während des Trainings entfernt werden, um die Effizienz zu verbessern.

Strukturiertes Pruning (engl. structured pruning)

Der Prozess des sturkturierten Prunings funktioniert prinzipiell wie der des Gewichtsprunings. Jedoch werden hier nicht einzelne Gewichte entfernt (Gewichte werden auf “0” gesetzt), sondern ganze Neuronen und deren dazugehörigen Gewichte. Durch das direkte Löschen von Filtern und Neuronen wird somit der Speicherbedarf reduziert. Dies kann bspw. mit dem Automatic-Structured-Pruning Toolarrow-up-right umgesetzt werden. Das Tool bietet zwei Ansätze: die Festlegung eines Faktors zum Entfernen für Neuronen oder Filter, sowie die Definition einer Mindestgenauigkeit, die nach dem Pruning noch erreicht werden soll. In Abbildung 45 wird das strukturierte Pruning schematisch dargestellt.

Abbildung 45: Beim strukturierten Pruning wird das Netz verkleinert, in dem redundante Neuronen entfernt werden

Mehr erfahren: ArXiv-He&Xiao/Structured Pruning for Deep Convolutional Neural Networks: A surveyarrow-up-right, Medium/Neural Network Pruning 101arrow-up-right, Datature/What is Model Pruning?arrow-up-right

Dieser Code implementiert strukturiertes Pruning (von: https://github.com/Hahn-Schickard/Automatic-Structured-Pruningarrow-up-right), das dazu dient, redundante oder unwichtige Neuronen und Filter aus dem Modell zu entfernen, was letztendlich zu einer Reduzierung der Modellgröße und einer verbesserten Effizienz führt.

Last updated