People blurry in motion in yellow tunnel down hallway

(Bild: Intel)

Maschinelles Lernen ermöglicht zahlreiche Anwendungen, die unsere Sicherheit verbessern können. Die Fähigkeit, Computer zu trainieren, um Menschen und Handlungen in Bildern und Videos zu erkennen, ermöglicht die Analyse von Aufnahmen von Sicherheitskameras, um so vor möglichen gefährlichen Situationen zu warnen.

Eckdaten

Neuronale Netzwerke bilden die Grundlage für maschinelles Lernen. Dabei verlaufen Signale über verschiedene Ebenen und verarbeiten dabei Daten und Informationen. Zu Beginn waren die Lernmechanismen noch sehr rechenintensiv und Forscher stiegen von CPUs auf GPUs um. Diese konnten danke Single-Precision-Fließkomma-Ausführungseinheiten die Algorithmen besser verarbeiten. Auf solchen Grafikverarbeitungseinheiten basieren auch heutige FPGAs.

Bild 1: Zu den Hauptanwendungen des maschinellen Lernens gehört die Gesichtserkennung.

Bild 1: Zu den Hauptanwendungen des maschinellen Lernens gehört die Gesichtserkennung. Fotolia, zapp2photo

Zu den Hauptanwendungsgebieten zählt die Gesichtserkennung (Bild 1). Dabei empfängt ein System Aufnahmen von einer oder mehreren Sicherheitskameras und vergleicht diese mit Fotos gesuchter Personen. Solche Systeme nutzen oft künstliche Intelligenz (KI), um Merkmale auszuwählen, die die Erkennung von Gesichtern ermöglichen, auch wenn diese teilweise durch Haare oder Kopfbedeckungen verdeckt sind. Damit ein solches System erfolgreich ist, muss es zunehmend höher entwickelte Algorithmen nutzen und sie in Echtzeit auf energieeffizienter Hardware ausführen, weshalb sich die Art und Weise ändert, wie Integratoren diese Systeme gestalten.

Neuronale Netzwerke

Bild 2: Zu den maschinellen Lerntechniken gehört die Anwendung neuronaler Netzwerke, ein Prinzip dass bereits in den 1980er und 1990er Jahren vielversprechend für Erkennungsanwendungen war.

Bild 2: Zu den maschinellen Lerntechniken gehört die Anwendung neuronaler Netzwerke, ein Prinzip, das bereits in den 1980er- und 1990er-Jahren vielversprechend für Erkennungsanwendungen war. Intel

Es gibt verschiedene maschinelle Lerntechniken, die den Anforderungen wie etwa denen der Gesichtserkennung entsprechen. Im Forschungs- und Entwicklungsfeld „Maschinelles Lernen“ ändert sich der Bereich „Neuronale Netzwerke“ derzeit am schnellsten. Bereits in den 80er- und 90er-Jahren waren neuronale Netze für Erkennungsanwendungen vielversprechend. Sie nutzten ein einfaches Modell der Neuronen, ähnlich dem des Gehirns, um KI-Funktionen zu entwickeln (Bild 2).

In einem traditionellen neuronalen Netzwerk verlaufen Signale durch Schichten künstlicher Neuronen. Dabei führt jedes Neuron eine Berechnung auf der Basis eines Wertes durch, der von den Eingängen geliefert wird, und multipliziert diesen mit einem Gewichtungsfaktor. Erreicht die Summe aller Eingänge einen bestimmten Schwellenwert, geht der Ausgang auf die Neuronen in der nächsten Schicht über. In einem traditionellen neuronalen Netzwerk ist jedes Neuron in einer Schicht mit jedem Neuron in der nächsten Schicht verbunden. Dies führt zu einem dicht miteinander verbundenen Netzwerk, in dem Neuronen in mehreren Schichten Informationen von allen Eingängen erhalten können. Jeder Eingang erhält einen Gewichtungsfaktor, der bestimmt, wie viel jeder Datenwert den Ausgang des Neurons beeinflusst.

Der Vorteil solcher neuronalen Netze war, dass sie durch einen Lernprozess hinzulernen konnten. Bei diesem Prozess berechnet das System für jedes Neuron in jeder Schicht eine Gewichtung. Zunächst erwies sich der Lernprozess als problematisch, da die Backpropagation-Lernalgorithmen nur für relativ flache Neuronen-Netzwerke funktionieren, die einen Eingang, Ausgang und eine einzige verdeckte Schicht umfassten. Dies beschränkte das neuronale Netzwerk jedoch auf vergleichsweise einfache Aufgaben mit Bildern mit geringer Auflösung. Deshalb konzentrierte sich die Forschung und Entwicklung auf andere maschinelle Lerntechniken wie etwa Support-Vektor-Maschinen.

 

Wie verdeckte Ebenen das Deep Learning ermöglichen und warum eine GPU dafür besser geeignet ist als eine herkömmliche CPU, erfahren Sie auf der nächsten Seite.

Verdeckte Ebenen ermöglichen Deep Learning

