Machine Learning Neuronale Netze effektiv beschleunigt

Die Anwendung von Deep Learning in Embedded-Geräten liegt stark im Trend. Viele KI-Chips sind angekündigt, erste Produkte sind auf dem Markt. Sie versprechen intelligente Signalauswertung und Entscheidungen bei geringen Kosten und niedrigem Stromverbrauch.

Lange Zeit war Deep Learning (DL) eine Domäne von leistungsfähigen PCs und (Cloud-) Servern. Während das Training von Deep Neural Networks (DNNs) sehr komplex ist, stellen bei der Inferenz simple Multiply-Accumulate-Anweisungen (MAC) den weitaus größten Anteil der Berechnungen dar. Im Gegensatz zu typischen Digital-Signal-Processing-Algorithmen (DSP) wie Filterung und Korrelation ist bei DNNs aber die Anzahl von Gewichtsfaktoren deutlich größer und geht bei typischen Bildverarbeitungs-DNNs in die Millionen. Schon früh wurde erkannt, dass Graphic Processing Units (GPUs) eine Struktur besitzen, mit der man sehr effizient diese Berechnungen durchführen kann. Fortan bauten GPU-Hersteller wie Nvidia gezielt Features in manche ihrer Architekturen ein, um deren DL-Eignung zu verbessern. Andere Unternehmen wie Google und Movidius erkannten allerdings das Potenzial, das dedizierte Chip-Architekturen für die Beschleunigung von DL besitzen. So brachte im Jahr 2016 Google seine TensorFlow Processing Unit (TPU) heraus. Parallel dazu hat Movidius – 2016 von Intel aufgekauft – eine Architektur namens Myriad 2 entwickelt. In Myriad 2 arbeiten zwölf Spezialprozessoren parallel zueinander. Bild 1 zeigt beispielhaft in einer Embedded-Vision-Anwendung den Movidius Neural Compute Stick.

GPU – eine für alles?

Bild 2 verdeutlicht, was die Unterschiede der DL-Inferenz-Beschleuniger (DLI) gegenüber normalen CPUs und GPUs sind: Die Arithmetic Logic Unit (ALU) einer Single Core CPU kann gleichzeitig nur eine Berechnung durchführen. Noch kritischer ist aber, dass – je nach DNN – Millionen von Input-Werten und Gewichten über einen einzigen Datenbus von einer Random Access Memory (RAM) zur CPU gestreamt werden müssen. Trotz möglichst effizientem Pre-Caching dieser Werte begrenzt dieses sogenannte »von-Neumann-Bottleneck« der klassischen Computer-Architekturen den erreich­baren Berechnungsdurchsatz. Der Vorteil von GPUs ist dagegen, dass viele einfache ALUs parallel arbeiten können, und das parallele Speicherinterface von GPUs eine sehr hohe RAM-Bandbreite aufweist. Der Kontrollfluss in allen ALUs wird aber von derselben Control Unit (CU) gesteuert, sodass in jeder ALU die gleiche Operation durchgeführt wird: ­Single Instruction Multiple Data (SIMD). Etwas flexibler sind Single-Instruction-Multi­ple-Thread-Architekturen (SIMT), bei denen einzelne ALUs wenn nötig auch Operationen auslassen können.

Das »Neue« bei DLI-Beschleunigern ist, dass viele einfache Processing Elements (PEs) mit eigenen ALUs und eigenen CUs eingesetzt werden, zum Beispiel zwölf Cores beim Myriad 2. Weiterhin sind die Datenfluss-Strukturen in DLI-Beschleunigern speziell auf die sehr schnelle Heranführung von Input-Werten und Gewichten sowie deren Weitergabe an die anderen PEs optimiert. Später wird noch gezeigt, dass das Vorhandensein einer CU in jedem PE eine größere Flexibilität bei der Verarbeitung der Datenflüsse erlaubt. Dadurch werden die vorhandenen Strukturen in DNNs effizient ausgenutzt.

Deutschland hat Trend verschlafen

