Artikel

FPGA Neuronale Netze

Die Inferenz von neuronalen Netzen auf FPGA-Bausteinen
Artificial Intelligence of Digital Human Brain

Einführung

Die immer stärkere Vernetzung der Welt erzeugt immer größere Datenmengen. Richtig angewandt, kann maschinelles Lernen lernen, Muster und Wechselwirkungen in diesen Daten zu erkennen. Die FPGA-Technologie kann dabei helfen. 

Maschinelles Lernen ist ein Teilgebiet der künstlichen Intelligenz (KI), bei dem Algorithmen und Daten verwendet werden, um ein System zu schaffen, das eine bestimmte Aufgabe erfüllen kann. Die Genauigkeit des Systems wird langsam verbessert, wenn mehr Daten verarbeitet werden, was als Training bezeichnet wird. Sobald das System genau genug ist, kann es als trainiert gelten und in anderen Umgebungen eingesetzt werden. Hier wird derselbe gelernte Algorithmus verwendet, um die statistische Wahrscheinlichkeit eines Ergebnisses abzuleiten. Dies wird als Inferenz bezeichnet.

Neuronale Netze bilden die Grundlage der meisten maschinellen Lernaufgaben. Sie bestehen aus mehreren Rechenschichten, deren Interaktionen auf den beim Training erlernten Koeffizienten beruhen. Dieses Whitepaper konzentriert sich auf die Inferenz neuronaler Netze auf FPGA-Bausteinen und zeigt deren Stärken und Schwächen auf.

Tieferes Eintauchen in maschinelles Lernen

Lesen Sie das CNN White Paper

Sehen Sie, wie Faltungsneuronale Netze mit FPGA-Beschleunigerprodukten von BittWare beschleunigt werden können

Lesen Sie das 2D FFT White Paper

Hier klicken

Lesen Sie das BWNN-Weißbuch

Erfahren Sie, wie wir OpenCL verwendet haben, um das YOLOv3-Framework für maschinelles Lernen an eine unserer FPGA-Karten anzupassen

Lesen Sie das BWNN-Weißbuch

Hier klicken

FPGA-Fähigkeiten

Das Herzstück neuronaler Netze sind riesige Mengen von mehrfach akkumulierten Berechnungen. Diese Berechnungen simulieren die Interaktion von Tausenden von Neuronen und ergeben eine statistische Wahrscheinlichkeit, dass etwas eintritt. Bei der Bilderkennung ist dies ein Vertrauensfaktor dafür, dass das Netz ein bestimmtes Objekt beobachtet. Das kann natürlich auch falsch sein. Menschen sehen zum Beispiel regelmäßig menschliche Gesichter in unbelebten Objekten! Jedes System muss daher eine gewisse Toleranz gegenüber falschen Ergebnissen haben. Die statistische Natur dieser Ergebnisse bietet die Möglichkeit, den dynamischen Bereich der Berechnungen zu variieren, solange die endgültige Antwort innerhalb eines zufriedenstellenden Genauigkeitsgrades bleibt, der durch die Toleranz der Anwendung definiert ist. Folglich bietet die Inferenz die Möglichkeit, bei den verwendeten Datentypen kreativ zu sein.

Datenbreiten können oft auf 8-Bit-Ganzzahlen und in einigen Fällen auf ein einziges Bit reduziert werden. FPGAs können für die Verarbeitung von Datentypen fast jeder Größe konfiguriert werden, und zwar mit geringen oder gar keinen Einbußen bei der Rechennutzung.

In Bezug auf die Inferenz neuronaler Netze haben ASICs, CPUs, GPUs und FPGAs ihre Vor- und Nachteile. Kundenspezifische Chips (ASICs) bieten die höchste Leistung und die niedrigsten Kosten, aber nur für bestimmte Algorithmen - es gibt keine Flexibilität. Im Gegensatz dazu bieten CPUs die größte Programmierflexibilität, allerdings bei geringerem Rechendurchsatz. Die Leistung von GPUs ist in der Regel viel höher als die einer CPU und wird noch weiter verbessert, wenn eine große Stapelanzahl verwendet wird, d. h. wenn viele Abfragen parallel verarbeitet werden. In latenzkritischen Echtzeitsystemen ist es nicht immer möglich, Eingabedaten in Stapeln zu verarbeiten. Dies ist ein Bereich, in dem FPGAs in gewisser Weise einzigartig sind, da sie es ermöglichen, neuronale Netze für eine einzelne Abfrage zu optimieren und gleichzeitig eine hohe Auslastung der Rechenressourcen zu erreichen. Wenn es keine ASICs gibt, sind FPGAs daher ideal für die Verarbeitung neuronaler Netze mit kritischen Latenzzeiten.

