Fachartikel

Intel® oneAPI ermöglicht „Distributed AI“

Deep Learning durch paralleles Arbeiten verteilter Systeme beschleunigen

Bereich: Fachartikel

Heute verfügen wir über leistungsstarke Netzwerke mit genügend Bandbreite, um selbst „Big Data“ zwischen mehreren Rechnern in kürzester Zeit auszutauschen. Das erlaubt es, die zeitraubenden Phasen bei Training und Test von KI-Modellen deutlich zu verkürzen, indem Teilaufgaben davon auf einem Verbund leistungsstarker Rechner parallel erledigt werden. So kann das trainierte KI-Modell deutlich früher als bisher für das Inferencing bereitgestellt werden.

Was so einfach klingt, kann sehr schnell sehr kompliziert und umständlich werden, falls nicht alle Rechner im Verbund auf moderner Xeon-Technologie basieren. Genau das ist aber eher Ausnahme als die Regel, wenn im Unternehmen ein Rechnerverbund für „Distributed AI“ zusammengestellt werden soll. Denn dann werden in der Regel vorhandene Rechner genutzt statt viele neue Systeme mit aktuellster Technologie anzuschaffen; das spart Zeit und Kosten.

Um die Entwicklung und den Betrieb von Software in solchen Rechnerverbünden zu beschleunigen und zu erleichtern, kündigte Intel® zu Jahresbeginn das neue Programmiermodell oneAPI an. Als offenes, auf Standards basierendes Framework verbessert oneAPI einerseits die Performance für das Training unterschiedlichster KI-Workloads auch auf mehreren Rechnern mit uneinheitlicher Architektur.
Denn in dem Maße, in dem die datenzentrierten Workloads immer vielfältiger werden, gibt es auch immer mehr Rechnerarchitekturen, mit denen diese Daten für unterschiedliche Zwecke optimiert verarbeitet werden. Die Bandbreite dieser Architekturen umfasst skalare Bausteine (CPU), aber auch vektorielle (GPU), Matrix-basierte (AI) und spatial bzw. räumlich optimiert arbeitende (FPGA) Bausteine.
Erst die gelungene Mischung aus Skalar-, Vektor-, Matrix- und Spatial-Architekturen (SVMS), die über CPUs, GPUs, FPGAs und andere Spezialbeschleuniger bereitgestellt werden, wird eine gute Gesamtleistung für alle Workloads ermöglichen. Für die performante Verbindung der Rechner im Verbund unterstützt oneAPI transparent viele Netzwerktechnologien, wie z. B. Intels® Omni-Path-Architektur, aber auch InfiniBand und Ethernet.

Vielgestaltige SVMS-Architekturen
All diese SVMS-Architekturen erfordern jeweils ein eigenes, effizientes Software-Programmiermodell, um performant zu funktionieren. Für alle verschiedenen SVMS-Architekturen soll oneAPI als einheitliche Schicht den Zugriff auf die Daten regeln, so dass die eigentlichen Anwendungen auch an dieser Stelle optimiert arbeiten. Das gilt in Zukunft auch für das Training der AI-Systeme; erst sobald hierfür eine bestimmte Architektur definiert ist, wird oneAPI diese Architektur verwenden.
Beispiel: Eine AI-Workload soll auf zehn Rechner verteilt werden, wobei der Programmierer davon ausging, dass der Code jeweils von einer GPU (als Beschleuniger) ausgeführt wird. Daher müssten alle zehn Maschinen über GPUs verfügen. Wenn dann aber fünf der vorhandenen Rechner nicht über eine GPU verfügen, wären aus Performance-Sicht nicht ideal. Hier kommt dann oneAPI ins Spiel, weil dann die Ausprägung der Architektur erst beim Compile festgelegt wird.
Aufbauend auf der untergeordneten Kommunikations-Middleware – wie dem Message-Passing-Interface (MPI) oder libfabrics – ermöglicht oneAPI so die effiziente Implementierung von Kollektiven für Deep-Learning-Schulungen, etwa zum Sammeln und Reduzieren von Daten oder für das Verbessern der Datenqualität.

