Torch-Mlir項目旨在向MLIR生態系統提供一流的編譯器支持。
該項目正在參與LLVM孵化器流程:因此,它不是任何官方LLVM版本的一部分。儘管孵化狀態不一定反映了代碼的完整性或穩定性,但確實表明該項目尚未作為LLVM的組成部分認可。
Pytorch Pytorch是一個開源機器學習框架,可促進從研究和原型化到生產級部署的無縫過渡。
MLIR MLIR項目提供了一種新穎的方法來構建可擴展和可重複使用的編譯器體系結構,該方法解決了軟件碎片化問題,降低了開發域特異性編譯器的成本,改善了異構硬件的編譯,並促進現有編譯器之間的兼容性。
Torch-Mlir幾個供應商已將MLIR作為其係統中的中間層,使它們能夠將Pytorch,Jax和Tensorflow等框架映射到MLIR中,然後將其降低到目標硬件。我們已經觀察到從Pytorch到MLIR的六個自定義較低的降低,使硬件供應商更容易專注於它們的獨特價值,而不是需要為MLIR實施另一個Pytorch Frontend。最終目標是與當前添加LLVM目標支持的當前硬件供應商相似,而不是每個實現Clang或A c ++前端的硬件。
我們幾乎沒有路徑可以降低到火炬MLIR方言。
#torch-mlir頻道 - 這是最活躍的通信頻道torch-mlir部分在撰寫本文時,我們發布了Python 3.11和Python 3.10的Torch-Mlir的預製快照。
如果您支持Python版本,則以下命令將初始化虛擬環境。
python3.11 -m venv mlir_venv
source mlir_venv/bin/activate或者,如果您想使用conda切換多個版本的Python,則可以使用Python 3.11創建Conda環境。
conda create -n torch-mlir python=3.11
conda activate torch-mlir
python -m pip install --upgrade pip然後,我們可以安裝帶有相應的火炬和火炬夜間的火炬手。
pip install --pre torch-mlir torchvision
--extra-index-url https://download.pytorch.org/whl/nightly/cpu
-f https://github.com/llvm/torch-mlir-release/releases/expanded_assets/dev-wheels
Torch-Mlir主要是一個集成到編譯器中的項目,將其橋接到Pytorch和Onnx。如果考慮新的整合,則參考現有下游可能會有所幫助:
儘管大多數項目都是通過測試路徑行使的,但最終用戶可以通過某些方式直接使用API而無需進一步集成:
# Get the latest example if you haven't checked out the code
wget https://raw.githubusercontent.com/llvm/torch-mlir/main/projects/pt1/examples/fximporter_resnet18.py
# Run ResNet18 as a standalone script.
python projects/pt1/examples/fximporter_resnet18.py
# Output
load image from https://upload.wikimedia.org/wikipedia/commons/2/26/YellowLabradorLooking_new.jpg
...
PyTorch prediction
[( ' Labrador retriever ' , 70.65674591064453), ( ' golden retriever ' , 4.988346099853516), ( ' Saluki, gazelle hound ' , 4.477451324462891)]
torch-mlir prediction
[( ' Labrador retriever ' , 70.6567153930664), ( ' golden retriever ' , 4.988325119018555), ( ' Saluki, gazelle hound ' , 4.477458477020264)]該項目遵循典型的基於MLIR的項目的慣例:
include/torch-mlir ,C ++ MLIR編譯器方言/通過的lib結構。test持有測試代碼。torch-mlir-opt等tools 。python頂級目錄如果您想從源頭開發和建造火炬 - 盧比,請查看開發筆記