torch-mlir:基于 PyTorch 生态与 MLIR 的编译器支持项目

torch-mlir 旨在为 MLIR 生态系统提供来自 PyTorch 生态系统的支持。此fork用于添加昇腾上编译器的功能,支持AscendNPU IR等

分支59Tags1195
文件最后提交记录最后更新时间
10 个月前
8 个月前
9 个月前
8 个月前
8 个月前
8 个月前
8 个月前
8 个月前
8 个月前
2 年前
8 个月前
6 年前
2 年前
2 年前
8 个月前
2 年前
2 年前
2 年前
1 年前
4 年前
1 年前
8 个月前
2 年前
9 个月前
9 个月前
3 年前
8 个月前
2 年前
9 个月前
3 年前

Torch-MLIR 项目

Torch-MLIR 项目旨在为 MLIR 生态系统提供来自 PyTorch 生态系统的一流编译器支持。

本项目正在参与 LLVM 孵化流程:因此,它不属于任何官方 LLVM 版本。虽然孵化状态不一定反映代码的完整性或稳定性,但它确实表明该项目尚未被认可为 LLVM 的组件。

PyTorch PyTorch 是一个开源机器学习框架,可促进从研究和原型设计到生产级部署的无缝过渡。

MLIR MLIR 项目提供了一种新颖的方法来构建可扩展且可重用的编译器架构,解决了软件碎片化问题,降低了开发特定领域编译器的成本,改进了异构硬件的编译,并促进了现有编译器之间的兼容性。

Torch-MLIR 已有多家供应商采用 MLIR 作为其系统中的中间层,使他们能够将 PyTorch、JAX 和 TensorFlow 等框架映射到 MLIR 中,然后将其下放到目标硬件。我们观察到有六种从 PyTorch 到 MLIR 的自定义下放方式,这使硬件供应商能够更专注于其独特价值,而无需为 MLIR 再实现另一个 PyTorch 前端。最终目标是类似于当前硬件供应商添加 LLVM 目标支持,而不是各自实现 Clang 或 C++ 前端。

pre-commit

从 PyTorch 到 Torch MLIR 方言的所有路径

我们有几种方法可以下放到 Torch MLIR 方言。

  • 以 ONNX 作为入口点。
  • 以 Fx 作为入口点

项目交流

安装 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

然后,我们可以使用对应的 torch 和 torchvision nightly 版本安装 torch-mlir。

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

Torch-MLIR 主要是一个集成到编译器中的项目,用于将编译器与 PyTorch 和 ONNX 连接起来。如果考虑进行新的集成,参考现有的下游项目可能会有所帮助:

虽然项目的大部分功能是通过测试路径来使用的,但最终用户也可以通过一些方式直接使用这些 API,无需进一步集成:

FxImporter ResNet18

# 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-mlirlib 目录结构用于存放 C++ MLIR 编译器方言/通道。
  • test 目录用于存放测试代码。
  • tools 目录用于存放 torch-mlir-opt 等工具。
  • python 顶级目录用于存放 Python 代码

开发者

如果您希望从源代码开发和构建 torch-mlir,请参阅 开发说明

项目介绍

torch-mlir 旨在为 MLIR 生态系统提供来自 PyTorch 生态系统的支持。此fork用于添加昇腾上编译器的功能,支持AscendNPU IR等

定制我的领域