Feuille de route StableHLO

Au moment de la rédaction de ce document, StableHLO est prêt à remplacer MHLO/HLO en tant qu'interface de compilation. Il peut être produit par TensorFlow, JAX et PyTorch, être consommé par XLA et IREE, et possède toutes les fonctionnalités publiques fournies par MHLO/HLO, ainsi que des fonctionnalités supplémentaires.

Ce document décrit les prochaines étapes du projet StableHLO, en catégorisant le travail en cours reflété dans Issue Tracker et en organisant ce travail en produits livrables planifiés.

Étapes importantes

En 2023, nous prévoyons deux grandes étapes: 1) StableHLO v0.9, qui fournira une version initiale de l'opset et les garanties de compatibilité initiales, 2) StableHLO v1.0, qui implémentera des améliorations prioritaires et commencera à fournir des garanties de compatibilité complètes.

StableHLO v0.9 met en miroir les protocoles MHLO/HLO, auxquels s'ajoute une spécification spécifique pour les opérations de forme statique et les garanties de compatibilité initiales. Conformément à la RFC de compatibilité, cette version offrira un mois de compatibilité ascendante et rétrocompatible. Ces garanties modérées vous permettront d'acquérir de l'expérience avec l'évolution des dialectes et laisseront un délai de nettoyage avant que les garanties complètes ne prennent effet. Nous prévoyons de publier la version 0.9 de StableHLO au premier trimestre 2023.

StableHLO v1.0 implémentera des améliorations prioritaires, y compris le nettoyage du contrat d'interface (l'objectif étant que les programmes StableHLO n'incluent que les opérations du dialecte StableHLO, plutôt que le mélange actuel de dialectes et d'attributs non enregistrés) et en fournissant une implémentation de référence. Nous prévoyons de publier la version 1.0 de StableHLO au deuxième semestre 2023.

Flux de travail

Afin d'organiser le développement en fonction des étapes mentionnées ci-dessus, nous avons catégorisé les demandes d'assistance dans Issue Tracker en plusieurs flux de travail et avons lié ces flux de travail aux jalons. Un nombre limité de tickets (moins de 10%) ne sont attribués à aucun flux de travail spécifique et ne font partie d'aucun jalon spécifique.

(P0) Le flux de travail d'implémentation de compatibilité est dédié à l'implémentation du document RFC de compatibilité avec une suite de tests de compatibilité. La plupart de ces opérations doivent être effectuées dans StableHLO v0.9. Le reste sera effectué dans StableHLO v1.0.

(P0) Le flux de travail Contrat de frontend consiste à mettre en œuvre 100% des fonctionnalités utilisées par les interfaces StableHLO, mais qui ne figurent pas encore dans la spécification StableHLO. L'objectif de ce flux de travail est de s'assurer que les programmes StableHLO n'incluent que les opérations du dialecte StableHLO, plutôt que le mélange actuel de dialectes et d'attributs non enregistrés. Nous prévoyons de terminer tout ou presque la totalité du travail de ce flux de travail dans StableHLO v1.0.

(P0) Le flux de travail Implémentation de référence organise le travail d'implémentation d'un interpréteur pour 100% des opérations StableHLO, comme défini dans la spécification StableHLO. Nous prévoyons d'effectuer la totalité ou la quasi-totalité des tâches de ce flux de travail dans StableHLO v1.0.

(P0) Le flux de travail Documentation fournit toutes les informations dont les producteurs ou les consommateurs StableHLO peuvent avoir besoin. La spécification StableHLO est un produit livrable majeur, ainsi qu'une référence pour l'API StableHLO et le format de sérialisation StableHLO. Les éléments essentiels du flux de travail seront fournis dans StableHLO v1.0, et les éléments de priorité inférieure seront traités de manière progressive.

(P1) Le flux de travail de la suite de conformité consiste à fournir une suite de tests qui compare une implémentation de référence aux implémentations fournies par des backends StableHLO. Les tests de la mise en œuvre de référence fourniront une sorte de suite de conformité. Ce flux de travail n'a donc pas de priorité P0. Toutefois, l'ajout d'autres scénarios de test intéressants à cette suite constituera probablement un domaine utile pour de futurs travaux.

(P1) Le flux de travail Conformité avec la spécification garantit que 100% des opérations StableHLO sont implémentées dans le dialecte StableHLO, comme défini dans la spécification StableHLO. Le dialecte StableHLO est déjà relativement conforme. Ce flux de travail n'a donc pas de priorité P0, mais de nombreux éléments mineurs subsistent (en particulier dans les cas particuliers de l'implémentation de l'outil de vérification) et sont traités progressivement.

(P1) Le flux de travail Nouvelles fonctionnalités se termine la feuille de route StableHLO et consiste en un ensemble ragtag de nouvelles fonctionnalités pour l'opération StableHLO (et non pour le dialecte StableHLO ou les liaisons StableHLO, qui seraient d'autres flux de travail). Certaines de ces nouvelles fonctionnalités sont prévues pour StableHLO v1.0, mais la majorité d'entre elles sont actuellement des éléments de priorité inférieure qui ne font partie d'aucun jalon spécifique.

(P1) Le flux de travail de l'API publique est dédié à la transmission de liaisons C/C++/Python pour le dialecte StableHLO. Les liaisons C++/Python existantes étant déjà relativement raisonnables, ce flux de travail n'a pas de priorité P0. Toutefois, il reste encore beaucoup de travail à faire, notamment en ce qui concerne la stabilité de ces liaisons. Ce qui n'est pas encore couvert par le document RFC de compatibilité, mais qui sera probablement un domaine utile pour les travaux futurs.