Schlauer Zwerg: ML mit dem Raspberry Pi Pico, Teil 2: Modelltraining

Der Raspi Pico kann zwar keine ML-Modelle trainieren, aber trainierte Modelle nutzen.

Lesezeit: 17 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen
Künstliche Intelligenz, KI

(Bild: Gerd Altmann, gemeinfrei)

Von
  • Lars Gregori
Inhaltsverzeichnis

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. Nach der Beschreibung des Schaltungsaufbaus im ersten Teil geht der zweite auf das Training ein und zeigt, wie sich das trainierte Modell als C-Code in die Anwendung integrieren lässt. Der Sourcecode für das Training und für die Anwendung steht auf GitHub zur Verfügung.

Machine Learning mit Raspi Pico

Die Beispielanwendung im ersten Teil hat gezeigt, dass eine einzige if-else-Anweisung beziehungsweise eine Ungleich-Abfrage ausreicht, um ein XOR (exklusiv oder) zu implementieren. Für das Machine Learning (ML) bleibt damit das Modelltraining einfach. Es benötigt lediglich zwei Eingaben und eine Ausgabe. Trotzdem bietet das Modell die Option, durch Parameter das Ergebnis zu optimieren und die Modellgröße zu beeinflussen. Damit wird sich der letzte Teil der Artikelserie beschäftigen.

Bei TensorFlow Micro für TinyML-Anwendungen liegt das Augenmerk auf einer schlanken Anwendung. Daher bringt das TensorFlow-Micro-Projekt keinen Code mit, um das Modell auf dem Raspberry Pi Pico zu trainieren.

Das Exklusive-Oder-Modell ist einfach aufgebaut und benötigt für die Trainingsdaten lediglich die vier möglichen Zustände der Ein- und Ausgabe. Dadurch lässt sich das Modell lokal auf einer Workstation trainieren. Wer einen Google-Account besitzt, kann das Training auf Google Colab durchführen und auf die im Folgenden beschriebene Installation der Software und Bibliotheken auf dem lokalen Rechner verzichten.

Für das Zusammenspiel mit Google Colab und die lokale Installation kommt dasselbe Jupyter Notebook zum Einsatz. Damit beschreiben Entwicklerinnen und Entwickler innerhalb einer Browser-Anwendung ein Modell mit Python-Code und führen das Training interaktiv aus. Dafür ist ein aktueller Python-Interpreter auf dem Rechner erforderlich.

Damit sich unterschiedliche Python-Projekte nicht gegenseitig beeinflussen, empfiehlt sich ein sogenanntes virtuelles Verzeichnis. Dadurch bleibt jedes Projekt in seiner Umgebung und überschreibt bei der Installation neuer Bibliotheken keine Libraries aus anderen Projekten. Letztere haben wiederum keine Auswirkungen auf das virtuelle Verzeichnis. Im Folgenden sind die Schritte aufgeführt, um das Verzeichnis unter Linux und macOS anzulegen:

mkdir PicoML
cd PicoML
python3 -m venv venv
. ./venv/bin/activate

Unter Windows erfolgt die Einrichtung folgendermaßen:

mkdir PicoML
cd PicoML
python -m venv venv
.\venv\Scripts\activate

In dem neuen Directory PicoML, das sich innerhalb eines belieben Verzeichnisses befinden kann, legt der Python-Aufruf in der jeweils dritten Zeile das virtuelle Verzeichnis venv an. Der Befehl activate aktiviert schließlich die virtuelle Umgebung. Zu beachten ist, dass sich unter Linux und macOS zwischen den zwei Punkten ein Leerzeichen befindet, um die Umgebungsvariablen innerhalb des aktuellen Terminal-Fensters auf die virtuelle Umgebung zu setzen. Der Aufruf which python unter Linux oder macOS zeigt auf das Python-Programm im virtuellen Verzeichnis.

Die benötigten Python-Bibliotheken lassen sich einzeln installieren oder idealerweise in einer requirements.txt-Datei auflisten, in der neben dem Namen die Version der jeweiligen Library stehen kann:

notebook==6.4.4
tensorflow==2.6.0
tinymlgen==0.2

Da sich Schnittstellen durchaus innerhalb von Minor Releases ändern können, sollte requirements.txt Bestandteil des Projekts sein und klar die Versionen definieren. Dadurch lässt sich das Training zu einem späteren Zeitpunkt mit den passenden Bibliotheken wiederholen.

Für das Training kommt ein Jupyter Notebook und TensorFlow zum Einsatz. Die Library tinymlgen wandelt das trainierte Modell in C-Code um.

Mit folgendem Aufruf installiert pip die in requirements.txt definierten Bibliotheken:

pip install -r requirements.txt

Die pip-Anwendung ist Bestandteil der virtuellen Umgebung und für die Installation der Python-Bibliotheken zuständig.

jupyter notebook

Der Befehl jupyter notebook startet den Jupyter-Notebook-Server und öffnet automatisch im Browser unter http://localhost:8888 ein neues Fenster. Es zeigt den Inhalt des Projektverzeichnisses an, in dem sich das Jupyter Notebook befindet, das sich mit einem Klick öffnen lässt. Die Startseite bietet zudem die Möglichkeit, ein Notebook hochzuladen oder ein neues anzulegen.

Google Colab ist ein zumindest derzeit kostenfreier Service des Internetriesen, um Jupyter Notebooks im Browser auszuführen. Damit entfällt die lokale Installation. Zudem bietet Google Colab die Option, das Training auf einer Graphics Processing Units (GPU) oder sogar einer Tensor Processing Units (TPU) auszuführen. Für das Exklusive-Oder-Modell sind beide jedoch überdimensioniert.

Wer Colab verwenden möchte, benötigt einen Google-Account. Auf der Hauptseite erfolgt die Anmeldung über den Button Sign in. Das Jupyter Notebook für das Training lässt sich mit File | Upload hochladen und anschließend ausführen.