Inline-Verarbeitung

Abbildung 1 veranschaulicht die typische Beschleuniger-Offload-Konfiguration für ein FPGA. Hier werden die Koeffizientendaten in den angeschlossenen tiefen DDR- oder HBM-Speicher geladen und von der KI-Inferenzmaschine bei der Verarbeitung der vom Host übertragenen Daten abgerufen. GPUs sind FPGAs bei hohen Stapelzahlen in der Regel überlegen. Wenn jedoch kleine Stapelgrößen oder niedrige Latenzzeiten die vorrangigen Anforderungen eines Systems sind, dann bieten FPGAs eine attraktive Alternative.

FPGA inference offload block diagram

Abbildung 1: FPGA-Inferenz-Offload

FPGAs zeichnen sich besonders durch die Kombination von KI-Inferenz mit anderen Echtzeitverarbeitungsanforderungen aus. Die rekonfigurierbaren IO von FPGAs können für verschiedene Konnektivitätsprobleme angepasst werden, von Hochgeschwindigkeits-Ethernet bis zu analogen Sensordaten. Dies macht FPGAs einzigartig für die Durchführung komplexer Inferenzen am Rande, wenn kein ASIC vorhanden ist. Die Geräte können auch dieselbe IO verwenden, um mehrere FPGAs in einer für die Anwendung am besten geeigneten Konfiguration miteinander zu verbinden oder um sich in die bestehende Serverkonnektivität einzufügen. Die Verbindungen können kundenspezifisch sein oder Standards wie Ethernet folgen.

Block diagram showing FPGA inference data pipeline

Abbildung 2: Ein Beispiel für die Verwendung von Schlussfolgerungen innerhalb einer Daten-Pipeline-Linie

Für die Inline-Verarbeitung muss ein neuronales Netz nur in der Lage sein, Daten mit der Leitungsrate zu verarbeiten. In diesem Fall verwendet der FPGA nur die Ressourcen, die für den gewünschten Durchsatz erforderlich sind, und nicht mehr. Dies spart Strom und lässt zusätzliche FPGA-Ressourcen für andere Aufgaben wie die Verschlüsselung übrig.

Verschlüsselung

In Bereichen, in denen der Datenschutz eine wichtige Rolle spielt, bieten sich erhebliche Möglichkeiten für das maschinelle Lernen. So könnte beispielsweise die medizinische Diagnostik von der Cloud-Beschleunigung profitieren. Allerdings sind die Patientendaten vertraulich und über mehrere Standorte verteilt. Alle Daten, die zwischen den Standorten übertragen werden, müssen zumindest verschlüsselt sein. Der FPGA kann entschlüsseln, KI-Verarbeitung durchführen und verschlüsseln, und das alles mit sehr geringer Latenz. Entscheidend ist, dass keine entschlüsselten Daten die Grenzen des FPGAs verlassen würden.

 

Block diagram showing FPGA nference decrypt encrypt

Abbildung 3: Verwendung eines FPGA zur Durchführung von Inferenzen mit Ent- und Verschlüsselungslogik in der Cloud

Letztendlich wäre die homomorphe Verschlüsselung der gewünschte Ansatz für die Verarbeitung solch sensibler Daten, wofür FPGAs vielversprechend sind.

Optimierung für verschiedene Topologien neuronaler Netze

Es gibt viele verschiedene Arten von neuronalen Netzen. Die drei gängigsten sind Faltungsneuronale Netze (CNN), rekurrente neuronale Netze (RNN) und neuerdings auch transformatorbasierte Netze wie das BERT von Google. CNNs werden meist für Bilderkennungsanwendungen verwendet und sind im Wesentlichen Matrixverarbeitungsprobleme. RNNs und BERT werden häufig für Probleme wie die Spracherkennung verwendet und sind auf SIMD-Prozessoren wie einem Grafikprozessor weniger effizient als CNN-Modelle.

