Deutschland - Kennzeichen Deutschland

Incoterms:DDP
Alle Preise sind inklusive Zoll und Gebühren bei der Auswahl der Versandart.

Bitte bestätigen Sie Ihre Währungsauswahl:

Euro
Versand ist kostenfrei bei den meisten Bestellungen über 50 € (EUR)

US Dollar
Versand ist kostenfrei bei den meisten Bestellungen über $60 (USD)

Bench Talk for Design Engineers

Mouser German Blog

rss

Mouser Electronics, Inc german language blogs


KI/ML auf FPGAs implementieren Adam Taylor

(Quelle: putilov_denis - stock.adobe.com)

 

Die sogenannten „Field Programmable Gate Arrays“ (kurz: FPGAs) sind für die Beschleunigung von Anwendungen der künstlichen Intelligenz und des Machine Learning bekannt. Aber wie wird dies in FPGAs implementiert und welche unterschiedlichen Ansätze gibt es? In diesem Beitrag stellen wir Ihnen die verschiedenen Möglichkeiten vor, die Ingenieure beim Designprozess haben.

 

Die künstliche Intelligenz (KI) ist sowohl bei Cloud- als auch bei Edge-Anwendungen ein hochaktuelles Thema. In vielen Fällen macht KI die Systeme zuverlässiger, effizienter und sicherer. Künstliche Intelligenz gibt es schon lange. Sie wurde erstmals 1956 von John McCarthy eingesetzt, als die erste Konferenz über künstliche Intelligenz stattfand. Über die Jahrzehnte hinweg wurde zwar viel geforscht, aber erst in den letzten 5 bis 10 Jahren haben KI-Systeme den Weg aus den Labors und der Forschung in die Produktentwicklung und in die Endprodukte gefunden.

Das Machine Learning (ML) ist eine der am häufigsten genutzten Formen der KI in Cloud- und Edge-Umgebungen. Machine Learning ist die Lehre von Computeralgorithmen, mit denen sich Computerprogramme durch Erfahrung automatisch selbst verbessern können. Ein Beispiel hierfür ist die Bereitstellung eines Datensatzes von Bildern mit Beschriftungen für ein ML-Netzwerk. Der Machine-Learning-Algorithmus (ML-Algorithmus) identifiziert Merkmale und Elemente eines Bildes, sodass er bei der Eingabe eines neuen, nicht beschrifteten Bildes, das er zuvor nicht gesehen hat, feststellen kann, wie wahrscheinlich es ist, dass das Bild eines der gelernten Merkmale und Elemente enthält. Solche ML-Algorithmen können trainiert werden, um Objekte in Bildern zu erkennen, Schlüsselwörter in Sprache zu verarbeiten und Sensordaten auf Anomalien zu analysieren. Zu den typischen Anwendungsbereichen zählen die bildgesteuerte Robotik, autonome Fahrzeugsteuerung und Prognosen für industrielle und sicherheitskritische Systeme.

Die Lernalgorithmen für ML sind daher in zwei Bereiche unterteilt. Der erste ist das Training des Netzwerks anhand eines Trainingsdatensatzes. Der zweite ist der Einsatz des trainierten Netzwerks in der Praxis. Diese beiden Bereiche werden als Training bzw. Inferenz bezeichnet. Für das Einlernen präziser Modelle ist ein großer Datensatz mit entsprechenden Kennzeichnungen notwendig. Um diesen Trainingsprozess zu beschleunigen, wird er häufig auf Cloud-basierten GPUs durchgeführt. Entwickler können das trainierte Netzwerk dabei auf verschiedenen Technologien einsetzen, von MCU über GPU bis hin zu FPGA.

Einbindung von KI in FPGAs

Einige sehr beliebte Frameworks wie z. B. Caffe, TensorFlow und Pytorch unterstützen das Training und den Einsatz von KI/ML-Systemen. Diese Frameworks werden sowohl für die Netzwerkdefinition, für das Training als auch für die Inferenz verwendet.

Die Fähigkeit, Schlussfolgerungen innerhalb eines bestimmten Zeitrahmens durchzuführen, ist eines der Schlüsselelemente vieler Edge-basierter KI-Systeme. So müssen autonome Fahrzeuge beispielsweise andere Fahrzeuge, Hindernisse und Fußgänger sehr schnell erkennen, um Kollisionen zu vermeiden. Hierfür ist eine Lösung erforderlich, die sowohl reaktionsschnell als auch deterministisch ist: reaktionsschnell, weil die Sensordaten schnell und mit minimaler Verzögerung verarbeitet werden müssen, deterministisch, weil die Reaktionszeit für jede Eingabe gleich sein muss und nicht von den Betriebsbedingungen des Systems oder der Ressourcennutzung abhängen darf, weil beispielsweise die Verwendung von gemeinsam genutztem DDR-Speicher die Reaktionszeit verlangsamt.