Einheitliches, einfaches und skalierbares Programmiermodell
Auf Basis dieses einheitlichen, architekturübergreifenden Programmiermodells für CPUs und Beschleuniger bietet Intel® außerdem Produkte an, die für die Bereitstellung von Anwendungen und Lösungen in SVMS-Architekturen erforderlich sind. Ergänzende Toolkits – ein Basis-Kit und spezielle Add-Ons – vereinfachen die Programmierung und helfen den Entwicklern, ihre Effizienz zu steigern und die Umsetzung ihrer kreativen Ideen zu verbessern.
Typische Einsatzfelder sind High-Performance-Computing (HPC), Maschinelles Lernen und Analytik, IoT-Anwendungen, Videoverarbeitung, Rendern und vieles mehr. Bei KI-Forschung und -Anwendungen stehen die Bereichen Finanzwesen, Einzelhandel und E-Commerce, Robotik sowie Logistik im Vordergrund. Mittlerweile unterstützen mehr als 30 Unternehmen das oneAPI-Konzept.
Als einheitliches, einfaches und skalierbares Programmiermodell bietet oneAPI eine durchgängige Developer-Experience über alle Phasen von Entwicklung, Test und Betrieb von IT-Anwendungen, nicht nur im KI-Bereich, sondern zum Beispiel auch für High Performance Computing. Das war bisher anders, weil jede Art von datenzentrierter Hardware mit eigenen Sprachen und Bibliotheken programmiert werden musste, wodurch separate Codebasen entstanden. Darüber hinaus bedeutete die inkonsistente Unterstützung plattformübergreifender Tools, dass Entwickler wertvolle Zeit damit verschwenden mussten, verschiedene Tools zu erlernen.
Highlight von oneAPI ist Data Parallel C++, eine neue Sprache für die direkte Programmierung unterschiedlicher Hardwareziele (CPUs, GPUs, FPGAs und andere Acceleratoren). Als Weiterentwicklung von C++ enthält DPC++ zusätzlich auch SYCL als übergeordnetes Programmiermodell für CL. Bei der  Computing Language handelt es sich um eine domänenspezifische Embedded-Sprache, die auf C++ basiert.

Die gesamte KI-Pipeline beschleunigen
Außer DPC++ bietet API umfangreiche Bibliotheken für die API-basierte Programmierung in unterschiedlichsten Anwendungsfeldern, etwa für Deep Learning, Mathematik/Analytik oder Videoverarbeitung. Darin enthalten sind auch voroptimierte Funktionen, die rechenintensive Workloads auf Intel® CPUs und GPUs domänenspezifisch beschleunigen.
Das bereits erwähnte Intel® AI Analytics Toolkit powered by oneAPI hilft dann Entwicklern, Forschern und Datenwissenschaftlern mit zusätzlichen Tools weiter, die jeden einzelnen Schritt in der Pipeline beschleunigen können: Sie trainieren Deep Neural Networks, integrieren trainierte Modelle in Inferenzanwendungen und führen Data-Science- und Analytics-Anwendungen aus. Ziel ist es, die End-to-End-Performance für KI-Workloads zu optimieren – und zwar unabhängig von Branche, Einsatzszenario und Hardware-System. Mit diesem Toolkit kann der Entwickler

  • Hochleistungstraining auf CPUs anbieten und Deep-Learning-Inferenzen in die KI-Anwendungen integrieren, die mit den Intel®-optimierten DL-Frameworks TensorFlow oder PyTorch entwickelt wurden.
  • die Data-Science- und Analytics-Phasen mit rechenintensiven Python-Paketen beschleunigen, die für Intel®-Architekturen wie NumPy, SciPy, scikit-learn und XGboost erweitert wurden.

Python ist aktuell die beliebteste Programmiersprache für KI-Anwendungen und Datenanalysen, deren Nutzergemeinde folglich auch am schnellsten wächst. In der Intel®-Distribution für Python bereits enthalten sind rechenintensive Pakete, die für maschinelles Lernen und Datenwissenschaft häufig verwendet werden. Diese Algorithmen sind bereits für Intel®-Architekturen optimiert; die Distribution enthält zusätzlich auch daal4py, eine Python-Schnittstelle zur Intel® oneAPI Data Analytics Library.

