Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Dialectos MLIR

Visión general

Para separar diferentes objetivos de hardware y software, MLIR tiene "dialectos", que incluyen:

  • TensorFlow IR, que representa todas las cosas posibles en los gráficos TensorFlow.
  • XLA HLO IR, que está diseñado para aprovechar las capacidades de compilación de XLA (con salida a, entre otras cosas, TPU).
  • Un dialecto afín experimental, que se centra en representaciones poliédricas y optimizaciones.
  • LLVM IR, que tiene un mapeo 1: 1 entre él y la propia representación de LLVM, permitiendo que MLIR emita código de GPU y CPU a través de LLVM.
  • TensorFlow Lite, que se traducirá en código en ejecución en plataformas móviles.

Cada dialecto consiste en un conjunto de operaciones definidas que tienen invariantes colocados en ellas, como: "Este es un operador binario, y las entradas y salidas tienen los mismos tipos".

Agregando a MLIR

MLIR no tiene una lista fija / incorporada de operaciones conocidas a nivel mundial (no "intrínsecos"). Los dialectos pueden definir tipos completamente personalizados, así es como MLIR puede modelar cosas como el sistema de tipo IR LLVM (que tiene agregados de primera clase), abstracciones de dominio importantes para aceleradores optimizados para ML como tipos cuantizados, e incluso los sistemas de tipo Swift o Clang (que se construyen alrededor de nodos de declaración Swift / Clang) en el futuro.

Si desea conectar un nuevo compilador de bajo nivel, crearía un nuevo dialecto y las reducciones entre el dialecto de TensorFlow Graph y su dialecto. Esto suaviza el camino para los fabricantes de hardware y compiladores. Incluso puede apuntar dialectos en diferentes niveles en el mismo modelo; Los optimizadores de nivel superior respetarán las partes desconocidas del IR y esperarán a que un nivel inferior lo maneje.