Im Jahr 2006 fanden Forscher der Universität von Toronto einen Weg, um Backpropagation-Techniken auf neuronale Netze mit vielen verdeckten Schichten anzuwenden. Diese umfassenderen, tieferen Netzwerke führten zu dem Begriff „Deep Learning“. Hierbei ermöglichen mehrere verdeckte Ebenen, dass neuronale Netze viel komplexere Eingänge als zuvor verarbeiten können. Zusätzlich lässt sich die Architektur des Netzwerks auf spezifische Probleme abstimmen. In vielen Fällen verwandeln die vielen verdeckten Schichten des Deep-Learning-Netzwerks die hochdimensionalen Daten eines 2D-Bildes in Formen mit weit weniger Dimensionen. Diese Eingänge mit niedrigerer Dimension werden in den Schichten nahe dem Ausgang analysiert, um übergeordnete Einblicke bereitzustellen. Das Netzwerk kann somit Objekte in Gruppen klassifizieren.

GPU statt CPU

Die während der Mitte der 2000er Jahre entwickelten Lernmechanismen sind sehr rechenintensiv. Forscher begannen daher, den hohen Rechendurchsatz von Grafikverarbeitungseinheiten (GPUs) zu nutzen. Aufgrund der hochparallelisierten Single-Precision-Fließkomma-Ausführungseinheiten schienen GPUs gut geeignet zu sein, sowohl die Lernphase als auch die Berechnungen, die für die Rückschlüsse erforderlich sind, zu beschleunigen. Die Ergebnisse bestätigten dies: GPUs können bei der Durchführung von Deep-Learning-Algorithmen viel schneller sein als Anordnungen herkömmlicher CPUs.

Jedoch konzentriert sich die Architektur der weiterhin auf 2D- und 3D-Rendering-Anwendungen, nicht aber auf Bild- oder Signalverarbeitungsaufgaben in Echtzeit. Die typische GPU setzt eine Speicherhierarchie ein, die rechenintensive Operationen für Daten begünstigt, die sich leicht im Speicher zusammenfügen lassen und die typisch für 3D-Rendering-Pipelines sind.

Jede Ausführungseinheit hat Zugriff auf einen kleinen lokalen Speicherbereich, wo das System Datenelemente im Voraus lädt. Obwohl jede Ausführungseinheit Zugriff auf größere, gemeinsame Arrays hat, arbeitet die GPU primär in diesem lokalen Speicher, um maximale Leistung zu erzielen. Zu viele Zugriffe auf den globalen Speicher führen zu Konflikten und einer signifikanten Leistungsminderung.

Deep-Learning-Algorithmen fehlt jedoch die zeitlich-räumliche Lokalität einer 3D-Rendering-Pipeline, vor allem für die vollständig vernetzten Schichten eines neuronalen Netzwerks. Jedes Neuron innerhalb einer Schicht muss Daten von jedem Neuron verarbeiten, das sich in der vorherigen Schicht befindet. Die Spanne dieser Zugriffe ist viel größer, als sie im lokalen Speicher der GPU-Ausführungseinheit enthalten sein kann. Um dies zu umgehen, muss die Anwendung regelmäßig unterschiedliche Datenpakete in die lokalen Speicher laden, was den Energieverbrauch erhöht und die Auslastung der schnellen Fließkomma-Einheiten verringert.

Diese Notwendigkeit, lokale Speicher kontinuierlich neu zu laden, trifft nicht nur auf Deep-Learning-Anwendungen zu. Viele Algorithmen, die für das maschinelle Lernen und die Echtzeit-Bildverarbeitung nützlich sind, haben ähnliche Anforderungen. Viele verwenden grafikorientierte Sparse-Matrix-Strukturen, um ihre Daten zu organisieren und zwingen eine oder GPU, Daten aus verschiedenen Teilen des Speicherabbilds zu sammeln, um sie zu vervollständigen. Dies steht im Gegensatz zu den Dense-Matrix-Strukturen, die typisch für ältere Signalverarbeitungsalgorithmen und Bildwiedergabe-Pipelines sind.

 

Warum der sparsame Einsatz von Daten eine Änderung der Architektur erfordert und wie sich flexible Hardwareplattformen wie FPGAs an verschiedene Algorithmen anpassen können, beschreibt der Beitrag auf der folgenden Seite.

Neue Einsatzgebiete, neue Architektur

Allerdings erfordert dieser sparsame Einsatz von Daten eine Änderung der Architektur und den Einsatz flexibler Hardwareplattformen, die sich von Fall zu Fall an verschiedene Algorithmen anpassen können. Eine Architektur, die eine Reihe von Spezialisten für neuronale Netzwerke verwendet, ist das systolische Array. Anstatt Daten für jedes Neuron aus Datenblöcken zu lesen und zu schreiben, werden die Ergebnisse jeder Berechnung auf jedem Verarbeitungszyklus nun direkt zwischen virtuellen Neuronen bewegt. Die Eingaben des systolischen Arrays werden per verwaltet, um die Effizienz der Operationen zu maximieren und die Ausgänge an die Eingangsneuronen abzustimmen, während der Algorithmus jeden Satz von Schichten durchquert. Verteilte Speicher können Zwischenergebnisse für den nächsten Durchlauf über das Array mit einer anderen Gruppe von Neuronen zwischenspeichern.

