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顶级目录如果您想从源头开发和建造火炬 - 卢比,请查看开发笔记