KI und FPGA: Gemeinsam stark? Hyperparameter-Optimierung für Deep Learning mit FPGAs

Von Sebastian Gerstl 9 min Lesedauer

Anbieter zum Thema

Der Einsatz neuronaler Netze in eingebetteten Systemen ist aufgrund von Energie-, Ressourcen- und Laufzeitanforderungen herausfordernd. FPGas bieten durch ihre Konfigurierbarkeit mehr Freiheiten als GPUs, ohne mehr Energie zu benötigen – gezielte Optimierung vorausgesetzt.

(Bild:  frei lizenziert /  Pixabay)
(Bild: frei lizenziert / Pixabay)

Neuronale Netze in Embedded-Systeme zu implementieren ist aufgrund von Einschränkungen wie Energielimitierungen, Verfügbarkeit von Rechenressourcen und Anforderungen an die Laufzeit eine Herausforderung. So muss etwa für eine energieautarke und KI-gestützte Sensorplattform zur lokalen Datenverarbeitung ein Batteriebetrieb gewährleistet sein und das System in Echtzeit arbeiten. Zum einen hängt die Qualität und Effizienz der Inferenz von der Aufgabe und von dem verwendeten neuronalen Netz ab, zum anderen spielt auch die verwendete Hardware eine wesentliche Rolle.

FPGAs sind als Hardware-Ansatz hier interessant, da durch ihre Konfigurierbarkeit die Hardware zur Berechnung der Inferenz speziell an die Anforderungen angepasst werden kann. Flexible Hardware ist zum Beispiel mit Mikrocontrollern nicht gegeben und kann mit FPGAs als weiterer Freiheitsgrad in der Optimierung neuronaler Netze auf eingebetteten Systemen benutzt werden. Dieser zusätzliche Freiheitsgrad bringt aber eine Kreuzbeziehung mit sich: Welche Modellkonfigurationen funktionieren am besten mit welcher Hardwareimplementierung? Das ist nicht trivial, da für die spezielle Anwendungen mit den einhergehenden Anforderungen jeweils die beste individuelle Hyperparameterkonfiguration gefunden werden sollte und die Lösung nur schwer verallgemeinert werden kann, falls sich Rahmenbedingungen ändern sollten.

Bildergalerie

Daher ist es vorteilhaft, die einzelnen Komponenten des Systems aufeinander abzustimmen. Mit einem Verfahren auf Basis von Bayes'scher Optimierung, das sowohl die Parametrisierung des neuronalen Netzes als auch die Flexibilität des FPGAs im Suchraum berücksichtigt, können hochwertige Kompromisse zwischen den konkurrierenden Optimierungszielen wie hohe Genauigkeit und niedriger Energieverbrauch zur Verbesserung der Inferenz erzielt werden. Durch die gleichzeitige Kombination von Software- und Hardwareoptimierung können so bessere Hyperparameterkonfigurationen bestimmt werden.

FPGAs besitzen einige Vorteile in Bezug auf Deep Learning. Die Bausteine sind oft direkt mit Sensoren verbunden oder an Schnittstellen platziert, weshalb sie Daten mit neuronalen Netzen schon dort verarbeiten können, wo sie entstehen. Mit FPGAs kann hohe Parallelität realisiert werden im Vergleich zu klassischen Prozessoren, was bei Deep Learning ausschlaggebend ist. Ferner zeichnen sie sich durch geringere Redundanz aus, was sie schneller und effizienter macht als allgemeine Hardware, da spezielle Funktionen implementiert werden können. Und speziell im Vergleich zu ASICs sind mit FPGAs schnellere und kostengünstigere Hardwareanpassungen möglich.

FPGAs sind durch die mögliche Hardware-Flexibilität zwar meist langsamer als GPUs; aber sie können durch Spezialisierung in der Implementierung und Parallelität vergleichbare Ergebnisse erzielen. Oft schwerwiegender: FPGAs können mit den klassischen Deep Learning Frameworks nicht direkt angesteuert werden.

Frameworks für FPGA- Inferenz

