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

Диалекты MLIR

обзор

Для разделения различных аппаратных и программных целей MLIR имеет «диалекты», в том числе:

  • TensorFlow IR, который представляет все, что возможно на графиках TensorFlow.
  • XLA HLO IR, предназначенный для использования возможностей компиляции XLA (с выводом, среди прочего, TPU).
  • Экспериментальный аффинный диалект, который фокусируется на многогранных представлениях и оптимизациях.
  • IR LLVM, который имеет отображение 1: 1 между ним и собственным представлением LLVM, позволяя MLIR испускать код графического процессора и процессора через LLVM.
  • TensorFlow Lite, который будет переводить на запуск кода на мобильных платформах.

Каждый диалект состоит из набора определенных операций, на которых размещены инварианты, например: «Это бинарный оператор, а входы и выходы имеют одинаковые типы».

Добавление в MLIR

MLIR не имеет фиксированного / встроенного списка всемирно известных операций (нет «встроенных»). Диалекты могут определять полностью пользовательские типы, то есть, как MLIR может моделировать такие вещи, как система типов IR LLVM (которая имеет агрегаты первого класса), абстракции домена, важные для ускорителей, оптимизированных для ML, таких как квантованные типы, и даже системы типов Swift или Clang (которые построены вокруг узлов декларации Swift / Clang) в будущем.

Если вы хотите подключить новый низкоуровневый компилятор, вы должны создать новый диалект и понижения между диалектом TensorFlow Graph и вашим диалектом. Это сглаживает путь для производителей оборудования и компиляторов. Вы можете даже нацелить диалекты на разных уровнях в одной и той же модели; Оптимизаторы более высокого уровня будут уважать незнакомые части ИК и ждать, пока нижний уровень не справится с этим.