Die gröĂten Unternehmen, die sich mit der Entwicklung im Bereich des maschinellen Lernens beschĂ€ftigen, haben das Projekt OpenXLA vorgestellt, das auf die gemeinsame Entwicklung von Werkzeugen zur Kompilierung und Optimierung von Modellen fĂŒr Systeme des maschinellen Lernens abzielt. Unter das Projekt fiel die Entwicklung von Werkzeugen, die es ermöglichen, die Kompilierung von Modellen, die in den Frameworks TensorFlow, PyTorch und JAX vorbereitet wurden, zu vereinheitlichen, um ein effektives Lernen und eine AusfĂŒhrung auf verschiedenen GPUs und spezialisierten Beschleunigern zu ermöglichen. An der gemeinsamen Arbeit an dem Projekt beteiligten sich Unternehmen wie Google, NVIDIA, AMD, Intel, Meta, Apple, Arm, Alibaba und Amazon.
Es wird erwartet, dass durch die Zusammenlegung der Anstrengungen fĂŒhrender Forschungsteams und Vertreter der Community die Entwicklung von Systemen des maschinellen Lernens angeregt und das Problem der Fragmentierung der Infrastruktur fĂŒr verschiedene Frameworks und Hardware gelöst werden kann. OpenXLA ermöglicht eine effiziente UnterstĂŒtzung verschiedener Hardware, unabhĂ€ngig davon, auf welchem Framework das Modell des maschinellen Lernens basiert. Es wird erwartet, dass OpenXLA dazu beitragen kann, die Trainingszeit von Modellen zu verkĂŒrzen, die Bandbreite zu erhöhen, Latenzzeiten zu reduzieren, die Kosten fĂŒr Rechenressourcen zu senken und die MarkteinfĂŒhrungszeit zu verkĂŒrzen.

OpenXLA besteht aus drei Hauptkomponenten, deren Code unter der Lizenz Apache 2.0 verbreitet wird:
- XLA (Accelerated Linear Algebra) â ein Compiler, der es ermöglicht, Modelle des maschinellen Lernens fĂŒr eine hochleistungsfĂ€hige AusfĂŒhrung auf verschiedenen Hardwareplattformen zu optimieren, einschlieĂlich GPUs, CPUs und spezialisierten Beschleunigern verschiedener Hersteller.
- StableHLO â eine Spezifikation und eine grundlegende Implementierung einer Reihe von hochgradigen Operationen (HLO, High-Level Operations) zur Verwendung in Modellen von Systemen des maschinellen Lernens. Es fungiert als Schnittstelle zwischen den Frameworks des maschinellen Lernens und den Compilern, die das Modell fĂŒr die AusfĂŒhrung auf spezifischer Hardware umwandeln. Schnittstellen zur Generierung von Modellen im StableHLO-Format wurden fĂŒr die Frameworks PyTorch, TensorFlow und JAX vorbereitet. Als Grundlage fĂŒr StableHLO wurde das MHLO-Set verwendet, das um die UnterstĂŒtzung von Serialisierung und Versionierung erweitert wurde.
- IREE (Intermediate Representation Execution Environment) â ein Compiler und Runtime, der Modelle des maschinellen Lernens in eine universelle ZwischenreprĂ€sentation umwandelt, die auf dem MLIR-Format (Multi-Level Intermediate Representation) des LLVM-Projekts basiert. Zu den besonderen Merkmalen gehören die Möglichkeit der Vorabkompilierung (ahead-of-time), die UnterstĂŒtzung der Steuerflusskontrolle, die Nutzung dynamischer Elemente in Modellen, die Optimierung fĂŒr verschiedene CPUs und GPUs sowie geringe Overheadkosten.
Die Hauptvorteile des OpenXLA-Toolkits:
- Erzielen optimaler Leistung, ohne dass tiefgreifende Kenntnisse in der programmierung gerĂ€tespezifischer Codes erforderlich sind. Bereitstellung fertiger Optimierungen, einschlieĂlich der Vereinfachung algebraischer AusdrĂŒcke, effizienter Speichereinteilung und der Planung der AusfĂŒhrung unter BerĂŒcksichtigung der Reduzierung des maximalen Speicherverbrauchs und von Ăberlastungen.
- Vereinfachung der Skalierung und Parallelisierung von Berechnungen. Der Entwickler muss lediglich Annotationen fĂŒr eine Teilmenge kritischer Tensoren hinzufĂŒgen, auf deren Grundlage der Compiler automatisch Code fĂŒr parallele Berechnungen generieren kann.
- GewĂ€hrleistung der PortabilitĂ€t durch UnterstĂŒtzung verschiedener Hardwareplattformen, wie AMD- und NVIDIA-GPUs, CPUs auf Basis der Architekturen x86 und ARM, ML-Beschleuniger von Google TPU, IPU AWS Trainium und Inferentia, Graphcore und Cerebras Wafer-Scale Engine.
- UnterstĂŒtzung fĂŒr die Anbindung von Erweiterungen zur Implementierung zusĂ€tzlicher Funktionen, wie die UnterstĂŒtzung der Programmierung von primitives fĂŒr tiefes maschinelles Lernen mit CUDA, HIP, SYCL, Triton und anderen Sprachen fĂŒr parallele Berechnungen. Möglichkeit der manuellen Feinabstimmung von EngpĂ€ssen in Modellen.
Quelle: opennet.ru
