Kapitel 1. Einführung
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Das Ziel dieses Buches ist es, zu zeigen, wie jeder Entwickler mit grundlegenden Erfahrungen im Umgang mit einem Kommandozeilen-Terminal und einem Code-Editor seine eigenen Projekte mit maschinellem Lernen (ML) auf eingebetteten Geräten erstellen kann.
Als ich 2014 bei Google anfing, entdeckte ich viele interne Projekte, von deren Existenz ich nichts ahnte, aber das aufregendste war die Arbeit des OK Google-Teams. Sie arbeiteten mit neuronalen Netzwerken, die nur 14 Kilobytes (KB) groß waren! Sie mussten so klein sein, weil sie auf den digitalen Signalprozessoren (DSPs) in den meisten Android-Telefonen liefen und ständig auf die "OK Google"-Weckwörter lauschten, und diese DSPs hatten nur ein paar Kilobyte RAM und Flash-Speicher. Das Team musste die DSPs für diese Aufgabe nutzen, weil die Haupt-CPU ausgeschaltet war, um den Akku zu schonen, und diese speziellen Chips nur wenige Milliwatt (mW) Strom verbrauchen.
Von der Bildseite des Deep Learning kommend, hatte ich noch nie so kleine Netzwerke gesehen, und die Idee, dass man so stromsparende Chips für neuronale Modelle verwenden kann, hat mich nicht mehr losgelassen. Als ich daran arbeitete, TensorFlow und später TensorFlow Lite auf Android- und iOS-Geräten zum Laufen zu bringen, war ich immer wieder fasziniert von den Möglichkeiten, die sich selbst mit einfachen Chips bieten. Ich erfuhr, dass es andere bahnbrechende Projekte in der Audiowelt (z. B. Music IQ von Pixel), bei der vorausschauenden Wartung (z. B. PsiKick) und sogar in der Welt der Bildverarbeitung (Qualcomms Kameramodul Glance) gab.
Mir wurde klar, dass eine ganz neue Klasse von Produkten im Entstehen begriffen war, deren wichtigste Merkmale darin bestanden, dass sie ML nutzten, um aus verrauschten Sensordaten einen Sinn zu machen, jahrelang mit einer Batterie oder Energy Harvesting betrieben werden konnten und nur ein oder zwei Dollar kosteten. Ein Begriff, den ich immer wieder hörte, war "peel-and-stick sensors" (Sensoren zum Aufkleben) für Geräte, die keinen Batteriewechsel benötigen und überall in der Umgebung angebracht und vergessen werden können. Um diese Produkte in die Tat umzusetzen, mussten Wege gefunden werden, die rohen Sensordaten lokal auf dem Gerät selbst in verwertbare Informationen umzuwandeln, denn die Energiekosten für die Übertragung von Datenströmen in alle Richtungen waren zu hoch, um praktikabel zu sein.
Hier kommt die Idee von TinyML ins Spiel. Lange Gespräche mit Kolleginnen und Kollegen aus Industrie und Wissenschaft haben zu dem groben Konsens geführt, dass, wenn man ein neuronales Netzwerkmodell mit Energiekosten von unter 1 mW betreiben kann, viele völlig neue Anwendungen möglich sind. Diese Zahl mag etwas willkürlich erscheinen, aber wenn man sie konkretisiert, bedeutet das, dass ein Gerät, das mit einer Münzbatterie betrieben wird, eine Lebensdauer von einem Jahr hat. Das Ergebnis ist ein Produkt, das klein genug ist, um in jede Umgebung zu passen, und das ohne menschliches Zutun eine nützliche Zeit lang betrieben werden kann .
Hinweis
Ich werde gleich ein paar Fachbegriffe verwenden, um zu erklären, worum es in diesem Buch geht. Aber mach dir keine Sorgen, wenn dir einige von ihnen nicht geläufig sind; wir definieren ihre Bedeutung, wenn wir sie zum ersten Mal verwenden.
An dieser Stelle fragst du dich vielleicht, was es mit Plattformen wie dem Raspberry Pi oder den Jetson-Boards von NVIDIA auf sich hat. Das sind fantastische Geräte, die ich selbst häufig benutze, aber selbst der kleinste Pi ist ähnlich groß wie die Haupt-CPU eines Mobiltelefons und verbraucht daher Hunderte von Milliwatt. Um einen Pi auch nur ein paar Tage am Laufen zu halten, braucht man einen Akku, der dem eines Smartphones ähnelt, was es schwierig macht, wirklich ungebundene Erfahrungen zu machen. Der Jetson von NVIDIA basiert auf einem leistungsstarken Grafikprozessor, der bei voller Leistung bis zu 12 Watt verbraucht und daher ohne eine große externe Stromversorgung noch schwieriger zu betreiben ist. Das ist in der Regel kein Problem in der Automobil- oder Robotikbranche, da die mechanischen Teile selbst eine große Stromquelle benötigen, aber es macht es schwierig, diese Plattformen für die Art von Produkten zu verwenden, an denen ich am meisten interessiert bin und die ohne eine kabelgebundene Stromversorgung funktionieren müssen. Glücklicherweise bedeutet das Fehlen von Ressourcenbeschränkungen, dass Frameworks wie TensorFlow, TensorFlow Lite und NVIDIAs TensorRT zur Verfügung stehen, da sie in der Regel auf Linux-fähigen Arm Cortex-A CPUs basieren, die über Hunderte von Megabyte Speicher verfügen. Dieses Buch wird sich aus dem oben genannten Grund nicht darauf konzentrieren, wie man auf diesen Plattformen läuft, aber wenn du daran interessiert bist, gibt es viele Ressourcen und Dokumentationen; siehe zum Beispiel die mobile Dokumentation von TensorFlow Lite.
Ein weiteres Merkmal, das mir wichtig ist, sind die Kosten. Der billigste Raspberry Pi Zero kostet $5 für Hersteller, aber es ist extrem schwierig, diese Chipklasse in großen Mengen zu diesem Preis zu kaufen. Der Kauf des Zero ist in der Regel mengenmäßig begrenzt, und obwohl die Preise für industrielle Einkäufe nicht transparent sind, ist klar, dass $5 definitiv ungewöhnlich sind. Im Gegensatz dazu kosten die billigsten 32-Bit-Mikrocontroller viel weniger als einen Dollar pro Stück. Dieser niedrige Preis hat es den Herstellern ermöglicht, herkömmliche analoge oder elektromechanische Steuerschaltungen durch softwaredefinierte Alternativen zu ersetzen - vom Spielzeug bis zur Waschmaschine. Ich hoffe, dass wir die Allgegenwärtigkeit von Mikrocontrollern in diesen Geräten nutzen können, um künstliche Intelligenz als Software-Update einzuführen, ohne dass viele Änderungen an bestehenden Designs erforderlich sind. Damit sollte es auch möglich sein, eine große Anzahl intelligenter Sensoren in Umgebungen wie Gebäuden oder Naturschutzgebieten zu installieren, ohne dass die Kosten den Nutzen oder die verfügbaren Mittel überwiegen.
Eingebettete Geräte
Die Definition von TinyML, dass die Energiekosten unter 1 mW liegen, bedeutet, dass wir für unsere Hardwareplattformen die Welt der eingebetteten Geräte betrachten müssen. Bis vor ein paar Jahren war ich selbst nicht mit ihnen vertraut - sie waren für mich ein Mysterium. Traditionell waren sie 8-Bit-Geräte und benutzten obskure und proprietäre Toolchains, so dass es sehr einschüchternd erschien, mit ihnen anzufangen. Ein großer Schritt nach vorne kam, als Arduino eine benutzerfreundliche integrierte Entwicklungsumgebung (IDE) zusammen mit standardisierter Hardware einführte. Seitdem sind 32-Bit-CPUs zum Standard geworden, vor allem dank der Cortex-M-Chipreihe von Arm. Als ich vor ein paar Jahren begann, Prototypen für ML-Experimente zu entwickeln, war ich angenehm überrascht, wie einfach der Entwicklungsprozess geworden war.
Eingebettete Geräte haben jedoch immer noch mit einigen harten Ressourcenbeschränkungen zu kämpfen. Sie haben oft nur ein paar hundert Kilobyte Arbeitsspeicher, manchmal sogar noch weniger, und verfügen über eine ähnliche Menge an Flash-Speicher für die dauerhafte Speicherung von Programmen und Daten. Eine Taktrate von nur einigen zehn Megahertz ist nicht ungewöhnlich. Sie verfügen definitiv nicht über ein vollständiges Linux (denn dafür sind ein Speichercontroller und mindestens ein Megabyte RAM erforderlich), und wenn es ein Betriebssystem gibt, bietet es möglicherweise nicht alle oder gar keine der POSIX- oder Standard-C-Bibliotheksfunktionen, die du erwartest. Viele eingebettete Systeme vermeiden die Verwendung von dynamischen Speicherzuweisungsfunktionen wie new
oder malloc()
, weil sie auf Zuverlässigkeit und Langlebigkeit ausgelegt sind, was bei einem Heap, der fragmentiert werden kann, nur schwer zu gewährleisten ist. Es könnte auch schwierig sein, einen Debugger oder andere vertraute Tools aus der Desktop-Entwicklung zu verwenden, da die Schnittstellen, über die du auf den Chip zugreifst, sehr speziell sind.
Als ich die Embedded-Entwicklung kennenlernte, gab es jedoch einige schöne Überraschungen. Ein System ohne andere Prozesse, die dein Programm unterbrechen könnten, macht es sehr einfach, ein mentales Modell dessen zu erstellen, was passiert, und die einfache Natur eines Prozessors ohne Verzweigungsvorhersage oder Befehlspipelining macht die manuelle Assembleroptimierung viel einfacher als bei komplexeren CPUs. Außerdem macht es mir einfach Spaß, die LEDs eines Miniaturcomputers aufleuchten zu sehen, den ich auf einer Fingerspitze balancieren kann, weil ich weiß, dass er Millionen von Anweisungen pro Sekunde ausführt, um die Welt um ihn herum zu verstehen.
Landschaft im Wandel
Erst seit kurzem können wir ML auf Mikrocontrollern einsetzen, und das Feld ist noch sehr jung, was bedeutet, dass sich Hardware, Software und Forschung extrem schnell verändern. Dieses Buch basiert auf einer Momentaufnahme der Welt im Jahr 2019, was in diesem Bereich bedeutet, dass einige Teile bereits veraltet waren, bevor wir das letzte Kapitel geschrieben hatten. Wir haben versucht, uns auf Hardware-Plattformen zu stützen, die langfristig verfügbar sein werden, aber es ist wahrscheinlich, dass sich die Geräte weiter verbessern und weiterentwickeln werden. Das von uns verwendete Software-Framework TensorFlow Lite verfügt über eine stabile API, und wir werden die Beispiele, die wir im Text anführen, im Laufe der Zeit weiter unterstützen, aber wir stellen auch Weblinks zu den neuesten Versionen unseres Beispielcodes und der Dokumentation zur Verfügung. Du kannst damit rechnen, dass dem TensorFlow Repository Referenzanwendungen hinzugefügt werden, die mehr Anwendungsfälle abdecken als in diesem Buch. Außerdem wollen wir uns auf Fähigkeiten wie Debugging, Modellerstellung und die Entwicklung eines Verständnisses für die Funktionsweise von Deep Learning konzentrieren, die auch dann noch nützlich sind, wenn sich die von dir verwendete Infrastruktur ändert.
Dieses Buch soll dir die Grundlagen vermitteln, die du brauchst, um eingebettete ML-Produkte zu entwickeln, die Probleme lösen, die dir wichtig sind. Wir hoffen, dass wir dir helfen können, einige der aufregenden neuen Anwendungen zu entwickeln, von denen ich überzeugt bin, dass sie in den nächsten Jahren in diesem Bereich entstehen werden.
Get TinyML now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.