Systolische Arrays funktionieren nicht in jedem Fall gut, denn beim Lernprozess erweisen sich andere Architekturen oftmals effizienter für Deep-Learning in neuronalen Netzwerk-Arrays. Forscher haben Varianten wie rekurrente neuronale Netze und Speichernetzwerke entwickelt, die Mechanismen beinhalten, um Daten wieder in das Netzwerk einzubringen oder wichtige Werte zwischen den Übertragungen zu speichern und wiederzuverwenden. Aber der gemeinsame Faktor ist, dass sie das Konzept eines rechnergestützten Graphen einsetzen, der in einer Architektur abgebildet werden kann, in der die Datenelemente entlang den Eckpunkten des Graphen zwischen den Prozessorelementen verlaufen.

Flexible FPGAs

Bild 3: FPGAs wie das Arria-10-SoC von Intel bieten eine ideale Grundlage für grafikorientierte Algorithmen und ermöglichen es, die Verbindungen zwischen den Ausführungseinheiten anzupassen.

Bild 3: FPGAs wie das Arria-10-SoC von Intel bieten eine ideale Grundlage für grafikorientierte Algorithmen und ermöglichen es, die Verbindungen zwischen den Ausführungseinheiten anzupassen. Intel

Feldprogrammierbare Gate-Arrays (FPGAs) wie das Arria-10-SoC von Intel (Bild 3) bieten die Grundlage für diese grafikorientierten Algorithmen und ermöglichen es, die Verbindung zwischen den Ausführungseinheiten anzupassen. Flexibilität in den Ausführungseinheiten und Datenpfadelementen selbst, ist entscheidend für die hohe Effizienz von Anwendungen, die auf maschinellen Lernkonzepten basieren. Die Fähigkeit, den Datenpfad auf eine feinkörnige Ebene anzupassen, sorgt für die nötige Flexibilität.

Die Bedeutung einer anpassbaren Ausführungseinheit zeigt sich in den jüngsten F&E-Anstrengungen rund um Deep Learning. Hier erwiesen sich die Standard-Single-Precision-Fließkomma-Operationen als wirksam, da sie einen guten Kompromiss zwischen Leistungsfähigkeit und Chipfläche in den verwendeten GPUs lieferten. In vielen Fällen können GPUs die zu verarbeitenden Daten mit Operationen mit viel geringerer Auflösung handhaben. Eingaben und Gewichtungen können in vielen Fällen mit Festkomma-Integer-Pipelines gehandhabt werden, die nur 8 Bit oder in manchen Fällen sogar nur 4 Bit breit sind. Die Umsetzung neuronaler Netzwerke auf Plattformen, die Single-Precision-Fließkommadaten mit einer Breite von insgesamt 32 Bit verarbeiten, führt zu einer Verschwendung von Chipfläche und vor allem für viele Nutzer in Rechenzentren und Embedded-Umgebungen zu reiner Energieverschwendung.

FPGAs bieten die Möglichkeit, entweder feinkörnige kundenspezifische Logik oder programmierbare Signalverarbeitungselemente zu verwenden, wie sie die Arria-10-Bausteine von Intel bieten, die in ihrer Bitbreite skalierbar sind. Eine Engine, die für die FPGA-Implementierung ausgelegt ist, kann leicht eine Reihe von Ausführungseinheiten mit abstimmbaren Bitbreiten bereitstellen. Zudem kann die Anwendung Ausführungseinheiten und die Verbindung zwischen ihnen entsprechend den verschiedenen Teilen des Algorithmus abstimmen. So können Schichten, die direkt mit Bilddaten umgehen, eine große Anzahl von schmalen Datenpfaden nutzen. Schichten, die sich tiefer im Stapel befinden, können die höhere Auflösung breiterer Pipelines verwenden.

Die Flexibilität eines FPGAs eignet sich für andere Algorithmen, die möglicherweise für das Erstellen der kompletten Anwendung verwendet werden. In vielen Fällen werden Bildverzerrungstechniken angewendet, um das maschinelle Lernen einfacher zu trainieren. Diese führen Aufgaben wie die Beleuchtung sowie räumliche und perspektivische Transformationen durch, um der KI-Engine einheitlichere Daten zu liefern, mit denen sie arbeiten kann. Die Transformationen beseitigen Probleme bei der Gesichtserkennung in Sicherheitsbereichen, wenn eine unregelmäßige Beleuchtung oder Verzerrungen durch veränderte Kamerawinkel auftreten. Das FPGA kann zusätzlich zu den maschinellen Lernalgorithmen Beschleuniger für diese Transformationen enthalten, die die Voraussetzung für die Echtzeit-Verarbeitung sicherheitsorientierter Anwendungen unterstützen. Das Ergebnis ist eine Plattform, die von Grund auf für die immer fortschrittlichere Kombination aus maschinellem Lernen und Bildverarbeitung geeignet ist.

(prm)

Sie möchten gerne weiterlesen?