Es gibt aber Frameworks, die genau das adressieren. Diese automatisieren die Implementierung des FPGAs und generieren eine optimierte Beschreibung der Modelle zur Ausführung der Inferenz auf dem FPGA. Die Modelle werden typischerweise auf einer hohen Ebene definiert und z.B. mit PyTorch trainiert. Beispiele für solche Tools sind Vitis AI und FPGA AI Suite. Die Implementierung der Hardware kann durch Konfigurationen beeinflusst werden, die abhängig von der Modellbeschreibung automatisch oder manuell eingestellt werden. Die Hardwarekonfiguration ist Grundlage für die Implementierung des FPGAs, worauf die Inferenz ausgeführt wird. Die automatische Generierung einer passenden Hardwarebeschreibung aus der Modellbeschreibung heraus scheint zunächst ansprechend, hat aber mehrere Nachteile:

  • Die Ausführung der Inferenz auf der Hardware muss abhängig vom jeweiligen Modell simuliert werden, um Aussagen über Rechenzeit und Energieverbrauch zu treffen. Das setzt genaues Wissen über Hardware und Backend des Frameworks voraus.
  • Eine akkurate Modellierung des Energieverbrauchs ist schwierig.
  • Nebeneffekte wie variable Latenz durch Speicherzugriffe können nur sehr schwer modelliert werden.
  • Nicht alle Frameworks ermöglichen eine automatische Konfiguration.

Daraus folgt, dass für eine Optimierung der Hyperparameter des Modells und der Hardware reale Experimente nötig sind, um mit konkreten Messwerten optimale Konfigurationen zu bestimmen. Die folgenden Experimente wurden mit dem Vitis AI Framework repräsentativ durchgeführt, was keine Modellsimulation unterstützt. Als Datensatz wurde Cifar-10 ausgewählt.

Analyse der Hardware-Plattform

In Vitis AI wird eine konfigurierbare Beschleunigerarchitektur (Deep Learning Processor Unit: DPU) auf einem Zynq UltraScale+ MPSoC implementiert und das trainierte Modell in Makroinstruktionen und Daten für diesen Beschleuniger exportiert. Die Plattform implementiert eine CPU und einen FPGA, die miteinander verbunden sind. Das exportierte Modell wird mit einer API vom CPU-Teil der Plattform aus auf dem FPGA-Teil mit den jeweiligen Inputs ausgeführt. Die Konfigurationen beeinflussen die für den Beschleuniger beanspruchten Rechen- und Speicherressourcen und die Performanz des Beschleunigers. Die verschiedenen Architekturen unterscheiden sich in den maximal möglichen Operationen pro Takt, was sich auch in der Namensgebung widerspiegelt.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Um einen besseren Vergleich zwischen verschiedenen Systemen herzustellen, wird die Größe der Energiekosten verwendet, die den energetischen Preis einer Inferenz abbildet. Werden die verschiedenen Beschleunigerarchitekturen bei der Inferenz von ResNet-50 für Cifar-10 verglichen, ist zu erkennen, dass die Energiekosten nicht stetig mit steigender Anzahl an maximal möglichen Operationen abnehmen (Bild 1). Dies hängt mit der tatsächlichen internen Parametrisierung der Implementierung ab, die Parallelitäten und Speicherkapazitäten skaliert. Mit höherer nominaler Leistungsfähigkeit steigen auch der tatsächliche Energieverbrauch und die Größe der Implementierung, was in Anwendungsszenarien ein Ausschlusskriterium sein kann. Eine vorherige Auswahl der Architektur ist daher nicht trivial.

Des Weiteren wurden die Modelle ResNet-50, VGG16 und MobileNetV2 für Cifar-10 jeweils auf der FPGA-Plattform und auf einer GPU ausgeführt. Sowohl die Inferenzgeschwindigkeit als auch die Energiekosten auf der jeweiligen Hardware variieren stark zwischen den verschiedenen Modellen. Die Inferenzgeschwindigkeit der GPU war in allen Fällen dem der FPGA-Plattform deutlich überlegen. Die FPGA-Plattform war nur bei MobileNetV2 energetisch effizienter als die GPU. Die Architektur und Parametrisierung des Modells beeinflussen wie die Hardwarekonfiguration ebenfalls stark die Inferenz.

Daraus ergibt sich, dass die Implementierung der Hardware und das verwendete neuronale Netz erheblichen Einfluss auf die Qualität der Inferenz haben. Um den besten Kompromiss aus beiden Welten zu erhalten, muss ein Optimierungsproblem gelöst werden.

