Herkömmliche KI-/ML-Architekturen basieren auf Grafikprozessoreinheiten (Graphics Processor Unit, GPU), die ursprünglich zur Bildsynthese (Rendering) von 3D-Bildern entwickelt wurden. Während GPUs Billiarden von Gleitkommaoperationen pro Sekunde (TFLOPS) bereitstellen, sind sie im Allgemeinen für die Ausführung einer einzelnen von gleichzeitig stattfindenden Aufgaben ausgelegt und die Berechnung erfolgt mit Datentransfer über den Speicher. Dies erfordert immense Datenraten und umfangreiche Datenstrukturen im Speicher, was weiterhin zu höherem Energieverbrauch und geringerer Gesamtrechenleistung führt.

Mehr Rechenleistung bei weniger Energiebedarf

Bild 1: Ein Datenflussdiagramm auf Hardwareebene als grundlegendes Rechenwerk ist der Schlüssel zum Erfolg von Graph-Streaming-Processing.

Bild 1: Ein Datenflussdiagramm auf Hardwareebene als grundlegendes Rechenwerk ist der Schlüssel zum Erfolg von Graph-Streaming-Processing. Thinci

Die GSP-Architektur (Graph-Streaming-Processing) von Thinci verwendet im Gegensatz dazu ein grafisches Datenflussdiagramm als Ausführungsmodell, bei dem verschiedene Tasks verschiedenen Knoten eines Graphen zugewiesen sind (Bild 1). Eine On-Chip-Hardware plant dynamisch die gleichzeitige Ausführung dieser Tasks und verfolgt ihre Datenabhängigkeiten in sehr feinstrukturierter Weise. So können die zwischen Tasks ausgetauschten Informationen auf dem Chip verbleiben, was zu einem schnelleren Datenzugriff bei geringerem Energiebedarf führt, als bei bestehenden Lösungen mit externem Speicherzugriff, wie etwa bei GPUs. Die dynamische feinstrukturierte Planung ermöglicht automatisch eine ausgewogenere Rechenlastverteilung für eine bessere Hardwareauslastung.

Die GSP-Architektur lässt sich leicht skalieren, um größere und komplexere KI-Arbeitslasten zu bewältigen, etwa durch eine höhere Prozessoranzahl auf einem einzelnen Chip, oder durch die Gruppierung mehrerer Chips, die alle Tasks eines grafischen Datenflussplans auf beliebige mit ihnen verbundene Prozessoren verteilen, und das ohne jegliche Modifikation des Programmcodes von Anwendungen. Dieser grundlegende architektonische Vorteil stellt für lange Zeit die Erfüllung zukünftiger Berechnungsanforderungen in der KI sicher. Das Gesamtergebnis sind niedrigere Gesamtbetriebskosten und Investitionen für Unternehmen, die in KI-Nutzungsmodelle, -Dienstleistungen und -Gerätschaften investieren.

Parallelisierung auf mehreren Ebenen

Um die Einzigartigkeit des Graph-Streaming-Processing zu verstehen, beginnen wir mit der Philosophie, die der Konstruktion zugrunde liegt. In erster Linie war die Umsetzung von mehreren Ebenen der Parallelität für den Aufbau der Architektur entscheidend – Task-Ebene, Thread-Ebene, Daten-Ebene und Anweisungs-Ebene. Die Architektur umfasst auch mehrere Techniken, um einen außergewöhnlich niedrigen Energiebedarf in Kombination mit hoher Rechenleistung, die KI-/ML-Anwendungen benötigen, zu erreichen. Mit dem ursprünglichen Fokus auf das Edge-Computing (dezentrale, ausgelagerte Datenverarbeitung) sind geringer Energiebedarf und ein hoher Durchsatz somit besondere Merkmale dieser Architektur. Das bedeutet gegenüber konkurrierender Lösungen einen großen Vorteil, den das Graph-Streaming-Processing für zukünftiges Marktwachstum nutzen kann.

Eckdaten

In klassischen KI-/ML-Architekturen eingesetzte Grafikprozessoren sind aufgrund ihrer sequenziellen Task-Planung weniger effizient. Die GSP-Architektur von Thinci verwendet im Gegensatz dazu ein grafisches Datenflussdiagramm als Ausführungsmodell in Hardware und erreicht durch Parallelisierung auf Task-, Thread, Daten- und Anweisungs-Ebene einen außergewöhnlich niedrigen Energiebedarf bei gleichzeitig hoher Rechenleistung. Eingesetzt in neuronalen Netzen schafft die Prozessor-Pipeline einen Auslastungsgrad von bis zu 95 %.

Einzigartig beim GSP ist es, die Parallelisierung auf Task-Ebene direkt auf der Hardware auszuführen. Die Task-Planung erfolgt in Form eines grafischen Task-Datenflussplans (Bild 2). Die Implementierung dieses Datenflussdiagramms auf Hardwareebene als grundlegendes Rechenwerk ist der Schlüssel zum Erfolg von Graph-Streaming-Processing. Thread-Level-Parallelisierung ist eine gängige Technik in GPUs. Verbesserungen im GSP stellen sicher, dass die Hardware-Task-Planung dieses auch klar adressieren kann. Das GSP bringt auch einige neue Ideen zur Parallelisierung auf Datenebene mit. Anstatt eines einfachen linearen Vektors kann man 2D-Vektoren sowie Anweisungen zur parallelen Reduktion ausführen. Zuletzt bietet die Parallelisierung in der GSP-Anweisungsebene neue Ebenen in der Hardware-Task-Planung, wie auch Komplexitäten und Vorteile, die sich aus dieser Planung ergeben.

