Torch-MLIR项目
Torch-MLIR项目旨在从PyTorch生态系统向MLIR生态系统提供一流的编译器支持。
该项目正在参与LLVM孵化器进程:因此,它不是任何LLVM官方版本的一部分。虽然孵化状态不一定反映代码的完整性或稳定性,但它确实表明该项目尚未被认可为LLVM的一个组成部分。
PyTorch一个开源的机器学习框架,加速了从研究原型到生产部署的路径。
MLIRMLIR项目是一种建立可重复使用和可扩展的编译器基础设施的新方法。MLIR旨在解决软件碎片化问题,改善异构硬件的编译,大幅降低构建特定领域编译器的成本,并帮助将现有的编译器连接在一起。
Torch-MLIR多个供应商使用MLIR作为中间层,从PyTorch、JAX和TensorFlow等平台框架映射到MLIR,然后逐步降低到他们的目标硬件。我们已经看到了半打从PyTorch到MLIR的定制降低。从PyTorch生态系统到MLIR生态系统的规范性降低将为硬件供应商提供急需的缓解,使其专注于自己的独特价值,而不是为MLIR实施另一个PyTorch前端。我们的目标是类似于目前的硬件供应商增加LLVM目标支持,而不是每个供应商都实施Clang/C++前端。
从PyTorch到Torch MLIR方言的所有道路
我们有几条路径可以降低到Torch MLIR方言。
- TorchScript 这是通往Torch MLIR方言的最经得起考验的路径,而且PyTorch生态系统正趋向于使用TorchScript IR作为一种通用语言。
- LazyTensorCore在这里阅读更多细节。
项目交流
#torch-mlirLLVMDiscord上的频道 - 这是最活跃的交流频道- 这里的Github问题
torch-mlirLLVM Discourse的部分- 每周一次的会议,时间是北京时间周一上午9点。更多信息请看这里。
- 每周的开放办公时间为北京时间周四上午8:30-9:30。更多信息请见这里。
安装Torch-mlir快照
这将安装一个预先构建的用于Linux和macOS上的Python 3.7/3.8/3.9/3.10的touch-mlir的快照。
python -m venv mlir_venv
演示
TorchScript ResNet18
将PyTorch ResNet18模型转换为MLIR并在CPU后端运行的独立脚本。
# Get the latest example if you haven't checked out the code
Lazy Tensor Core
在此查看示例。
急切模式
TorchMLIR的急切模式是通过torch-mlir框架为PyTorch提供的一个非常实验性的急切模式后端。实际上,这种模式的工作方式是在NN被PyTorch急切地执行时,逐个运算符进行编译。如果Torch-mlir编译过程中出现任何问题(例如不支持的操作符),该模式将回退到传统的PyTorch。一个简单的例子可以在eager_mode.py找到。一个ResNet18的例子可以在eager_mode_resnet18.py找到。
资源库布局
该项目遵循典型的基于MLIR的项目惯例。
include/torch-mlir,lib结构,用于C++ MLIR编译器方言/通道。test用于存放测试代码。tools用于 等。torch-mlir-optpython顶层目录用于存放Python代码
开发人员
如果你想从源代码中开发和构建torch-mlir,请看开发说明