KI-Hardware-Komponenten

Maschinelles Lernen mit FPGAs

| Autor / Redakteur: Bill Jenkins* / Sebastian Gerstl

Es gibt zahlreiche Gründe, warum sich FPGAs besser für maschinelles Lernen eignen als GPUs.
Es gibt zahlreiche Gründe, warum sich FPGAs besser für maschinelles Lernen eignen als GPUs. (Bild: gemeinfrei / CC0)

Das Interesse am maschinellen Lernen wächst derzeit rasant. Obwohl in den vergangenen Jahren einige sehr erfolgreiche Ansätze entstanden sind, besteht noch viel Raum für Neuerungen. FPGAs bieten Entwicklern hier die Vorteile einer dedizierten Hardware und bieten einen flexiblen Weg hin zu effizienten systemischen Implementierungen

Maschinelles Lernen ist nicht neu: Informatiker entwickeln seit Jahrzehnten Algorithmen, die auf Modellen basieren, die dem menschlichen Gehirn entsprechen. Wenn man sich aber auf einem Foto in sozialen Medien wiederfindet, die von Anzeigen von E-Commerce-Webseiten übersät sind, oder wenn man sich fragt, wie autonome Fahrzeuge selbstständig fahren – wird man sich klar, dass maschinelles Lernen immer schneller vom Labor in die reale Welt übergeht.

Warum also dieses plötzliche Interesse? Dafür gibt es zwei wesentliche Gründe: Erstens, gibt es immer mehr Anwendungen, wie z.B. Objekterkennung und Klassifizierung, automatisierte Textanalyse und Big-Data-Verarbeitung, die von maschinellen Lerntechniken profitieren und einen Anreiz schaffen, Algorithmen und Ansätze zu aktualisieren, die bereits seit Jahrzehnten bestehen. Der zweite Grund ist praktisch veranlagt: vor zwei oder drei Jahrzehnten stand die Rechenleistung nicht zur Verfügung, die notwendig ist, um nicht-triviale Maschinen-Lernalgorithmen auszuführen oder die Rich-Data-Mengen zu erlangen, die erforderlich sind, um die Algorithmen zu trainieren, sodass nützliche Ergebnisse zur Verfügung stehen.

Die Zeiten haben sich geändert. Die Fortschritte hinsichtlich der Datenverarbeitungsleistung, die durch Moore’s Law möglich wurden, und die Bildung großer Datensätze dank der Digitalisierung zahlreicher Aspekte unseres sozialen, geschäftlichen und wissenschaftlichen Lebens, haben einen Kontext geschaffen, in dem Entwickler praktische maschinelle Lernstrategien implementieren können, die eine echte Differenzierung ermöglichen.

Dazu zählt die Möglichkeit, Elemente automatisch in einem Bild zu klassifizieren oder Straßenschilder von einem fahrenden Fahrzeug aus zu identifizieren. Dies führt zu einer schnellen Weiterentwicklung des maschinellen Lernens, bei der feldprogrammierbare Gate-Arrays (FPGAs) eine wichtige Rolle spielen.

Grundlagen des maschinellen Lernens

Ein Ansatz für das maschinelle Lernen, der derzeit viel Aufmerksamkeit erregt, ist das faltungsneuronale Netzwerk (CNN; Convolutional Neural Network), das in Bildverarbeitungsanwendungen wie Objekterkennung und Klassifizierung zum Einsatz kommt.

Ein CNN basiert auf der Art und Weise, wie das menschliches Sehvermögen funktioniert, und besteht aus künstlichen Neuronen mit mehreren Ein- und Ausgängen. Jedes Neuron nimmt seinen Eingangswert auf, wendet eine Transformation an und liefert einen Ausgangswert. Der Wert jedes Eingangssignals kann durch einen Gewichtungsfaktor modifiziert werden, und der Wert, den jedes Neuron erreichen muss, bevor es einen Ausgangswert bereitstellt, kann durch einen Biasing-Faktor verändert werden.

Die Neuronen sind in einer Reihe von Schichten angeordnet: eine Eingangsschicht, die die Rohdaten aufnimmt, eine Ausgabeschicht, die den Abschluss des Netzwerks bereitstellt und mehrere „versteckte“ Schichten dazwischen. Diese versteckten Schichten stellen Zwischenergebnisse bereit, die dem Netzwerk helfen, eine Schlussfolgerung auf die Frage zu formulieren, die es zu beantworten gilt, zum Beispiel: „Befindet sich eine Katze in diesem Bild?“

Ergänzendes zum Thema
 
Das Fazt des Autors

Nicht alle Katzen sind grau

