Genel Bakış
Farklı donanım ve yazılım hedeflerini ayırmak için MLIR'in aşağıdakileri içeren "lehçeleri" vardır:
- TensorFlow grafiklerinde mümkün olan her şeyi temsil eden TensorFlow IR.
- XLA'nın derleme yeteneklerinden yararlanmak üzere tasarlanan XLA HLO IR (diğer şeylerin yanı sıra TPU'lara çıktı ile).
- Çokyüzlü gösterimlere ve optimizasyonlara odaklanan deneysel bir afin lehçesi.
- Kendisi ile LLVM'nin kendi temsili arasında 1:1 eşlemeye sahip olan LLVM IR, MLIR'in LLVM aracılığıyla GPU ve CPU kodu yaymasına olanak tanır.
- Mobil platformlarda kod çalıştırmaya dönüşecek olan TensorFlow Lite.
Her lehçe, üzerlerine değişmezlerin yerleştirildiği bir dizi tanımlanmış işlemden oluşur, örneğin: "Bu ikili bir operatördür ve girişler ve çıkışlar aynı türlere sahiptir."
MLIR'e ekleme
MLIR'in küresel olarak bilinen işlemlere ilişkin sabit/yerleşik bir listesi yoktur (“içsel bilgiler” yoktur). Lehçeler tamamen özel türleri tanımlayabilir; bu, MLIR'in LLVM IR türü sistemi (birinci sınıf kümelere sahip), nicelenmiş türler gibi ML için optimize edilmiş hızlandırıcılar için önemli olan etki alanı soyutlamaları ve hatta Swift veya Clang türü sistemler (ki bunlar) gibi şeyleri nasıl modelleyebildiğidir. gelecekte Swift/Clang bildirim düğümleri etrafında inşa edilecektir.
Yeni bir düşük seviyeli derleyici bağlamak istiyorsanız, yeni bir lehçe ve TensorFlow Graph lehçesi ile lehçeniz arasındaki düşüşleri oluşturacaksınız. Bu, donanım ve derleyici üreticilerinin yolunu kolaylaştırır. Hatta aynı modelde farklı düzeylerdeki lehçeleri bile hedefleyebilirsiniz; daha yüksek seviyeli optimize ediciler IR'nin alışılmadık kısımlarına saygı gösterecek ve daha düşük bir seviyenin bunu ele almasını bekleyecektir.