Während GPUs für Embedded-Anwendungen relativ teuer sind, stoßen DLI-Beschleuniger bereits in die Preiskategorie von etwa zehn Euro vor. Neben dedizierten Chips haben Anbieter wie Synopsys, Cadence und Xilinx inzwischen auch Intellectual Property-Cores  (IP) im Angebot. Arm hat unter dem Namen »Project Trillium« eigene Machine-Learning-Varianten seiner IP-Cores angekündigt (Tabelle). Manche IP-Cores können auch als Co-Prozessoren eines Hauptprozessors für DLI-Berechnungen eingesetzt werden. Seit zwei Jahren rollt eine regelrechte Flutwelle an Produktankündigungen sowohl für Chips als auch IP-Cores durch die Presse. In den USA und in China planen sowohl etablierte Firmen wie Qualcomm und Huawei als auch unbekannte Start-Ups weitere DLI-Beschleuniger. Eine Vorschau von Tractica schätzt den DL-Beschleuniger-Markt im Jahr 2025 auf über 30 Milliarden Dollar [2]. In Europa, speziell auch in Deutschland, wurde dieser Trend verschlafen. Erst jetzt werden deutsche Firmen verstärkt aktiv, um den Vorsprung der Konkurrenz wieder einzuholen. Jenseits des milliardenschweren EU-Flagship-Projekts »The Human Brain Project« (HBP) gab es bisher leider auch in Deutschlands akademischer Welt nur wenige Aktivitäten zur Hardware-Beschleunigung von KI-Berechnungen.

Anwendungsbeispiele für Embedded DLI

Die neuen KI-Chips und IP-Cores erlauben vielfältige neue Anwendungen jenseits von Desktop-PCs und Servern. In (teil-)autonomen Fahrzeugen der Stufen drei bis fünf werden zukünftig massiv DLI-Systeme zur Umfeldüberwachung und Entscheidungsfindung eingesetzt, um die großen Datenmengen der Radar-, LiDAR (Light Detection and Ranging)- und Kamerasensoren auswerten zu können. Daneben gibt es bereits Künstliche-Intelligenz-Chips (KI) in einigen Mobiltelefonen, Überwachungskameras und Drohnen. Bei letzteren werden Kamerabilder in der Drohne ausgewertet. Dies beweist, wie groß die Rechenperformance in Tera Operations Per Second (TOPS) bei vergleichsweise geringer Leistungsaufnahme ist (s. Tabelle).

Die Alternative zu Embedded-DLI wäre eine Übertragung von Sensordaten wie etwa Kamerabildern zur Auswertung in die Cloud. Allerdings ist das Embedded-Gerät dann auf Gedeih und Verderb auf die Zuverlässigkeit und ausreichende Datenrate des Kommunikations-Links angewiesen: Fällt dieser zum Beispiel in einem Tunnel aus, so fällt auch das Gerät aus. Weitere potenzielle Probleme sind die Kosten und die Stromaufnahme der Datenübertragung, zu hohe Latenzen – wenn auf der Basis von Sensorwerten Aktoren geregelt werden müssen – und der Schutz der Daten vor Ausspähen und Manipulation (Privacy und Security).

Wegen dieser Gründe wird Embedded-DLI in vielen zukünftigen Anwendungen lokal eingesetzt werden. Bei der Qualitätskontrolle in der Produktion und der Verkehrsüberwachung, bei Anomalie-Detektions- oder Predictive-Maintenance-Systemen wie in Haushaltsgeräten oder aber in vermeintlich exotischen smarten Geräten wie Mülleimern, die anrufen, wenn sie geleert werden müssen. Wie beim Mikrocontroller wird auch in diesem Bereich wohl die Zahl der Anwendungsideen stetig mit der Leistungsfähigkeit der Chips wachsen. Das DL-Training wird zumindest in den nächsten Jahren noch überwiegend Off-Line und auf Servern stattfinden. Die dort gewonnenen DNN-Parameter werden dann während der Geräteherstellung oder später per Firmware-Update an das Embedded-System übertragen.

