Über die Besonderheit datenintensiver Workloads KI-Berechnungen mit IPUs anstelle von GPUs

Von Thorben Louw *

Anbieter zum Thema

Künstliche Intelligenz und Machine Learning sind besonders leistungshungrig. Vermehrt kommen deshalb angepasste Prozessoren wie die IPU, sprich Intelligence Processing Unit von Graphcore zum Einsatz. Dieser Beitrag beleuchtet die Besonderheiten der KI-Programmierung.

Auf KI und ML spezialisierte Chips helfen, die physikalischen Gegebenheiten in einem kompletten Gasturbinen-Triebwerk zu simulieren.
Auf KI und ML spezialisierte Chips helfen, die physikalischen Gegebenheiten in einem kompletten Gasturbinen-Triebwerk zu simulieren.
(© Rolls-Royce 2013)

Zusammen mit vier anderen Universitäten und Unternehmen bildet die Universität Bristol die High-Performance Computing Group (HPC Group). Die Partner sind damit Teil der ASiMoV (Advanced Simulation and Modelling of Virtual Systems) Prosperity Partnership Initiative, die auf fünf Jahre angelegt ist und vom britischen Engineering & Physical Sciences Research Council (EPSRC) gefördert wird.

Unter der Federführung des Triebwerkherstellers Rolls-Royce besteht das Ziel des Konsortiums darin, Techniken zur exakten und hochgenauen Simulation der physikalischen Gegebenheiten in einem kompletten Gasturbinen-Triebwerk zu entwickeln. Die HPC Group an der Universität Bristol untersucht, wie dieses Problem mit neuen IT-Architekturen und KI-Beschleunigern in Angriff genommen werden kann.

Maschinelles Lernen spielte in technisch-wissenschaftlichen Supercomputing-Anwendungen in den vergangenen zehn Jahren eine immer größere Rolle. Um diese leistungshungrigen Workloads besser zu unterstützen, setzen Supercomputer zunehmend auf KI-Lösungen wie die IPU-POD Scale-Out-Systeme von Graphcore, die die traditionellen HPC-Systeme ergänzen.

Die speziell für KI-Workloads entwickelten IPU-Systeme eignen sich dank schneller Ergebnisse besonders gut für technisch-wissenschaftliche Anwendungen. Unter der Leitung von Prof. Simon McIntosh-Smith hat die HPC Group untersucht, wie die IPU-Technologie von Graphcore in Converged KI/HPC-Anwendungen für technisch-wissenschaftliche Aufgaben in den Bereichen numerische Strömungsmechanik, Elektromechanik und Teilchensimulation eingesetzt werden kann.

Besonderheiten der KI-Programmierung

Software für wissenschaftliche Aufgaben wird von Anfang an massiv parallel ausgelegt, so dass sie auf zigtausend Knoten eines Supercomputers gleichzeitig ausgeführt werden kann. Jedoch können komplexe Datenabhängigkeiten und Speicherzugriffsmuster in numerischen Algorithmen dazu führen, dass die Applikation in ihrer Leistung durch die Speicherbandbreite oder Engpässe bei der Kommunikation begrenzt wird.

Infolgedessen lässt sich die theoretische Rechengeschwindigkeit der einzelnen Knoten gar nicht voll ausnutzen. Hier kommen neue Prozessordesigns wie die IPU ins Spiel, bei denen die Prozessor-Cores durch große On-Chip-SRAM-Speicher ergänzt werden.

In den heutigen zunehmend heterogenen Supercomputern sind die Applikationen dafür ausgelegt, die Stärken der verfügbaren verschiedenartigen Rechner zu nutzen. So werden CPUs beispielsweise für allgemeine Rechenoperationen mit geringer Latenz und hoher Präzision eingesetzt und haben Zugriff auf große DRAM-Speicherkapazitäten, wobei jedoch dieser Speicherzugriff langsam und energieintensiv ist.

