Elektroniknet Logo

Machine Learning auf embedded Systemen

Open-Source-Entwicklungstools für ML

NXP
© NXP

Entwicklungstools wie die DeepView-ML-Tool-Suite, der Glow-ML-Compiler und das PyTorch-Framework vereinfachen das Erstellen von Machine-/Deep-Learning-Projekten auf embedded Systemen. Sie bieten Entwicklern Unterstützung, um Edge-Anwendungen der nächsten Generation zu realisieren.

Mit dem Internet of Things (IoT) haben Milliarden vernetzter Geräte Einzug in unsere Wohnungen, Fahrzeuge, Büros, Krankenhäuser, Fabriken und Städte gehalten. Die IoT-Pioniere stellten sich ausgedehnte Netzwerke mit Funksen-sorknoten vor, die Billionen von Bytes-Daten zur Aggregation, Analyse und Entscheidungsfindung in die Cloud übermitteln. In den letzten Jahren hat die Vision einer IoT-getriebenen, cloud-basierten Datenverarbeitung einem neuen Paradigma Platz gemacht: Edge-Computing.

Entwickler von embedded Systemen setzen die neuesten Fortschritte bei Machine-Learning-Techniken so ein, dass die Leistungsfähigkeit künstlicher Intelligenz (KI) am Netzwerkrand (Edge) genutzt werden kann. Die heutigen IoT-Geräte brauchen wenig Energie und können komplexe Machine- und Deep-Learning-Algorithmen lokal ohne Cloud-Verbindung ausführen, wodurch Bedenken im Hinblick auf Latenz, Leistung, Sicherheit und Datenschutz vermindert werden. Neue ML-Anwendungen und neuronale Netzwerke auf Edge-Geräten umfassen persönliche Assistenten, Roboter in Fabriken, Sprach- und Gesichtserkennung in vernetzten Fahrzeugen, KI-aktivierte Überwachungskameras für zuhause sowie die vorausschauende Wartung von elektrischen Küchen- und Haushaltsgeräten und industrieller Ausrüstung.

Der ML-Markt wächst schnell und die Anwendungsfälle für Edge-Computing-Anwendungen nehmen exponentiell zu. Laut Tirias Research werden 98 % der Edge-Geräte bereits 2025 irgendeine Form des Machine-Learning nutzen. Auf der Grundlage dieser Marktprognosen werden innerhalb dieses Zeitraums 18–25 Milliarden Geräte Machine- und Deep-Learning-Funktionen enthalten. 2021 werden sich Maschine-/Deep-Learning-Anwendungen etabliert haben, da immer mehr Entwickler von embedded Systemen Zugang zu Komponenten mit geringem Energiebedarf, Entwicklungs-Frameworks und Softwaretools erhalten, die sie zum Optimieren ihrer ML-Projekte brauchen.

Ausrichtung von ML-Entwicklungsumgebungen auf Mainstream-Entwickler
Noch vor kurzer Zeit waren ML-Entwicklungsumgebungen hauptsächlich auf die Unterstützung von Entwicklern ausgerichtet, die bereits beträchtliche Erfahrung mit ML- und Deep-Learning-Anwendungen haben. Um die ML-Anwendungsentwicklung jedoch im großen Umfang voranzutreiben, muss die ML-Unterstützung für die Masse der Entwickler von embedded Systemen nutzerfreundlicher und zugänglicher werden.

Das Aufkommen von ML am Rand des Netzwerks ist im Vergleich zu klassischen, cloud-basierten KI-Systemen ein relativ neuer Trend mit einzigartigen Anforderungen an die Anwendungen. Allerdings sind die Ressourcen von embedded Systemen hinsichtlich Leistung auf Chip- und Systemebene beschränkt, was neue und andere Softwaretools erfordert. Die ML-Entwickler haben zudem völlig neue Entwicklungsprozesse für Edge-Anwendungen eingeführt, wie das Modelltraining, die Bereitstellung einer Inferenzmaschine auf den Zieleinheiten sowie andere Aspekte der Systemintegration.

Relevante Anbieter

NXP
Bild 1. ML-Workflow-Tools bieten Entwicklern erweiterte Funktionen zum Erstellen und Bereitstellen von Modellen für neuronale Netzwerke auf Mikrocontrollern.
© NXP

Hohe Rechenleistung und niedrige Stromaufnahme

Nachdem ein ML-Modell trainiert, optimiert und quantisiert wurde, wird das Modell in der nächsten Entwicklungsphase auf der Zieleinheit, beispielsweise einem Mikrocontroller oder einem Mikroprozessor, bereitgestellt, sodass es die Inferenzfunktion ausführen kann.

