IoT und KI

Was ist TinyML? Machine Learning auf Mikrocontrollern erklärt

TinyML ist Machine Learning auf Mikrocontrollern, die mit Milliwatt und Kilobytes auskommen. Dieser Beitrag behandelt die Einschränkungen, die Frameworks, reale Anwendungsfälle und warum winzige Geräte kompakte Inferenzergebnisse über MQTT veröffentlichen.

Illustration zu „Was ist TinyML“ mit einer Mikrocontroller-Platine, die ein winziges neuronales Netz ausführt und eine kleine Inferenznachricht über MQTT veröffentlicht
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

Was ist TinyML? Es ist Machine Learning, das auf Mikrocontrollern läuft, also auf derselben Klasse von Chips, die in Thermostaten, Wearables und Sensorknoten stecken, mit Speicher in Kilobytes und Leistungsaufnahme in Milliwatt. Dieser Beitrag erklärt, was TinyML von anderer Edge AI unterscheidet, welche Frameworks und Boards Sie verwenden sollten, in welchen Anwendungsfällen TinyML glänzt und warum diese Geräte kompakte Inferenzergebnisse statt roher Sensordaten über MQTT veröffentlichen sollten.

TinyML in einfachen Worten

Ein Mikrocontroller (MCU) ist ein kleiner Computer auf einem einzigen Chip: ein Prozessor, etwas RAM, Flash-Speicher und Peripherie für Sensoren. Es gibt kein Betriebssystem im Desktop-Sinne, keine Python-Laufzeitumgebung und oft keine Gleitkomma-Hardware. TinyML ist die Gesamtheit der Techniken, die ein trainiertes neuronales Netz so klein und effizient machen, dass es in dieser Umgebung dauerhaft laufen kann, oft im Batteriebetrieb.

Das Ergebnis ist ein Sensor, der versteht, was er misst. Statt rohes Audio zu streamen, meldet ein TinyML-Mikrofonknoten „Schlüsselwort erkannt“. Statt Vibrationen mit hoher Rate abzutasten und hochzuladen, meldet ein Motorknoten „Unwucht, Konfidenz 0,9“. TinyML ist ein Teilbereich von Edge AI; wenn Sie zuerst das Gesamtbild möchten, lesen Sie was Edge AI ist.

Die Einschränkungen, die TinyML ausmachen

Ressource Typisches TinyML-Gerät Typisches Linux-Edge-Gerät
RAM Zehn bis einige hundert KB, manchmal einige MB PSRAM Gigabytes
Speicher Einige hundert KB bis wenige MB Flash Gigabytes
Rechenleistung Ein oder zwei Kerne, zehn bis einige hundert MHz Mehrkern-CPU im GHz-Bereich, teils GPU/NPU
Leistungsaufnahme Milliwatt; Betrieb mit Knopfzelle oder kleinem Akku möglich Watt
Software Bare Metal oder RTOS, C/C++ Vollständiges Betriebssystem, Python, Container
Modellgröße KB-Bereich MB- bis GB-Bereich

Diese Grenzen prägen jede Designentscheidung:

  1. Modelle müssen klein sein. Typisch sind kleine Faltungs- oder Dense-Netze mit einigen zehntausend Parametern.
  2. Ganzzahlarithmetik. Modelle werden auf 8-Bit-Ganzzahlen quantisiert, was die Größe gegenüber 32-Bit-Gleitkommazahlen etwa auf ein Viertel reduziert und auf Chips ohne Gleitkommaeinheit oder mit SIMD-Befehlen schnell läuft.
  3. Statischer Speicher. Während der Inferenz gibt es keine dynamische Speicherzuweisung. Frameworks verwenden einen festen Speicherblock (die Tensor-Arena), dessen Größe zur Kompilierzeit festgelegt wird.
  4. Merkmalsextraktion ist entscheidend. Rohsignale werden in kompakte Merkmale umgewandelt, etwa ein Spektrogramm für Audio oder RMS und spektrale Spitzen für Vibration, bevor das Modell sie sieht.

Wie ein TinyML-Modell entsteht

Der Workflow entspricht dem jedes ML-Projekts, mit einem zusätzlichen Verkleinerungsschritt am Ende:

  1. Gelabelte Sensordaten vom echten Gerät in der echten Umgebung sammeln.
  2. Merkmale und ein kleines Modell entwerfen, meist in TensorFlow/Keras oder auf einer Plattform wie Edge Impulse.
  3. Auf einer Workstation oder in der Cloud trainieren und validieren.
  4. Das Modell konvertieren und quantisieren, zum Beispiel in eine .tflite-Datei mit vollständiger int8-Quantisierung.
  5. Das Modell als Byte-Array in die Firmware einbetten und die Inferenz-Runtime einbinden.
  6. Auf dem Gerät messen: Inferenzzeit, RAM-Bedarf (Arena-Größe), Flash-Bedarf und Genauigkeit.
  7. Iterieren. Das Eingabefenster oder die Anzahl der Merkmale zu verkleinern hilft oft mehr, als das Netz zu verkleinern.