Wie erwähnt, nutzen DLI-Beschleuniger gewisse Strukturen in DNNs aus. So weisen die Berechnungsmuster in Convolutional Layers (CLs) einige Merkmale auf, für die effiziente CL-Rechenarchitekturen entwickelt worden sind. Beispielsweise gibt es eine signifikante Datenwiederverwendung: Jeder CL verwendet eine Reihe von 3D-Filtern, die über die Input-Werte – Input Feature Map (IFM) – bewegt werden. Dieses Bewegungsmuster ist konstant und vorhersehbar für jeden gegebenen CL. In Anbetracht dessen kann der RAM-Transfer zwischen CL-Beschleuniger und externem Speicher signifikant reduziert werden. Dazu werden Segmente der Input Feature Map in On-Chip-Cache-Speichern gespeichert und aktuelle 3D-Filterkoeffizienten in den lokalen On-Chip-Speicher vorgeladen.

Embedded-DNN-Einsatz schwierig

Dies ist auch nötig, da CLs in der Regel sowohl sehr rechen- als auch äußerst speicherintensiv sind. So verfügt beispielsweise ein VGG-16-DNN über mehr als 138 Millionen Gewichtswerte. Bei einer 16-bit-Zahlendarstellung müssen dafür etwa 276 MB Speicherplatz zur Verfügung stehen. Da die meisten CL-Beschleuniger die Input und Output Feature Maps nicht On-Chip speichern können, müssen sie extern gespeichert und während der CL-Verarbeitung zwischen CL-Beschleuniger und externem Speicher hin und her bewegt werden. Um ein Eingangsbild zu verarbeiten, erreicht die Datenmenge des VGG-16-DNN dadurch schnell bis zu 60 MB. Wenn man die Anzahl der erforderlichen Berechnungen analysiert, um ein Eingangsbild zu klassifizieren, erhält man im Falle des VGG-16 über 15 Milliarden MAC-Operationen (GMAC). Dies macht den Einsatz von solchen DNNs in Embedded-Anwendungen sehr schwierig, insbesondere da in den meisten Fällen strenge Anforderungen an Latenz, Durchsatz und/oder Leistungsaufnahme vorhanden sind. Insbesondere der benötigte massive Speichertransfer zum externen Off-Chip-RAM verschlingt eine sehr große Leistung – deutlich mehr als Speichertransfers, die on-Chip bleiben können.

Speicherreduzierung macht´s möglich

Es ist aber möglich, die für die Speicherung der Gewichte und vorläufigen Feature Maps erforderliche Speicher­größe zu reduzieren, indem Deep Compression verwendet wird, das aus mehreren Kompressionsverfahren besteht [4]. Diese Verfahren entfernen einige der Gewichte, in der Regel aus Convolutional und Fully Connected Layern, basierend auf einer Wertung ihrer Bedeutung für den Output des DNN. Weniger wichtige Parameter können entfernt werden, das heißt auf den Wert Null gesetzt werden. Wird dies korrekt durchgeführt, kommt es zu keiner Beeinträchtigung der Klassifizierungsleistung und Genauigkeit des »beschnittenen« Netzwerks. Nachdem der Beschneidungsprozess (Pruning oder Synapseneliminierung) abgeschlossen ist, bleibt eine sogenannte »Sparse Representation« übrig, also eine ausgedünnte Darstellung des DNN (Bild 3).

Erstaunlicherweise besitzen DNNs scheinbar eine sehr hohe Redundanz, sodass extrem hohe Beschneidungsgrade auf DNNs angewendet werden können. Werte von mehr als 80 Prozent Pruning der Parameter sind keine Seltenheit – ohne die Genauigkeit des Netzwerks zu beeinträchtigen. Die Anzahl von Nullen kann mit Standard-­Datenkompressionsalgorithmen komprimiert werden, um den Speicherbedarf deutlich zu reduzieren. So kann beispielsweise bei VGG-16 mit entsprechenden Beschneidungsalgorithmen die Speichergröße von 276 MB auf 5,5 MB – also um 98 Prozent – reduziert werden.

Verbessern der Effizienz