Eine neue Klasse von Zielsystemen für ML-Anwendungen bieten sogenannte Crossover-Mikrocontroller. Der Begriff »Crossover« bezieht sich auf eine Kombination von Leistungsfähigkeit und Funktionen eines Mikroprozessors (Applikationsprozessor) mit der Nutzerfreundlichkeit, der geringen Energieaufnahme und dem Echtzeitbetrieb mit geringer Interrupt-Latenzzeit eines Mikrocontrollers. Ein typischer Crossover-Mikrocontroller, etwa ein Baustein der i.MX-RT-Serie von NXP, enthält einen Cortex-M-Kern von ARM, der mit einer Taktfrequenz von 300 MHz bis 1 GHz betrieben wird. Diese Crossover-Mikrocontroller verfügen über eine ausreichende Verarbeitungsleistung zur Unterstützung von ML-Inferenzmaschinen, beispielsweise ohne Bedarf zusätzlicher ML-Beschleunigung, sowie über den geringen Energiebedarf, der für leistungsbeschränkte Edge-Anwendungen erforderlich ist.

Im Idealfall können Entwickler von embedded Systemen eine umfassende ML-Entwicklungsumgebung inklusive Softwaretools, Anwendungsbeispielen und Benutzerhandbüchern verwenden, um Open-Source-Inferenzmaschinen auf einem embedded System bereitzustellen. So bietet die eIQ-Umgebung von NXP Inferenzunterstützung für Arm NN, die ONNX (Open Neural Network Exchange) Runtime-Maschine, TensorFlow Lite und den Glow-Compiler für neuronale Netzwerke. Entwickler können einen einfachen BYOM-Prozess (Bring Your Own Model) nutzen, mit dem sie ein trainiertes Modell mithilfe von öffentlichen oder privaten cloud-basierten Tools erstellen und das Modell dann in die eIQ-Umgebung übertragen, wo es auf der für den entsprechenden Mikrocontroller optimierten Inferenzmaschine ausgeführt wird.

Viele Entwickler brauchen heute ML- und Deep-Learning-Tools und -Techniken für aktuelle und zukünftige Embedded-System-Projekte. Auch hier muss die ML-Unterstützung für die betreffenden Entwickler umfassender und benutzerfreundlicher werden. Umfassende Unterstützung beinhaltet einen durchgängigen Prozess, der es Entwicklern ermöglicht, ihre Trainingsdaten zu importieren, das optimale Modell für ihre Anwendung auszuwählen, das Modell zu trainieren, Optimierung und Quantisierung durchzuführen, die Profilierung auf dem Zielgerät abzuschließen und dann zur abschließenden Produktion überzugehen.

Für die meisten Entwickler bedeutet Nutzerfreundlichkeit Zugriff auf vereinfachte, optimierte Benutzeroberflächen, die die zugrundeliegenden Details verbergen und die Komplexität des ML-Entwicklungsprozesses handhaben. Die ideale Benutzeroberfläche ermöglicht es dem Entwickler, einige Optionen auszuwählen sowie anschließend Trainingsdaten leicht zu importieren und das Modell auf dem Zielsystem bereitzustellen.

Die Anzahl von Verarbeitungsplattformen, Frameworks, Tools und anderen verfügbaren Ressourcen, die Entwicklern beim Erstellen und Bereitstellen von ML-Anwendungen und Modellen für neuronale Netzwerke helfen, nimmt ständig zu. Im Folgenden werden mehrere Entwicklungstools und Frameworks näher betrachtet, um zu zeigen, wie sie Entwickler bei der Arbeit unterstützen und ML-Entwicklungsprojekte vereinfachen.

Vereinfachung des Prozesses mit einer Machine-Learning-Tool-Suite

Die DeepView-ML-Tool-Suite von Au-Zone Technologies [1] ist ein gutes Beispiel für eine intuitive grafische Benutzeroberfläche (GUI) und den entsprechenden Arbeitsablauf. Mit ihrer Hilfe können Entwickler aller Fähigkeitsstufen – angefangen bei embedded Entwicklern über Data-Scientists bis hin zu ML-Experten – Datensätze und Modelle für neuronale Netzwerke importieren und diese Modelle dann trainieren und auf einer Vielfalt von Zielsystemen bereitstellen.

NXP hat seine eIQ-Entwicklungsumgebung kürzlich erweitert. Sie umfasst nun die DeepView-Tool-Suite, die Entwicklern beim Optimieren ihrer ML-Projekte hilft (Bild 1). Das neue eIQ-ML-Workflowtool bietet Entwicklern erweiterte Funktionen zum Bereinigen, Quantisieren, Validieren und Bereitstellen öffentlicher und pro-prietärer Modelle für neuronale Netzwerke auf NXP-Geräten. Zielgerichtete Profilierungsfunktionen auf Diagrammebene bieten Entwicklern Einblicke in die Laufzeit, sodass sie Architekturen für Modelle von neuronalen Netzwerken sowie Systemparameter und die Laufzeitleistung optimieren können.

