MLIR学习可以参考的项目

MLIR包含了更多的信息,抽象层级更高。affine dialect是一个关注Polyhedral(多面体模型)的设计,其中会看到Affine_map,比传统的编译优化效果要好很多,多面体编译技术学习笔记一

笔者在2023.8开始从事MLIR编译器开发至 2024.8 一年了,现在明显感觉MLIR的热度开始起来了,想进这个赛道的速速开始改Pass抄Pass写Pass,提pr,祝你拿到心仪的offer。

一、OpenAI/Triton

Pytorch2.0巨大更新,OpenAI的Triton也随着其chatgpt的爆火而备受关注。带来了smit和tensor core高层次抽象的dialect,能够很好的表示GPU的硬件细节,Pytorch2.0更新日志说有95%的库水平。
我写了一篇 浅析 Triton 执行流程,有兴趣可以看。他是我心目中MLIR项目第一

二、OpenXLA/IREE

MLIR大模型推理,基本就是来抄这个项目了。做推理框架首先看这个,当然推理框架还有llama.cpp、ollama、vllm
OpenXLA 是 Google 想将编译器相关技术从 TensorFlow 独立出来的项目组,里面有hlo dialect的定义,fusion pass的思路,这个貌似着工业界用的还不少,我以前一直以为处于Pytorch的大一统时代。
IREE里隐藏着对 StableHLO,这是定义的神经网络模型的高层级运算。
当然XLA也是可以接进Pytorch的,有Pytorch/XLA,个人认为tpu有点操之过急了,AI变换太快,但是在某些不容易变的领域肯定有成本速度优势
IREE和TVM的对比
来自Compiler Technologies in Deep Learning Co-Design: A Survey

三、LLVM中的toy

适合上手学习调试,官方还有文档

四、官方在开发的新clang

这个项目我觉得蛮有意思的,clang但是以MLIR作为IR。cgeist在翻译时用的还是clang,因为AST的信息和MLIR不对等所以有些东西不太好表示,期待早日做好将大大提高clang的表达能力。有可能实现大一统

五、官方的C/C++前端Polygeist

可以将C/C++代码翻译到affine层级,不太会写输出结果,可以参考下。最新版的Polygeist增加了poly,你也可以学习下poly的接入方式。

六、官方的Fortran前端Flang

官方项目中的Fortran前端,这个也做得蛮早了,但是还不够完善。最初是f18 project

七、官方的torch前端torch-mlir

可以将torch的model转换到MLIR中

八、buddy-mlir

适合上手学习调试,不过已经越来越强大了。其在最近(2023年11月)完成了端到端 LLaMA2-7B 推理示例

九、华为 akg-mlir

AKG是Auto Kernel Generator的简称,在昇思MindSpore框架中担任图算融合编译加速的任务。AKG基于polyhedral多面体编译技术,可自动生成满足并行性与数据局部性的调度,目前能够支持NPU/GPU/CPU等硬件。
MindSpore AKG MLIR已经支持主流模型中所有重要算子,但是随着网络的迭代和算法的改进,依然不断有新的算子出现。由于MindSpore AKG支持包括NPU、GPU、CPU在内的多硬件后端,我们规划了基于后端代码生成能力完成相关算子支持,包括:1.对于新算子提供基于循环和数学表达式的表达。2.对于融合算子提供以已有算子拼接的展开表达。
B站有对应的技术分享会录播
源码大概看了下,为了解决动态shape弄了个symbolicStrExprMap,要SameSymbolicShape。用的是symengine,而不是MLIR的affine dialect

十、AMD rocMLIR

可以针对AMD硬件做CONV和GEMM kernel生成,被MIGraphX使用。都说AMD在梭哈MLIR实现弯道超车,具体怎么样可以看代码。他们还实现了xmir-runner,如果有自制MLIR JIT runner可以参考下。

十一、一流科技 oneflow

一流科技也较早将MLIR融入自己的深度学习框架,也对MLIR做了些支持。不过在深度学习中我觉得很多依旧是Transform类的,能lower正确就可以,很像一个工程问题。定义创建Pass的文件

十二、算能 tpu-mlir

TPU-MLIR是一个面向深度学习处理器的开源TPU编译器。该项目提供了完整的工具链,将各种框架下预训练的神经网络转换为可在TPU中高效运行的二进制文件bmodel,以实现更高效的推理。TPU-MLIR项目已应用于算能开发的最新一代深度学习处理器BM1684X。结合处理器本身的高性能ARM内核以及相应的SDK,可以实现深度学习算法的快速部署。甚至提供了相应课程,只需要填写相关信息就可以学习,B站不用注册,来白嫖B站这边

十三、sBobHuang/mlir-tutorial

北大周可行写的中文教程,更适合中国宝宝使用。我完善了两章,之后还想加点新东西。

十四、微软 triton-shared

微软把自己的一些优化share出来了

十五、寒武纪 triton-linalg

寒武纪针对mlu的到linalg的实现,linalg之后和硬件实现有关。这是发布时的Slides,72页开始

十六、Xilinx AIR platforms

Xilinx是做FPGA的,被AMD收购了,FPGA中也有AI引擎,他们梭哈MLIR蛮久了,开源质量不错。
大多数都是转换类,Pass位置
这个还能看到有人在实际运用,比如mase,有100多个star,不过HLS基本都是国人在搞

十七、intel graph-compiler

这个MLIR接的是oneDNN Graph API,也是最近刚开始做

十八、tenstorrent tt-mlir

tenstorrent是Jim Keller领导的AI芯片新创公司,目标也是他们的AI加速器。

posted @ 2023-11-02 08:34  暴力都不会的蒟蒻  阅读(1513)  评论(2编辑  收藏  举报