Die FPGA-Logik kann so rekonfiguriert werden, dass sie den Verarbeitungsanforderungen eines neuronalen Netzes am besten gerecht wird, anstatt den Algorithmus an die Hardware anzupassen, wie z. B. bei einer GPU. Dies ist besonders wichtig für niedrige Stapelzahlen, bei denen die Erhöhung der Stapelgröße oft eine Lösung für die Verarbeitung von Netzwerken mit ungünstigen Abhängigkeiten von GPUs ist.

Ausgleich von Rechen- und Speicherbandbreite

Resnet ist ein häufig zitiertes neuronales Netz, das aus vielen Faltungsschichten besteht. Die meisten dieser Schichten verwenden jedoch Schablonen mit nur einer einzigen Zelle (1×1), eine übliche Anforderung. Die letzten Schichten von Resnet erfordern ein sehr hohes Verhältnis von Gewichten zu Datenberechnungen, da die kleine Schablonengröße die mögliche Wiederverwendung von Daten reduziert. Dies wird noch verschärft, wenn man versucht, eine möglichst geringe Latenzzeit zu erreichen, d. h. eine Stapelgröße von 1. Das Gleichgewicht zwischen Rechen- und Speicherbandbreite ist entscheidend, um die beste Leistung zu erzielen. Glücklicherweise unterstützen FPGAs eine breite Palette externer Speicher, darunter DDR, HBM, GDDR und interner SRAM-Speicher, so dass die perfekte Kombination aus Bandbreite und Rechenleistung für eine bestimmte Arbeitslast gewählt werden kann, wenn der richtige Baustein ausgewählt wird.

Resnet peak bandwidth for increasing matricies sizes

Abbildung 4: Spitzenbandbreitenbedarf von Resnet (224×224) (32-Bit-Gleitkommadaten) bei steigenden Matrizengrößen

Abbildung 4 veranschaulicht den zunehmenden Spitzenbandbreitenbedarf für Matrixgrößen von 8×8, 16×16, 24×24, 32×32, 48×48 und 64×64 für Resnet 50. Bei der Bandbreite wird davon ausgegangen, dass Gewicht, Eingangs- und Ausgangsdaten in einem externen Speicher gelesen und geschrieben werden. Der On-Chip-SRAM-Speicher wird zur Speicherung temporärer Akkumulationen verwendet. Wenn das Netzwerk in den FPGA-Speicher passt, müssen die Merkmalsdaten nicht ständig aus dem Speicher gelesen und geschrieben werden. In diesem Fall wird die externe Datenbandbreite vernachlässigbar. Bei int8-Implementierungen können die erforderlichen Bandbreitenwerte durch 4 geteilt werden.

FPGA-Anbieter

Bittware ist anbieterunabhängig und unterstützt die FPGA-Technologien von Intel, Xilinx und Achronix. Alle FPGA-Anbieter bieten eine gute Leistung bei niedrigen Latenzzeiten und niedrigen Stapelzahlen, jedoch weist jedes Gerät subtile Unterschiede bei der Anwendung der konfigurierbaren Logik auf.

Achronix Speedster 7t

Der neueste FPGA von Achronix verfügt auch über IP zur Beschleunigung der Verarbeitung neuronaler Netzwerke. Jeder Machine-Learning-Prozessor (MLP) auf dem Baustein verarbeitet 32 Multiplikationsakkumulatoren (MACs), die 4 bis 24 Bit-Berechnungen unterstützen. Es werden auch Nicht-Standard-Gleitkommaformate unterstützt, wie z.B. Bfloat16. Ein wesentlicher Unterschied zwischen dem Achronix MPL und der Intel Tensor-Komponente ist ein eng gekoppelter SRAM-Speicher, der im Vergleich zu entkoppeltem SRAM höhere Taktraten gewährleisten soll.

Die Bittware S7t-VG6 verfügt über den Speedster7t mit 2.560 MLPS, was eine theoretische Spitzenleistung von insgesamt 61 TOps (int8 oder bfloat16) ergibt.

Achronix MLP diagram

Abbildung 5: Achronix MLP 3

Abbildung 6: BittWare S7t-VG6

Intel Stratix 10 NX und Agilex

Der Intel Stratix 10 NX war der erste FPGA von Intel, der über spezielle Tensor-Arithmetikblöcke verfügte. Die Tensor-IP ist für die Durchführung einer Tensor-Operation auf einem 10×3-Datenblock optimiert (Abbildung 5). Die IP kann so konfiguriert werden, dass sie bei voller Ausnutzung mit den Datentypen int4, int8, Block FP12 und Block FP16 arbeitet.

