From 540a6794d37db667933fec79409274e9b3fd3146 Mon Sep 17 00:00:00 2001 From: Liang ZhiBo Date: Fri, 24 Mar 2023 11:44:16 +0800 Subject: [PATCH] Update frontend ir (#431) Co-authored-by: liangzhibo --- .../ai_compiler_design_principle.md | 29 ++++++++++++++++++ chapter_frontend_and_ir/index.md | 14 ++++----- .../overview_of_frontend.md | 8 +++-- img/ch04/LLVM基础结构.png | Bin 0 -> 25079 bytes img/ch04/TensorFlow-IR.png | Bin 0 -> 38658 bytes img/ch04/编译器整体流程.png | Bin 0 -> 37604 bytes 6 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 chapter_frontend_and_ir/ai_compiler_design_principle.md create mode 100644 img/ch04/LLVM基础结构.png create mode 100644 img/ch04/TensorFlow-IR.png create mode 100644 img/ch04/编译器整体流程.png diff --git a/chapter_frontend_and_ir/ai_compiler_design_principle.md b/chapter_frontend_and_ir/ai_compiler_design_principle.md new file mode 100644 index 0000000..ae99470 --- /dev/null +++ b/chapter_frontend_and_ir/ai_compiler_design_principle.md @@ -0,0 +1,29 @@ +AI编译器设计原理 +---- + +无论是传统编译器还是AI编译器,它们的输入均为用户的编程代码,输出也机器执行的高效代码。进阶篇将用两个章节详细介绍AI编译器,里面的很多概念借用了通用编译器中的概念,如AOT(Ahead of Time提前编译)、JIT(Just in time 即时)、IR(Intermediate Representation中间表示)、PASS优化、AST(Abstract Trees)、副作用、闭包等概念,和编译器教材中对应概念的定义相同,对编译器相关概念感兴趣的读者可以翻阅相关的编译原理教材,本书会将讨论重点放在机器学习编译器相较于传统编译器的独特设计与功能上。 + +AI编译器的设计受到了主流编译器(如LLVM)的影响。为了方便理解AI编译器,首先通过 :numref:`LLVM_basic_struc`展示LLVM编译器的架构。 + +![LLVM编译器基础架构](../img/ch04/LLVM基础结构.png) +:width:`800px` +:label:`LLVM_basic_struc` + +LLVM包含了前端、IR和后端三个部分。前端将高级语言转换成IR,后端将IR转换成目标硬件上的机器指令,IR作为桥梁在前后端之间进行基于IR的各种优化。这样无论是新增硬件的支持,还是新增前端的支持,都可以尽可能地复用IR相关的部分。IR可以是单层的,也可以是多层的, LLVM IR是典型的单层IR,其前后端优化都基于相同的LLVM IR进行。 + +AI编译器一般采用多层级IR设计。 :numref:`TF_multi_ir`展示了TensorFlow利用MLIR实现多层IR设计的例子(被称为TensorFlow-MLIR)。其包含了三个层次的IR,即TensorFlow Graph IR, XLA(Accelerated Linear Algebra,加速线性代数)、HLO(High Level Operations,高级运算)以及特定硬件的LLVM IR 或者TPU IR,下面就不同的层级IR和其上的编译优化做一个简要介绍。 + +![TensorFlow的多层IR设计](../img/ch04/TensorFlow-IR.png) +:width:`800px` +:label:`TF_multi_ir` + +计算图中涉及的编译优化一般称为图编译优化。Graph IR主要实现整图级别的优化和操作,如图优化、图切分等,比较适合静态图的执行模式。由于整图级别的IR缺少相应的硬件信息,难以进行硬件相关的优化,所以在中间层次就出现了硬件相关的通用编译优化,比如XLA、Tensor RT、MindSpore的图算融合等,它们能够针对不同的硬件进行算子融合等优化,提升不同网络在特定硬件上的执行性能。 +本书“编译器后端”章节的硬件通用优化中有一个小节专门介绍图算融合编译器的相关设计。 +最后一个层次的IR是特定硬件加速器专有的IR,一般由硬件厂商自带的编译器提供,如Ascend硬件自带的TBE编译器就是基于TVM的Halide IR生成高效的执行算子。 + +多层级IR的优势是IR表达上更加地灵活,可以在不同层级的IR上进行合适的PASS优化,更加便捷和高效。 +但是多层级IR也存在一些劣势。首先,多层级IR需要进行不同IR之间的转换,而IR转换要做到完全兼容是非常困难的,工程工作量很大,还可能带来信息的损失。上一层IR优化掉某些信息之后,下一层需要考虑其影响,因此IR转换对优化执行的顺序有着更强的约束。其次,多层级IR有些优化既可以在上一层IR进行,也可以在下一层IR进行,让框架开发者很难选择。最后,不同层级IR定义的算子粒度大小不同,可能会给精度带来一定的影响。为了解决这一问题,机器学习框架如MindSpore采用统一的IR设计(MindIR)。 :numref:`MS_Compiler`展示了MindSpore的AI编译器内部的运行流程。其中,编译器前端主要指图编译和硬件无关的优化,编译器后端主要指硬件相关优化、算子选择等。 + +![MindSpore编译器处理流程](../img/ch04/编译器整体流程.png) +:width:`800px` +:label:`MS_Compiler` \ No newline at end of file diff --git a/chapter_frontend_and_ir/index.md b/chapter_frontend_and_ir/index.md index afdbbe2..0e7d82a 100644 --- a/chapter_frontend_and_ir/index.md +++ b/chapter_frontend_and_ir/index.md @@ -1,15 +1,12 @@ -# 编译器前端 -在上一章节中,我们详细讨论了计算图的生成和调度,在进阶部分的介绍中简单介绍了深度学习编译器的作用。定义深度学习模型、计算图使用系统为用户提供的高级编程API,我们将用户使用高级编程API编写的程序称为源程序,将与硬件相关的程序称为目标程序,深度学习编译器需要理解输入的源程序并将其映射到目标机。为了实现这两项任务,编译器的设计被分解为两个主要部分:前端和后端。传统编译器的前端专注于理解源程序,后端则专注于将功能映射到目标机。为了将前后端相连接,我们需要一种结构来表示转换后的源代码,这就是中间表示(Intermediate -Representation, IR)。 +# AI编译器和前端技术 +编译器作为计算机系统的核心组件,在机器学习框架设计中也扮演着重要的角色,并衍生出了一个专门的编译器种类:AI编译器。AI编译器既要对上承接模型算法的变化,满足算法开发者不断探索的研究诉求,又要对下在最终的二进制输出上满足多样性硬件的诉求,满足不同部署环境的资源要求。既要满足框架的通用普适性,又要满足易用性的灵活性要求,还要满足性能的不断优化诉求。AI编译器保证了机器学习算法的便捷表达和高效执行,日渐成为了机器学习框架设计的重要一环。 -:numref:`compiler_frontend_structure`展示了机器学习编译器的前端的流程。其中,对源程序的解析过程与传统编译器是大致相同的,本章节不对这部分进行更细致的讨论。机器学习框架的编译器前端的独特之处主要在于自动微分功能的支持。为了满足自动微分功能带来的新需求,机器学习框架需要在传统中间表示的基础上设计新的中间表示结构。因此,本章节的介绍重点会放在中间表示以及自动微分这两个部分。最后,我们会简要探讨类型系统,静态分析和前端优化等编译器基础概念。 - -![编译器前端基础结构](../img/ch04/编译器前端基础架构.svg) -:width:`1000px` -:label:`compiler_frontend_structure` +本章将先从AI编译器的整体框架入手, 介绍AI编译器的基础结构。接下来,本章会详细讨论编译器前端的设计,并将重点放在中间表示以及自动微分两个部分。有关AI编译器后端的详细知识, 将会在后续的第五章进行讨论。 本章的学习目标包括: +- 理解AI编译器的基本设计原理 + - 理解中间表示的基础概念,特点和实现方法 - 理解自动微分的基础概念,特点和实现方法 @@ -22,6 +19,7 @@ Representation, IR)。 ```toc :maxdepth: 2 +ai_compiler_design_principle overview_of_frontend intermediate_representation ad diff --git a/chapter_frontend_and_ir/overview_of_frontend.md b/chapter_frontend_and_ir/overview_of_frontend.md index 827d2a2..63595ee 100644 --- a/chapter_frontend_and_ir/overview_of_frontend.md +++ b/chapter_frontend_and_ir/overview_of_frontend.md @@ -1,7 +1,11 @@ -概述 +AI编译器前端技术概述 ---- -本章节将讨论重点放在中间表示与自动微分章节。自动微分作为机器学习框架的编译器的独有功能,其实现需要满足其需求的中间表示的支持。在讨论完这两部分后,我们会简要介绍类型系统,静态分析和前端编译优化等编译器基础概念。 + :numref:`compiler_frontend_struc`展示了机器学习编译器前端的基础结构。其中,对源程序的解析过程与传统编译器是大致相同的,本章节不对这部分进行更细致的讨论。机器学习框架的编译器前端的独特之处主要在于对自动微分功能的支持。为了满足自动微分功能带来的新需求,机器学习框架需要在传统中间表示的基础上设计新的中间表示结构。因此,本章节的介绍重点会放在中间表示和自动微分这两个部分,随后会简要探讨类型系统、静态分析和前端优化等编译器的基础概念。 + +![译器前端基础结构](../img/ch04/编译器前端基础架构.svg) +:width:`800px` +:label:`compiler_frontend_struc` ### 中间表示 diff --git a/img/ch04/LLVM基础结构.png b/img/ch04/LLVM基础结构.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc4c3e842fd28245479c871c364db8d46e02d56 GIT binary patch literal 25079 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 literal 0 HcmV?d00001 diff --git a/img/ch04/TensorFlow-IR.png b/img/ch04/TensorFlow-IR.png new file mode 100644 index 0000000000000000000000000000000000000000..6e13dd479701a70dbcdc71369f4fda046389e464 GIT binary patch literal 38658 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 D6?`V> literal 0 HcmV?d00001 diff --git a/img/ch04/编译器整体流程.png b/img/ch04/编译器整体流程.png new file mode 100644 index 0000000000000000000000000000000000000000..0c309f8e5bc9d246a0e8faf91771ccd1edccd6c3 GIT binary patch literal 37604 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 literal 0 HcmV?d00001