Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

MLIR-Dialekte

Überblick

Um verschiedene Hardware- und Softwareziele zu trennen, verfügt MLIR über „Dialekte“, darunter:

  • TensorFlow IR, das alle möglichen Dinge in TensorFlow-Diagrammen darstellt.
  • XLA HLO IR, das entwickelt wurde, um die Kompilierungsfähigkeiten von XLA zu nutzen (mit Ausgabe unter anderem an TPUs).
  • Ein experimenteller affiner Dialekt, der sich auf polyedrische Darstellungen und Optimierungen konzentriert.
  • LLVM IR, das eine 1: 1-Zuordnung zwischen ihm und der eigenen Darstellung von LLVM aufweist, sodass MLIR GPU- und CPU-Code über LLVM ausgeben kann.
  • TensorFlow Lite, das sich in der Ausführung von Code auf mobilen Plattformen niederschlägt.

Jeder Dialekt besteht aus einer Reihe definierter Operationen, auf denen Invarianten platziert sind, z. B.: „Dies ist ein binärer Operator, und die Ein- und Ausgänge haben dieselben Typen.“

Hinzufügen zu MLIR

MLIR verfügt über keine feste / integrierte Liste global bekannter Vorgänge (keine „Intrinsics“). Dialekte können vollständig benutzerdefinierte Typen definieren. Auf diese Weise kann MLIR beispielsweise das LLVM-IR-Typsystem (mit erstklassigen Aggregaten), für ML-optimierte Beschleuniger wie quantisierte Typen wichtige Domänenabstraktionen und sogar die Swift- oder Clang-Typsysteme (welche) modellieren werden in Zukunft um Swift / Clang-Deklarationsknoten herum aufgebaut.

Wenn Sie einen neuen Low-Level-Compiler verbinden möchten, erstellen Sie einen neuen Dialekt und die Absenkungen zwischen dem TensorFlow Graph-Dialekt und Ihrem Dialekt. Dies ebnet den Weg für Hardware- und Compilerhersteller. Sie können sogar Dialekte auf verschiedenen Ebenen im selben Modell ansprechen. Die übergeordneten Optimierer respektieren die unbekannten Teile des IR und warten, bis eine niedrigere Ebene damit fertig wird.