StableHLO

Ekosystem StableHLO

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 dynamizmukwantyzacji.
  • 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.