Optimierung der Hyperparameter

Zum einen entstehen durch die neue Ebene der Hardwarekonfiguration neue und schwer interpretierbare Abhängigkeiten, zum anderen sind Evaluierungen am echten System zeitlich teuer, da die Modelle trainiert und für den FPGA umgewandelt werden müssen, der FPGA selbst aber auch gebaut werden muss. Daher sollte eine Optimierung gewählt werden, die in einer überschaubaren Anzahl an Iterationen brauchbare Ergebnisse erzielen kann, indem sie aus den vorherigen Evaluationen am System qualitativ hochwertige Richtungsentscheidungen trifft. Außerdem sollte die Optimierung mehrere konkurrierende Designziele umschließen können, damit daraus ein guter Kompromiss gefunden werden kann. Die Maximierung der Genauigkeit und der Inferenzgeschwindigkeit sowie die Minimierung des Energieverbrauchs wurden hier berücksichtigt. Der Suchraum der verschiedenen Hyperparameter erstreckt sich auf die Architektur und Parametrisierung eines Convolutional Neural Network und den verschiedenen DPU-Architekturen, die von Vitis AI vorgegeben werden. Die Optimierung gibt eine Hyperparameterkonfiguration vor, die sowohl das neuronale Netzwerk, die Kompilierung des Modellgraphen und die Implementierung der Hardware beeinflusst (Bild 2). Das Modell wird erst generiert, trainiert und exportiert. Danach wird das Modell für die Hardware kompiliert und die Hardwareimplementierung gebaut. Zum Schluss wird beides auf der FPGA-Plattform integriert und die Inferenz ausgeführt. Die Messwerte der Inferenz und die ausgewählte Hyperparameterkonfiguration sind Basis für den nächsten Optimierungsschritt.

Für die genannten Anforderungen bietet sich die Bayes'sche Optimierung an, da die Auswahl der nächsten zu untersuchenden Konfiguration auf allen vergangenen Messungen beruht, aber das Vorgehen an sich auch weniger parametrisiert und zufällig ist im Vergleich zu anderen Methoden wie generische Algorithmen. In Bayes'scher Optimierung wird ein probabilistisches Modell anhand der vergangenen Messbeobachtung erstellt, um die unbekannte Systemfunktion zu beschreiben. Dieses Modell gibt Schätzungen über die verschiedenen Messpunkte der Funktion an, aber auch über deren Unsicherheiten. Die Evaluierung dieses Modells ist günstiger als Konfigurationen am realen System auszuprobieren. Dieses Modell wird nach jedem Messdurchgang aktualisiert und daran eine Akquisitionsfunktion optimiert, welche die beste Konfiguration bestimmt, die als nächste ausgewertet werden soll. Nachdem eine Initialkonfiguration ausgewählt wurde, werden so lange Iterationen durchgeführt, bis genügend qualitativ hochwertige Ergebnisse erzielt sind. In jeder Iteration wird eine neue Konfiguration bestimmt, mit der ein neuronales Netz generiert und die Hardware implementiert wird.

Experimente und Ergebnisse

Es wurde ein konfigurierbares Modell für Cifar-10 erstellt mit einer variablen Anzahl an Convolutions und deren Größe, mit unterschiedlicher Positionierung von Pooling-Operatoren und der Möglichkeit zur Verwendung von residualen Verbindungen bzw. effizienteren depthwise-separable Convolutions. Auf Hardwareseite wurden die verschiedenen DPU-Architekturen als Hyperparameter festgelegt.

Der Optimierungsalgorithmus wurde 100-mal iteriert (Bilder 3 und 4). Jeder Punkt entspricht einer bestimmten Konfiguration, die in Bezug auf die Designziele unterschiedlich performant ist. Es ergibt sich in den Plots eine Grenze an Konfigurationen, die besonders gut zwischen den Entwicklungszielen abwägen. Diese Grenze wird Pareto-Front genannt. Konfigurationen auf der Pareto-Front sind die besten Kompromisse mit jeweils unterschiedlicher Gewichtung der Entwicklungsziele. Es sind nicht alle Konfigurationen der Pareto-Front relevant, da die Genauigkeit nur in einem sinnvollen Maß zur Verbesserung des Durchsatzes bzw. des Energieverbrauchs reduziert werden kann. Folglich ist nur der Bereich hoher Genauigkeit interessant. Es wurden auch die Ergebnisse der Bayes’schen Optimierung mit einer Random Search im selben Suchraum verglichen. Die Bayes’sche Optimierung untersucht häufiger Konfigurationen, die näher an der Pareto-Front liegen, die auch vergleichsweise besser entwickelt ist. Random Search erzielt schlechtere Ergebnisse in Bezug auf die Geschwindigkeit und Energieeffizienz der Konfigurationen mit hoher Genauigkeit als Bayes’sche Optimierung, wenn die Extrema und Durchschnittswerte betrachtet werden.

