Эта страница переведена с помощью Cloud Translation API.
Switch to English

MLIR

Обзор

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

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

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

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

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

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

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