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

MLIR

Visión general

MLIR, o representación intermedia de niveles múltiples, es un formato de representación y una biblioteca de utilidades de compilación que se encuentra entre la representación del modelo y los compiladores / ejecutores de bajo nivel que generan código específico de hardware.

MLIR es, en esencia, una infraestructura flexible para compiladores de optimización modernos. Esto significa que consiste en una especificación para representaciones intermedias (IR) y un kit de herramientas de código para realizar transformaciones en esa representación. (En el lenguaje del compilador, a medida que pasa de las representaciones de nivel superior a las representaciones de nivel inferior, estas transformaciones pueden denominarse "reducciones")

MLIR está muy influenciado por LLVM y reutiliza descaradamente muchas grandes ideas de él. Tiene un sistema de tipo flexible y permite representar, analizar y transformar gráficos combinando múltiples niveles de abstracción en la misma unidad de compilación. Estas abstracciones incluyen operaciones de TensorFlow, regiones de bucles poliédricos anidados e incluso instrucciones de LLVM y operaciones y tipos de hardware fijos.

Esperamos que MLIR sea de interés para muchos grupos, incluidos:

  • Investigadores e implementadores de compiladores que buscan optimizar el rendimiento y el consumo de memoria de los modelos de aprendizaje automático
  • Fabricantes de hardware que buscan una manera de conectar su hardware a TensorFlow, como TPU, hardware neuronal portátil en teléfonos y otros ASIC personalizados
  • Personas que escriben enlaces de idiomas que desean aprovechar la optimización de compiladores y la aceleración de hardware.

El ecosistema TensorFlow contiene una serie de compiladores y optimizadores que operan en múltiples niveles de la pila de software y hardware. Esperamos que la adopción gradual de MLIR simplifique todos los aspectos de esta pila.

Diagrama general de MLIR