Datenanalyse leicht gemacht
Mit dieser Bibliothek kann der Entwickler Data-Science- und Analytics-Pipelines schnell und einfach abarbeiten. Mit den Hochgeschwindigkeitsalgorithmen der Bibliothek (z. B. Analysefunktionen, mathematische Funktionen sowie Trainings- und Prognosefunktionen) erlauben es nicht nur, dass die resultierenden Anwendungen sogar sehr große Datenmengen ohne dedizierte HCP-Systeme verarbeiten können, sondern dass die im Unternehmen verfügbaren Rechnerressourcen diese Daten auch viel genauer als bisher analysieren und daher bessere Prognosen schneller als bisher erstellen können.
Die Intel® oneAPI Data Analytics Library unterstützt Offline-, Streaming- und verteilte Nutzungsmodelle. Für eine maximale Berechnungsgeschwindigkeit ist jede Funktion stark auf den Befehlssatz, die Vektorbreite, die Kernanzahl und die Speicherarchitektur jeder Ziel-CPU oder -GPU abgestimmt. Ergebnis sind Performance-Gewinne für eine Vielzahl von Anwendungen – von IoT-Gateways bis hin zu Back-End-Servern.
Dabei kann jeder Entwickler dank integrierter Python-, Java-, C- und C++-Unterstützung in der Sprache arbeiten, mit der er am besten vertraut ist, was natürlich die Dauer der Entwicklung verkürzt und außerdem vielfach die Qualität der Anwendung verbessert. Auch zahlreiche SYCL-Schnittstellen für CPUs und GPUS sind bereits in dieser Library enthalten.

Parallelität beim Training der KI-Systeme nutzen
Wird das Training von KI-Systemen dezentralisiert in einem Rechnerverbund ausgeführt, sind prinzipiell zwei unterschiedliche Formen des Trainings sinnvoll:

  • Synchrones Training: Das Modell wird erst dann aktualisiert, nachdem alle Geräte ihre Verläufe erfolgreich berechnet und gesendet haben
  • Asynchrones Training: Kein Gerät wartet auf Aktualisierungen des Modells von einem anderen Gerät

Horovod erleichtert das Starten und Beschleunigen verteilter Deep-Learning-Projekte mit TensorFlow deutlich, ist damit doch die Skalierbarkeit beim Erstellen und Bereitstellen von KI-Systemen kein Problem mehr. Für die Verteilung und Kommunikation der Parameter verwendet Horovod für einen dezentralen Ansatz den Ring-Allreduce-Mechanismus auf eine Weise, die Codeänderungen nur wenigen Zeilen erforderlich machen. Anders als bei einer zentralen Steuerung des Rechnerverbundes ist dabei auch kein dedizierter Parameterserver notwendig.

Die Umwandlung einer Single-Node-basierten Deep-Learning-Workload in eine Multi-Node-Workload ist ziemlich einfach. Ist die IT-Umgebung mit dem AI Analytics Toolkit erst einmal eingerichtet, sind nur noch wenige Schritte erforderlich:

  1. Horovod importieren und dann initialisieren: import horovod.tensorflow as hvd     hvd.init()
  2. Um die Lernrate zu skalieren, wird Horovod in den ursprünglich verwendeten verteilten Optimierer eingebettet. Die Skalierung der Lernrate basiert auf der Idee, dass mit zunehmender Anzahl der Rechenknoten auch die Lernrate mit einem Faktor proportional zur Anzahl der Knoten multipliziert werden muss. Stimmt das, wäre eine effektive Konvergenz des Modells sicher. Allerdings verhält sich jede Workload anders. Deshalb ist es empfehlenswert, die Modellkonvergenz mit und ohne die Skalierung zu testen. opt = tf.train.AdagradOptimizer(0.01 * hvd.size())
  3. Sicherstellen, dass nur einer der Worker (d. h. Knoten) das endgültige trainierte Modell erstellt, um zu verhindern, dass andere Worker das erfolgreich trainierte Modell verfälschen. checkpoint_dir = '/tmp/train_logs' if hvd.rank() == 0 else None
  4. Damit ist die Multi-Node-Workload schon starklar. Dazu wird das Trainingsskript als MPI-Anwendung ausgeführt. Horovod und oneCCL übernehmen dann über das “Message Passing Interface” den Lasttransport und verteilen die Workload auf die verschiedenen Knoten. mpirun -n 4 python training_script.py

Ein vollständiges Beispiel für ein funktionierendes Skript mit allen notwendigen Anweisungen steht im offiziellen oneAPI-Sample-Repository zum Download bereit.

Ergänzend zum Intel® AI Analytics Toolkit gibt es erweiterte Analyse- und Debug-Tools für Profilerstellung, Designberatung und Debugging:

  • Intel® VTune Profiler findet Performance-Bottlenecks in CPU-, GPU- und FPGA-Systemen
  • Intel® Advisor liefert Ratschläge für das optimierte Design von Vektorisierung, Threading und Accelerator-Offload
  • GDB erlaubt das effiziente, system-weite Debugging von Code, der in DPC++, C, C++ oder Fortran geschrieben ist.

