Page cover

Automatisiertes ML und neuronale Architektursuche

In diesem Artikel werden die Hauptfunktionen und Arbeitsweise des Tools AutoFlow vorgestellt. Wir werfen einen Blick auf die benutzerfreundliche grafische Benutzeroberfläche (GUI) des Tools, die automatisierte Generierung und Optimierung von ML-Modellen sowie die automatische Codegenerierung für verschiedene Zielplattformen. Das Tool ermöglicht es, ML-Modelle für eingebettete Geräte effizient zu trainieren, zu optimieren und zu implementieren. AutoFlow kombiniert AutoML, NAS und Modellkompression, um nicht nur die Entwicklungskosten und -zeiten zu reduzieren, sondern auch die Effizienz und Leistungsfähigkeit von ML-Modellen auf eingebetteten Systemen zu maximieren – eine wichtige Entwicklung, insbesondere für KMU.

Maschinelles Lernen auf Embedded Geräten - Herausforderungen und Lösungen

Die Welt des maschinellen Lernens (ML) erlebt eine rasante Entwicklung, vor allem im Bereich der eingebetteten Systeme. Hier stellt sich die Herausforderung, ML-Modelle effizient und effektiv auf Embedded Devices zu auszuführen. Diese Geräte haben spezifische Einschränkungen in Bezug auf Speicher, Ausführungsgeschwindigkeit der CPU und Energiebedarf, die berücksichtigt werden müssen. Für kleine und mittelständische Unternehmen (KMU) sind besonders die Effizienz, Kosten, Rechenzeit und der Energieverbrauch wichtige Faktoren, um innerhalb ihrer begrenzten Ressourcen zu operieren.

Automatisiertes maschinelles Lernen (AutoML) und die neurale Architektursuche (NAS) sind Techniken, die darauf abzielen, die Leistungsfähigkeit von ML-Modellen zu maximieren und gleichzeitig die Beschränkungen eingebetteter Systeme zu beachten. Ebenfalls spielen Methoden der ML-Modellkompression eine wichtige Rolle, um Modelle an die begrenzte Hardware anzupassen.

Abbildung 1: AutoFlow Workflow

Welche Features sind in AutoFlow enthalten?

AutoFlow ist ein Tool, das auf TensorFlow basiert. Sowohl die Modelle, die automatisiert erstellt werden, als auch die Optimierung und Konvertierung der Modelle ist ausschließlich mit TensorFlow Modellen möglich. Die wichtigsten Features von AutoFlow werden hier kurz dargestellt:

  • Benutzerfreundliche grafische Benutzeroberfläche (GUI): Das Framework wurde mit einer GUI entwickelt, die den Einstieg in die KI so weit wie möglich erleichtern soll.

  • Automatisches Machine Learning (AutoML): Dank AutoML-Techniken können ML-Modelle automatisch generiert werden, ohne dass Vorkenntnisse in ML erforderlich sind.

  • Automatische Komprimierung: ML-Modelle können mittels Pruning und Quantisierung automatisch komprimiert werden, um dadurch die Größe des Modells zu reduzieren und die Ausführung der Modelle zu beschleunigen.

  • Automatische Codegenerierung: Das Framework generiert automatisch Code zur Ausführung der ML-Modelle auf der Zielplattform.

  • Verschiedene Zielplattformen: Die ML-Modelle können bspw. auf MCUs, FPGAs, Arduino oder Raspberry Pi ausgeführt werden.

Wie funktioniert AutoFlow?

Wie bereits zuvor beschrieben wird für den Einsatz von Edge AI, Expertise in den Domänen maschinelles Lernen, eingebettete Systeme und dem zugrunde liegenden Problem benötigt. Diese sollen von AutoFlow abgedeckt werden. Hierfür besteht das Tool aus zwei Teilen:

Ein Bestandteil ist das automatische Generieren von neuronalen Netzen. Dies wird durch die Verwendung von Automated machine learning (AutoML) realisiert. Hierfür werden dem Tool die Daten, für die ein neuronales Netz trainiert werden soll, übergeben. Außerdem wird spezifiziert, um welche Aufgabe es sich handelt, die von dem KI-Modell gelöst werden soll, wie beispielsweise eine Klassifikation oder Regression der Daten. Anschließend werden mehrere neuronale Netze trainiert. Davon wird das Modell mit der höchsten Genauigkeit abgespeichert. Durch diesen Teilaspekt von AutoFlow, wird somit die Expertise in den Domänen maschinelles Lernen und des zugrunde liegenden Problems abgedeckt. Durch die Übergabe der Daten und das automatisierte Generieren neuronaler Netze werden keine Kenntnisse in diesen Domänen benötigt.

