Maschinelles Lernen für Embedded-Systeme
Der Beginn interaktiver Online-Dienste in privaten Haushalten, wie Siri von Apple und Amazon Echo, machte Verbraucher auf den Anstieg von künstlicher Intelligenz (KI) und maschinellem Lernen aufmerksam. Obwohl die Dienste über eine Vielzahl von Embedded-Systemen bereitgestellt werden, müssen die zentralen KI-Algorithmen in der Cloud ausgeführt werden. Dies ist jedoch keine langfristige Lösung für die vielen Anwendungen des maschinellen Lernens, die zukünftige Embedded-Systeme bieten werden.
Selbstfahrende Autos lernen durch Beispiele, die ihnen in Simulationen und realen Fahrbedingungen demonstriert werden, den Umgang mit Hindernissen. In ähnlicher Weise können Roboter heute von Bedienern angeleitet werden, um Aufgaben zu erledigen, anstatt mühsam von Hand programmiert zu werden. Obwohl diese Systeme für einige Dienste die Cloud in Anspruch nehmen könnten, müssen die zentralen Algorithmen für maschinelles Lernen lokal ausgeführt werden, da sie sich die Latenz, die das Übermitteln von Daten an die Cloud verursacht, nicht leisten können.
Viele Systeme haben schlicht keinen einfachen Zugriff auf die Cloud. Zum Beispiel sind Bohrsysteme, die für die Ressourcengewinnung benötigt werden, oft weit von einer drahtlosen Hochgeschwindigkeitsinfrastruktur entfernt. Gerätebediener fordern nun jedoch eine stärkere Nutzung von maschinellem Lernen, um genauer überwachen zu können, was mit ihren Anlagen geschieht und auf welche Problemanzeichen sie achten müssen. Herkömmliche Closed-Loop-Algorithmen sind oft nicht flexibel genug, um mit den vielen möglichen Fehlerquellen und Interaktionen mit der Umgebung in solchen Systemen umzugehen. Indem Systeme mithilfe maschineller Lernprozesse auf das Verhalten realer Interaktionen trainiert werden, ist es möglich, eine höhere Zuverlässigkeit aufzubauen.
Die Überwachung ist ein weiterer Bereich, in dem eine lokale Verarbeitung erforderlich ist, um unmittelbare Bedrohungen zu identifizieren. Hier kann die Cloud jedoch herangezogen werden, um zusätzliche Verarbeitungs- und Nachschlagevorgänge in Online-Datenbanken durchzuführen, um zu prüfen, ob weitere Maßnahmen erforderlich sind. Sogar die drahtlosen Kommunikationsverbindungen, die zum Weiterleiten der Information verwendet werden, beginnen, maschinelles Lernen zu nutzen. So sind die Parameter, die 5G-Funkmodems steuern, so komplex, dass einige Implementierer sich dem maschinellen Lernen zugewandt haben, um ihre Leistung basierend auf der Erfahrung abzustimmen.
Die Auswahl an Anwendungen für maschinelles Lernen spiegelt sich in der Anzahl der verfügbaren Ansätze wider. Heute liegt der Schwerpunkt der Cloud-basierten künstlichen Intelligenz auf der DNN-Architektur (Deep Neural Network). Das DNN definierte den Punkt, an dem neuronale Netzkonzepte für die Bild- und Audioklassifizierung sowie -erkennung praktikabel wurden, wobei spätere Varianten wie adversariale und wiederkehrende DNNs für Echtzeitsteuerungsaufgaben an Bedeutung gewannen.
Ursprünglich verwendeten neurale Netzwerke eine relativ flache Struktur mit nicht mehr als einer „versteckten“ Ebene zwischen Eingangs- und Ausgangsebene von simulierten Neuronen. Mitte der 2000er-Jahre entwickelten Forscher effizientere Techniken für das Training. Obwohl der Prozess rechenintensiv blieb, wurde es möglich, die Anzahl der versteckten Ebenen zu erhöhen – manchmal auf Hunderte –, und damit auch die Komplexität der Daten, mit denen die neuronalen Netze umgehen können.

