StableHLO to zestaw operacji wysokiego poziomu (HLO) w modelach systemów uczących się. Zasadniczo jest to warstwa przenośności między różnymi platformami ML i kompilatorami ML: platformy ML, które generują programy StableHLO, są zgodne z kompilatorami ML, które korzystają z programów StableHLO.
Naszym celem jest uproszczenie i przyspieszenie rozwoju systemów uczących się przez zwiększenie interoperacyjności między różnymi platformami ML (np. TensorFlow, JAX i PyTorch) oraz kompilatorami ML (np. XLA i IREE).
Funkcje i wprowadzenie
Obecna wersja StableHLO zawiera wiele istotnych funkcji i kamieni milowych:
- Pełna specyfikacja: specyfikacja StableHLO jest zdefiniowana dla wszystkich około 100 operacji z weryfikatorami i inferencją typu, a także z możliwościami dynamizmu i kwantyzacji.
- Zgodność gwarantuje zgodność wsteczną przez 5 lat i zgodność z wersją nowszą przez 2 lata, co umożliwia długoterminowe wdrażanie na serwerach i urządzeniach brzegowych oraz coroczne cykle aktualizacji.
- Interpretator referencyjny z obsługą operacji statycznych i dynamicznych, w tym interfejsów API C++ i Pythona.
- Rozszerzalność za pomocą operacji złożonych i wywołań niestandardowych, aby umożliwić szybkie eksperymentowanie lub modelowanie operacji związanych z konkretnym dostawcą.
- Interfejsy API w C++ i Pythonie do obsługi funkcji podstawowych oraz pliki nocne dev-wheel na potrzeby wdrażania.
- Samouczki Colab demonstrujące interfejsy Python API do wyodrębniania StableHLO z różnych frameworków oraz inne funkcje pomocnicze.
- Zestaw danych testowych obejmujący 3000 plików testowych, w tym programy dynamiczne i kwantowane oraz wyniki testów integracyjnych dostawcy, testy zgodności wstecznej i do przodu oraz ponad 90% zasięgu kodu.
- Przekształcanie programów w celu upraszczania programów niezależnych od sprzętu, ulepszania programów o dynamicznej strukturze za pomocą konkretnych argumentów wejściowych oraz konwersji na dialekty MLIR, takie jak linalg czy tosa.
- Wspierane przez społeczność, z licznymi wkładami od innych członków ekosystemu w zakresie przekształceń, a także z RFC dotyczącymi zmian offsetów: nowe typy FP8, collective_broadcast, zbiorcze operacje zbierania / rozpraszania, hybrydowa kwantyzacja, interfejsy API interpretera, dekompozycje CHLO, uproszczenia StableHLO, przekształcenia i wiele innych.
Deweloperzy modeli, którzy chcą używać StableHLO lub XLA do kompilowania projektu ML, powinni zapoznać się z odpowiednią dokumentacją platformy ML:
Deweloperzy kompilatorów, którzy chcą zintegrować StableHLO, mogą zapoznać się z dokumentacją na temat wdrażania na tej stronie, w tym z samouczkami i informacjami dla deweloperów. W sekcji dotyczącej społeczności na tej stronie znajdziesz informacje o wsparciu, które możesz uzyskać w przypadku problemów z uruchomieniem konta.
Instrukcje tworzenia
Instrukcje kompilacji znajdziesz na stronie StableHLO na GitHubie.
Społeczność
Tworzenie świetnej warstwy przenośności między platformami i kompilatorami ML wymaga współpracy w całym przemyśle uczenia maszynowego, dlatego chętnie skorzystamy z Twojej pomocy w projekcie StableHLO.
Do organizacji prac używamy zgłoszeń i żądań pull w GitHub, a do prowadzenia dłuższych dyskusji – openxla-discuss. Mamy też kanał #stablehlo
na serwerze Discord OpenXLA.