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):
Fertigung: Eine TinyML-gestützte vorausschauende Wartung von Anlagen und Maschinen kann die mit Geräteausfällen verbundenen Ausfallzeiten und Kosten reduzieren.
Einzelhandel: TinyML kann zur Überwachung von Lagerbeständen und zur Ausgabe von Warnungen bei zu erwartenden niedrigen Lagerbeständen verwendet werden. Dadurch können Situationen vermieden werden, in denen die Vorräte zur Neige gehen.
Landwirtschaft: TinyML-Geräte können zur Überwachung von Nutzpflanzen oder Viehbeständen eingesetzt werden, um Echtzeitdaten über deren Zustand zu erhalten.
Gesundheitswesen: Die von TinyML-Geräten ermöglichte Echtzeit-Gesundheitsüberwachung kann eine bessere und individuellere Patientenversorgung ermöglichen.
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.
Begrenzter Speicher:
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].
Fehlersuche:
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.
Herausforderungen für die Verwendung von Edge AI
Für den Einsatz von Edge AI wird die Expertise in drei Domänen benötigt:
Maschinelles Lernen
Eingebettete Systeme
Fachinformation zum Problem, das mithilfe von maschinellem Lernen gelöst werden soll
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:
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 (Bild 4).
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.
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 eigens 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, z. B. 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 (Bild 5):
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-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.
TensorFlow als Basis
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:
GUI-Schnittstelle: Dieses Framework wurde mit einer GUI entwickelt, die den Einstieg in die KI so weit wie möglich erleichtern soll. Alle Eingaben, die im vorigen Abschnitt beschrieben wurden, können über die grafische Benutzeroberfläche eingegeben werden.
AutoML: Mithilfe von AutoML-Techniken können ML-Modelle automatisch generiert werden. Es ist keine Erfahrung mit ML erforderlich.
Automatische Komprimierung: Vorhandene 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 Code-Generierung: Das Framework generiert automatisch Code für die Ausführung der ML-Modelle auf der Zielplattform.
Verschiedene Zielplattformen: Die ML-Modelle können auf Mikrocontrollern und FPGAs, aber auch auf Mikrocontrollermodulen wie Arduino, Raspberry Pi usw. ausgeführt werden.
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.
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.