Ein untrainiertes neuronales Netzwerk beginnt mit zufälligen Werten für die Gewichtungs- und Bias-Faktoren, die jedem Neuron zugeschrieben werden und wird trainiert, die richtige Antwort zu geben, indem man viele Bilder zeigt, in denen beispielsweise Katzen markiert wurden. Jedes Neuron entscheidet entsprechend seiner Ausgangswerte auf der Grundlage des Eingangsbildes und gibt diese Werte als Eingänge an Neuronen in unteren Netzwerkschichten weiter.

Die letzte Schicht des Netzwerks liefert das Ergebnis. Hier wird der Fehler zwischen der Entscheidung des Netzwerks und der richtigen Antwort berechnet und verwendet, um eine Reihe von Anpassungen an die Gewichtungs- und Bias-Faktoren für jedes Neuron zurück durch jede Netzwerkschicht vorzunehmen – von der Ausgabe bis hin zur Eingabe.

Bild 1: Intel PSG FPGAs bieten feinkörnige und geringe Latenz zwischen Berechnung und Speicherung
Bild 1: Intel PSG FPGAs bieten feinkörnige und geringe Latenz zwischen Berechnung und Speicherung (Bild: Intel PSG)

Wiederholt man diesen Vorgang oft genug mit einem ausreichend großen Datensatz genau markierter Bilder, passt das Netzwerk seine Gewichtung und Bias-Merkmale an, damit es in diesem Beispiel Katzen in einem nicht markierten Bild erkennt.

Dieser Lernprozess ist sehr rechenintensiv – tage- oder wochenlang hohe Rechenleistung in großen Rechenzentren ist dafür erforderlich. Sobald jedoch die richtigen Gewichtungen und Bias-Werte aus dem Lernprozess hervorgegangen sind, kann man sie mit wesentlich weniger Rechenleistung betreiben und oftmals weniger präzise Zahldarstellungen verwenden.

Die Objekterkennung und Klassifizierung ist eine solche nützliche Funktion. Hier gibt es sogar einen jährlichen Wettbewerb, die „ImageNet Large Scale Visual Recognition Challenge“, um die Genauigkeit der neuen Algorithmen mit einem Standard-Datensatz markierter Bilder zu testen. Dieser hart umkämpfte Wettbewerb hat in den letzten fünf Jahren zu Verbesserungen bei der Genauigkeit neuer Algorithmen oder aktueller Anpassungen bestehender Ansätze geführt. Ähnlich schnelle Fortschritte zeigen auch in anderen Bereichen des maschinellen Lernens, beispielsweise beim autonomen Fahren und bei der semantischen Textanalyse, um Dienste wie Online-Chatbots zu ermöglichen.

Der FPGA-Vorteil

Den Großteil der Arbeit beim Maschinenlernen übernehmen bisher CPUs oder GPUs, deren Architekturen den rechnerischen Anforderungen von Algorithmen wie CNNs gewachsen sind. Wie eignen sich also FPGAs dafür? FPGAs bieten einzigartige Eigenschaften, die ihnen besondere Vorteile bei der Umsetzung maschineller Lernalgorithmen bieten.

Da ist zuerst einmal die Flexibilität, die FPGAs zu einfach rekonfigurierbarer Hardware macht. Die Algorithmen können sich also ändern. Dies bedeutet auch, dass FPGA-Nutzer den gesamten Datenpfad ihrer Anwendung steuern können – von der Eingabe über die Verarbeitung bis hin zur Ausgabe.

Das klingt offensichtlich, aber viele Vergleiche maschinellen Lernens bewerten zuerst, wie schnell eine CPU einen Algorithmus ausführt, anstatt wie schnell der Algorithmus in seinem systemischen Kontext arbeitet. Eine FPGA-Implementierung hingegen lässt sich programmieren, um größte systemische Leistung zu erzielen – und stellt diese in einer sehr deterministischen Weise zur Verfügung – im Gegensatz zu einem CPU-basierten Ansatz, der Interrupts unterliegt.

Weitere FPGA-Eigenschaften für lernende Systeme

Die FPGA-Struktur eignet sich sehr gut für viele maschinelle Lernalgorithmen – mit hochverteilten Logikressourcen, umfangreichen Interconnect-Schemata und umfangreichem verteilten lokalen Speicher. Dies ist wichtig, da neuronale Netzwerkimplementierungen in der Regel viele verteilte Berechnungen beinhalten, um Neuronen zu imitieren.