Abb. 1: Geringe Latenzinterferenz durch Layer-Datenfluss auf dem Chip
Die Beschaffenheit der Ebenen selbst änderte sich mit der Einführung von Faltungs- und Pooling-Ebenen. Diese sind nicht vollständig in der Art und Weise verbunden, wie es die Ebenen in den ursprünglichen neuronalen Netzwerken waren. Diese Ebenen führen eine lokalisierte Filterung und Sortierung von Eingaben durch, die zum Extrahieren von Funktionen auf hoher Ebene und zum Durchführen von Dimensionsreduktionen nützlich sind, die es dem DNN ermöglicht, Klassifizierungen für hochkomplexe Eingaben durchzuführen.
Es noch viele weitere Arten von Algorithmen für maschinelles Lernen. Einige Systeme können mehr als eine Technik gleichzeitig verwenden. In der Forschung und Entwicklung in Bezug auf maschinelles Lernen in hochzuverlässigen Systemen konzentriert man sich derzeit unter anderem auf die Verwendung eines zweiten Algorithmus als Backup. Seit ihrer Einführung sind Bedenken hinsichtlich der Zuverlässigkeit von DNNs unter schwierigen Bedingungen und der Anfälligkeit von DNNs für kontradiktorische Beispiele gewachsen. Dabei handelt es sich um absichtlich veränderte Eingaben, die in der Vergangenheit beispielsweise dazu geführt haben, dass trainierte Systeme Straßenschilder ignorieren oder falsch interpretieren. Einfachere Algorithmen mit besser vorhersagbarem Verhalten, auch wenn sie weniger leistungsfähig sind, können als Backup dienen, um unerwünschtes Verhalten auf Systemebene zu verhindern.
Bevor DNNs möglich wurden, wurde die Support-Vektor-Maschine (SVM) häufig bei Bild- und Signalklassifizierungsaufgaben verwendet. Die Fähigkeit von DNNs, hochkomplexe Eingaben mit hoher Auflösung zu verarbeiten, machte viele SVM-Implementierungen überflüssig. Für Daten mit geringerer Dimensionalität kann die SVM jedoch immer noch effektiv sein, insbesondere für Steuersysteme, die eine chaotische Dynamik aufweisen. Die SVM nimmt ihre Daten als eine Menge von mehrdimensionalen Vektoren und versucht, eine Hyperebene zwischen verwandten Datenclustern zu definieren.
Bereits seit den ersten Experimenten zur künstlichen Intelligenz kommt Entscheidungsbäumen eine wichtige Rolle zu. Ursprünglich wurden diese mithilfe von Experteneingaben manuell erstellt, um Regeln zu definieren, die ein Computer verwenden kann. So sollte er bestimmen, wie Daten verarbeitet werden. Der Random Forest kombiniert das Konzept von Entscheidungsbäumen mit maschinellem Lernen. Der Algorithmus erstellt viele Entscheidungsbäume aus den Trainingsdaten, wobei er einen Durchschnitt der Ausgabe wählt. Hierbei kann es sich um einen Modus für Klassifizierungsaufgaben oder einen Mittelwert für Regressionsanwendungen handeln. Dieser einzelne Wert wird anschließend ausgegeben.