TinyML-Frameworks und -Werkzeuge

  • TensorFlow Lite for Microcontrollers (heute Teil der LiteRT-Familie von Google): die am weitesten verbreitete offene Runtime. Sie laden ein Flatbuffer-Modell, registrieren nur die benötigten Operatoren und führen einen Interpreter über einer statischen Arena aus. Siehe den Einstiegsleitfaden zu TensorFlow Lite Micro.
  • Edge Impulse: eine durchgängige Plattform für Datenerfassung, Feature Engineering, Training und den Export einer C++- oder Arduino-Bibliothek für ein Zielboard. Siehe das Edge-Impulse-MQTT-Tutorial.
  • Herstellerbibliotheken: Arm CMSIS-NN liefert optimierte Kernels für Cortex-M; Espressif bietet ESP-DL und eine für den ESP32 optimierte Portierung von TensorFlow Lite Micro (esp-tflite-micro); andere Halbleiterhersteller haben eigene Toolchains.
  • Arduino-Bibliotheken und PlatformIO erleichtern es, Inferenz mit Sensortreibern und Netzwerkfunktionen auf Maker-Boards zu kombinieren.

Beliebte TinyML-Boards

ESP32-S3-Boards sind eine häufige Wahl für vernetztes TinyML, weil sie Vektorbefehle für Kernels neuronaler Netze, optionalen PSRAM und integriertes WLAN in einem günstigen Chip vereinen. Arduino Nano 33 BLE Sense und ähnliche Cortex-M4-Boards mit integrierten Sensoren sind zum Lernen beliebt, und die Raspberry-Pi-Pico-Familie bietet eine preiswerte Cortex-M-Option. Boards ohne WLAN können trotzdem Teil eines IoT-Systems sein, indem sie Ergebnisse per serieller Schnittstelle oder Bluetooth an ein Gateway senden. Einen direkten Vergleich über Geräteklassen hinweg, einschließlich Beschleunigern, finden Sie im Vergleich von Edge-AI-Hardware.

Wofür sich TinyML eignet

  • Keyword Spotting und Geräuschereignisse: Aktivierungswörter, Alarme, Glasbruch, ungewöhnliche Maschinengeräusche.
  • Bewegungs- und Gestenerkennung mit Beschleunigungssensoren und Gyroskopen in Wearables und Werkzeugen.
  • Vorausschauende Wartung: Klassifikation von Vibrationsmustern an Motoren, Pumpen und Lüftern.
  • Einfache Bildverarbeitung: Personenanwesenheit, Ziffern ablesen oder „Objekt vorhanden“ mit niedrig auflösenden Kameras auf Boards mit PSRAM.
  • Umweltsensorik: Belegung oder Anomalien aus Gas-, Temperatur- und Feuchtigkeitsmustern ableiten.

TinyML eignet sich nicht für Aufgaben, die große Vokabulare, hochauflösende Bilder, langen Kontext oder häufige Modelländerungen erfordern. Diese gehören auf ein Gateway oder in die Cloud.

Warum TinyML-Geräte kompakte Ergebnisse über MQTT veröffentlichen

Vernetzte TinyML-Knoten stoßen gleich an zwei Grenzen: winzige Rechenleistung und teure Funkzeit. Bei batteriebetriebenen Geräten verbraucht das Funkmodul oft weit mehr Energie als die Inferenz. Eine kurze Nachricht nur dann zu senden, wenn etwas Interessantes passiert, ist die größte verfügbare Einsparung bei Energie und Bandbreite.

MQTT passt zu diesem Muster. Der Protokoll-Overhead ist gering, Client-Bibliotheken wie PubSubClient und esp-mqtt laufen problemlos auf MCUs, und der Broker verteilt jede Nachricht an alle, die sie brauchen. Eine typische TinyML-Inferenznachricht bleibt deutlich unter 200 Bytes:

{"dev":"fan-12","m":"vib-v2","label":"imbalance","p":0.91,"ms":7}

Kurze Schlüssel sind auf eingeschränkten Geräten eine bewusste Entscheidung. Kombinieren Sie sie mit einem Topic, das den Kontext trägt, etwa plant1/hvac/ahu3/fan-12/inference – im Werk idealerweise ein Pfad im Unified Namespace (UNS) nach ISA-95 wie acme/werk-muenchen/lueftung/ahu3/fan-12/inference –, und mit einem Status-Topic als Retained Message samt Last Will, damit Dashboards wissen, wann der Knoten offline geht. Auf der Empfängerseite ermöglicht ein MQTT-Broker Dashboards, Alarmierung und Cloud-Analysen das Abonnieren, ohne dass das Gerät von ihnen wissen muss.

