Schwerpunkte

Mit Pruning zum Erfolg

KI-Modelle auf SoCs implementieren

14. September 2021, 11:30 Uhr   |  Von Dr. Thomas Richter und André Köhler

KI-Modelle auf SoCs implementieren
© shutterstock.com

KI-Modelle auf Embedded-Systemen zu implementieren, ist nicht immer einfach. Helfen können hierbei standardisierte Workflows. Solectrix hat einen solchen Workflow auf einem MPSoc von Xilinx getestet.

Der Workflow zum Implementieren eines Modells der künstlichen Intelligenz (KI) auf einem Embedded-System wurde beim Fürther Unternehmen Solectrix entworfen und experimentell getestet, einschließlich des ordnungsgemäßen Netz-Handlings und des Transfers auf die gewählte Zielhardware. Außerdem wird das Lösungsbeispiel für eine Aufgabe zur Objekterkennung gezeigt, die mittels der Anwendung »Vitis AI« auf MPSoCs von Xilinx läuft.

Unabhängig von der letztendlichen Zielhardware wie FPGA oder CPU sind die verfügbaren Ressourcen typischerweise begrenzt. Aus dem Grund ist ein optimiertes Architektur- und Netzdesign nötig, will man Ansätze auf Basis von neuronalen Netzen in Embedded-Projekte integrieren. Experimentelle Ergebnisse zeigen die Funktion des besprochenen KI-Ökosystems und die Folgen der Optimierungstechniken, zum Beispiel vorsichtiges Modell-Shaping und -Pruning.

Komprimieren des neuronalen Netzes

Convolutional Neural Networks (CNNs) – also neuronale Netze – haben viele Bereiche revolutioniert, darunter Embedded Vision oder maschinelles Lernen. Hierzu zählen zum Beispiel Segmentierungs-, Klassifikations- oder Erkennungsaufgaben. Das Abstimmen neuronaler Netze auf die bestmögliche Genauigkeit macht moderne CNNs tief, komplex und vom Rechenaufwand her teuer. Entsprechend ist das Einsetzen von modernen CNNs auf ressourcentechnisch eingeschränkten Plattformen wie Mobiltelefonen und Embedded-Geräten schwer. In der Fachliteratur diskutieren Experten intensiv verschiedene Ansätze für das Komprimieren von neuronalen Netzstrukturen und ihr Beschleunigen auf dem Zielgerät.

Wo die Quantisierung die benötigte Bit-Tiefe begrenzt, versuchen Pruning-Methoden, unwichtige Gewichtungen und Filter zu identifizieren und zu entfernen. Zusätzlich können mathematische Konzepte wie der »Winograd«-Algorithmus oder Low-Rank-Matrix-Faktorisierung zum Einsatz kommen. Sie sollen die Anwendung weiter beschleunigen. Neben den genannten Methoden spielt die Auswahl der richtigen Netzstruktur eine große Rolle beim Design effizienter und echtzeitfähiger neuronaler Netze.

Pruning
© Solectrix

Bild 1. Modell vor (links) und nach dem Pruning (rechts).

Netz-Pruning

Netz-Pruning ist eine Möglichkeit, neuronale Netze weiter zu komprimieren. Typischerweise geschieht das durch Suchen, Finden und Entfernen unwichtiger Gewichtungen oder kompletter Feature-Kanäle. Anschließend trainiert der Entwickler das Modell mehrere Epochen lang neu, um den vom Pruning verursachten Genauigkeitsabfall zu kompensieren.

Bild 1 zeigt ein Modell vor (links) und nach dem Pruning (rechts). Wie man sieht, wurde das mittlere Element entfernt. Infolgedessen sind alle Input- und Output-Verbindungen des entfernten Elements ebenfalls zu löschen. Also kann das Kanal-Pruning innerhalb einer spezifischen Schicht ebenso darauffolgende Schichten beeinflussen.

Bild 2 vergleicht verschiedene Pruning-Strategien und die daraus resultierende Ausdünnung. Ist die Ausdünnung im Falle des Gewichtungs-Prunings (links) sehr unregelmäßig, ist sie viel regelmäßiger und organisierter im Fall des Filter-Prunings (rechts). Hieraus ergibt sich, dass das Pruning von einzelnen Gewichtungen oft in noch langsameren Inferenzmodellen resultiert, obwohl sich die Anzahl an Gewichtungen reduziert. Entwickler lösen das, indem sie die Zielhardware nicht auf unregelmäßig ausgedünnte Strukturen optimieren.

Pruning
© Solectrix

Bild 2. Von links nach rechts: Pruning mit zunehmender Regelmäßigkeit.