Hinzu kommen lokaler Speicher, um Zwischenwerte zu sichern und umfangreiche Interconnect-Verbindungen, um die Ausgänge einer Neuronenschicht an die Eingänge der nächsten Schicht oder unter Neuronen in der gleichen Schicht weiterzuleiten. Dies verbessert die Performance und verringert den Stromverbrauch, indem Off-Chip-Speicherzugriffe reduziert werden, die für die Umsetzung maschineller Lernalgorithmen erforderlich sind.

Die hochparallele Hardware eines FPGAs verspricht auch eine geringe Latenz und einen hohen Datendurchsatz, was wesentliche Voraussetzungen in Anwendungen wie fortschrittlichen Fahrerassistenzsystemen (ADAS) sind. Die Performance und Programmierbarkeit der FPGA I/Os vereinfacht deren Integration in ein System und die Anpassung an verschiedene Märkte oder zukünftige I/O-Standards. FPGAs lassen sich somit für maschinelle Lernstrategien zur Vorverarbeitung von Daten verwenden, sobald diese aus dem Massenspeicher eines großen Rechenzentrum gelesen werden – noch bevor sie die Serverfarm erreichen.

FPGAs für Maschinenlernen

Viele Entwickler im Bereich Maschinenlernen sind es gewohnt, ihre Algorithmen mittels Software in Hochsprachen zu schreiben und dann auf CPUs oder GPUs laufen zu lassen. Compiler und zugehörige Tools parallelisieren dann die Task über mehrere Prozessorausführungs-Threads, Cores oder sogar CPUs. Der Übergang, Algorithmen direkt auf Hardware laufen zu lassen – selbst wenn diese reprogrammierbar ist – kann gegenüber dem gewohnten softwarezentrierten Ansatz als fremd erscheinen.

Bild 2: Der Deep Learning Inference Accelerator von Intel PSG ist mit CNN-Bilderkennungsalgorithmen vorinstalliert, auf Performance optimiert und unterstützt mehrere Netzwerk-Topologien wie AlexNet, GoogleNet, CaffeNet, LeNet, VGG16 und SqueezeNet.
Bild 2: Der Deep Learning Inference Accelerator von Intel PSG ist mit CNN-Bilderkennungsalgorithmen vorinstalliert, auf Performance optimiert und unterstützt mehrere Netzwerk-Topologien wie AlexNet, GoogleNet, CaffeNet, LeNet, VGG16 und SqueezeNet. (Bild: Intel PSG)

Das muss nicht so sein. Zur Software-Entwicklung zählen stetig steigende Abstraktionsstufen, in denen sich die Entwickler selbst ausdrücken können. Dies gilt auch im Bereich des maschinellen Lernens: Google hat zum Beispiel mit „Tensorflow“ eine Open-Source-Softwarebibliothek für die „numerische Berechnung mit Datenflussdiagrammen“, also neuronale Netze und verwandte Algorithmen, veröffentlicht. Die Knoten in der Grafik repräsentieren mathematische Operationen, wie die Übertragungsfunktionen der Neuronen, die wir oben beschrieben haben, während die Graphenränder die mehrdimensionalen Datenarrays (Tensoren als Google-Begriff, Gewichtsfaktoren hier) darstellen, die zwischen ihnen kommuniziert werden.

Intel PSG implementiert einige der wichtigsten Stammfunktionen (Primitive), die in gängigen maschinellen Lernalgorithmen verwendet werden. Entwickler, die auf der Abstraktionsebene der Tensorflow-Bibliothek arbeiten, können diese nutzen, wenn FPGAs das Ziel der Implementierung sind. Eine Möglichkeit zur Umsetzung ist ein Deep-Learning-Beschleuniger, über den sich die Stammfunktionen auf ein FPGA implementieren lassen. Damit lassen sich dann verschiedene Netzwerktopologien innerhalb des FPGAs konfigurieren, ohne die Hardware neu programmieren zu müssen.

Schränkt dies zu sehr ein, implementiert Intel PSG auch ein Software-Entwicklungskit für OpenCL – eine gemeinsame Plattform für die parallele Programmierung verschiedener Prozessoren, damit diese zusammenarbeiten können. Nutzer können damit die Funktionen des Deep-Learning-Beschleunigers anpassen und erweitern. Dies kann zum Beispiel durch das Ändern der Stammfunktion oder das Hinzufügen benutzerdefinierter Beschleuniger erfolgen. Die Lösung steht heute für die „Arria-10“-PCIe-Karten von Intel PSG zur Verfügung.

Hinweis: Der Artikel erschien im Original zunächst bei der „Elektronik Praxis“.

* Bill Jenkins ist Senior Product Specialist Artificial Intelligence bei der Intel Programmable Systems Group.

Was meinen Sie zu diesem Thema?

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44885255 / Komponenten)