Ein minimales Veröffentlichungsmuster für Mikrocontroller

Die Kernschleife auf einem ESP32 mit PubSubClient sieht so aus. Der Inferenzaufruf ist ein Platzhalter; das Tutorial zu TinyML auf dem ESP32 zeigt ein vollständig funktionierendes Modell.

// Called after each inference; publishes only on change or every 60 s.
void reportResult(PubSubClient &mqtt, const char *topic, const char *label, float p) {
  static char lastLabel[24] = "";
  static unsigned long lastSent = 0;
  if (strcmp(label, lastLabel) == 0 && millis() - lastSent < 60000) return;

  char payload[96];
  snprintf(payload, sizeof(payload),
           "{\"dev\":\"fan-12\",\"m\":\"vib-v2\",\"label\":\"%s\",\"p\":%.2f}", label, p);
  if (mqtt.publish(topic, payload)) {
    strncpy(lastLabel, label, sizeof(lastLabel) - 1);
    lastSent = millis();
  }
}

Sie können einen solchen Knoten mit dem öffentlichen MQTT-Broker unter broker.connectmq.com auf Port 1883 mit einer beliebigen eindeutigen Client ID und einem eindeutigen Topic-Präfix testen. Denken Sie daran, dass der öffentliche MQTT-Broker für alle lesbar und nur für Tests und Prototypen gedacht ist. Stellen Sie echte Deployments daher auf private Zugangsdaten um, etwa einen ConnectMQ-Broker mit TLS auf Port 8883.

Häufige TinyML-Fehler

  1. Nur mit Labordaten trainieren. Montage, Temperatur und Hintergrundgeräusche im Feld verändern das Signal.
  2. Die Arena-Größe ignorieren. Wenn AllocateTensors() fehlschlägt, ist die Arena zu klein; messen Sie den tatsächlichen Bedarf und planen Sie eine Reserve ein.
  3. Nicht unterstützte Operatoren. Nicht jede TensorFlow-Schicht hat einen Mikrocontroller-Kernel. Prüfen Sie die Operatoren des konvertierten Modells, bevor Sie Ihr Design darauf aufbauen.
  4. Jede Inferenz veröffentlichen. Ein Modell, das zehnmal pro Sekunde läuft, sollte nicht zehn Nachrichten pro Sekunde veröffentlichen; aggregieren Sie oder veröffentlichen Sie bei Änderungen.
  5. Keine Modellversion. Nehmen Sie sie in jede Nachricht auf, damit Sie das Verhalten nach einem Over-the-Air-Update nachvollziehen können.

Wie sich TinyML in ein vollständiges System mit Cloud-Analysen und LLM-Agenten einfügt, lesen Sie im Leitfaden zu KI und IoT.

Starten Sie mit ConnectMQ

Sobald Ihr TinyML-Knoten auf der Werkbank funktioniert, geben Sie ihm ein sicheres Zuhause. ConnectMQ ist ein verwalteter MQTT-Broker mit TLS auf Port 8883, Unterstützung für MQTT 3.1.1 und 5.0 und einem Live-Topic-Explorer, in dem Sie Inferenznachrichten eintreffen sehen. Erstellen Sie einen Broker im kostenlosen Serverless-Plan unter app.connectmq.com, ohne Kreditkarte.

Häufig gestellte Fragen

Wofür wird TinyML eingesetzt?

TinyML wird für dauerhaft aktive Erfassungsaufgaben auf stromsparenden Geräten eingesetzt, etwa Keyword Spotting, Gestenerkennung, vibrationsbasierte Fehlererkennung und einfache Anwesenheitserkennung.

Kann ein ESP32 TinyML ausführen?

Ja. Die ESP32-Familie, insbesondere der ESP32-S3 mit Vektorbefehlen und PSRAM-Optionen, führt Modelle von TensorFlow Lite Micro und Edge Impulse aus und kann Ergebnisse per WLAN über MQTT veröffentlichen.

Ist TinyML dasselbe wie Edge AI?

TinyML ist ein Teil von Edge AI mit Fokus auf Mikrocontroller. Edge AI umfasst auch größere Geräte wie Einplatinencomputer, Beschleuniger und GPU-Module.

Brauchen TinyML-Modelle das Internet?

Nein. Die Inferenz läuft vollständig auf dem Gerät. Konnektivität wird nur benötigt, um Ergebnisse zu melden, Konfiguration zu empfangen oder das Modell zu aktualisieren.

Verwandte Artikel

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.