МЛИР

Обзор

MLIR, или многоуровневое промежуточное представление, — это формат представления и библиотека утилит компилятора, которая находится между представлением модели и низкоуровневыми компиляторами/исполнителями, генерирующими код, специфичный для оборудования.

По своей сути MLIR представляет собой гибкую инфраструктуру для современных оптимизирующих компиляторов. Это означает, что он состоит из спецификации промежуточных представлений (IR) и набора инструментов для выполнения преобразований этого представления. (На языке компиляторов, когда вы переходите от представлений более высокого уровня к представлениям более низкого уровня, эти преобразования можно назвать «понижениями»).

MLIR находится под сильным влиянием LLVM и беззастенчиво использует многие замечательные идеи из него. Он имеет гибкую систему типов и позволяет представлять, анализировать и преобразовывать графы, объединяя несколько уровней абстракции в одной единице компиляции. Эти абстракции включают операции TensorFlow, вложенные области многогранных циклов и даже инструкции LLVM, а также фиксированные аппаратные операции и типы.

Мы ожидаем, что MLIR будет интересен многим группам, в том числе:

  • Исследователи и разработчики компиляторов, стремящиеся оптимизировать производительность и потребление памяти моделями машинного обучения.
  • Производители оборудования, ищущие способ подключения своего оборудования к TensorFlow, такого как TPU, портативное нейронное оборудование в телефонах и другие специальные ASIC.
  • Люди, пишущие языковые привязки и желающие воспользоваться преимуществами оптимизации компиляторов и аппаратного ускорения.

Экосистема TensorFlow содержит ряд компиляторов и оптимизаторов, которые работают на нескольких уровнях программного и аппаратного стека. Мы ожидаем, что постепенное внедрение MLIR упростит каждый аспект этого стека.

Обзорная диаграмма MLIR