Abb. 2: Auf Basis von Trainingsdaten erstellte Entscheidungsbäume – Bild via Premier Farnell
Gaußsche Prozesse stellen ein weiteres Werkzeug für das maschinelle Lernen dar und wurden als Backups für DNNs vorgeschlagen, da sie auf der Wahrscheinlichkeitstheorie aufbauen und nicht nur auf Trainingsdaten basierende Schätzungen liefern. Stattdessen geben sie eine Vorstellung davon, wie zuverlässig die Vorhersage tatsächlich ist. Mithilfe dieser Informationen können nachgeschaltete Algorithmen beschließen, vorsichtiger mit den Ausgaben der Systeme für maschinelles Lernen umzugehen und entsprechende Maßnahmen zu ergreifen.
Ein zentrales Problem bei der Implementierung von Embedded-Systemen des maschinellen Lernens ist die Leistung. Der Schlüssel zur Einführung von DNNs, erst durch die Forschungsgemeinschaft und dann durch die großen Cloud-Computing-Betreiber, war die Art und Weise, in der die Verarbeitung durch die von High-End-Grafikprozessoren (GPUs) bereitgestellten Shader-Engines beschleunigt werden konnte. Durch die parallele Bereitstellung mehrerer Fließkomma-Engines bieten GPUs einen wesentlich höheren Durchsatz für typische DNN-Workloads sowohl für das Training als auch für Inferenzprozesse. Für den Embedded-Bereich stellen Anbieter wie nVidia mit ihrem Tegra X1 und NXP über die i.MX-Familie GPUs zur Verfügung, die DNN und ähnliche arithmetisch intensive Workloads ausführen können.
Ein Problem für Benutzer von GPUs zum maschinellen Lernen ist der Energieverbrauch. Die relativ kleinen lokalen Speicher, auf die Shader-Cores zugreifen, können zu hohen Datenaustauschraten mit dem Hauptspeicher führen. Um die Speicheranforderungen zu erfüllen, suchen die Betreiber von Cloud-Servern nach angepassten DNN-Prozessoren, die mit den Speicherzugriffsmustern von DNNs arbeiten und so den Energieverbrauch bei Zugriffen auf DRAM-Chips reduzieren. Ein Beispiel ist die Tensorflow Processing Unit (TPU) von Google. Ähnliche kundenspezifische Prozessoren werden jetzt für Prozessoren von Embedded-Systemen eingeführt. Ein Beispiel ist der Prozessor für maschinelles Lernen in der SnapDragon-Plattform von Qualcomm.
Engagierte DNN-Engines nutzen Optimierungen, die für typische Embedded-Anwendungen möglich sind. Üblicherweise umfasst das Training viel mehr Berechnungen als Inferenzen. Daher wird bei maschinellem Lernen in Embedded-Systemen immer häufiger entschieden, Trainings an Cloud-basierte Server zu übergeben und nur Inferenzen auf der Embedded-Hardware durchzuführen.
Forscher haben herausgefunden, dass die volle Auflösung der Fließkomma-Arithmetik, die von GPUs und Allzweckprozessoren bereitgestellt wird, für viele Inferenzaufgaben nicht erforderlich ist. Die Leistungsfähigkeit vieler DNNs wurde durch eine Angleichung nur unwesentlich reduziert. Dadurch ist es möglich, die arithmetische Auflösung auf 8 Bit oder weniger zu reduzieren. Einige DNNs arbeiten sogar mit neuronalen Gewichten, die nur zwei oder drei diskrete Werte annehmen können.
Eine weitere Optimierung ist die sogenannte Netzwerk-Beschneidung. Hierbei wird eine Analyse des DNN nach dem Training durchgeführt, um Verbindungen zwischen Neuronen zu entfernen, die wenig oder keinen Einfluss auf die Ausgabe haben. Das Entfernen ihrer Verbindungen vermeidet unnötige Berechnungen und reduziert zudem die durch Speicherzugriffe verbrauchte Energie erheblich.
Das Field-Programmable Array (FPGA) ist gut positioniert, um die Vorteile von approximativen Berechnungen und ähnlichen Optimierungen für Inferenzen zu nutzen. Obwohl Implementierungen von ARM- und weiteren Mikroprozessoren nun über Single-Instruction-Multiple-Data-Pipelines (SIMD) verfügen, die für niedrig aufgelöste Integer-Daten bis auf 8 Bit optimiert sind, ermöglicht das FPGA eine fein abgestimmte Bitauflösung. Laut Xilinx verringert die Reduzierung der Genauigkeit von 8 Bit auf Binärdaten die Nutzung der FPGA-Lookup-Tabelle (LUT) um das 40-fache.
Plattformen wie das Ultra96board machen es möglich, die Verarbeitung auf einen Universalprozessor und eine programmierbare Logikstruktur aufzuteilen, wobei eine enge Interaktion zwischen beiden unterstützt wird. Basierend auf der Xilinx Zynq UltraScale + MPSoC-Architektur ermöglicht eine solche Plattform die einfache Implementierung komplexer DNN-Architekturen, die spezielle Ebenen verwenden. Das FPGA-Fabric innerhalb des MPSoC kann Faltungs- und Pooling-Ebenen sowie Thresholding-Funktionen verarbeiten, während der Zarm-Prozessor von Zynq mit einem Linux-basierten Betriebssystem und dazugehöriger Software den Datenfluss verwaltet und Ebenen mit weniger vorhersagbaren Speicherzugriffsmustern ausführt.
Innerhalb des FPGA-Gefüges einer Plattform wie der Ultra96-Platine können Entwickler auf die programmierbaren DSP-Slices, die einfach als duale 8-Bit-Ganzzahl-Prozessoren konfiguriert werden können, sowie auf die Nachschlagetabellenlogik zum Implementieren von Binär- oder Ternärverarbeitung zugreifen. Ein Hauptvorteil der Verwendung von programmierbarer Hardware ist die Fähigkeit, Ebenen zusammenzuführen. Die arithmetischen Einheiten können direkt oder über Block-RAMs miteinander verbunden sein, so dass von jeder Ebene erzeugte Daten weitergeleitet werden, ohne dass ein externer Speicher als Puffer verwendet wird. Obwohl Algorithmen für maschinelles Lernen schwierig zu erstellen sind, hat die Forschungsgemeinschaft Konzepte wie Open Source akzeptiert. Das Ergebnis ist, dass es eine Anzahl von frei verfügbaren Paketen gibt, auf die Entwickler für die Systemimplementierung zurückgreifen können, mit dem Vorbehalt, dass die meisten für die Verwendung auf Serverplattformen entwickelt wurden. Anbieter wie Xilinx haben es Benutzern ihrer Hardware ermöglicht, DNN-Implementierungen auf FPGA zu portieren. Die Xilinx ML Suite zum Beispiel kann ein Caffe-DNN-Modell verwenden, das in der Desktop- oder Serverumgebung trainiert wurde, und es auf ein Zynq-basiertes Ziel übertragen. Der Übersetzer teilt die Verarbeitung zwischen benutzerdefiniertem Code, der für den Armprozessor kompiliert wurde, und einem voroptimierten faltungsneuronalen Netzwerk auf, das in die FPGA-Fabric geladen wird.

Abb. 3: xFdnn: Direkte Deep-Learning-Inferenz von Caffe
Für Workloads, die nicht zu einem DNN gehören, können Entwickler über Open-Source-Bibliotheken auf eine Vielzahl von Algorithmen zugreifen, einschließlich SVM- und Random-Forest-Implementierungen. Die meisten dieser Bibliotheken sind eher für die Programmiersprache Python als für C/C++ gedacht, welche allgemein für die Entwicklung von Embedded-Systemen bevorzugt wird. Die wachsende Beliebtheit von Linux macht es jedoch relativ einfach, eine Python-Laufzeit auf das Ziel zu laden und sie in einem Embedded-System zu verwenden.
Dank leistungsfähigerer Hardware und der Verfügbarkeit von Werkzeugen, die eine Prototypenerstellung ermöglichen, wird maschinelles Lernen für Embedded-Systeme schon bald zur Realität.
Maschinelles Lernen für Embedded-Systeme – Veröffentlichungsdatum: 15. Oktober 2018 von Farnell