Cette page a été traduite par l'API Cloud Translation.
Switch to English

Dialectes MLIR

Aperçu

Pour séparer différentes cibles matérielles et logicielles, MLIR dispose de «dialectes», notamment:

  • TensorFlow IR, qui représente tout ce qui est possible dans les graphiques TensorFlow.
  • XLA HLO IR, conçu pour tirer parti des capacités de compilation de XLA (avec sortie vers, entre autres, des TPU).
  • Un dialecte affine expérimental, qui se concentre sur les représentations polyédriques et les optimisations.
  • LLVM IR, qui a un mappage 1: 1 entre celui-ci et la propre représentation de LLVM, permettant à MLIR d'émettre du code GPU et CPU via LLVM.
  • TensorFlow Lite, qui se traduira par l'exécution de code sur les plates-formes mobiles.

Chaque dialecte se compose d'un ensemble d'opérations définies sur lesquelles sont placés des invariants, comme: «C'est un opérateur binaire et les entrées et les sorties ont les mêmes types.»

Ajout à MLIR

MLIR n'a pas de liste fixe / intégrée d'opérations mondialement connues (pas d '«intrinsèques»). Les dialectes peuvent définir des types entièrement personnalisés, c'est ainsi que MLIR peut modéliser des éléments tels que le système de type LLVM IR (qui a des agrégats de première classe), les abstractions de domaine importantes pour les accélérateurs optimisés pour le ML comme les types quantifiés, et même les systèmes de type Swift ou Clang (qui sont construits autour des nœuds de déclaration Swift / Clang) à l'avenir.

Si vous souhaitez connecter un nouveau compilateur de bas niveau, vous créez un nouveau dialecte et les abaissements entre le dialecte TensorFlow Graph et votre dialecte. Cela facilite le chemin pour les fabricants de matériel et de compilateurs. Vous pouvez même cibler des dialectes à différents niveaux dans le même modèle; les optimiseurs de niveau supérieur respecteront les parties inconnues de l'IR et attendront un niveau inférieur pour le gérer.