《机器学习系统:设计和实现》以MindSpore为例的学习(3)

4.编译器

在这里插入图片描述
​ 既要对上承接模型算法的变化,满足算法开发者研究不断探索的诉求, 又要在最终的二进制输出上满足多样性硬件的诉求,满足不同部署环境的资源要求。既要满足系统的通用,也要满足易用性的灵活性要求,还要满足性能的不断优化诉求,这里引入编译器的概念再合适不过了。 编译器概念可以很好抽象上面提到的挑战和问题,编译器输入的是用户编程代码,输出的是机器执行的高效代码,编译器的作用主要是转换和优化,这和机器学习系统的输入输出,机器学习系统的目标是完全一致的。所以在进阶篇我们将用两个章节详细介绍AI编译器,里面的很多概念是和通用编译器中的概念是相同的,比如AOT(Ahead of Time提前编译)、JIT(Just in time)、IR(中间表示)、PASS优化、AST(Abstract Struct Trees)、副作用、闭包等概念和编译器中相关定义相同,对编译器相关概念需要了解的读者可以翻阅相关的编译原理教材了解。

AI编译器

在AI编译器领域往往采用多层级逐步优化的方式,对应的IR也是多层级IR的。TensorFlow等AI框架就是采用多层级IR来进行设计的,MindSpore早期版本也是使用多层次IR的,下图就是MLIR官方材料中给出的TensorFlow框架当前的IR现状,中间至少有三个层次的IR,即:TensorFlow Graph IR, XLA (Accelerated Linear Algebra)HLO、 以及特定硬件的LLVM IR 或者TPU IR,下面就不同的层级IR和其上的编译优化做一个简要介绍。在前一章节计算图部分提到的图优化,也称为:图编译优化,主要实现整图级别的优化和操作,如: 图优化、图切分,往往是基于Graph IR这个层次进行的,比较适合静态图的执行模式;由于整图级别的IR缺少相应的硬件信息,难以进行硬件相关的优化,所以在中间层次就出现了相关的硬件通用编译优化,如:XLA、TensorRT、MindSpore的图算融合等都属于这一类编译器,来针对不同的硬件进行算子融合等优化,提升不同网络在特定硬件上的执行性能。在本书的第五章节编译器后端中硬件通用优化中有一个小节来介绍图算融合编译器的相关设计。最后一个层次的IR是特定硬件加速器专有的IR,一般由硬件厂商自带的编译器提供,如:Ascend硬件自带的TBE编译器就是基于TVM IR生成高效的执行算子,在本书的第6章加速器章节也会有相应部分来介绍算子编译器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.编译器前端

定义深度学习模型、计算图使用系统为用户提供的高级编程API,我们将用户使用高级编程API编写的程序称为源程序,将与硬件相关的程序称为目标程序,深度学习编译器需要理解输入的源程序并将其映射到目标机。为了实现这两项任务,编译器的设计被分解为两个主要部分:前端和后端。传统编译器的前端专注于理解源程序,后端则专注于将功能映射到目标机。为了将前后端相连接,我们需要一种结构来表示转换后的源代码,这就是中间表示(Intermediate Representation, IR)。
在这里插入图片描述

5.2中间表示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.图中间表示

中间表示是编译器的核心数据结构之一,是程序编译过程中介于源语言和目标语言之间的程序表示。

传统编译器的中间表示从组织结构出发,可以分为线性中间表示,图中间表示以及混合中间表示。

机器学习框架的中间对中间表示有一系列新的需求,这些新的需求是传统中间表示所不能完美支持的。因此需要在传统中间表示的基础上扩展新的,更适用于机器学习框架的中间表示。

自动微分的基本思想是将计算机程序中的运算操作分解为一个有限的基本操作集合,且集合中基本操作的求导规则均为已知,在完成每一个基本操作的求导后,使用链式法则将结果组合得到整体程序的求导结果。

自动微分根据链式法则的组合顺序,可以分为前向自动微分与反向自动微分。

前向自动微分更适用于对输入维度小于输出维度的网络求导,反向自动微分则更适用于对输出维度小于输入维度的网络求导。

自动微分的实现方法大体上可以划分为基本表达式法,操作符重载法以及代码变化法。

类型系统是指类型的集合以及使用类型来规定程序行为的规则,用于定义不同的类型,指定类型的操作和类型之间的相互作用,广泛应用于编译器、解释器和静态检查工具中。

静态分析,是指在不实际运行程序的情况下,通过词法分析、语法分析、控制流、数据流分析等技术对代码进行分析验证的技术

编译优化意在解决编译生成的中间表示的低效性,前端执行的均为与硬件无关的编译优化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值