GPUs eignen sich gut für datenparallele Workloads, die das SIMT-Design (Single-Instruction Multiple-Thread) nutzen können. Dagegen haben IPUs ein Multiple-Instruction Multiple-Data (MIMD)-Design, das die gleichzeitige Ausführung von mehr als 100.000 unabhängigen Programmen ermöglicht.

Dieses Design in Verbindung mit der sehr hohen Speicherbandbreite, großem On-Chip-Speicher und dedizierter Hardware-Unterstützung für Operationen wie Matrix-Multiplikation und Faltungen macht die IPU zu einer attraktiven Lösung für bestimmte HPC-Aufgaben, die nicht optimal mit CPUs und GPUs gelöst werden. Mögliche Anwendungen sind die Berechnung von Graphennetzen und die effiziente Verarbeitung von Sparse-Linear-Algebra-Aufgaben.

Unter Verwendung von Graphcore Mk1 IPUs untersuchte die HPC Group an der Universität Bristol zunächst sogenannte strukturierte Gitter. Diese Klasse von HPC-Problemen unterstützt die Solver für partielle Differentialgleichungen, die in der Modellierung physikalischer Prozesse wie Wärmeübergang und Fluidströmung zum Einsatz kommen.

Da HPC-Entwickler die verwendete Hardware mit maximaler Effizienz nutzen müssen, wird die Software in niedrigeren Programmiersprachen wie C, C++ oder Fortran erstellt. Für die Arbeit mit der IPU verwendete das Team das Poplar Low-Level C++ Framework von Graphcore und untersuchte, wie häufig genutzte „Bausteine“ der HPC-Software in Poplar ausgedrückt werden können. Beispiele für entsprechende Fragestellungen sind:

  • Verfahrensweise zur Aufteilung großer strukturierter Gitter auf mehrere IPUs
  • Effizienter Austausch gemeinsam genutzter Gitterbereiche („Halos“) zwischen den IPU-Tiles
  • Nutzung optimierter Primitive von Poplar für parallele Operationen wie Reduktionen und Implementierungen von Faltungen und Matrix-Multiplikation, die von der verwendeten optimierten IPU-Hardware profitieren können
  • Optimierung kritischer Code-Bereiche unter Verwendung vektorisierter Poplar-Datentypen (z. B. half4)
  • Nutzung der nativen Unterstützung der IPU für 16-Bit-Gleitkommazahlen mit halber Genauigkeit

Modelle für Speicherbandbreite und Performance

Als Leitlinie für die angestrebten Optimierungen und zur Messung der Leistungsfähigkeit von Applikationen entwickelte das Team zunächst ein so genanntes Roofline Performance Model für die Graphcore Mk1 IPU.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Hierzu wurde zunächst die BabelSTREAM-Benchmark für die IPU umgesetzt, welche die zu erwartende Speicherbandbreite einer Applikation charakterisiert. Das Team fand heraus, dass typische C++ Applikationen (erstellt mit einer Kombination von speziell angepassten C++ Eckpunkten und PopLibs-Bibliotheken von Poplar) eine Speicherbandbreite von 7,3 TB/s für einfache Präzision und von 7,5 Terabyte pro Sekunde (TB/s) für halbe Präzision erreichten.

Noch höhere Werte sind für Applikationen möglich, welche die Assemblerbefehle der IPU direkt nutzen. Diese sehr hohen Bandbreiten liegen in einer Größenordnung, die üblicherweise bei der Modellierung von CPU-Caches statt Speichern erreicht werden und sind dem vollständigen On-Chip-SRAM-Design der IPU zu verdanken.

Auf der Grundlage dieser Benchmarks für die Speicherbandbreite stellte das Team anschließend Roofline-Modelle auf, mit denen nachgewiesen werden kann, ob leistungskritische Bereiche der Applikation von der Speicherbandbreite oder der Rechenleistung abhängig sind. Dies erleichtert den Entwicklern die Auswahl der richtigen Optimierungsmaßnahmen für verschiedene Teile ihrer Applikationen.

