AI编译器的概览、挑战和实践培训.pptx

AI编译器的概览、挑战和实践培训.pptx

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

AI编译器的概览、挑战和实践培训时间:2024年6月24日培训讲师:XXX

本次主要介绍AI编译器的概览AI编译器的挑战未来的展望

Traditionalcompilervsaicompiler2024/6/22

四大特征2024/6/22Python为主的动态解释器语言前端多层IR设计:图编译器算子编译器Codegen面向神经网络的特定优化DSA芯片架构的支持

Python为主的动态解释器语言前端

2024/6/22与传统编译器不同,AI编译器通常不需要Lexer/Parser,而是基于前端语言(主要是Python)的AST将模型解析并构造为计算图IR,侧重于保留shape、layout等Tensor计算特征信息,当然部分编译器还能保留控制流的信息。这里的难点在于,Python是一种灵活度极高的解释执行的语言,AI编译器需要把它转到静态的IR上。

多层IR设计2024/6/22为什么需要多层IR设计?因为它可以达到易用性与高性能(一眼顶真,鉴定为鞭辟入里)为了让开发者使用方便,框架前端会尽量对Tensor计算进行抽象封装,开发者只要关注逻辑意义上的模型和算子;而在后端算子性能优化时,又可以打破算子的边界,从更细粒度的循环调度等维度,结合不同的硬件特点完成优化。因此,多层IR设计无疑是较好的选择。

GraphIR如MindSpore的MindCompiler(MindIR)、TF的XLA(HLO),TVM的Relay等,重点关注非循环相关的优化。除了传统编译器中常见的常量折叠、代数化简、公共子表达式等优化外,还会完成Layout转换,算子融合等优化,通过分析和优化现有网络计算图逻辑,对原有计算逻辑进行拆分、重组、融合等操作,以减少算子执行间隙的开销并且提升设备计算资源利用率,从而实现网络整体执行时间的优化。2024/6/22

算子IR如MindSporeAKG、CANNTBE、TVM(HalideIR)等。针对算子层IR主要有循环变换、循环切分等调度相关的优化,与硬件intrinsic映射、内存分配等后端pass优化。其中,当前的自动调度优化主要包含了基于搜索的自动调度优化和基于polyhedral编译技术的自动调度优化(一眼顶真鉴定为纯纯的名词党)2024/6/22

Codegen当前基本上在LLVM上完成。还要提到的是MLIR,它实际上一种编译的基础设施。MLIR有Operation和Dialect的概念,Dialect,Operation,Attribute,Type等都可以通过td文件比较方便地定义出来。而LLVM定义新的intrinsic比较麻烦,定义新的IR就更麻烦了。LLVMIR主要表示硬件指令操作,而MLIR能表示更多东西,比如表示神经网络的图结构。因为有Dialect,MLIR是组件化,去中心的,不像LLVM的ir是一种大而全的。MLIR执行过程和LLVM一样,IR会过由Pass组成的Pipeline,不断地变换生成最终的IR。不同的是MLIR的IR可以是不同dialect的,构成了Multi-Level的效果。2024/6/22

面向神经网络的特定优化2024/6/22自动微分:基于计算图的自动微分、基于Tape和运算符重载的自动微分方案、基于source2source的自动微分都是现在主流的方案。自动并行:随着深度学习的模型规模越来越大,模型的并行优化也成为编译优化的一部分,包括:数据并行、算子级模型并行、Pipeline模型并行、优化器模型并行和重计算等(确实没实操过任何一种方案,想有机会实操)

DSA芯片架构的支持SIMT、SIMD、Dataflow:AI的训练和推理对性能和时延都非常敏感,所以大量使用加速器进行计算,所以AI编译器其实是以加速器为中心的编译器,这个也是区别于通用编译器的一个特征2024/6/22

AI编译器的发展历程朴素AI编译器框架和库,动态图和静态图图和算子抽象:静态图采用了部分编译器的技术(硬件无关优化,e.g.表达式化简、常量折叠)和硬件相关优化(简单算子融合)专用的AI编译器Python原生表达的静态化AI专用编译器架构,打开图和算子的边界进行融合优化通用化的AI编译器图算统一,融合优化,算子自动生成更泛华的优化能力:动态shape、稀疏、复数等自动并行优化2024/6/22

朴素的AI编译器AI框架的早期主要是两个抽象,一个是基于张量的计算图,分为图和算子;另外一个动态图和静态图。动态图基本上和AI编译器没有太多关联,静态图采用了部分编译器的思想,比如图优化的时候会使用一些硬件无关的优化(表达式化简/常量折叠等)、硬件相关的优化(手工的算子融合)。问题:表达上:静态图的表达式非Python原生,开发者主要通过框架提供的API进行显式构图,易用性上不好;

文档评论(0)

勤劳的小厮 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档