Stratix 10 Tensor IP diagram

Abbildung 7: Stratix 10 Tensor IP1

Der theoretische Spitzendurchsatz des Startix10 NX-Geräts ist in Tabelle 1 aufgeführt.

Der Stratix 10 NX verfügt außerdem über einen HBM2-Speicher, der eine Gesamtbandbreite von 512 GB/s bietet, um sicherzustellen, dass genügend Bandbreite für die gesamte verfügbare Verarbeitung vorhanden ist.

Präzision Leistung
INT4 286 TOPS
INT8 143 TOPS
Block FP12 286 TFLOPS
Block FP16 143 TFLOPS

Tabelle 1: Theoretischer Spitzendurchsatz von Stratix 10

Der Stratix 10 NX ist das Herzstück des Bittware 520NX Beschleunigerkarte. Die Karte verfügt über eine Board-to-Board-Bandbreite von bis zu 600 Gbit/s für die Verbindung mehrerer Karten untereinander oder für die Kommunikation mit Sensordaten.

Die Intel Agilex Serie verfügt nicht über Tensor-DSP-Komponenten; ihre DSPs wurden jedoch im Vergleich zu Stratix 10 verbessert, um mehr Datentypen zu unterstützen, was den arithmetischen Durchsatz mit geringerer Präzision erhöht. Die Intel Agilex M-Series hat eine theoretische Resnet-50-Leistung von 88 INT TOPS.2

520NX Block Diagram

Abbildung 8: BittWare 520NX

AMD Xilinx Versal

Der Xilinx Versal-Baustein verfügt über separate AI-Engines, die nicht in die programmierbare FPGA-Logik integriert sind. Die Versal AI-Engine ist eng mit dem FPGA gekoppelt, läuft aber unabhängig vom Rest des FPGAs. Die Daten werden zwischen den KI-Engines und der FPGA-Logik über ein Network On Chip (NOC) übertragen.

Versal AI Engine diagram

Abbildung 9: Versal AI-Engine

BittWare hat derzeit ein ACAP-Frühzugangsprogramm mit Konzepten wie einer PCIe Gen5-Beschleunigerkarte mit doppelter Breite, die die 7nm Versal Premium ACAP-Bausteine von AMD Xilinx® enthält. Erfahren Sie mehr auf unserer Versal-Informationsseite.

Programmierung von FPGAs für neuronale Netze

KI-Ingenieure verwenden viele verschiedene High-Level-Tools zur Beschreibung neuronaler Netze, z. B. PyTorch, TensorFlow, Caffe usw. Glücklicherweise gibt es APIs, die KI-Codes für FPGAs kompilieren, so dass Ingenieure weiterhin bestehende Tool-Flows verwenden können.

Bittware hat Partnerunternehmen mit dieser Fähigkeit:

EdgeCortix 

EdgeCortix Dynamischer Neuronaler Beschleuniger (DNA) ist ein flexibler IP-Core für Deep-Learning-Inferenz mit hoher Rechenleistung, ultraniedriger Latenz und skalierbarer Inferenz-Engine auf BittWare-Karten mit Agilex FPGAs.

Megh Computing 

VAS Suite von Megh Computing ist eine intelligente Videoanalyselösung für Sicherheits- und Systemintegratoren, die verwertbare Erkenntnisse mit einer Leistung der Unternehmensklasse benötigen und gleichzeitig die TCO berücksichtigen müssen.

Schlussfolgerung

Moderne FPGAs sind sehr leistungsfähige KI-Prozessoren, die sich durch geringe Latenzzeiten und kleine Stapelgrößen auszeichnen. Wenn sie mit anderen Verarbeitungsanforderungen kombiniert werden, bieten sie eine leistungsstarke Plattform, auf der einzigartig leistungsfähige KI-Systeme erstellt werden können. Je nach den Anforderungen des Systems kann sich ein FPGA-Anbieter als besser geeignet erweisen als ein anderer. BittWare ist bereit, Kunden bei der Auswahl des geeigneten FPGA-Systems auf der Grundlage von Leistungs-, Verarbeitungs- und IO-Anforderungen zu unterstützen.

Erfahren Sie mehr über unsere FPGA-Beschleunigerkarten →