Roteiro do StableHLO

No momento em que este artigo foi escrito, o StableHLO estava pronto para substituir o MHLO/HLO como uma interface do compilador. Ele pode ser produzido pelo TensorFlow, JAX e PyTorch, pode ser consumido pelo XLA e pelo IREE e tem todos os recursos públicos fornecidos pelo MHLO/HLO, além de outras funcionalidades.

Neste documento, descrevemos as próximas etapas do projeto StableHLO, categorizando o trabalho em andamento refletido no Issue Tracker e organizando esse trabalho em entregas planejadas.

Metas

Em 2023, planejamos dois grandes marcos: 1) o StableHLO v0.9, que vai fornecer uma versão inicial da opset e garantias de compatibilidade inicial, 2) o StableHLO v1.0, que vai implementar melhorias de alta prioridade e começar a oferecer garantias de compatibilidade total.

StableHLO v0.9 espelha MHLO/HLO, aumentado com uma especificação para operações de forma estática e garantias de compatibilidade inicial. De acordo com o RFC de compatibilidade (link em inglês), esta versão vai oferecer um mês de compatibilidade com versões anteriores e futuras. Essas garantias modestas permitem ganhar experiência com a evolução do dialeto e permitem algum tempo para limpeza antes que as garantias completas entrem em vigor. Planejamos lançar o StableHLO v0.9 no primeiro trimestre de 2023.

O StableHLO v1.0 vai implementar melhorias de alta prioridade, incluindo a limpeza do contrato de front-end. O objetivo é que os programas do StableHLO incluam apenas operações do dialeto StableHLO, em vez da combinação atual de dialetos e atributos não registrados, e com uma implementação de referência. Planejamos lançar o StableHLO v1.0 no segundo semestre de 2023.

Fluxos de trabalho

Para organizar o desenvolvimento de acordo com os marcos mencionados acima, categorizamos os tíquetes no Issue Tracker em vários fluxos de trabalho e vinculamos esses fluxos aos marcos. Um número limitado de tíquetes (menos de 10%) não é atribuído a um fluxo de trabalho específico e não faz parte de nenhum marco específico.

(P0) O fluxo de trabalho de Implementação de compatibilidade é dedicado à implementação do RFC de compatibilidade com um pacote de testes de compatibilidade. Espera-se que a maior parte desse trabalho seja concluída no StableHLO v0.9, e o restante no StableHLO v1.0.

(P0) O fluxo de trabalho do contrato de front-end consiste na implementação de 100% dos recursos usados pelos front-ends do StableHLO, mas ainda não estão na especificação do StableHLO. O objetivo desse fluxo de trabalho é garantir que os programas do StableHLO incluam apenas operações do dialeto StableHLO, em vez da mistura atual de dialetos e atributos não registrados. Estamos planejando concluir todo ou quase todo o trabalho nesse fluxo de trabalho no StableHLO v1.0.

(P0) O fluxo de trabalho Implementação de referência organiza o trabalho de implementação de um intérprete para 100% das operações do StableHLO, conforme definido na especificação do StableHLO. Estamos planejando concluir todo ou quase todo o trabalho nesse fluxo de trabalho no StableHLO v1.0.

(P0) O fluxo de trabalho Documentation é dedicado a fornecer todas as informações necessárias aos produtores ou consumidores de StableHLO. A especificação StableHLO é uma entrega importante, além de uma referência para a API StableHLO e o formato de serialização do StableHLO. Partes críticas do fluxo de trabalho serão entregues no StableHLO v1.0, com itens de menor prioridade abordados de maneira contínua.

(P1) O fluxo de trabalho do Pacote de conformidade consiste em enviar um pacote de testes que compara uma implementação de referência com as implementações fornecidas por back-ends StableHLO. Os testes da implementação de referência fornecerão um pacote de conformidade. Portanto, esse fluxo de trabalho não tem prioridade P0. No entanto, ampliar ainda mais esse conjunto com outros casos de teste interessantes provavelmente será uma área útil para trabalhos futuras.

(P1) O fluxo de trabalho Conformidade de especificação (link em inglês) garante que 100% das operações do StableHLO sejam implementadas no dialeto StableHLO, conforme definido na especificação do StableHLO. O dialeto StableHLO já está razoavelmente compatível. Portanto, esse fluxo de trabalho não tem prioridade P0, mas muitos itens secundários ainda permanecem (especialmente nos casos específicos da implementação do verificador) e serão abordados de forma contínua.

(P1) O fluxo de trabalho Novos recursos conclui o roteiro do StableHLO e consiste em uma coleção fragmentada de novas funcionalidades para o conjunto de opções do StableHLO (não o dialeto StableHLO ou as vinculações de StableHLO, que seriam outros fluxos de trabalho). Alguns desses novos recursos estão planejados para serem entregues no StableHLO v1.0, mas a maioria é atualmente de itens de menor prioridade que não fazem parte de um marco específico.

(P1) O fluxo de trabalho da API Public é dedicado à entrega de vinculações C/C++/Python para o dialeto StableHLO. As vinculações C++/Python existentes já são razoavelmente razoáveis, portanto, esse fluxo de trabalho não tem prioridade P0. No entanto, ainda há muito trabalho a ser feito, especialmente em relação ao fornecimento de estabilidade para essas vinculações, que é algo que não está coberto pelo RFC de compatibilidade, mas provavelmente será uma área útil para trabalhos futuros.