Plan StableHLO

W chwili tworzenia tego środowiska wersja StableHLO jest gotowa do zastąpienia MHLO/HLO jako interfejsu kompilatora. Może być wyprodukowany przez TensorFlow, JAX i PyTorch, z użyciem XLA i IREE. Zawiera wszystkie funkcje publiczne udostępniane przez MHLO/HLO, a także dodatkowe funkcje.

W tym dokumencie opisano kolejne kroki w projekcie StableHLO, w tym kategoryzujemy trwające prace przedstawione w narzędziu do śledzenia problemów i przydzielamy je do zaplanowanych zadań.

Kamienie milowe

W 2023 r. planujemy wprowadzić 2 ważne kroki: 1) wersję StableHLO v0.9, która zapewni wstępną wersję ustawienia i wstępną gwarancję zgodności; 2) StabilnyHLO w wersji 1.0 wprowadzi priorytetowe ulepszenia i zapewni pełną gwarancję zgodności.

Wersja StableHLO w wersji 0.9 będzie odzwierciedlić MHLO/HLO i uzupełniona o specyfikację operacji o statycznym kształcie i gwarancję wstępnej zgodności. Zgodnie z dokumentem RFC zgodności ta wersja zapewnia zgodność do przodu i do tyłu przez 1 miesiąc. Te skromne gwarancje umożliwiają zdobycie doświadczenia z ewolucją dialektu i zapewnieją trochę czasu na oczyszczenie danych, zanim zaczną obowiązywać pełne gwarancje. W I kwartale 2023 r. planujemy opublikować wersję StableHLO v0.9.

StableHLO w wersji 1.0 wprowadzi najważniejsze ulepszenia, takie jak udoskonalenie umowy dotyczącej frontendu (programy StableHLO mają uwzględniać tylko operacje z dialektu StableHLO, a nie dzisiejsze połączenie dialektów i niezarejestrowanych atrybutów) oraz udostępnienie implementacji referencyjnej. W drugiej połowie 2023 r. planujemy opublikować wersję StableHLO 1.0.

Strumienie robocze

Aby zorganizować pracę pod kątem wspomnianych wyżej etapów, podzieliliśmy zgłoszenia w narzędziu do śledzenia problemów na różne strumienie pracy i powiązaliśmy je z etapami. Ograniczona liczba biletów (mniej niż 10%) nie jest przypisywana do żadnego konkretnego strumienia pracy ani nie jest częścią żadnego konkretnego kamienia milowego.

(P0) Strumień roboczy Implementacja zgodności służy do implementacji specyfikacji zgodności ze standardem RFC wraz z pakietem testów zgodności. Większość tych zadań powinna zostać wykonana w wersji StableHLO w wersji 0.9, a pozostałe prace zostaną wykonane w wersji StableHLO 1.0.

(P0) Strumień pracy Umowa frontendu obejmuje wdrożenie wszystkich funkcji używanych przez frontendy StableHLO, ale nieuwzględnionych jeszcze w specyfikacji StableHLO. Celem tego strumienia roboczego jest to, aby programy StableHLO zawierały tylko operacje z dialektu StableHLO, a nie obecne połączenie dialektów i niezarejestrowanych atrybutów. Planujemy zakończyć wszystkie lub prawie wszystkie prace związane z tym strumieniem pracy w StableHLO w wersji 1.0.

(P0) Strumień pracy Implementacja referencyjna porządkuje pracę nad implementacją tłumacza dla wszystkich operacji StableHLO zgodnie ze specyfikacją StableHLO. Planujemy zakończyć wszystkie lub prawie wszystkie prace związane z tym strumieniem roboczym w wersji 1.0 w wersji stabilnej.

(P0) Strumień pracy Dokumentacja zawiera wszystkie informacje, których mogą potrzebować producenci i klienci w systemie StableHLO. Specyfikacja StableHLO jest głównym elementem dostarczania, podobnie jak przykład wykorzystania interfejsu StableHLO API i formatu serializacji StableHLO. Kluczowe fragmenty strumienia pracy będą dostarczane w wersji StableHLO w wersji 1.0. Elementy o niższym priorytecie będą wdrażane stopniowo.

(P1) Strumień roboczy Conformance Suite składa się z dostarczenia pakietu testowego, który porównuje implementację referencyjną z implementacjami udostępnianymi przez backendy StableHLO. Testy do implementacji referencyjnej będą udostępniać swego rodzaju zestaw zgodności, dlatego ten strumień roboczy nie ma priorytetu P0. Dodatkowe rozszerzenie tego pakietu o kolejne, ciekawe przypadki testowe prawdopodobnie okażą się przydatne w przyszłości.

(P1) Strumień roboczy Zgodność ze specyfikacją zapewnia, że wszystkie operacje StableHLO są zaimplementowane w dialekcie StableHLO zgodnie ze specyfikacją StableHLO. Dialekt StableHLO jest już rozsądnie zgodny z zasadami, więc ten strumień roboczy nie ma priorytetu P0, ale wiele pomniejszych elementów pozostaje bez zmian (zwłaszcza w narożnych przypadkach implementacji weryfikatora) i będzie je rozwiązywać stopniowo.

(P1) Strumień roboczy Nowe funkcje kończy plan rozwoju StableHLO i obejmuje zbiór nowych funkcji dla konfiguracji StableHLO (nie dialekt StableHLO ani powiązania StableHLO – czyli inne strumienie robocze). Kilka z tych nowych funkcji planujemy wprowadzić w wersji StableHLO w wersji 1.0, ale obecnie większość z nich zawiera elementy o niższym priorytecie, które nie należą do żadnego z konkretnych etapów.

(P1) Strumień roboczy publicznego interfejsu API jest przeznaczony do dostarczania powiązań C/C++/Python dla dialektu StableHLO. Istniejące powiązania C++/Python są już dość rozsądne, więc ten strumień pracy nie ma priorytetu P0. Potrzeba jeszcze sporo do zrobienia, szczególnie jeśli chodzi o zapewnienie stabilności tych wiązań – co nie jest obecnie uwzględnione w specyfikacji RFC zgodności, ale prawdopodobnie będzie się przydało w przyszłości.