随着深度学习的应用场景的不断泛化,深度学习计算任务也需要部署在不同的计算设备和硬件架构上;同时,实际部署或训练场景对性能往往也有着更为激进的要求,例如针对硬件特点定制计算代码。
这些需求在通用的AI框架中已经难已得到满足。由于深度学习计算任务在现有的AI框架中往往以DSL(Domain Specific Language)的方式进行编程和表达,这本身使得深度学习计算任务的优化和执行天然符合传统计算机语言的编译和优化过程。因此,【AI编译器】深度学习的编译与优化就是将当前的深度学习计算任务通过一层或多层中间表达进行翻译和优化,最终转化成目标硬件上的可执行代码的过程。本系列将围绕现有【AI编译器】中的编译和优化工作的内容展开介绍。
系列内容
AI是最新的电力,大约在一百年前,我们社会的电气化改变了每个主要行业,从交通运输行业到制造业、医疗保健、通讯等方面,我认为如今我们见到了AI明显的令人惊讶的能量,带来了同样巨大的转变。显然,AI的各个分支中,发展的最为迅速的就是深度学习。因此现在,深度学习是在科技世界中广受欢迎的一种技巧。
通过《AI框架核心技术》这个系列内容,以及这门课程后面的几门课程,你将获取并且掌握的技能:
-
在《AI框架基础》第一门课程中,您将了解到AI框架的具体作用,可以提供给开发者一个编写神经网络模型的库和提供丰富的API。以及近几年AI框架快速发展的历史和变迁。在这门课程的结尾,您将了解到不同的编程范式对AI框架的影响和对用户习惯的影响。
-
《传统编译器》会粗略地回顾传统编译器中的前端、后端、IR中间表达等主要的概念,并对目前主流的两大编译器GCC和LLVM进行简单的展开,去了解GCC的编译流程和编译方式,并回顾LLVM的整体架构。
-
《AI 编译器》是本节的概览重点,去了解本章的主要内容 AI 编译器的整体架构,包括他的发展阶段,目前主要的组成模块,整体的技术演进方向等概念性的内容,因为近年来AI编译器发展迅猛,可以横向去了解AI编译器整体技术。
-
《前端优化》前端优化作为 AI编译器 的整体架构主要模块,主要优化的对象是计算图,而计算图是通过AI框架产生的,值得注意的是并不是所有的AI框架都会生成计算图,有了计算图就可以结合深度学习的原理知识进行图的优化。
-
《后端优化》后端优化作为AI编译器跟硬件之间的相连接的模块,更多的是算子或者Kernel进行优化,而优化之前需要把计算图转换称为调度树等IR格式,然后针对每一个算子/Kernel进行循环优化、指令优化和内存优化等技术。
-
《多面体技术》多面体不属于新的技术,反而是传统编译器的一种优化手段,得益于深度学习中的主要特征(循环、张量),因此多面体技术可以发挥更大的作用,对循环展开、内存映射等优化工作。
-
《PyTorch图模式》会以实际的AI框架 PyTorch 2.0为主线,去把其主打特性 Dynamo 和 AOTAutograd 进行展开,并回顾 PyTorch 对图模式的尝试,了解现今最热门的AI框架如何进行编译器优化的。
希望这个系列能够给大家、朋友们带来一些些帮助,也希望自己能够继续坚持完成所有内容哈!
然这里不是打广告,而是希望跟所有关注开源项目的好朋友一起探讨研究,共同促进学习讨论,也欢迎各位专家和朋友多拍拍砖,多提点意见。相关的材料都开源在这里:
https://github.com/chenzomi12/DeepLearningSystem/tree/main/Compiler
具体大纲
1 编译器基础
-
课程概述 video
2. 传统编译器
-
开源编译器的发展 video
-
GCC编译过程和原理 video
-
LLVM设计架构 video
-
(上) LLVM IR详解 video
-
(中) LLVM前端和优化层 video
-
(下) LLVM后端代码生成 video
3. AI 编译器
4. 前端优化
-
内容介绍 video
-
计算图层IR video
-
算子融合策略 video
-
(上) 布局转换原理 video
-
(下) 布局转换算法 video
-
内存分配算法 video
-
常量折叠原理 video
-
公共表达式消除 video
-
死代码消除 video
-
代数简化原理 video
5. 后端优化
6. PyTorch2.0
-
PyTorch2.0 特性串讲 video
-
TorchScript 静态图尝试 video
-
Torch FX 与 LazyTensor 特性 video
-
TorchDynamo 来啦 video
-
AOTAutograd 原理 video
-
Dispatch 机制 video
完结,撒花!
标签:入门,框架,AI,编译器,video,计算,优化 From: https://www.cnblogs.com/ZOMI/p/17056017.html