Grazie per esserti sintonizzato su Google I/O. Visualizza tutte le sessioni su richiesta Guarda su richiesta

MLIR

Panoramica

MLIR, o Multi-Level Intermediate Representation, è 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 è, in sostanza, un'infrastruttura flessibile per i moderni compilatori di ottimizzazione. Ciò significa che consiste in una specifica per le rappresentazioni intermedie (IR) e un toolkit di codice per eseguire trasformazioni su quella rappresentazione. (Nel linguaggio del compilatore, quando si passa da rappresentazioni di livello superiore a rappresentazioni di livello inferiore, queste trasformazioni possono essere chiamate "abbassamenti")

MLIR è fortemente influenzato da LLVM e ne riutilizza sfacciatamente molte grandi idee. Ha un sistema di tipi 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 poliedriche nidificate e persino istruzioni LLVM e operazioni e tipi hardware fissi.

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

  • Ricercatori e implementatori di compilatori che cercano di ottimizzare le prestazioni e il consumo di memoria dei modelli di apprendimento automatico
  • Produttori di hardware alla ricerca di un modo per connettere il proprio hardware a TensorFlow, come TPU, hardware neurale portatile nei telefoni e altri ASIC personalizzati
  • Persone che scrivono binding di linguaggio che vogliono sfruttare l'ottimizzazione dei compilatori e dell'accelerazione hardware.

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

Diagramma di panoramica MLIR