Anwendungen mit strukturierten Gittern

Unter Anwendung ihrer HPC-Bausteine für die IPU und der Performance-Modelle realisierte die HPC Group an der Universität Bristol zwei Beispiele für Anwendungen mit strukturierten Gittern, die das „Stencil“-Muster verwenden: ein Gaußsches Weichzeichner-Bildfilter und eine 2D-Lattice-Boltzmann-Simulation für numerische Strömungsmechanik.

Bei der Skalierung dieser Anwendungen unter Verwendung mehrerer IPUs konnte das Team von der Poplar-Unterstützung für den transparenten Einsatz von 2,4,8 oder 16 IPUs in einer „Multi-IPU“-Konfiguration profitieren. Beide Anwendungen zeigten ein gutes „Weak Scaling“-Verhalten, d. h. durch Hinzufügen weiterer IPUs ließen sich größere Aufgabenstellung in nahezu der gleichen Zeit lösen.

Bei der Anwendung mit dem Gaußschen Weichzeichner wurde mit einer einzigen IPU eine Geschwindigkeitsverbesserung um mehr als den Faktor 5,3 gegenüber dem Einsatz von 48 CPU-Cores (Dual-Socket Intel Xeon Platinum 8186 CPU mit OpenCL) erzielt. Ebenso erzielte das Team eine Geschwindigkeitssteigerung um den Faktor 1,5 im Vergleich zu einer NVIDIA V100 GPU und noch bessere Ergebnisse bei Verwendung von Multi-IPU-Konfigurationen.

Für die Lattice-Boltzmann-Simulation wurde mit einer einzigen Graphcore Mk1 IPU eine Geschwindigkeitssteigerung um mehr als da 6,9-Fache im Vergleich zu 48 CPU-Cores erzielt. Diese erste IPU-Implementierung demonstrierte Vorteile gegenüber einer bisher eingesetzten optimierten Implementierung für die NVIDIA V100 GPU, die 0,7-mal so schnell war wie die NVIDIA V100. Nach Ansicht des Forschungsteams besteht auf der Grundlage seiner Roofline-Performance-Modelle ein starkes Potenzial für weitere Optimierungen.

Einsatz in Teilchensimulationen

Nach diesen vielversprechenden ersten Erfolgen mit dem Einsatz der IPU für Problemstellungen mit strukturierten Gittern hat die HPC Group an der Universität Bristol die IPU auch für komplexere HPC-Anwendungen mit unstrukturierten Gittern eingesetzt. Diese werden auch in Simulationen von Verbrennungsvorgängen, Aerodynamik und Elektromechanik verwendet und sind Gegenstand der Forschungsarbeiten im Rahmen der ASiMoV-Mitgliedschaft.

Da unstrukturierte Gitter eine Graph-artige Darstellung der Verbindungen zwischen verschiedenen Knoten eines Netzes verwenden, sind Speicherzugriffe wesentlich komplizierter als bei Anwendungen mit strukturierten Gittern. Solche Anwendungen können potenziell noch stärker von dem IPU-Design mit seiner hohen Bandbreite und seinen niedrigen Latenzzeiten profitieren. Das Team untersuchte außerdem die Möglichkeiten des IPU-Einsatzes in Teilchensimulationen.

Im Rahmen der ASiMoV-Partnerschaft haben Teilchensimulationen eine hohe Bedeutung für das Verständnis, wie effizient ein Motorenkonzept den Kraftstoff bei der Verbrennung nutzen kann. Teilchensimulationen stellen jedoch auch eine wichtigen HPC-Anwendungsfall dar, mit Einsatzmöglichkeiten, die von der Arzneimittelforschung (biomolekulare Simulationen) bis zur Astrophysik (Simulation der Einwirkung von Kräften wie z. B. der Schwerkraft auf Sterne in einer Galaxie) reichen.