Task-Planung in Hardware ist effizienter

Im Rahmen der Parallelisierung auf Task-Ebene ist ein Task-Graph eine Formalisierung von Tasks, die sowohl Entwicklern als auch dem Compiler eine klare Abgrenzung zwischen Eingängen und Ausgängen vorgibt. Das Task-Diagramm reduziert nun auch Nebeneffekte, die Systeme komplex machen können, was eine hocheffiziente Beschleunigung ermöglicht. Noch wichtiger ist, dass die GSP-Task-Parallelisierung in einer Weise erfolgt, die industrielle Standards unterstützt und einfach zu programmieren ist. Der Entwickler befindet sich nicht auf Assembler-Code-Ebene und er benötigt außer Standard OpenCL C++ keine weitere spezielle Expertise zur Programmierung.

Der nächste Schritt in der Evolution von KI-/ML-Prozessoren besteht darin, der Hardware mehr Wissen über die von ihr verrichteten Arbeit zu vermitteln. Ein Task-Graph besteht aus Knoten, Puffern zwischen den Knoten und klar definierten Ein- und Ausgängen an jedem Knoten. Knoten sind an den Kernel oder an Programme gebunden, die auf den Knoten arbeiten. Die Datenpuffer für diese Knoten können strukturiert oder unstrukturiert und dicht oder dünn verteilt sein. Im Kontext des GSP weiß die Hardware, was ein Task-Graph ist. Der Schreibzugriff auf einen einzelnen Memory Mapped Intput/Output (MMIO) erfolgt vom Host, um die Ausführung des gesamten Task-Graphen einzuleiten. Die Interaktion mit dem Host ist dabei minimal und die Hardware übernimmt die Verwaltung des Speichers und steuert die Lastverteilung in der gesamten Maschine.

Graphenstruktur und Speicherzuordnung aus dem Compiler

Bild 2: Konventionelle GPUs und DSPs planen Tasks der Reihe nach, wogegen GSP durch parallele Task-Planung in Hardware deutlich schneller ist.

Bild 2: Konventionelle GPUs und DSPs planen Tasks der Reihe nach (links), wogegen GSP durch parallele Task-Planung in Hardware deutlich schneller ist (rechts). Thinci

Machine-Learning-Frameworks sind die vorherrschende Programmiermethode für ML-Anwendungen. ML-Frameworks und Bibliotheken führen Task-Graphen sequenziell aus. Zum Beispiel planen die Scheduling-Algorithmen unter Tensor-Flow jeweils einen Knoten, indem sie verschiedene Bibliotheken aufrufen um Operationen auszuführen. Die Beschleunigungsmodelle planen linear einen Knoten nach dem anderen. Der Kommunikationstransfer erfolgt über den Speicher und das Bewegen von Daten zum Chip bedeutet jedes mal Aufwand.

Im Gegensatz dazu ist der Compiler von Thinci zweistufig optimierend. Er ist vollständig automatisch vektorisierend und bietet alles, was der Kernel benötigt. Darüber hinaus führt der Compiler eine enorme Menge an statischen Analysen auf dem Kernel durch. Diese Analyse erzeugt weitere Metadaten, welche die Speicherzugriffsmethoden und so weiter beschreiben, die der Kernel ausführt. Diese Information gelangt dann weiter an einen globalen optimierenden Compiler, der die tatsächliche Graphenstruktur und die erforderlichen Pufferressourcenzuordnungen für die Zwischenpuffer bestimmt. Die generierten spezifischen Strukturen zu Ablaufsteuerung stehen dann der Hardware zur Verfügung, die wiederum die gesamte Task-Planung durchführt. Somit können Kernels mit unterschiedlichen Ausführungszeiten laufen, während sich gleichzeitig die Menge an in Prozess befindlichen Tasks auf dem Chip minimiert.

Das Ergebnis ist ein Datenstrom, der sich ununterbrochen durch eine Anordnung von Verarbeitungsknoten bewegt. Jeder Knoten im Datenstrom akzeptiert Eingaben von seinem Vorgängern und sendet sein Ergebnis an die nachfolgenden Knoten weiter.

Parallelisierung auf Thread-Ebene

Die Thread-Level-Parallelisierung erleichtert diese Datenstromberechnung. Eine der wichtigsten Innovationen von Thinci ist ein fortschrittlicher Thread-Scheduler, von dem industrielle Anwendungen künftig profitieren. Er plant und verteilt die Arbeit über eine Gruppe von Prozessoren – datenabhängig und mit hohem Datendurchsatz. Um dies zu erreichen, muss der Scheduler die Datenbeziehungen verstehen, anstatt die parallele Task-Ebenen-Planung an eine Software zu übertragen.

In vielen SIMD-Maschinen (Single Instruction Multiple Data) gibt es Verteilungs- und Zusammenführungs-Einheiten (Scatter-/Gather-Units) für den Datenpfad. Es besteht ein großes Interesse, ein entsprechendes Steuerungskonzept zu haben, bei dem die Threads zwecks Ausführung verteilt und danach in bestimmter Weise wieder zusammengeführt werden. Das Graph-Streaming-Processing verwendet ebenfalls diesen Scatter-Gather-Mechanismus.

Seite 1 von 212