Schlauer Zwerg: Maschinelles Lernen mit dem Raspberry Pi Pico, Teil 1
Mit TinyML lässt sich der Raspi Pico ohne Internetanbindung für Machine-Learning-Anwendungen nutzen.
- Lars Gregori
Der Raspberry Pi Pico eignet sich gut für Machine-Learning-Anwendungen. Im Rahmen dieser dreiteiligen Artikelserie entsteht als Beispielanwendung eine einfache XOR-Schaltung (Exklusiv Oder) mit zwei Tastern und einer Leuchtdiode. Anschließend folgt das Training eines ML-Modells, das als TinyML-Anwendung auf dem Pico läuft. Das Modell erkennt die unterschiedlichen Zustände der Taster und lässt passend eine Leuchtdiode leuchten. Der erste Teil der Serie widmet sich dem Aufbau und dem Test der Schaltung, bevor im zweiten Teil das Modelltraining ansteht.
Das Auswerten der Taster ist rein exemplarisch und kein typischer Anwendungsfall für Machine Learning. Es soll als Beispiel für konkrete Anwendungen im Internet der Dinge dienen. Dort lassen sich unterschiedliche Sensordaten und Messwerte lesen. Darüber hinaus kann eine Anwendung die Daten von Sprache, Bilder, Videos und Gesten verarbeiten. Dadurch ergeben sich diverse Anwendungsszenarien unter anderem in den Bereichen Einzelhandel, Gesundheitsversorgung, Smart Home, industrielle Verarbeitung, Landwirtschaft und autonomes Fahren. Ebenso wie das IoT (Internet of Things) in unterschiedliche Feldern Einzug hält, kann das maschinelle Lernen auf den Endgeräten in Zukunft ein Teil davon sein.
Mikrocontroller an Bord
Im Gegensatz zu den anderen Raspberry-Pi-Boards besitzt der Raspberry Pi Pico mit dem RP2040 einen Mikrocontroller (MCU). Dabei handelt es sich um einen 32-Bit Dual ARM Cortex M0+. Er wurde von der Raspberry-Pi-Foundation entwickelt, hat zwei MByte Flash-Speicher und lediglich 264 KByte RAM – zum Vergleich: Ein MS-DOS-Rechner hatte seinerzeit 640 KByte.
Das reicht jedoch aus, um unterschiedliche, insbesondere kleine Modelle im Bereich des Machine Learning lokal auf dem Raspberry Pi Pico auszuführen. Dadurch kann er Sensordaten lesen und direkt verarbeiten, ohne eine Internetverbindung zu benötigen. Daraus ergibt sich zum einen ein Geschwindigkeitsvorteil, da in dem Fall die Verarbeitung der Daten ohne Umweg durch das Internet in Echtzeit erfolgt. Zum anderen ist die Verarbeitung unabhängig von der Verfügbarkeit der Verbindung und einem Server.
Schließlich verlassen keine potenziell sensiblen Daten Das Gerät. Im Fall des Raspberry Pi Pico entfällt die zusätzliche Hardware für die Kommunikation, wodurch sich der Preis und der Energiebedarf reduziert.
Grundsätzlich benötigt das Internet der Dinge, wie der Name nahelegt, eine Internetverbindung. Da der Pico im Gegensatz zum regulären Raspberry Pi von Haus aus keine solche Verbindung mitbringt, lässt er sich nicht direkt als IoT-Gerät verwenden. Er kann jedoch auf Ereignisse reagieren und ein anderes Gerät aktivieren. Dieses Vorgehen nutzen beispielsweise Sprachassistenten: Ein Mikrocontroller erkennt das zum Aktivieren genutzte Wake Word und weckt das Hauptgerät auf, das anschließend über das Internet kommuniziert. In diesem Fall steht die Privatsphäre mehr im Vordergrund als der Energiebedarf, da ein Sprachassistent meist permanent mit der Steckdose verbunden ist.
Anders verhält es sich bei Geräten, die autonom und mit geringem Energiebedarf Messwerte auf Anomalien prüfen und nur in wenigen Fällen oder gar nicht kommunizieren müssen. Sie lassen sich mit einer Batterie betreiben, wobei zu beachten ist, dass bei einem größeren Modell der Mikrocontroller mehr Rechenschritte ausführt und somit mehr Energie benötigt. Daher spielt bei kleinen Gräten die Größe des Modells eine entscheidende Rolle in Bezug auf Speicherplatz, Energiebedarf und Geschwindigkeit. Die Genauigkeit wiederum reduziert sich mit einem kleineren Modell und hat deshalb meist einen geringeren Stellenwert. Ist sie jedoch wie bei bestimmten Bereichen des autonomen Fahrens notwendig, greifen die Hersteller auf eine stärkere Hardware zurück. Dabei spielt wiederum der Speicherplatz und Energiebedarf eine untergeordnete Rolle.
TensorFlow in der schlanken AusfĂĽhrung
TinyML ist kein eigenes Framework, sondern der Begriff steht für Tiny Machine Learning. Viele denken bei ML an die Cloud beziehungsweise leistungsstarke Rechner und spezielle Systeme, die Modelle trainieren und ausführen. Inzwischen können allerdings sogar Smartphones mit speziellen Chips Aufgaben im Bereich des Machine Learning direkt auf dem Telefon ausführen. Allerdings beschränken sich deren Aufgaben auf die Ausführung. Das Training des Modells erfolgt vor allem bei großen Datenmengen nicht auf dem Telefon, sondern auf leistungsfähigen Rechnern – typischerweise in der Cloud. Dasselbe ist auch bei TinyML der Fall, bei dem Mikrocontroller lediglich die trainierten Modelle ausführen und nicht trainieren.
Das weit verbreitete ML-Framework TensorFlow deckt sowohl das Training als auch die Ausführung ab. Dabei kann es Graphics Processing Units (GPU) und Tensor Processing Units (TPU) nutzen, die für die ML-Berechnungen optimiert sind. TensorFlow Lite ist ein Unterprojekt von TensorFlow, das für Smartphones konzipiert ist und künftig standardmäßig in Android enthalten sein wird. Daneben existiert eine Auslagerung in das separate GitHub-Projekt tflite-micro.
TensorFlow Micro ist unterhalb von TensorFlow Lite angesiedelt und konzentriert sich auf kleine Geräte, auf die der Code angepasst ist. Die für das Training benötigten Teile fehlen komplett und der für die Ausführung notwendige Teil implementiert nicht den kompletten Befehlssatz. Die reduzierte Codegröße ist wichtig, da die "Tiny"-Geräte im Speicherplatz begrenzt sind. Die Reduktion kann allerdings dazu führen, dass nicht jedes Modell auf dem Gerät lauffähig ist. Das kann auch für Modelle gelten, die grundsätzliche von der Größe auf das Gerät passen, aber Operatoren verwenden, die in der Implementierung fehlen. Dazu gehörten bis vor kurzem die Recurrent Neural Networks (RNN) wie LSTM (Long short-term memory) und GRU (Gated recurrent unit), die bei der Vorhersage von Sequenzen beispielsweise in natürlicher Sprache Anwendung finden. Fehlen die benötigten Operatoren, müssen andere Modelle herhalten. Für das Exklusiv-Oder-Beispiel kommt ein einfaches neuronales Netz zum Einsatz, das sich mit TensorFlow Micro verträgt.