Außerdem werden die Entwickler in die Lage versetzt, gleichzeitig die Datenaufnahme und die algorithmische Berechnung so zu optimieren, das auf CPU- und GPU-Plattformen die jeweils beste Performance erzielt wird.
Last but not least enthält oneAPI auch ein Kompatibilitätstool zur Quellcode-Migration vorhandener GPU-Programme nach DPC++. Diese Migrations-Engine wandelt CUDA-Code, der überwiegend für wissenschaftliche oder technische Berechnungen genutzt wird, in standardbasiertes DPC++ um.
Für das Tuning der mit DPC++ erstellten KI-Anwendungen werden zunächst die Datenparallelitäten analysiert und etwaige Engpässe beseitigt. Danach werden diejenigen Zeilen des DPC++-Codes aufgespürt und genauer unter die Lupe genommen, die am meisten Zeit in Anspruch nehmen; hier lohnt sich die Performance-Analyse vermutlich besonders. Andere Optimierungsoptionen sind die gezielte Verlagerung von Code-Passagen auf die jeweils am besten dafür geeignete Hardware – CPU, GPU bzw. FPGA – und für ein Fein-Tuning dieser Code-Passagen.

Tuning groß geschrieben
Schließlich lohnt sich auch eine Optimierung der Offloads von CPU auf GPU oder FGPA sowie das Tuning der Offload-Leistung mit MP ( Multi-Processing), das hierzu verwendet wird. Auch die Konfiguration der Hardware-Parameter (CPU, GPU, FPGA, Threading, Memory-, Cache- und Speicherkapazität) kann an die Art der Workloads adaptiert werden. Bei all diesen Arbeiten wird der Entwickler von Intel® Advisor unterstützt, dem Assistenten für Konfiguration und Design seiner Hardware-Infrastruktur.
Mit Hilfe von Horovod, dem -Source-basierten Third-Party-Tool für Deep-Learning-Frameworks auf Basis von TensorFlow, werden während des Trainings Rechenaufgaben auf verschiedene Prozessoren verteilt, sodass ein verteiltes System oder ein Cluster dafür genutzt werden kann, um diesen Prozess zu beschleunigen. Außerdem nutzt Horovod „Collective Communication Libraries“ (CCL) wie z.B. MPI.
Horovod wurde ursprünglich von Uber entwickelt, ist Bestandteil der ML-as-a-Service-Platform Michelangelo und seit 2018 ein Projekt der LF AI Foundation. Es handelt sich um ein Framework, das heute auch für Keras, PyTorch und MXNet genutzt werden kann und verteiltes Deep Learning mit hoher Performance ermöglicht. Verfügbar ist Horovod als -Source-Software über GitHub.
Sollen alle Phasen von Entwicklung und Betrieb eines KI-Systems mit mächtigen Werkzeugen unterstützt werden, empfiehlt Intel® für das anschließende Inferencing den Einsatz des Toolkits OpenVINO™ – kurz für „Open Visual Inference and Neural Network Optimization“. OpenVINO™ (hier ein Download-Link zum Ausprobieren) ist ein Inferencing-Toolkit, das zunächst mit TensorFlow, Caffe, MxNet oder anderen Frameworks erstellte und bereits trainierte DL-Modelle übernimmt und dann im zweiten Schritt mit einen „Model Optimizer“ bearbeitet.
Ergebnis ist ein für Intel®-Prozessoren optimiertes Modell im Zwischenformat („Intermediate Representation“, IR), das als XML- oder BIN-Datei bereitgestellt wird. Dieses optimierte IR-Modell wird dann von der Inference-Engine ausgeführt – und zwar je nach Vorgabe auf unterschiedlichster Hardware, CPUs, GPUs, FGPAs oder auch auf dedizierter Bildverarbeitungs-Hardware wie dem Movidius-Stick.

