Дорожная карта StableHLO

На момент написания StableHLO готов заменить MHLO/HLO в качестве интерфейса компилятора. Его могут создавать TensorFlow, JAX и PyTorch, использовать XLA и IREE, и он обладает всеми общедоступными функциями, предоставляемыми MHLO/HLO, а также дополнительными функциями.

В этом документе описываются следующие шаги проекта StableHLO, классифицируя текущую работу, отраженную в системе отслеживания проблем, и распределяя эту работу по запланированным результатам.

Вехи

В 2023 году мы планируем две важные вехи: 1) StableHLO v0.9, которая предоставит начальную версию opset и первоначальные гарантии совместимости, 2) StableHLO v1.0, которая внедрит высокоприоритетные улучшения и начнет предоставлять полные гарантии совместимости.

StableHLO v0.9 будет зеркальным отражением MHLO/HLO, дополненным спецификацией статических операций и первоначальными гарантиями совместимости. Согласно RFC по совместимости , этот выпуск обеспечит 1 месяц прямой и обратной совместимости. Эти скромные гарантии позволят приобрести опыт эволюции диалектов и дадут некоторое время на очистку, прежде чем полные гарантии вступят в силу. Мы планируем выпустить StableHLO v0.9 в первом квартале 2023 года.

В StableHLO v1.0 будут реализованы высокоприоритетные улучшения, включая очистку контракта внешнего интерфейса (с целью, чтобы программы StableHLO включали только операции из диалекта StableHLO, а не сегодняшнюю смесь диалектов и незарегистрированных атрибутов) и предоставление эталонной реализации. Мы планируем выпустить StableHLO v1.0 во втором полугодии 2023 года.

Рабочие потоки

Чтобы организовать разработку для достижения вышеупомянутых этапов, мы разделили заявки в системе отслеживания проблем на несколько рабочих потоков и привязали эти рабочие потоки к контрольным точкам. Ограниченное количество заявок (менее 10%) не назначается какому-либо конкретному рабочему потоку и не является частью какой-либо конкретной вехи.

(P0) Рабочий поток реализации совместимости посвящен реализации RFC совместимости вместе с набором тестов совместимости. Ожидается, что большая часть этой работы будет выполнена в StableHLO v0.9, а остальная часть будет выполнена в StableHLO v1.0.

(P0) Рабочий процесс Frontend Contract состоит из реализации 100 % функций, которые используются внешними интерфейсами StableHLO, но еще не включены в спецификацию StableHLO. Целью этого рабочего процесса является обеспечение того, чтобы программы StableHLO включали только операции из диалекта StableHLO, а не сегодняшнюю смесь диалектов и незарегистрированных атрибутов. Мы планируем завершить всю или почти всю работу в этом рабочем направлении в StableHLO v1.0.

(P0) Рабочий поток эталонной реализации организует работу по реализации интерпретатора для 100% операций StableHLO, как определено в спецификации StableHLO. Мы планируем завершить всю или почти всю работу в этом рабочем направлении в StableHLO v1.0.

(P0) Рабочий поток документации предназначен для предоставления всей информации, которая может понадобиться производителям или потребителям StableHLO. Спецификация StableHLO является основным результатом, а также справочником по API StableHLO и формату сериализации StableHLO. Критические части рабочего процесса будут реализованы в StableHLO v1.0, а элементы с более низким приоритетом будут решаться по мере необходимости.

(P1) Рабочий поток Conformance Suite состоит из предоставления набора тестов, который сравнивает эталонную реализацию с реализациями, предоставляемыми серверными модулями StableHLO. Тесты для эталонной реализации предоставят своего рода набор соответствия, поэтому этот рабочий поток не имеет приоритета P0. Однако дальнейшее расширение этого пакета дополнительными интересными тестовыми примерами, вероятно, станет полезной областью для будущей работы.

(P1) Рабочий поток соответствия спецификациям гарантирует, что 100% операций StableHLO будут реализованы на диалекте StableHLO, как определено в спецификации StableHLO. Диалект StableHLO уже в достаточной степени совместим, поэтому этот рабочий поток не имеет приоритета P0, но остается множество мелких проблем (особенно в крайних случаях реализации верификатора), которые будут решаться по мере необходимости.

(P1) Рабочий поток «Новые функции» завершает дорожную карту StableHLO и состоит из разнородной коллекции новых функций для опсета StableHLO (а не диалекта StableHLO или привязок StableHLO — это будут другие рабочие потоки). Некоторые из этих новых функций планируется добавить в StableHLO v1.0, но большинство из них в настоящее время являются элементами с более низким приоритетом и не являются частью какой-либо конкретной вехи.

(P1) Рабочий поток Public API предназначен для доставки привязок C/C++/Python для диалекта StableHLO. Существующие привязки C++/Python уже достаточно разумны, поэтому этот рабочий поток не имеет приоритета P0. Тем не менее, еще предстоит проделать немало работы, особенно в отношении обеспечения стабильности этих привязок - это то, что в настоящее время не рассматривается в RFC по совместимости, но, вероятно, станет полезной областью для будущей работы.