Esta página foi traduzida pela API Cloud Translation.
Switch to English

Dialetos MLIR

Visão geral

Para separar diferentes alvos de hardware e software, o MLIR possui "dialetos", incluindo:

  • TensorFlow IR, que representa tudo o que é possível nos gráficos do TensorFlow.
  • XLA HLO IR, projetado para aproveitar as habilidades de compilação do XLA (com saída para, entre outras coisas, TPUs).
  • Um dialeto afim experimental, que se concentra em representações e otimizações poliédricas .
  • LLVM IR, que possui um mapeamento 1: 1 entre ele e a própria representação do LLVM, permitindo que o MLIR emita código de GPU e CPU por meio do LLVM.
  • TensorFlow Lite, que se traduzirá em código em execução em plataformas móveis.

Cada dialeto consiste em um conjunto de operações definidas que possuem invariantes, como: "Este é um operador binário, e as entradas e saídas têm os mesmos tipos".

Adicionando ao MLIR

O MLIR não possui uma lista fixa / integrada de operações conhecidas globalmente (sem “intrínsecas”). Os dialetos podem definir tipos inteiramente personalizados, e é assim que o MLIR pode modelar coisas como o sistema de tipos LLVM IR (que possui agregados de primeira classe), abstrações de domínio importantes para aceleradores otimizados para ML como tipos quantizados e até mesmo os sistemas do tipo Swift ou Clang (que são construídos em torno dos nós de declaração Swift / Clang) no futuro.

Se você deseja conectar um novo compilador de baixo nível, criaria um novo dialeto e os abaixamentos entre o dialeto do TensorFlow Graph e seu dialeto. Isso facilita o caminho para os fabricantes de hardware e compilador. Você pode até segmentar dialetos em níveis diferentes no mesmo modelo; os otimizadores de nível superior respeitarão as partes desconhecidas do RI e aguardarão um nível mais baixo para lidar com isso.