Machine Learning auf eingebetteten Systemen ist auch unter dem Begriff TinyML bekannt. Das Tool AutoFlow unterstützt den Entwickler im TinyML-Entwurfsprozess. Es generiert ML-Modelle, optimiert und konvertiert sie, um die Modelle später auf einem eingebetteten System ausführen zu können.
TinyML ermöglicht es KI-Algorithmen energieeffizient, sicher und schnell zu verarbeiten. Zu den Branchen, die von TinyML profitieren können, gehören beispielsweise (Bild 2):
Ein Beispiel für die Anwendung von TinyML im Gesundheitswesen sind Hörgeräte. Die Elektronik von Hörgeräten ist batteriebetrieben, mit ressourcenbeschränkten Mikrocontrollern, die die Größe der für eine zufriedenstellende Leistung erforderlichen neuronalen Netze begrenzen [1]. Hierbei werden Modellkomprimierungstechniken angewendet, um eine geringere Latenzzeit zu erzielen, ohne einen statistischen Unterschied in der Hörpräferenz zu erhalten.
Der Speicher von TinyML-Geräten liegt in der Größenordnung von Kilobytes oder Megabytes. Er schränkt sowohl die Größe, als auch die Laufzeit der Modelle für maschinelles Lernen ein, die auf diesen Geräten eingesetzt werden sollen. Derzeit gibt es nur eine begrenzte Anzahl von ML-Frameworks, die die Anforderungen von TinyML-Geräten erfüllen können. TensorFlow Lite ist eines dieser Frameworks [2].
Das ML-Modell wird auf Daten trainiert, die von einem TinyML-Gerät gesammelt werden. Anschließend wird das trainierte Modell auf diesem ausgeführt. Hierbei ist es schwieriger, Leistungsprobleme zu ermitteln und zu beheben als in einer Cloud-Umgebung, in der die Fehlerbehebung aus der Ferne erfolgen kann.
Für den Einsatz von Edge AI wird die Expertise in drei Domänen benötigt:
Der Einsatz von Edge AI benötigt ein breites Spektrum an Expertise, wodurch es den Unternehmen und Entwicklern erschwert wird, derartige Anwendungen zu entwickeln. Mithilfe des Tools AutoFlow soll der Einstieg in Edge AI vereinfacht werden. Es unterstützt Entwickler während des gesamten Entwicklungsprozesses und kompensiert fehlendes Know-how.
AutoFlow ist ein Tool, das Entwicklern helfen soll, maschinelles Lernen schneller und einfacher auf eingebetteten Geräten zu implementieren. Durch AutoFlow soll der gesamte Arbeitsablauf eines Data-Scientisten abgedeckt werden (Bild 3), angefangen bei der Erstellung des ML-Modells über die Auswahl der Zielplattform bis hin zur Optimierung und Implementierung des Modells auf der Zielplattform. AutoFlow ist ein Open-Source-Tool und kann auf GitHub heruntergeladen werden.
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 drei Bereiche sollen von AutoFlow abgedeckt werden. Hierfür besteht das Tool aus zwei Teilen:
Anschließend werden mehrere neuronale Netze trainiert. Das Netz, das die höchste Genauigkeit erzielt, wird 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 vom Entwickler keine Kenntnisse in diesen Domänen benötigt.
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 (Bild 5):
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.
Die Gewichte neuronaler Netze sind standardmäßig als 32-bit-Gleitkommawerte 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-Gleitkommawerte. Der zweite Ansatz wandelt alle Gewichte in 8-bit-Integer-Werte um. Auch die Ein- und Ausgabedaten werden in 8-bit-Integer-Werte umgesetzt.
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 und Python-Dateien übergeben werden. Falls es sich um Bilddaten handelt, kann auch der Datenpfad angegeben werden, in welchem die Daten abgelegt sind. Wurden alle Informationen übergeben, erfolgt 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.
AutoFlow ist ein Tool, das auf TensorFlow basiert. Es wird mit der GPL-3.0-License veröffentlicht. Sowohl die Modelle, die automatisiert erstellt werden, wie auch die Optimierung und Konvertierung der Modelle ist ausschließlich mit TensorFlow-Modellen möglich. Die wichtigsten Eigenschaften von AutoFlow sind:
Literatur
[1] Die bahnbrechende Technologie in Oticon More. Oticon. Webseite, www.oticon.de/professionals/audiology-and-technology/technologies/oticon-more-technology.
[2] Bereitstellen von Modellen für maschinelles Lernen auf mobilen und IoT-Geräten. Google, www.tensorflow.org/lite.
[3] Hahn-Schickard / AutoFlow: https://github.com/Hahn-Schickard/AutoFlow.
Die Autoren
Daniel Konegen
studierte an der Hochschule Furtwangen Maschinenbau und Mechatronik (B. Sc.) und Mechatronische Systeme (M. Sc.). In seiner Masterthesis beschäftigte er sich mit der automatisierten Implementierung von neuronalen Netzen auf eingebetteten Systemen. Nach seinem Masterabschluss 2020 war er von Oktober 2020 bis August 2021 am Karlsruher Institut für Technologie am Institut für Telematik tätig. Seit September 2021 betreut er bei Hahn-Schickard insbesondere die Bereiche Embedded KI und Data Science.
daniel.konegen@hahn-schickard.de
Marcus Rüb
studierte von 2015 bis 2020 an der Hochschule Furtwangen Elektrotechnik (B. Sc.) und Mechatronische Systeme (M. Sc.). In seiner Masterthesis beschäftigte er sich mit der Konzeptionierung eines Frameworks zur Optimierung und Implementierung von neuronalen Netzen auf eingebetteten Systemen. Seit 2018 ist er bei Hahn-Schickard als Wissenschaftlicher Mitarbeiter beschäftigt und forscht im Gebiet der eingebetteten künstlichen Intelligenz. Derzeit promoviert er an der Technischen Universität in München.
marcus.rueb@hahn-schickard.de