Zum Zeitpunkt der Erstellung dieses Artikels kann StableHLO MHLO/HLO als Compilerschnittstelle ersetzen. Es kann von TensorFlow, JAX und PyTorch erstellt und von XLA und mehreren PJRT-Plug-ins von Drittanbietern verwendet werden. Es bietet alle öffentlichen Funktionen von MHLO/HLO sowie zusätzliche Funktionen.
In diesem Dokument werden die nächsten Schritte für das StableHLO-Projekt beschrieben. Dabei werden die laufenden Arbeiten im Issue-Tracker kategorisiert und in geplante Arbeitsergebnisse unterteilt.
Aktuelle Meilensteine
Unsere aktuellen Meilensteine folgen zwei Haupttrends:
- Maximieren Sie den Nutzen von StableHLO für die gesamte OpenXLA-Community.
- Einheitliche Entwicklererfahrung für alle OpenXLA-Mitglieder.
- Einstellung von MHLO: Im 4. Quartal 2024 haben wir damit begonnen, MHLO intern einzustellen und nützliche Karten/Tickets, einschließlich der Canonicalisierung und Ordnermuster, zu StableHLO zu migrieren. Sobald sich der Migrationsprozess intern als unkompliziert erwiesen hat, planen wir, einen RFC mit Zeitplänen für externe Migrationen zu StableHLO zu veröffentlichen. Dies wird wahrscheinlich im 1. Quartal 2025 geschehen. Wir planen, den Teams ausreichend Zeit und Unterstützung für die Migration zu StableHLO im 1. Halbjahr 2025 zu geben.
- Hardwareunabhängige Optimierungen zu StableHLO migrieren: Gemäß dem oben genannten Trend möchten wir StableHLO als besten Ort für die Zusammenführung hardwareunabhängiger Graphenvereinfachungen nutzen, damit alle PJRT-Plug-ins, einschließlich derjenigen, die von StableHLO in eine nicht XLA-Compiler-IR konvertieren, von maximalen Vorteilen profitieren können. Ein Teil dieses Ziels besteht darin, Muster zu konsolidieren, die in Google AI Edge, dem JAX-Enzyme-Projekt und anderen Projekten im StableHLO-Repository verwendet werden. Einige dieser Änderungen wurden bereits umgesetzt, aber der Großteil des Arbeitsstreams wird im ersten Quartal 2025 abgeschlossen.
- OpenXLA-Komponenten: Wir haben damit begonnen, spezielle Komponenten in openxla/xla für HLO zu erstellen, die der StableHLO-Repository-Einrichtung (ref) ähneln. Außerdem haben wir damit begonnen, alle OpenXLA-Backends hinter PJRT-Plug-ins zu verschieben. Außerdem arbeiten wir daran, wichtige UX-Probleme zu beheben, die wir in diesen PJRT-Plug-ins feststellen. Dazu gehört beispielsweise die genaue Kommunikation der StableHLO-Version in StableHLO-Plug-ins, damit neue Funktionen sofort von neuen Plug-ins verwendet werden können (Ref).
- Kompositen funktionieren jetzt durchgängig: Im 3. Quartal 2024 haben wir HLO-Kompositen hinzugefügt, um die vollständige Unterstützung des Compiler-Stacks für Abstrakte zu ermöglichen. Im 4. Quartal 2024 haben wir dem XLA-Inliner Informationen zu Composites hinzugefügt und in HLO/StableHLO Passes für das Inlinen unbekannter Composites mit ihren Dekompositionen hinzugefügt. Wir prüfen derzeit, ob wir spezielle JAX APIs zum Generieren von Kompositen aus dem Framework hinzufügen sollen (PyTorch APIs gibt es bereits). Außerdem wird die Colab-Dokumentation zur korrekten Verwendung von Kompositen im 4. Quartal 2024 erweitert.
Vergangene Meilensteine
Im ersten Halbjahr 2024 haben wir StableHLO v1.0 veröffentlicht, in dem wichtige Verbesserungen implementiert wurden. Dazu gehören die Fertigstellung der öffentlichen OpSet-Spezifikation, der Referenzinterpreter, die Erweiterung der Vorwärts- und Rückwärtskompatibilität zur Unterstützung der Bereitstellung auf dem Gerät mit Einheitstests zur Kompatibilität, die Erweiterbarkeit über zusammengesetzte Vorgänge, die Unterstützung der Spezifikation für Dynamik sowie die Veröffentlichung einer vollständigen Testdatensuite mit bewerteten Golden-Results.