Das ResNet-50-Modell für Cifar-10 wurde jeweils auf der FPGA-Plattform sowie auf einer GPU ausgeführt. Darüber hinaus wurden die Konfigurationen hoher Genauigkeit und jeweils besten Geschwindigkeit bzw. Energieverbrauch aus dem Ergebnis der Optimierungsmethode miteinander verglichen (siehe Tabelle): Auf der GPU ist demnach nur die Modellkonfiguration relevant. Es ist zu erkennen, dass der FPGA generell langsamer ist und weniger Leistung verbraucht als die GPU. In Bezug auf mögliche Anwendungen in eingebetteten Systemen wäre dies durchaus akzeptabel und gewollt. Für ResNet-50, das nicht für den FPGA optimiert wurde, ist klar zu erkennen, dass die GPU bessere Ergebnisse erzielt als die FPGA-Plattform. Für die optimierten Konfigurationen ist der Unterschied wesentlich geringer. Die Inferenzen sind schneller und die Energiekosten geringer als für das Res-Net-50 Modell. Beim schnellsten Modell konnte die GPU bei den Energiekosten sogar von der FPGA-Plattform überholt werden.

In diesem Kontext zeigt es sich, dass die Modelle generell optimiert wurden, aber die größeren Verbesserungen klar beim FPGA zum Tragen kommen, da die Modelle speziell für die Hardware optimiert wurden und auch die Hardware für diese angepasst wurde. Es hat sich gezeigt, dass der FPGA eine ähnliche Energieeffizienz erreichen kann wie eine GPU, dementsprechend eine optimierte Hyperparameterkonfiguration auf einem FPGA relativ gesehen mindestens so leistungseffizient wie eine GPU sein kann.

Mit der vorgestellten Methode ist es demnach möglich, gleichzeitig die Hyperparameter der Modellarchitektur und der Hardware zu optimieren, um die Qualität und Effizienz FPGA-beschleunigter Deep Learning Inferenzen zu verbessern. Die Hardwarekonfigurationen beeinflussen die Leistung und Effizienz der Inferenz, weshalb es sinnvoll ist, die Hardwarekonfiguration in den Suchraum zu integrieren. Die vorgestellte Methode ist unabhängig vom verwendeten Framework und der Hardware und kann flexibel integriert werden, wenn die Konfigurationen der Plattform und des Frameworks von außen eingestellt werden können. Die Hyperparameter können aus der Modell-, Framework- oder Hardwareebene extrahiert werden und können sowohl diskret oder kontinuierlich sein.

Die Laufzeit einer Iteration ist wesentlich durch das Modelltraining und die Generierung der Hardwareimplementierung bestimmt, weshalb es sinnvoll ist, die Anzahl der Optimierungsiterationen zu minimieren. Bayes’sche Optimierung eignet sich wegen des fundierten Systemmodells, um die Konvergenzzeit zu reduzieren. Im Vergleich zu Methoden wie genetische Algorithmen, die auf Zufall basieren, sollte Bayes’sche Optimierung im Sinne der Laufzeit überlegen sein.

Die Ergebnisse können nicht auf andere Hardwareplattformen übertragen werden, weil die Optimierung nur für den Kontext des betrachteten Systems ausgeführt wurde. Deswegen ist es auch nur schwer möglich, die Ergebnisse in Vergleich zu vorherigen Arbeiten zu setzen, weil sich die Ausgangssituationen zu stark unterscheiden. Durch die Optimierung wird aber ein einheitliches Vorgehen definiert und es ermöglicht so einen Vergleich von verschiedenen Plattformen oder Modellen. (sg)

(ID:50569449)