Wenn die Inferenz – also die Schlussfolgerung – direkt auf den bildgebenden Geräten selbst stattfinden soll, werden die Dinge interessant. Wie kann eine derart leistungshungrige Technologie, außerhalb von großen Rechenzentren in den kleinen ressourcenoptimierten Embedded Geräten effizient und nachhaltig eingesetzt werden?
Es gibt bereits einige funktionierende Ansätze und Lösungen, um Neuronale Netze auf Edge-Geräten effizient zu beschleunigen. Aber nur wenige sind flexibel genug, um mit der schnell fortschreitenden KI-Entwicklung Schritt zu halten. Vereinfacht ausgedrückt beschreibt der Begriff „Edge Intelligenz“ dabei eine Geräteklasse, die mithilfe von Neuronalen Netzen und Machine-Learning-Algorithmen Inferenzaufgaben am Rande von Netzwerken („on-the-edge“) lösen kann. Eine Frage, die man sich in diesem Zusammenhang stellen sollte ist, warum künstliche Intelligenz vermehrt in Embedded Geräten Einsatz finden soll und warum Deep Learning und Deep Neural Networks gerade jetzt in den Fokus der Industrie rücken?
Die Antworten auf diese Frage drehen sich weniger um die KI an sich, sondern um Themen wie Bandbreite, Latenzzeiten, Sicherheit oder dezentrale Datenverarbeitung. Also eher die Kernthemen und Herausforderungen moderner Industrie 4.0 Anwendungen. Eine wichtige Aufgabe ist, den inhärenten Wettbewerb um die Bandbreite des gemeinsamen genutzten Kommunikationskanals zu reduzieren, indem große Mengen an Sensor- oder Kameradaten schon auf den Edge-Geräten selbst gefiltert beziehungsweise in verwertbare Informationen gewandelt werden.
Die unmittelbare Datenverarbeitung ermöglicht zudem Prozessentscheidungen direkt am Ort der Bildaufnahme ohne die Latenz der Datenkommunikation. Aus technischer oder sicherheitsrelevanter Sicht kann es sogar sein, dass eine zuverlässige und kontinuierliche Kommunikation mit einer zentralen Verarbeitungseinheit, vielleicht sogar in der Cloud, nur schwer möglich oder unerwünscht ist. Eine derartige Kapselung der erworbenen Daten auf den Edge-Geräten trägt zudem zur Dezentralisierung der Datenspeicherung und -verarbeitung bei und verringert damit die Wahrscheinlichkeit eines möglichen Angriffs auf das gesamte System. Denn die Sicherheit der erzeugten und übertragenen Daten ist für jede Organisation von größter Bedeutung.
Eine verteilte Systemintelligenz schafft zudem eine klare Trennung auftragsspezifischer Aufgaben. In einer Fabrik kann es beispielsweise hunderte Arbeitsstationen geben, die einen Bildklassifizierungsdienst benötigen, der an jeder Station einen anderen Satz von Objekten analysieren soll. Das Hosten mehrerer Klassifikatoren in der Cloud ist aber mit Kosten verbunden. Wünschenswert ist eine kostengünstige Lösung, die sämtliche Klassifikatoren in der Cloud trainiert und deren Modelle an die Edge-Geräte sendet, und zwar angepasst an die jeweilige Arbeitsstation. Die Spezialisierung jedes Modells weist zudem eine bessere Leistung auf als ein Klassifikator, der über alle Arbeitsstationen hinweg Vorhersagen trifft. Zusätzlich senken die einfachen Speziallösungen, im Gegensatz zur Datacenter Realisierung, auch wertvolle Entwicklungszeit. Dies alles spricht dafür, die Inferenzausführung auf Edge-Geräte auszulagern.
Herausforderung Ressourcen
Warum sind Neuronale Netze für den Embedded Einsatz „eigentlich“ ungeeignet beziehungsweise worin liegen die Herausforderungen, um sie effektiv „on-the-edge“ einzusetzen? KI-Inferenzaufgaben auf Edge-Geräten auszuführen ist nicht so einfach. Beim Thema „Edge Computing“ allgemein dreht sich alles um Effizienz. Edge-Geräten stehen meist nur begrenzte Mengen an Rechen-, Speicher- und Energieressourcen zur Verfügung.
Berechnungen müssen also mit hoher Effizienz erfolgen, sollen aber gleichzeitig hohe Leistungswerte erbringen und das Ganze bei niedrigen Latenzzeiten – was irgendwie unvereinbar scheint. Mit der Ausführung von Convolutional Neural Networks (CNNs) haben wir es dazu noch mit der Königsdisziplin zu tun. Gerade CNNs sind dafür bekannt, dass sie extrem rechenintensiv sind und Milliarden von Berechnungen benötigen, um eine Eingabe zu verarbeiten. Mit Millionen Parametern, welche die CNN-Architektur selbst beschreiben, sind sie prinzipiell kein guter Kandidat für Edge-Computing.
Für den Embedded Einsatz bieten sich „parameter-effiziente“ Netze an, wie beispielsweise MobilNet, EfficientNet oder SqueezeNet, die eine geringere Anzahl von Parametern benötigen, um sie zu beschreiben. Das reduziert deutlich den Speicherbedarf und die Rechenanforderungen. Aber damit nicht genug. Um die Speicheranforderungen weiter zu senken, müssen die Netze komprimiert werden. So können zum Beispiel unwichtige Parameter nach dem Training durch sogenanntes Pruning entfernt, oder die Anzahl Bits zur Beschreibung der Parameter durch eine Quantisierung reduziert werden. Die reduzierte Speichergröße des CNN wirkt sich zudem positiv auf dessen Verarbeitungszeit aus. Und das führt uns zum letzten Aspekt der Optimierung.
Trotz der Verwendung parametereffizienter und komprimierter Netzwerke muss immer noch ein speziell zugeschnittenes Rechensystem verwendet werden, das speziell auf die Architekturen zugeschnitten ist, um die KI on-the-edge effizient ausführen zu können. Dazu gilt es zwei grundlegende Systemeigenschaften zu betrachten. Neben der bereits erwähnten Effizienz sollte das Systems so flexibel sein, auch neue Entwicklungen von CNN-Architekturen zu unterstützen. Das ist wichtig, da gerade im Bereich der KI monatliche neue Architekturen und neue Layer-Typen den Entwicklungs- und Forschungsbereich verlassen. Dinge, die heute aktuell und neu sind, können morgen schon überholt sein. Welche Plattform-Möglichkeiten gibt es also?
Plattformauswahl
Ein CPU-basiertes System bringt zweifelsohne die größte Flexibilität mit sich. Gleichzeitig sind CPUs bei der Ausführung von CNNs leider extrem ineffizient und auch nicht sehr stromsparend.
Eine GPU-Plattform erledigt die CNN-Ausführung durch ihre parallel arbeitenden Compute-Cores mit sehr viel Leistung. Sie sind zwar spezialisierter als CPUs, haben aber dennoch eine große Flexibilität. Leider sind GPUs sehr energiehungrig und damit on-the-edge eher problematisch.
Die Architektur programmierbarer FPGAs kann im Feld rekonfiguriert und somit auf neue CNN-Architekturen angepasst werden. Durch ihre parallele Arbeitsweise funktionieren FPGAs ebenfalls sehr performant. Ihre Programmierung setzt aber ein hohes Maß an Hardware-Wissen voraus.
Eine vollständige ASIC-Lösung ist als maßgeschneiderter integrierter Schaltkreis der offensichtliche Gewinner in Bezug auf Effizienz, da er speziell für die effiziente Ausführung einer bestimmten CNN-Architektur optimiert wird. Die Flexibilität könnte aber ein Problem darstellen, wenn neue oder geänderte CNN-Architekturen nicht mehr unterstützt werden.
Die Fähigkeit, sie jederzeit zur Laufzeit des Geräts durch ein Update mit einer neuen Konfigurationsdatei für spezielle Anwendungen oder CNNs anzupassen, macht sie zu einer langfristig funktionierenden und damit industrietauglichen Lösung. Die größte Herausforderung beim Einsatz der FPGA-Technologie ist die Tatsache, dass die Programmierung sehr aufwändig ist und nur von Spezialisten erfolgen kann.
Entwicklungsstrategie
Um Neuronale Netzwerke in einem „Vision Edge Device“, also den IDS NXT Kameras auszuführen, hat sich IDS für die Entwicklung eines CNN-Beschleunigers auf Basis der FPGA Technologie entschieden. Der Hersteller spricht hier von „deep ocean core“. Um den Umgang mit dem FPGA im späteren Gebrauch jedoch so einfach wie möglich zu halten, sollten nicht mehrere speziell optimierte Konfigurationen für verschiedene CNN-Typen entwickelt werden, sondern eine universell einsetzbare Architektur.
Der Beschleuniger kann dadurch jedes CNN-Netzwerk ausführen, vorausgesetzt, es besteht aus unterstützten Schichten. Da jedoch alle regulären Schichten, wie beispielsweise Faltungsschichten, Additionsschichten, verschiedene Arten von Pooling-Schichten oder Squeezing-Excite-Schichten bereits unterstützt werden, ist im Grunde genommen jeder wichtige Schichttyp einsetzbar.
Und damit ist das Problem der schwierigen Programmierung komplett beseitigt, weil der Anwender kein spezifisches Wissen haben muss, um eine neue FPGA-Konfiguration zu erzeugen. Durch Firmware Updates der IDS NXT Kamera wird der deep ocean core ständig aktualisiert, um jede neue Entwicklung im CNN-Bereich zu unterstützen.
Deep ocean core
Wie arbeitet der universelle CNN-Beschleuniger beziehungsweise welche Schritte sind zu tun, um ein trainiertes Neuronales Netz darauf auszuführen? Der Beschleuniger benötigt lediglich eine „binäre Beschreibung“, aus der hervorgeht, aus welchen Schichten sich das CNN-Netzwerks zusammensetzt.
Dazu ist keine Programmierung notwendig. Jedoch liegt ein Neuronales Netzwerk, das zum Beispiel mit Keras trainiert wurde, in einer speziellen „Keras Hochsprache" vor, die der Beschleuniger nicht versteht. Dazu muss es in ein Binärformat übersetzt werden, das einer Art „verketteter Liste“ gleicht. Aus jeder Schicht des CNN-Netzwerks wird ein Knotendeskriptor, der jede Schicht genau beschreibt.
Am Ende entsteht eine vollständige verkettete Liste des CNN in binärer Darstellung. Der gesamte Übersetzungsprozess wird von einem Tool automatisiert durchgeführt. Auch dazu ist keinerlei Spezialwissen notwendig. Die erzeugte Binärdatei wird nun in den Arbeitsspeicher der Kamera geladen und der deep ocean core beginnt mit der Verarbeitung. Das CNN-Netzwerk läuft nun auf der IDS NXT Kamera.
Flexibel in der Ausführung
Die Verwendung einer CNN-Repräsentation als verkettete Liste hat klare Vorteile, was die Flexibilität des Beschleunigers angeht. Damit ist es möglich, on-the-fly zwischen Netzwerken umzuschalten. Und zwar nahtlos ohne Verzögerung. Im Arbeitsspeicher der Kamera können dazu mehrere „Linked List Representations“ von unterschiedlichen Neuronalen Netzwerken geladen sein.
Um ein CNN zur Ausführung auszuwählen muss der deep-ocean-Beschleuniger an den Anfang einer dieser Listen zeigen. Dazu muss lediglich ein „Zeigerwert“ auf einen der Listenspeicher geändert werden. Wir reden hier von einem einfachen Schreibvorgang eines FPGA-Registers, der sich jederzeit extrem schnell durchführen lässt. Warum dieses schnelle Umschalten von CNN-Netzwerken wichtig sein kann, erklärt folgendes Beispiel.
Nehmen wir an, Sie haben eine Produktionslinie mit zwei Arten von Produkten, die über diese Produktionslinie laufen. Sie möchten die Qualität der Produkte inspizieren. Dazu müssen Sie zuerst deren Position erkennen und danach anhand der erkannten Produktkategorie die Qualität nach produktspezifischen Fehlern klassifizieren.
Sie könnten die Aufgabe lösen, indem Sie ein großes CNN-Netzwerk darauf trainieren, die Objekte zu finden und gleichzeitig zu klassifizieren, indem sie jeden einzelnen möglichen Fehlerfall für jede der Produktgruppen vor-trainieren. Das ist zwar sehr aufwändig und das Netz würde sehr groß werden und möglicherweise nur langsam arbeiten, könnte aber funktionieren.
Die Schwierigkeit dabei wird sein, eine ausreichend hohe Genauigkeit zu erreichen. Mit der Möglichkeit, das aktive CNN-Netz on-the-fly zu wechseln, könnten Sie die Lokalisierung und Klassifizierung der unterschiedlichen Objekte entkoppeln mit der Folge, dass die einzelnen CNNs einfacher zu trainieren sind. Die Objekterkennung muss lediglich zwei Klassen voneinander unterscheiden und deren Positionen liefern. Zwei weitere Netze werden nur auf die jeweiligen produktspezifischen Eigenschaften und Fehlerklassen trainiert.
Je nach lokalisiertem Produkt, entscheidet die Kamera-Applikation dann vollautomatisch, welches Klassifikationsnetz infolge aktiviert wird, um auch die jeweilige Produktqualität zu bestimmen. Durch dieses Vorgehen arbeitet das Edge-Gerät mit relativ einfachen Einzelaufgaben mit wenigen Parametern. Demzufolge sind auch die einzelnen Netze wesentlich kleiner, müssen viel weniger Merkmale differenzieren und arbeiten dadurch deutlich schneller und energieschonender, wodurch sie sich optimal für die Ausführung auf einem Edge-Gerät eignen.
Performant und effizient
Der FPGA basierte CNN-Beschleuniger arbeitet in den IDS NXT Inferenzkameras auf einem Xilinx Zynq Ultrascale SoC mit 64 Compute Cores. In vielen bekannten Bildklassifizierungsnetzwerken, wie beispielsweise MobileNet, SqueezeNet oder EfficientNet werden Frameraten bis zu 67 Frames pro Sekunde erreicht.
Selbst auf Netzwerkfamilien wie Inception oder ResNet, die als zu komplex für Edge-Computing gelten, sind 20 Bilder pro Sekunde möglich, was für viele Anwendungen völlig ausreichend ist. Die FPGA Implementierung ermöglicht es zudem, die Leistung des deep ocean Beschleunigers weiterzuentwickeln. Durch Firmware-Updates profitieren davon auch alle sich bereits im Feld befindlichen Kameras.
Noch wichtiger beim Thema Edge-Computing ist jedoch die Leistungseffizienz. Sie gibt an, wie viele Bilder pro Sekunde ein System pro Watt Energie verarbeiten kann. Damit ist die Leistungseffizienz eine gute Messgröße, um verschiedene Edge-Lösungen zu vergleichen.
Inferenzkamera-Komplettlösung
Um den Umgang mit dem FPGA-basierten CNN-Beschleuniger noch einfacher zu gestalten, bietet IDS eine Inferenzkamera-Komplettlösung an, um die Technologie für jeden einfach zugänglich zu machen. Anwender benötigen zum Trainieren und Ausführen eines neuronalen Netzes weder Fachwissen über Deep Learning, noch zu Bildverarbeitung oder Kamera- beziehungsweise FPGA-Programmierung und können sofort mit der KI-basierten Bildverarbeitung beginnen.
Einfach zu bedienende Werkzeuge senken die Einstiegshürde, um Inferenzaufgaben in wenigen Minuten zu erstellen und sofort auf einer Kamera auszuführen. Neben der intelligenten Kamera-Plattform IDS NXT mit dem FPGA-basierten CNN Beschleuniger „deep ocean core“ gehört noch eine einfach zu bedienende Trainingssoftware für neuronale Netze zum Gesamtkonzept.
Alle Komponenten werden direkt von IDS entwickelt und sind so konzipiert, dass sie nahtlos zusammenarbeiten. Das vereinfacht die Arbeitsabläufe und macht das Gesamtsystem sehr leistungsfähig.
Nachhaltige Edge-Intelligenz
Jede der im Artikel angesprochenen Möglichkeiten zur Ausführung von Neuronalen Netzen hat individuelle Vor- und Nachteile. Müssen sich Endanwender selbst mit den nötigen Komponenten befassen, um KI für Machine Vision Aufgaben zu nutzen, greifen sie gerne zu vollintegrierten KI-Beschleunigern, wie den Intel Movidius. Fertig-Chip-Lösungen arbeiten effizient, ermöglichen Stückpreise, die nur in großen Mengen möglich werden und können durch umfangreiche Dokumentation des Funktionsumfangs schnell und relativ einfach in Systeme integriert werden.
Es gibt leider einen Haken. Deren lange Entwicklungszeit ist leider ein Problem im KI-Umfeld, das jetzt enorm an Fahrt aufgenommen hat und sich täglich verändert, Um heute eine universell und flexibel arbeitende „Edge-Intelligenz“ zu entwickeln, müssen die Systemkomponenten andere Voraussetzungen erfüllen. Eine FPGA-Basis ist die optimale Kombination aus Flexibilität, Performance, Energieeffizienz und Nachhaltigkeit.
Denn eine der wichtigsten Anforderungen an ein Industrieprodukt ist seine „Industrietauglichkeit“, die neben anderen Faktoren durch eine lange Verfügbarkeit und eine einfache und langjährige Wartbarkeit sichergestellt wird. Die einfach nutzbare Inferenzkamera Plattform IDS NXT in Verbindung mit einem FPGA-CNN-Beschleuniger stellt heute eine nachhaltige Edge-Intelligenz-Komplettlösung dar, mit der sich Endanwender keine Gedanken mehr um Einzelkomponenten und KI-Updates machen müssen.