Durch das Hinzufügen der Laufzeit-Inferenzmaschine als Ergänzung zu Open-Source-Inferenztechniken können Entwickler ML-Arbeitslasten und -Leistung bei geringem Aufwand auf mehreren Geräten bereitstellen und bewerten. Eine wesentliche Funktion dieser Laufzeit-Inferenzmaschine ist die Optimierung der Systemspeichernutzung und des Datenverkehrs für individuell gestaltete embedded Systeme.

Optimierung neuronaler Netzwerke mit Open-Source-Glow-Compiler

Der Glow-Compiler für neuronale Netzwerke ist ein populäres Open-Source-Backend-Tool für High-Level-ML-Frameworks. Er bietet Optimierungen und die Code-Erzeugung von Diagrammen für neuronale Netzwerke. Durch die Ausbreitung von Deep-Learning-Frameworks wie PyTorch bieten ML-Compiler und Compiler für neuronale Netzwerke Optimierungen, die das Inferenzieren auf einer Vielfalt von Mikroprozessorplattformen beschleunigen.

Facebook als führender Wegbereiter von PyTorch führte Glow – eine Kurzform von Graph Lowering Compiler – im Mai 2018 als Open-Source-Community-Projekt mit dem Ziel ein, Optimierungen zu erzielen, um die Leistung von neuronalen Netzwerken zu steigern. Glow hat sich in den letzten Jahren, dank der Unterstützung von über 130 Mitwirkenden weltweit, beträchtlich weiterentwickelt.

Der Glow-Compiler nutzt ein Berechnungsdiagramm, um einen optimierten Maschinencode in zwei Phasen zu generieren (Bild 2). Zuerst optimiert er die Modell-operatoren und Modellschichten mithilfe von standardmäßigen Compiler-Techniken. In der zweiten Phase der Modellkompilierung verwendet Glow LLVM-Module (früher Low Level Virtual Machine), um zielspezifische Optimierungen zu ermöglichen. Glow unterstützt zudem einen Ahead-of-time-Kompilierungsmodus (AOT), der Objektdateien erzeugt und unnötigen Mehraufwand eliminiert, um die Anzahl der Berechnungen zu reduzieren und Speicheraufwand zu minimieren. Diese AOT-Technik ist ideal für Mikrocontrollersysteme mit begrenzter Speicherkapazität.

NXP
Bild 2. Der Glow-Compiler verwendet ein Berechnungsdiagramm, um einen optimierten Maschinencode für ML-Anwendungen zu generieren.
© NXP

ML-Tools wie der Glow-Compiler können die Entwicklung von ML/neuronalen Netzwerken vereinfachen und die Edge-Verarbeitungsleistung auf Low-Power-Mikrocontrollern verbessern. Die anwendungsbereite Standardversion von Glow ist auf GitHub verfügbar, geräteunabhängig und bietet Entwicklern die Flexibilität, Modelle für neuronale Netzwerke für führende Mikroprozessoren zu kompilieren, einschließlich solcher, die auf Cortex-A- und Cortex-M-Kernen von ARM basieren.

Zur Vereinfachung von ML-Projekten, hat NXP den Glow-Compiler in die eIQ-Entwicklungsumgebung und in sein MCUXpresso-Software-Entwicklungskit integriert. Es bündelt den Glow-Compiler und Quantisierungstools in einem benutzerfreundlichen Installationsprogramm und bietet eine detaillierte Dokumentation, sodass Entwickler ihre Modelle schnell produktiv einsetzen können. Diese optimierte Glow-Implementierung ist für Cortex-M-Kerne von Arm und den Tensilica-HiFi-4-DSP von Cadence ausgelegt und bietet zudem plattformspezifische Optimierungen für die Mikrocontroller der i.MX-RT-Serie.

Unter Verwendung von CIFAR-10-Datensätzen (CIFAR, Canadian Institute For Advanced Research) als Benchmark für neuronale Netzwerkmodelle hat NXP kürzlich den Mikrocontroller i.MX RT1060 getestet, um Leistungsunterschiede zwischen verschiedenen Glow-Compiler-Versionen zu bewerten. NXP hat außerdem Tests mit dem Mikrocontroller i.MX RT685 ausgeführt, der derzeit einzige Baustein der i.MX-RT-Serie mit einem integrierten, für die Verarbeitung von neuronalen Netzwerkoperatoren optimierten DSP.

Die i.MX RT1060 enthält einen 600-MHz-Arm-Cortex-M7, 1 MB SRAM sowie optimierte Funktionen für Echtzeitanwendungen wie beispielsweise für hohe Datenraten nutzbare GPIO und CAN-FD und einen synchronen Parallel-NAND/NOR/PSRAM-Controller. Der i.MX RT685 enthält einen 600-MHz-Cadence-Tensilica-HiFi-4-DSP-Kern, gepaart mit einem 300-MHz-Arm-Cortex-M33-Kern und 4,5 MB SRAM auf dem Chip sowie sicherheitsrelevante Funktionen.

