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%的库水平。
二、OpenXLA/IREE
MLIR大模型推理,基本就是来抄这个项目了。做推理框架首先看这个,当然推理框架还有llama.cpp、ollama、vllm
OpenXLA 是 Google 想将编译器相关技术从 TensorFlow 独立出来的项目组,里面有hlo dialect的定义,fusion pass的思路,这个貌似着工业界用的还不少,我以前一直以为处于Pytorch的大一统时代。
当然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站有对应的技术分享会录播
十、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加速器。
本文来自博客园,作者:暴力都不会的蒟蒻,转载请注明原文链接:https://www.cnblogs.com/BobHuang/p/17804600.html