StableHLO

Écosystème StableHLO

StableHLO est un ensemble d'opérations pour les opérations de haut niveau (HLO) dans les modèles de machine learning (ML). Il s'agit essentiellement d'une couche de portabilité entre différents frameworks et compilateurs de ML: les frameworks de ML qui produisent des programmes StableHLO sont compatibles avec les compilateurs de ML qui consomment des programmes StableHLO.

Notre objectif est de simplifier et d'accélérer le développement du ML en créant une interopérabilité plus poussée entre les différents frameworks de ML (tels que TensorFlow, JAX et PyTorch) et les compilateurs de ML (tels que XLA et IREE).

Fonctionnalités et premiers pas

La version actuelle de StableHLO inclut de nombreuses fonctionnalités et étapes importantes:

  • Complètement spécifiée:la spécification StableHLO est définie pour toutes les opérations d'environ 100 avec des vérificateurs et une inférence de type, ainsi que des fonctionnalités de dynamisme et de quantisation.
  • La compatibilité garantit une rétrocompatibilité de cinq ans et une compatibilité ascendante de deux ans, ce qui permet un déploiement sur serveur / bordure à long terme et des cycles de mise à jour annuels.
  • Interpréteur de référence avec prise en charge des opérations statiques et dynamiques, y compris les API C++ et Python.
  • Extensibilité via des opérations composites et des appels personnalisés pour permettre des tests rapides ou pour modéliser des opérations spécifiques au fournisseur.
  • API C++/Python pour les fonctionnalités de base et fichiers dev-wheel quotidiens pour une intégration plus facile.
  • Tutoriels Colab pour présenter les API Python permettant d'extraire StableHLO à partir de différents frameworks, ainsi que d'autres fonctions utilitaires.
  • Suite de données de test de 3 000 fichiers de test, y compris des programmes dynamiques et quantifiés et des résultats d'or pour les tests d'intégration des fournisseurs, les tests de compatibilité ascendante / descendante et une couverture de code supérieure à 90 %.
  • Transformations de programme pour la simplification des programmes indépendante du matériel, l'affinage des programmes de forme dynamique à l'aide d'arguments d'entrée concrets et les conversions vers les dialectes MLIR en amont tels que linalg ou tosa.
  • Géré par la communauté avec de nombreuses contributions de l'écosystème pour les transformations, ainsi que des RFC pour les modifications d'opset: nouveaux types FP8, collective_broadcast, opérations de collecte / dispersion groupées, quantification hybride, API d'interprète, décompositions CHLO, transformations de simplification StableHLO, et plus encore !

Les développeurs de modèles qui souhaitent utiliser StableHLO ou XLA pour compiler leur projet de ML doivent consulter la documentation correspondante pour leur framework de ML:

Pour les développeurs de compilateurs qui souhaitent intégrer StableHLO, consultez la documentation de démarrage sur ce site, y compris les tutoriels et les informations pour les développeurs. Consultez la section "Communauté" de cette page pour obtenir de l'aide, poser des questions ou signaler les problèmes rencontrés lors de l'intégration.

Instructions de création

Pour obtenir des instructions de compilation, consultez StableHLO sur GitHub.

Communauté

La création d'une couche de portabilité exceptionnelle entre les frameworks et les compilateurs de ML nécessite une collaboration de l'ensemble du secteur du ML. Nous sommes donc ravis de pouvoir compter sur votre aide pour le projet StableHLO.

Nous utilisons les problèmes / demandes d'extraction GitHub pour organiser le développement et openxla-discuss pour des discussions plus longues. Nous disposons également d'un canal #stablehlo sur le serveur Discord OpenXLA.