内容简介
MLIR是一个新型的AI编译器,被广泛地应用于各种产品研发中,在企业与学术研究中有很大的影响,但是,目前国内外还找不到MLIR专著,本书试图弥补这个空缺。
本书全面解析MLIR所有主要功能,帮助读者理解MLIR工作原理,以及使用MLIR对深度学习与机器学习进行的优化与部署。全书共11章,包括多用MLIR多层中间表示构建编译器、MLIR编译器基础、MLIR编译器功能模块、MLIR方言技术、TPU-MLIR开发技术分析、MLIR中间表示与编译器框架、MLIR代码生成技术、MLIR的后端编译过程、Buddy-MLIR 工程技术解析、TPU-MLIR开发实践与IREE编译流程与开发实践。各章除了包含重要的知识点和实践技能外,还配备了精心挑选的典型案例。
本书适合从事AI算法、软件、编译器开发,以及硬件开发等专业的工程技术人员、科研工作人员、高校师生、技术管理人员等读者阅读,也可以作为编译器相关专业高等院校的参考用书。
目录
第1章用MLIR构建编译器
1.1MLIR概述
1.2通过创建引入MLIR: 一种Toy方言
1.2.1构建一种Toy方言
1.2.2异构编译器
1.2.3根据算力调整目标
1.2.4MLIR概述
1.3Toy方言IR表示
1.4Toy方言高级转化
1.4.1接口
1.4.2Toy方言形状推理
1.4.3形状推理
1.5方言下译到LLVM
1.6ARM指令SVE、SME在MLIR中的实现方式
1.6.1MLIR基本概念
1.6.2方言子模块构成
1.6.3方言操作
1.6.4什么是区域
1.6.5SVE在MLIR中的实现
1.7ARM上的矩阵乘法
1.7.1向量的外积
1.7.2SVE模式流
1.7.3SME ZA存储
1.7.4SME的实现
1.8MLIR与LLVM中的Affine指的是什么
1.9MLIR在Magma开源软件平台中的应用
1.9.1Magma背景
1.9.2Python Magma系统
第2章MLIR编译器基础
2.1MLIR语言参考
2.1.1高层结构
2.1.2MLIR符号
2.1.3MLIR作用域
2.1.4控制流与SSACFG作用域
2.1.5类型系统
2.1.6方言类型
2.2MLIR方言及运行分析
2.2.1MLIR简介
2.2.2常见的IR表示系统
2.2.3MLIR历史
2.3方言及运行详解
2.3.1方言基本概念
2.3.2运行机构拆分
2.3.3创建新的方言操作
2.3.4加载到MLIR上下文中
2.3.5定义算子
2.3.6创建方言流程总结(使用ODS)
2.4MLIR运算与算子
2.4.1MLIR运算与算子概述
2.4.2运算类(Operation)
2.4.3算子类(Op)
2.4.4MLIR OpBase.td算子类的作用
2.4.5MLIR 运算的构建之路
2.4.6MLIR TableGen后端生成算子代码
2.5MLIR的初步知识
2.6MLIR部署流
2.6.1MLIR部署流程
2.6.2MLIR应用模块
2.7MLIR框架概览
2.8MLIR基本数据结构
2.8.1MLIR基本概念
2.8.2MLIR源代码目录
2.8.3MLIR简易UML类图
2.8.4开发中用到的具体数据结构
2.9MLIR出现的背景与提供的解决方案
2.9.1背景与演进概述
2.9.2解决方案
2.10机器学习编译器: MLIR方言体系
2.10.1基础组件
2.10.2方言体系
第3章MLIR编译器功能模块
3.1深度学习AI编译器MLIR
3.1.1MLIR实现方式
3.1.2MLIR基本概念
3.1.3Op定义方式
3.2CodeGen方言介绍
3.2.1MLIR中CodeGen概述
3.2.2兴趣方言
3.2.3现有管道TensorFlow内核生成器
3.2.4IREE编译器(LLVM目标)
3.2.5IREE编译器 (SPIRV目标)
3.2.6多面体编译器
3.3MLIR编译器DSL技术
3.3.1DSL领域特定语言介绍
3.3.2DSL分类
3.3.3DSL示例
3.3.4DSL与DDD(领域驱动)
3.3.5DSL信息量排查
3.3.6方言流程结构
3.3.7MLIR ODS要点总结
3.3.8DSL技术示例代码演示
3.3.9MLIR源码工程操作分析
3.4调用堆栈、堆栈帧与程序计数器
3.4.1堆栈调用
3.4.2堆叠异常处理
3.4.3返回堆栈调用
3.4.4异常中断与应用
第4章MLIR方言技术
4.1定义方言
4.1.1定义方言概述
4.1.2可丢弃属性验证
4.1.3默认属性与类型分析器输出
4.1.4在运行时定义操作
4.2可扩展方言的实现细节
4.2.1使用Toy语言接入MLIR,最终转换为LLVM IR
4.2.2指定自定义汇编格式
4.3优化MLIR表达式
4.3.1手动匹配重写
4.3.2采用 DRR自动生成匹配与重写函数
4.3.3三种重写格式
4.4通用的转换接口
4.4.1函数内联
4.4.2形状推理
4.5从 MLIR 表达式进行部分下译
4.5.1背景知识(下译与方言转换)
4.5.2部分下译
4.6混合方言表达式下译到LLVM IR
4.7用于机器学习编译器的MLIR CodeGen方言
第5章TPUMLIR开发技术分析
5.1TPUMLIR简介
5.1.1TPUMLIR的工作流程
5.1.2TPUMLIR编译工程
5.1.3TPUMLIR开发环境配置
5.2工具参数介绍
5.3整体设计
5.3.1TPUMLIR分层
5.3.2构建Pass
5.3.3TPUMLIR主要工作模块
5.3.4算子转换样例
5.4神经网络的量化与训练
5.4.1量化技术概述
5.4.2校准技术
5.4.3算法实现
5.4.4可视化工具visual说明
5.4.5图层组
5.4.6划分存储周期
5.4.7GMEM分配
5.4.8TOP方言操作
5.4.9评估验证
5.5QAT量化感知训练<
前言/序言
人工智能在全世界广泛应用。深度学习框架(如TensorFlow、
PyTorch、MXNet、Caffe等)推动了AI技术革命。大多数现有的系统框架针对小范围的服务器级GPU进行
优化,仍然需要做很多工作,才能在其他平台上部署,如汽车、手机、物联网设
备及专用加速器(FPGA、ASIC)。随着深度学习框架和硬件后端数量的增加,提出了一种统一的中间表示的解决方案MLIR——一种优化深度学习框架与提高效率的编译器。
有了MLIR 的帮助,可以轻松地在手机、嵌入式设备甚至浏览器上运行深度学习模型,只需做很少的额外工作。MLIR 还为多种硬件平台上的深度学习计算提供了统一的优化框架,包括一些有自研计算原语的专用加速器。
MLIR是一个深度学习编译器,所有人都能随时随地地访问高性能机器学习。MLIR 由硬件供应商、编译器工程师和机器学习研究人员组成的多元化社区共同构建了一个统一的可编程软件堆栈,丰富了整个机器学习技术生态系统并使其可供更广泛的机器学习社区使
用。
MLIR的全名为MultiLevel Intermediate Representation,是一种由谷歌公司开发的开源编译器基础设施,它将深度学习模型进行优化推理,内存管理与线程调度,借用LLVM部署到在CPU、GPU、FPGA、ARM 等硬件设备上。
本书全面解析MLIR的主要功能,帮助读者理解MLIR工作原理,以及使用MLIR对算子模型进行优化与部署开发。MLIR可以高效地部署在不同的硬件设备上,是深度学习系统的编译器堆栈。目的是缩小以生产力为中心的深度学习框架与以性能和效率为中心的硬件后端之间的差距。MLIR 与深度学习框架合作,为不同的后端提供端到端编译。
全书共分11 章,主要内容如下:
第1章用MLIR构建编译器: 讲述Toy方言与MLIR的引入。
第2章MLIR编译器基础: 讲述MLIR基础知识、功能模块及代码结构。
第3章MLIR编译器功能模块: 讲述MLIR编译,DSL技术、堆栈调用技术。
第4章MLIR方言技术: 讲述MLIR方言特征,方言开发实践。
第5章TPUMLIR开发技术分析: 讲述TPUMLIR工程、各种优化调度存储策略及实践。
第6章MLIR中间表示与编译器框架: 讲述MLIR的外部依赖、不同应用适配及示例。
第7章MLIR代码生成技术: 讲述代码生成的基本原理、下译技术及优化实践。
第8章MLIR的后端编译过程: 讲述MLIR Toy方言应用、下译映射及编译实践。
第9章BuddyMLIR工程技术解析: 讲述BuddyMLIR工程结构、代码构建及编译实践。
第10章TPUMLIR开发实践: 讲述TPUMLIR环境配置搭建、ONNX模型转换与工程实践。
第11章IREE编译流程与开发实践: 讲述IREE内核结构、编译流程与工程实践。
扫描目录上方的二维码可下载本书源码。
编者2025年2月
                      

                   


