Angesichts der Anforderungen an Reaktionsfähigkeit und Determinismus setzen Entwickler von Edge-basierten Lösungen häufig auf FPGA- oder heterogene SoC-basierte Lösungen. Diese Lösungen bieten dem Entwickler eine programmierbare Logik, die sich ideal für die Implementierung von Machine Learning-Netzwerken eignet, da sie aufgrund ihrer Parallelität sowohl eine reaktionsschnelle Anwendung als auch eine sehr deterministische Lösung ermöglicht.

Bei der Implementierung von ML-Inferenz in programmierbarer Logik können zwei Ansätze verfolgt werden. Unabhängig vom gewählten Ansatz werden neuronale Netze unter Verwendung von Gleitkomma-Mathematik entwickelt und trainiert, während Implementierungen in FPGAs oder heterogenen SoCs in der Regel Festkomma-Implementierungen verwenden. Der Prozess der Umwandlung von Gleitkomma- in Festkomma-Mathematik wird als Quantisierung bezeichnet und kann zu einer geringen Verringerung der Ableitungsgenauigkeit führen; bei den meisten Anwendungen kann jedoch ein zusätzliches Training unter Verwendung der quantisierten Gewichtungen und Aktivierungen durchgeführt werden, um die Genauigkeit wiederherzustellen.

Der erste Ansatz implementiert das neuronale Netzwerk direkt in die programmierbare Logik. Die trainierten Gewichtungen für die Inferenz werden in das Netzwerk geladen. Dies kann entweder während der Laufzeit oder während der Kompilierung/Synthese des Designs erfolgen.

Ein Beispiel für diese neuronalen Netzwerke ist das FINN-Netzwerk von AMD-Xilinx, das für die Implementierung quantisierter neuronaler Netzwerke in FPGAs verwendet werden kann. Diese quantisierten neuronalen Netzwerke werden als quantisiertes neuronales Netzwerk mit binären Gewichtungen und Zwei-Bit-Aktivierungen implementiert.

Die Alternative zur direkten Implementierung des neuronalen Netzwerks in der FPGA-Logik ist die Verwendung eines hochspezialisierten Beschleunigers für neuronale Netzwerke. Der neuronale Netzwerkbeschleuniger ist in der programmierbaren Logik implementiert und über Verbindungen mit hoher Bandbreite eng mit dem DDR-Speicher und den dedizierten Prozessoren innerhalb des heterogenen SoC gekoppelt.

Bei Anwendungen mit einem neuronalen Netzwerkbeschleuniger werden das Netzwerk und die Gewichtungen/Aktivierungen und Verzerrungen von der Softwareanwendung bereitgestellt. Dadurch lässt sich die ML-Inferenz leichter in die Gesamtanwendung integrieren. Die Deep Learning Unit von AMD-Xilinx ist ein Beispiel für einen neuronalen Netzwerkbeschleuniger, der mit Netzwerken arbeiten kann, die in Pytorch, Caffe und TensorFlow definiert sind, und der die gesamte Quantisierung, das Retraining und die Programmerstellung für die Anwendung übernimmt. Dies erleichtert die Integration in die zu entwickelnde Anwendung.

Ein quantisiertes neuronales Netzwerk kann in einem FPGA mit wesentlich weniger Ressourcen implementiert werden, da keine externe DDR- oder SoC-Unterstützung erforderlich ist. Die höchste Genauigkeit und Leistung wird durch die Verwendung eines spezialisierten Beschleunigers für neuronale Netze erreicht. Dabei sorgt die einfache Integration oft für eine insgesamt bessere Lösung. Dieser Ansatz wird daher von mehreren Anbietern in ihren KI-Lösungen verfolgt.

Abschließende Überlegungen

Die Entscheidung für eine Lösung hängt oft von der Endanwendung ab, auch wenn KI ein dominantes Marketingelement sein mag. In der Praxis ist KI oft nur ein winziger Teil der Gesamtlösung, da die Sensorschnittstelle, die Vorverarbeitung, der Aktuatorantrieb und andere Elemente, aus denen sich die Lösung zusammensetzt, ebenfalls ihre eigenen Einschränkungen und Anforderungen mit sich bringen.

Mithilfe programmierbarer Logik können Entwickler KI/ML-Lösungen entwickeln, die sowohl reaktionsschnell als auch deterministisch sind. Durch die Kombination dieser Lösungen mit branchenüblichen Frameworks können sie Cloud- und Edge-KI/ML-Anwendungen zuverlässiger, effizienter und sicherer machen.

 



« Zurück


Adam Taylor ist Professor für Embedded Systeme, Entwicklungsleiter und weltweit anerkannter Experte für FPGA/System on Chip und Elektronikdesign.


Alle Autoren

Alle anzeigen Alle anzeigen
Blog nach Datum anzeigen