Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/pt-br/mlir/dialects.md
25115 views

Dialetos do MLIR

Visão geral

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

  • TensorFlow IR, que representa tudo o que é possível nos grafos do TensorFlow.

  • XLA HLO IR, que foi criado para aproveitar as capacidades de compilação do XLA (com saída para, entre outros, TPUs).

  • Um dialeto affine experimental, que foca em otimizações e representações poliédricas.

  • LLVM IR, que tem um mapeamento 1:1 com a própria representação do LLVM, permitindo que o MLIR emita o código de GPU e CPU pelo LLVM.

  • TensorFlow Lite, que traduzirá para código de execução em plataformas móveis.

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

Somando ao MLIR

O MLIR não tem uma lista fixa/integrada de operações conhecidas globalmente (nenhum "intrínseco"). Os dialetos podem definir tipos inteiramente personalizados, que é como o MLIR pode modelar algo como o sistema de tipo IR do LLVM (que tem agregados de primeira classe), abstrações de domínio importantes para aceleradores otimizados por ML como tipos quantizados e até os sistemas de tipo Swift ou Clang (que foram criados com base em nós de declaração Swift/Clang) no futuro.

Se você quiser conectar um compilador de baixo nível, deve criar um novo dialeto e os rebaixamentos entre o dialeto do grafo do TensorFlow e seu dialeto. Isso suaviza o caminho para os fabricantes de compiladores e hardware. Você pode até segmentar dialetos em diferentes níveis no mesmo modelo; os otimizados de nível superior vão respeitar as partes desconhecidas do IR e aguardar um nível inferior lidar com elas.