MLIR

Aperçu

MLIR, ou Multi-Level Intermediate Representation, est un format de représentation et une bibliothèque d'utilitaires de compilateur qui se situent entre la représentation du modèle et les compilateurs/exécuteurs de bas niveau qui génèrent du code spécifique au matériel.

MLIR est, en son cœur, une infrastructure flexible pour les compilateurs d’optimisation modernes. Cela signifie qu'il se compose d'une spécification pour les représentations intermédiaires (IR) et d'une boîte à outils de code pour effectuer des transformations sur cette représentation. (Dans le langage du compilateur, lorsque vous passez de représentations de niveau supérieur à des représentations de niveau inférieur, ces transformations peuvent être appelées « abaissements »).

MLIR est fortement influencé par LLVM et en réutilise sans vergogne de nombreuses idées intéressantes. Il dispose d'un système de types flexible et permet de représenter, d'analyser et de transformer des graphiques combinant plusieurs niveaux d'abstraction dans la même unité de compilation. Ces abstractions incluent les opérations TensorFlow, les régions de boucles polyédriques imbriquées et même les instructions LLVM et les opérations et types matériels fixes.

Nous espérons que MLIR intéressera de nombreux groupes, notamment :

  • Chercheurs et implémenteurs de compilateurs cherchant à optimiser les performances et la consommation de mémoire des modèles d'apprentissage automatique
  • Fabricants de matériel recherchant un moyen de connecter leur matériel à TensorFlow, comme les TPU, le matériel neuronal portable dans les téléphones et d'autres ASIC personnalisés
  • Les personnes qui écrivent des liaisons de langage et souhaitent tirer parti de l'optimisation des compilateurs et de l'accélération matérielle.

L'écosystème TensorFlow contient un certain nombre de compilateurs et d'optimiseurs qui fonctionnent à plusieurs niveaux de la pile logicielle et matérielle. Nous prévoyons que l’adoption progressive de MLIR simplifiera tous les aspects de cette pile.

Diagramme de présentation MLIR