Abbildung 2: Auswahl der zu lösenden Aufgabe für den AutoML-Algorithmus

Der zweite Bestandteil von AutoFlow ist die Optimierung und Implementierung neuronaler Netze auf verschiedenen Zielplattformen. Hierfür wird dem Tool das KI-Modell, das zuvor mit AutoFlow automatisch erstellt wurde oder ein eigen trainiertes Modell, übergeben. Anschließend wird spezifiziert, auf welcher Zielplattform das neuronale Netz später ausgeführt werden soll. Hier kann zwischen Mikrocontroller, FPGA und eingebettetem PC (bspw. Raspberry Pi oder NVIDIA Jetson) ausgewählt werden.

Als Nächstes kann die Optimierung des neuronalen Netzes definiert werden. Das Ziel der Optimierungsalgorithmen ist es, die Netze zu verkleinern und dadurch deren Ausführgeschwindigkeit zu erhöhen. Somit wird Speicherplatz, wie auch Zeit bei der Ausführung gespart. Dieser Schritt ist optional und muss nicht durchgeführt werden. Zur Optimierung können die Optimierungsalgorithmen Pruning und Quantisierung ausgewählt werden:

  • Pruning: Diese Optimierungsmethode dient zur Minimierung der Netzgröße, bei minimalem Verlust an Genauigkeit. Hierbei werden redundante Gewichte aus dem neuronalen Netz entfernt und somit der benötigte Speicherbedarf verringert. In AutoFlow kann zwischen zwei Varianten des Prunings gewählt werden. Zum einen kann für die vollvernetzten- und die Faltungsschichten jeweils ein Faktor übergeben werden, der den Prozentsatz der Neuronen bzw. Filter definiert, die aus den jeweiligen Schichten gelöscht werden sollen. Zum anderen kann die Mindestgenauigkeit des neuronalen Netzes oder der Genauigkeitsverlust, der durch das Pruning entstehen darf, angegeben werden.

  • Quantisierung: Die Gewichte neuronaler Netze sind standardmäßig als 32-Bit-Float-Werte dargestellt. Durch den Optimierungsalgorithmus der Quantisierung, kann die Anzahl der benötigten Bits, um den Wert eines Gewichtes abzubilden, verringert werden, wodurch wiederum Speicherplatz gespart wird. In AutoFlow kann zwischen zwei Varianten der Quantisierung gewählt werden. Der eine Quantisierungsansatz wandelt alle Gewichte in 8-Bit-Integer-Werte um. Die Ein- und die Ausgabedaten bleiben jedoch weiterhin 32-Bit-Float-Werte. Der zweite Ansatz wandelt alle Gewichte in 8-Bit-Integer-Werte um. Auch die Ein- und Ausgabedaten werden in 8-Bit-Integer-Werte umgewandelt.

Abbildung 3: Optimierungsalgorithmen in AutoFlow

Wurde mindestens ein Optimierungsalgorithmus gewählt, müssen Trainingsdaten übergeben werden, die das neuronale Netz für die Optimierung benötigt. Die Daten können in Form von CSV-Dateien, Python-Dateien und falls es sich um Bilddaten handelt, kann der Datenpfad angegeben werden, in welchem die Daten abgelegt sind.

Wurden alle Informationen übergeben, erfolgt letztlich die automatisierte Optimierung und Konvertierung der Modelle. Je nachdem welche Zielplattform zuvor ausgewählt wurde, werden entsprechende Dateien generiert, die auf der Zielplattform verwendet werden können.

Durch diesen zweiten Teilaspekt von AutoFlow, wird somit die Expertise in den Domänen maschinelles Lernen und eingebettete Systeme abgedeckt. Durch die Optimierungsalgorithmen Pruning und Quantisierung können neuronale Netze automatisch verkleinert werden, ohne Kenntnisse im Bereich maschinelles Lernen zu benötigen. Ebenfalls kann durch die automatisierte Generierung entsprechender Dateien für die jeweiligen Zielplattformen, maschinelles Lernen schnell und ohne großen Aufwand in Projekte auf eingebetteten Systemen integriert werden.

Mehr erfahren: https://wfm-publish.blaetterkatalog.de/frontend/mvc/catalog/by-name/ELE?catalogName=ELE2212D (Seite 69)

Last updated