Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

MLIR

Panoramica

MLIR, o rappresentazione intermedia multi-livello, è un formato di rappresentazione e una libreria di utilità del compilatore che si trova tra la rappresentazione del modello e compilatori / esecutori di basso livello che generano codice specifico dell'hardware.

MLIR è, al suo centro, un'infrastruttura flessibile per compilatori moderni e ottimizzati. Ciò significa che è costituito da una specifica per le rappresentazioni intermedie (IR) e un toolkit di codice per eseguire trasformazioni su tale rappresentazione. (Nel linguaggio del compilatore, mentre si passa da rappresentazioni di livello superiore a rappresentazioni di livello inferiore, queste trasformazioni possono essere chiamate "abbassamenti")

MLIR è fortemente influenzato da LLVM e riutilizza in modo spudorato molte grandi idee da esso. Ha un sistema di tipo flessibile e consente di rappresentare, analizzare e trasformare grafici combinando più livelli di astrazione nella stessa unità di compilazione. Queste astrazioni includono operazioni TensorFlow, regioni di loop poliedrici nidificate e persino istruzioni LLVM e operazioni e tipi di hardware fissi.

Ci aspettiamo che MLIR sia di interesse per molti gruppi, tra cui:

  • Ricercatori e implementatori di compilatori che desiderano ottimizzare le prestazioni e il consumo di memoria dei modelli di apprendimento automatico
  • I produttori di hardware alla ricerca di un modo per collegare il proprio hardware a TensorFlow, come TPU, hardware neurale portatile nei telefoni e altri ASIC personalizzati
  • Le persone che scrivono collegamenti linguistici che vogliono trarre vantaggio dall'ottimizzazione dei compilatori e dell'accelerazione hardware.

L'ecosistema TensorFlow contiene numerosi compilatori e ottimizzatori che operano a più livelli dello stack software e hardware. Prevediamo che l'adozione graduale di MLIR semplifichi ogni aspetto di questo stack.

Diagramma generale MLIR