Die Glow-Implementierung von NXP ist eng an der neuronalen Netzwerkbibliothek – NNLib – von Cadence ausgerichtet. Obwohl der HiFi-4-DSP-Kern des RT685-Mikrocontrollers zur Verbesserung der Sprachverarbeitung ausgelegt ist, kann er zusätzlich eine Vielfalt von neuronalen Netzwerkoperatoren beschleunigen, wenn er mit der NNLib-Bibliothek als LLVM für Glow verwendet wird. Obwohl NNLib Ähnlichkeiten zu CMSIS-NN aufweist, bietet die Bibliothek einen umfangreicheren Satz an manuell abgestimmten Operatoren, die für den HiFi-4-DSP optimiert sind. Auf der Grundlage desselben CIFAR-10-Benchmark-Beispiels bietet der HiFi-4-DSP eine 25-fache Leistungssteigerung für neuronale Netzwerksoperationen im Vergleich zu einer standardmäßigen Glow-Compiler-Implementierung.

PyTorch für die MCU-basierte ML-Entwicklung

PyTorch ist ein Open-Source-Machine-Learning-Framework, das vornehmlich vom KI-Forschungslabor von Facebook entwickelt wurde und auf der Torch-Bibliothek basiert.

PyTorch wird häufig von Entwicklern zum Erstellen von Machine-/Deep-Learning-Projekten und -Produkten genutzt. Das Framework ist eine gute Wahl für Mikrocontrollersysteme, da es minimale Einschränkungen für Verarbeitungsplattformen aufweist und ONNX-Modelle erzeugen kann, die von Glow kompiliert werden können.

Da Entwickler über PyTorch direkt auf Glow zugreifen können, sind sie in der Lage, ihre Modelle in derselben Entwicklungsumgebung zu erstellen und zu kompilieren, wodurch Schritte eliminiert werden und der Kompilierungsprozess vereinfacht wird. Zudem können Entwickler Bundles direkt aus einem Python-Skript generieren, ohne zuerst ONNX-Modelle erzeugen zu müssen.

Bis vor kurzem waren ONNX und Caffe2 die einzigen Eingabemodellformate, die von Glow unterstützt wurden. PyTorch kann nun Modelle direkt in das ONNX-Format zur Verwendung durch Glow exportieren.

Da viele bekannte Modelle in anderen Formaten, beispielsweise TensorFlow, erstellt wurden, stehen Open-Source-Tools für die Modellkonvertierung zur Verfügung, um sie in das ONNX-Format zu überführen. Zu populären Tools für die Formatkonvertierung zählen MMdnn, ein von Microsoft unterstütztes Toolset, das den Benutzern hilft, mit verschiedenen Deep-Learning-Frameworks zu arbeiten, und tf2onnx, das zum Konvertieren von TensorFlow-Modellen in das ONNX-Format verwendet wird.

Tools und Frameworks erleichtern Entwicklung von ML-Anwendungen

Machine- und Deep-Learning-Technologien entwickeln sich immer schneller weiter. Gleichzeitig sehen wir einen starken Marktimpuls für IoT- und andere Edge-Geräte, die Machine-/Deep-Learning-Algorithmen ausführen und autonome Entscheidungen ohne Cloud-Eingriff treffen können. Obwohl die Migration von KI-Anwendungen aus der Cloud an den Rand des Netzwerks ein unaufhaltbarer Trend ist, geht er mit Herausforderungen einher, da die Entwickler Möglichkeiten zum Optimieren von ML-Anwendungen finden müssen, die auf winzigen Edge-Einheiten mit Leistungs-, Verarbeitungs- und Speicherbeschränkungen ausgeführt werden.

Genau wie Architekten und Bauunternehmer spezielle Werkzeuge für den Bau von Wohnungen und Städten der Zukunft benötigen, brauchen Entwickler von embedded Systemen optimierte, benutzerfreundliche Softwaretools und Frameworks, um den Entwicklungsprozess von Machine-/Deep-Learning-Projekten auf embedded Systemen zu vereinfachen. Die DeepView-ML-Tool-Suite, der Glow-ML-Compiler und das PyTorch-Framework sind Beispiele für eine zunehmende Anzahl von Entwicklungsressourcen, die Entwicklern von embedded Systemen dabei helfen, die nächste Generation Edge-KI-Anwendungen zu entwickeln. (hs)

LITERATUR

[1] Visual intelligence at the edge. Au-Zone Technologies, Website, www.embeddedml.com.


Verwandte Artikel

NXP Semiconductors Germany