Aktuell erforscht das Team Möglichkeiten, häufig verwendete Muster für Teilchensimulationen mit Hilfe des Computational Graph Paradigm von Poplar mit kompilierter Kommunikation zu definieren. Darüber hinaus setzt die HPC Group an der Universität Bristol IPUs in großen Converged KI/HPC-Simulationen ein, bei denen Konzepte des maschinellen Lernens mit traditionellen Simulationstechniken kombiniert werden.

Das Team erforscht die Verwendung von tiefen neuronalen Netzen zur Beschleunigung von linearen Solvern, z. B. zur Vorhersage besserer Interpolationsoperatoren für die Verwendung in der Algebraic Multigrid Method, und hat mit der Untersuchung von „Physics-informed Machine Learning“-Modellen begonnen. Diese verwenden Techniken wie Super-Resolution zur Gewinnung von Resultaten mit hoher Genauigkeit und Auflösung auf der Basis von grob auflösenden Simulationen.

* Thorben Louw ist Senior Research Associate an der Universität Bristol.

Was ist Poplar?

Das Graphcore Poplar SDK ist ein kompletter Software-Stack, der gemeinsam mit der IPU von Grund auf neu entwickelt wurde, um Graphcores Graph-Toolchain in einer benutzerfreundlichen und flexiblen Software-Entwicklungsumgebung zu implementieren. Poplar ist dabei vollständig in Standard-Frameworks für maschinelles Lernen integriert, sodass Entwickler bestehende Modelle einfach portieren und neue Anwendungen in einer vertrauten Umgebung sofort einsetzen können.

Unterhalb dieses Frameworks befindet sich Poplar. Für Entwickler, die volle Kontrolle über die maximale Leistungsfähigkeit der IPU erhalten wollen, ermöglicht Poplar die direkte IPU-Programmierung in Python und C++.

Poplar lässt sich nahtlos in Standard-Frameworks für maschinelle Intelligenz integrieren:

  • Unterstützung von PyTorch für IPUs mit PyTorch ATEN Backend sowie PyTorch Lightning
  • BERT (Bidirectional Encoder Representations from Transformers) Modell in PyTorch für die IPU auf Basis der Hugging Face Transformers Library
  • Unterstützung von TensorFlow 1 & 2 und vollständige Performance-Integration mit TensorFlow XLA Backend sowie Keras via TensorFlow 2
  • PopART (Poplar Advanced Runtime) für Training & Inferenz; unterstützt Python/C++-Modellbildung und ONNX-Modelleingabe
  • Unterstützung von Alibaba Cloud HALO (Heterogeneity-Aware Lowering and Optimization) und Alibaba Cloud ODLA (Open Deep Learning API)
  • Vollständige Unterstützung für PaddlePaddle in Kürze

Graphcore stellt seine Poplar-Bibliotheken (PopLibs) als Open-Source-Version zur Verfügung und bietet Entwicklern Zugriff auf über 50 optimierte Funktionen für gängige Maschinenlernmodelle und 750 Hochleistungs-Rechenelemente, um neue Ansätze für die maschinelle Intelligenz zu unterstützen. Das Unternehmen stellt auch seine TensorFlow- und PopART-APIs als Open-Source-Lösung bereit, um Entwicklern Einblick in die Integration von Frameworks in IPU-Hardwareplattformen zu geben, was die Modelloptimierung unterstützt.

Jeden Monat besuchen rund 900 Entwickler das Developer Portal von Graphcore. Dieser Hub für Entwicklerressourcen bietet umfassende Informationen, um mit dem Poplar SDK kommende Anwendungen für maschinelle Intelligenz zu erstellen. Zudem stehen Tutorials, Schulungsvideos, Benutzerhandbücher und Dokumentation bereit.

(ID:47587572)