AI-gestützte Diagnose von Gehirntumoren
Intel® hat diese Technologien bereits zur AI-gestützten Diagnose von Gehirntumoren ausgewählt. Dabei wird krankes Gewebe vom KI-System auf dem MRT-Bild unterschiedlich eingefärbt: Nekrosen oder nicht wuchernde Tumoren (rot), Ödem (grün) und wachsende Tumoren (gelb). Für das Training des „Deep Neural Network“ (DNN) wurde ein -Source-Datensatz verwendet, der im Jahr 2018 im Zuge der „Brain Tumor Segmentation“ – oder kurz BraTS-Challenge – ausgezeichnet wurde.
Das Ergebnis dieses Deep-Learning-Algorithmus sieht so aus: Der Scan eines Gehirnsegmentes dient als Input für den Algorithmus. Beim MRT-Scan dieses Segmentes werden die erkrankten Bereiche vom Radiologen eingefärbt. Diese Bilder werden als „Labeled Data“ bezeichnet und für das Training des DNN verwendet. Das trainierte DNN liefert dann auf Basis des aktuellen MRT-Scans eines Patienten das „inferred Image“ mit den Einfärbungen aufgrund der Schlussfolgerungen des DNN. Auf diese Weise kann das AI-System dem Arzt bei neuen Patienten schnell fundierte Hinweise liefern, ob diese Patienten gesund oder krank sind, wo sich die Tumoren befinden könnten und welcher Art diese Tumoren sind.

Fazit
Ab sofort ist oneAPI auch auf der Intel®® devcloud verfügbar. Das erleichtert den Entwicklern das Leben noch weiter, denn Downloads, eine etwaige Hardwarebeschaffung und die Installation erübrigen sich ebenso wie Einrichtung und Konfiguration der Software. Die Entwickler können dann einfach auch solche Modelle trainieren, die auf heterogenen Hardware-Infrastrukturen mit einer Mischung aus CPUs (Xeon, Atom-Plattformen), GPUs und FPGAs laufen, ohne dass diese datenzentrierte Hardware mit verschiedenen Sprachen und Bibliotheken programmiert werden müsste.
Die Konsequenz: Separate Codebasen mit all den Problemen bei Betrieb, Maintenance und Weiterentwicklung sind nicht mehr erforderlich. Und: Die inkonsistente Unterstützung plattformübergreifender Tools gehört ebenso der Vergangenheit an wie die Zeitverschwendung der Entwickler, die heute oft für die Programmierung dedizierter Hardware nur den Umgang mit verschiedenen Programmier- und Debugging-Tools erlernen müssen.
Zur Entwicklung von Software für jede genutzte Hardware-Plattform ist also keine separate Investition mehr erforderlich. Und die einmal getätigte Entwicklungsarbeit ist nicht verloren, sobald die Software auf eine andere Architektur portiert werden muss. Dann sind nur minimale Anpassungen erforderlich, damit die Software wiederverwendet werden kann. Das spart viel Zeit und Arbeit, wovon andere Projekte profitieren.
Weil unterschiedliche Workloads zwingend heterogene Computerarchitekturen  erforderlich machen, stellt Intel® oneAPI bereit. Dieses Framework vereinheitlicht und vereinfacht die Programmierung solcher heterogenen IT-Architekturen und verbessert so die Entwicklerproduktivität. Weil oneAPI eine offene Brancheninitiative ist, dient das Produkt Intel® oneAPI Toolkits auch als Referenzimplementierung. Dies umfasst erweiterte Portierungs-, Analyse- und Debugger-Tools, die sich über den gesamten Software-Stack erstrecken. Entwickler können ihren Code auf allen Abstraktionsebenen debuggen und profilieren. Dabei ist oneAPI ist mit vorhandenen Knoten- und Cluster-Programmiermodellen interoperabel.

von Shailen Sobhee und Emanuel Rosenauer

Shailen Sobhee ist AI Software Technical Consultant Engineer bei Intel®.
Emanuel Rosenauer ist Verlagsleiter bei SIGS DATACOM GmbH.

 

 

 

 

 

 

Ansehen

Bereitgestellt von:
Intel®


Diese Inhalte könnten Sie auch interessieren:

Fachartikel

SAP baut AI in die Hana-Plattform ein

Es gibt vielversprechende Anwendungsbereiche im Unternehmen für maschinelles Lernen, meint Jürgen Müller, Chief Innovation Officer...

Fachartikel

„German Angst“ - auch ein AI-Thema

Auch wenn „Artificial Intelligence“ (AI) immer noch in den Kinderschuhen steckt, bewegt das Thema bereits heute die Gemüter...

Fachartikel

„Wir setzen in fast allen unseren Services AI ein“

Christoph Witte, Kolumnist von JavaSPEKTRUM, sprach mit Ralf Herbrich, Managing Director des Amazon Development Center Germany...

Zurück