In »Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures« [1] schlagen die Autoren den durchschnittlichen Prozentsatz an Null-Aktivierungen (APoZ, average percentage of zero activations) als Pruning-Kriterium vor. So definiert sich APoZ als die Messung des Prozentsatzes von Null-Aktivierungen eines Neurons nach dem ReLU-Mapping. Hierfür sei Oc(i) der Output des c-ten Kanals in der i-ten Schicht. Sein APoZ-Wert wird geschrieben als

A P o Z left parenthesis O subscript c to the power of left parenthesis i right parenthesis end exponent right parenthesis equals fraction numerator sum subscript k superscript N sum subscript j superscript M f left parenthesis O subscript c comma j end subscript to the power of left parenthesis i right parenthesis end exponent left parenthesis k right parenthesis equals equals 0 right parenthesis over denominator M asterisk times N end fraction

wobei f left parenthesis times right parenthesis equals 0 wenn falsch und f left parenthesis times right parenthesis equals 1 wenn wahr. Weiterhin bezeichnet M die Dimension der Output-Feature-Map und N bezeichnet die Anzahl der verwendeten Stichproben zum Messen der Aktivierungen.

Somit zählt das APoZ-Kriterum wie oft ein Neuron oder ein Filter nach Aktivierung Null ist. Weil sich der Wert über die Output-Größe und die Anzahl an Stichproben normalisiert, ist ein einfacher Schwellenwert zwischen 0 und 1 zu verwenden, um den Pruning-Prozess zu steuern. Hierbei ist zu beachten, dass ein höherer Grenzwert dazu führt, dass weniger Gewichtungen oder Filter entfernt werden.

Die Wahl einer spezifischen Pruning-Methode sollte immer von der finalen Zielplattform oder den gegebenen Projektanforderungen abhängen. Somit ist es beim Optimieren von KI-Modellen in Embedded-Systemen essenziell, die volle Kontrolle über den Netz-Pruning-Prozess zu haben.

KI-Ökosystem

Mit dem KI-Ökosystem von Solectrix ist ein komplettes Framework gegeben. Es deckt alle Schritte – vom Generieren des Modells, über das Training und Netz-Pruning bis zum Modell-Deployment – ab.

Es gibt zwar viele infrage kommende Deep-Learning-Frameworks, jedoch soll im Artikel lediglich auf das voraussichtlich zukunftssicherste – »Tensorflow/Keras« – eingegangen werden. So umfasst das KI-Ökosystem das eigentliche Framework und erlaubt das funktionelle Erweitern mit eigenen Schichten, Modellen, wiederverwendbaren Funktionen und Tools. Es wächst mit neuen Anwendungsfällen und Applikationen und bleibt ein Standard-Workflow, wenn es um Modellgenerierung, Datensatz-Compilation, Training, optionales Pruning und finales Modell-Deployment geht.

Workflow für das »ZCU102 Evaluation Kit« von Xilinx

Als Zielhardware für ein Modellbeispiel wurde das ZCU102 Evaluation Kit von Xilinx ausgewählt, da es ein leistungsstarkes MPSoC enthält, das mehrere DPU-Cores aufnehmen kann. Im Folgenden wird der Workflow grob erläutert.

Nach dem Training und dem optionalen Pruning wird das Netz »de­ployed«, sprich: Alle Elemente, die der Entwickler lediglich für das Training, nicht jedoch für die spätere Netz-Inferenz benötigt, entfernt er. So resultiert das Deployment in einem Tensorflow-»Frozen Graph«-Modell. Als Nächstes wird der Frozen Graph in die »Vitis AI (VAI) Tensorflow Translation Tools« eingespeist. Über ein Inspektionskommando ist es möglich, die Topologie des Netzes zu verifizieren, um zu gewährleisten, dass der Xilinx DPU Core alle Operatoren unterstützt. Anschließend ist das Netz für die 8-bit-Repräsentation zu quantisieren sowie der DPU-IP-Core zu konfigurieren und ins FPGA-Image zu implementieren.

Nach dem Quantisieren der deployten Netzstruktur kommt der Vitis-AI-Compiler zum Einsatz. Mit ihm ist das Format des Tensorflow-Netzes für den DPU-Core zu übersetzen. Nach dem Kompilieren der Netzstruktur kann der Entwickler die gewünschte Applikation innerhalb von Vitis implementieren und das kompilierte Netz in die Applikation integrieren. Mittels eines geeigneten »Petalinux«-Betriebssystems ist die Applikation letztendlich Cross-kompiliert für die Zielhardware.

Seite 1 von 3

1. KI-Modelle auf SoCs implementieren
2. Versuchsergebnisse
3. Performance der DPU

Auf Facebook teilen Auf Twitter teilen Auf Linkedin teilen Via Mail teilen

Das könnte Sie auch interessieren

Verwandte Artikel

Solectrix GmbH