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

MLIR

обзор

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

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

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

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

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

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

Обзорная схема MLIR