Um die Energie- und Recheneffizienz weiter zu verbessern, kann die Statistik der Input und Output Feature Maps, die im DNN verarbeitet werden, untersucht werden. Die Untersuchung erfolgt, um den erforderlichen Speicherzugriff durch Feature-Map-Kompression weiter zu reduzieren. Eine effiziente Feature-Map-Kompression ist bei Nutzung der Rectified-Linear-Unit-Aktivierungsfunktion (ReLU) in einem Layer möglich. Die ReLU-Aktivierungsfunktion führt zu vielen Nullen und damit einer Ausdünnung in den Output Feature Maps, weil sie alle negativen Werte an ihrem Eingang auf Null korrigiert. Obwohl die Anzahl der Nullen in den Feature Maps grundsätzlich von den Eingangsdaten des DNN abhängt, nimmt sie dennoch tendenziell in hinteren Layern zu. So sind beispielsweise im VGG-16-DNN im Durchschnitt fast 48 % der IFM-Werte des Conv1_2-Layers Null. Der Wert wächst auf bis zu 88 % für das Conv5_3-Layer.

Neben der Reduzierung der erforderlichen Speichergröße und der Datenmenge während der DNN-Berechnung kann die ausgedünnte Darstellung von DNNs und Feature Maps auch dazu verwendet werden, die Inferenz-Geschwindigkeit durch Optimierung des Berechnungsprozesses von Convolutional- und Fully Connected Layern zu beschleunigen. Da in diesen Layern sehr viele Multiplikationen zwischen Input-Werten und Gewichten vorkommen, wird die Berechnung der Produktsumme effizienter, wenn sie alle Gewichte mit Wert Null überspringt (Zero Skipping – siehe Bild 4). Durch diese Begrenzung auf die Durchführung der absolut notwendigen Berechnungen wird eine signifikante Verkürzung der Inferenzdauer bei gleichzeitiger Reduzierung der Leistungsaufnahme erreicht.

Höhere Geschwindigkeit durch »AIScale«

Die »AIScale«-Architektur des deutschen Start-ups Kortiq wurde speziell entwickelt, um diese Optimierungsmöglichkeiten auszunutzen (Bild 5). Sie ist in der Lage, alle Multiplikationen, die zu einem nullwertigen Ergebnis führen, sofort zu erkennen und deren Berechnung zu überspringen, wodurch die Bearbeitungszeit des Layers stark reduziert wird. Dies geschieht, wenn Convolutional-, Pooling- und Fully Connected Layer im AIScale IP-Core verarbeitet werden. Darüber hinaus sind die Compute Cores (CCs) des AIScale in der Lage, Feature- und Gewichts-Daten in komprimierter Form zu verarbeiten, wodurch der sonst nötige Dekompressionsschritt entfällt. Das verkürzt die Verarbeitungszeit weiter und reduziert die Größe der On-Chip-Speicher.

Durch die »Zero-Skipping«-Technik ist AIScale in der Lage, die DNN-Verarbeitungsgeschwindigkeit um das drei- bis zehnfache zu erhöhen, verglichen mit herkömmlichen GPU/CPU-Architekturen, die kein Zero-Skipping verwenden. AIScale wurde als Standard-Field-Programmable-Gate-Array (FPGA)-Soft-IP-Core für die Xilinx-FPGA-Familien entwickelt, kann aber leicht an die Bedürfnisse anderer FPGA-Hersteller wie Intel oder Lattice angepasst oder sogar mit Application-Specific-Integrated-Circuit-Technik (ASIC) implementiert werden. Dabei ist AIScale ein universeller DNN-Beschleuniger, der verschiedene DNN-Familien wie Inception, ResNet, Mobile­Net, NASNet oder SqueezeNet beschleunigen kann.

Nach der geschilderten Ausnutzung der DNN-spezifischen Strukturen erscheint das zukünftig noch mögliche Entwicklungspotenzial von DLI-Beschleunigern zunächst gering. Allerdings darf nicht vergessen werden, dass auch Deep Learning selbst noch bei weitem nicht »ausentwickelt« ist. Im Abstand weniger Jahre tauchen immer wieder komplett neue Konzepte wie Long-Short-Term-Memory, Inception Layers und Deep Compression auf, die auf bisherigen DLI-Architekturen meist nicht ausgeführt werden können. Außerdem sind die eingesetzten DNN-Modelle und deren Hardware-Anforderungen stark anwendungsabhängig, beispielsweise bei Ultra-low-power-Anwendungen für Zeitreihen-Verarbeitung. Somit ist auch zukünftig noch viel Luft nach oben für Anpassungen von vorhandenen Architekturen und Entwicklung grundlegend neuer Architekturen wie AIScale.