forked from chenzomi12/AISystem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path01.srt
268 lines (201 loc) · 5.03 KB
/
01.srt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
1
00:00:00,000 --> 00:00:04,033
字幕生成:qiaokai 字幕校对:mkwei
2
00:00:05,200 --> 00:00:07,900
哈喽 大家晚上好 我是ZOMI
3
00:00:07,933 --> 00:00:10,966
那今天呢来到一个新的内容
4
00:00:11,000 --> 00:00:13,200
AI编译器之前端优化
5
00:00:13,200 --> 00:00:15,700
那这个呢就是一个全新的内容了
6
00:00:15,733 --> 00:00:19,533
讲到AI编译器肯定会有前端的一些优化
7
00:00:19,533 --> 00:00:22,199
前端的优化其实之前已经介绍过了
8
00:00:22,200 --> 00:00:25,300
前端主要是关注于图层的一些优化
9
00:00:25,333 --> 00:00:27,833
在图层的优化实际上有非常多
10
00:00:27,833 --> 00:00:29,733
这里面会简单的去给大家
11
00:00:29,766 --> 00:00:32,233
逐个地介绍相关的Pass
12
00:00:32,233 --> 00:00:35,333
首先第一种呢把它分成左右两边
13
00:00:35,333 --> 00:00:37,733
左边这种我把它定义为
14
00:00:37,733 --> 00:00:42,333
真正的面向图层的一些IR或者图层的一些Pass的优化
15
00:00:42,333 --> 00:00:47,433
右边的这种面向于更传统的一些DAG图的一些优化
16
00:00:47,433 --> 00:00:48,633
让看看左边
17
00:00:48,633 --> 00:00:51,099
会讲到算子的融合 就把算子合起来
18
00:00:51,200 --> 00:00:53,900
第二个呢就是布局的转换
19
00:00:53,966 --> 00:00:57,833
这个布局转换更多的是指内存的布局内存的排布
20
00:00:57,933 --> 00:01:00,433
第三个就是内存的分配
21
00:01:00,433 --> 00:01:04,899
这个跟刚才上面布局是不一样的上面是指内存的数据
22
00:01:04,900 --> 00:01:10,166
这个就是指内存的地址和内存的空间进行一个分配
23
00:01:10,166 --> 00:01:12,999
接着会有一些常量折叠
24
00:01:13,000 --> 00:01:15,600
常量折叠主要是讲神经网络里面
25
00:01:15,600 --> 00:01:17,500
可能会出现一些常量
26
00:01:17,700 --> 00:01:20,033
这个时候把它预先地计算了
27
00:01:20,100 --> 00:01:25,166
另外下面的几个概念传统编译器LLVM里面也会有
28
00:01:25,166 --> 00:01:27,033
这里面简单地带过一下
29
00:01:27,033 --> 00:01:32,066
就是有公共子表达式消除 死代码消除
30
00:01:32,066 --> 00:01:34,966
另外还会有代数简化
31
00:01:34,966 --> 00:01:39,266
下面将会分为这些内容去给大家介绍
32
00:01:39,300 --> 00:01:44,166
现在看看前端的优化的一个整体的框图
33
00:01:44,166 --> 00:01:47,499
那首先最上面的就是AI框架
34
00:01:47,500 --> 00:01:50,366
TensorFlow、Pytorch、MindSpore
35
00:01:50,366 --> 00:01:52,233
还有国内的一些AI框架
36
00:01:52,233 --> 00:01:56,799
这些AI框架最重要的一个事情就是产生一个计算图
37
00:01:56,800 --> 00:02:00,666
拿到这个计算图就会把它变成一个Graph IR
38
00:02:00,666 --> 00:02:03,199
传给编译器的前端
39
00:02:03,200 --> 00:02:05,966
当然了编译器有前端中间优化还有后端
40
00:02:05,966 --> 00:02:09,299
这个在LLVM里面详细地介绍过的
41
00:02:09,300 --> 00:02:12,533
而今天主要是聚焦于前端优化
42
00:02:12,533 --> 00:02:14,233
那就会有非常多的Pass
43
00:02:14,233 --> 00:02:17,966
每个Pass、Pass的概念在前面其实介绍过了
44
00:02:18,000 --> 00:02:20,233
所以它会有非常多的Pass
45
00:02:20,233 --> 00:02:23,933
不同的Pass执行不同的优化逻辑
46
00:02:23,933 --> 00:02:29,199
接着看看在整体的AI编译器里面现在所处在哪个位置
47
00:02:29,200 --> 00:02:32,566
在最上层用Python写了一些代码
48
00:02:32,566 --> 00:02:35,933
经过AI框架对这些Python代码进行一个解析
49
00:02:36,333 --> 00:02:38,399
最后变成Graph IR
50
00:02:38,400 --> 00:02:43,133
就是计算图的IR或者计算图所衍生出来的一个IR
51
00:02:43,133 --> 00:02:44,966
IR是中间表达
52
00:02:44,966 --> 00:02:48,599
接着就会有一个前端的优化那前端的优化
53
00:02:48,600 --> 00:02:51,600
那前端的优化就是刚才讲到的一些优化
54
00:02:51,600 --> 00:02:53,566
那接下来下面的内容
55
00:02:53,566 --> 00:02:58,566
将会在比较往后的章节去给大家分享汇报
56
00:02:58,566 --> 00:03:01,733
那现在来看看前端优化都做了哪些内容
57
00:03:01,733 --> 00:03:02,666
其实很简单
58
00:03:02,666 --> 00:03:07,366
前端优化输进去是一个类似于Graph的IR就是图层的IR
59
00:03:07,366 --> 00:03:11,133
然后经过常量折叠之后输出一个图的IR
60
00:03:11,133 --> 00:03:13,933
接着这个图的IR重新丢给Pass
61
00:03:13,933 --> 00:03:18,399
然后经过常量传播或者算子融合得到另外一个新的IR
62
00:03:18,400 --> 00:03:20,800
接着又重新传回来
63
00:03:20,800 --> 00:03:24,333
每一次传它都是一个图的表达、图的形式
64
00:03:24,333 --> 00:03:27,633
所以叫做图层的IR
65
00:03:27,633 --> 00:03:30,399
好了今天的内容呢到这里为止
66
00:03:30,400 --> 00:03:35,200
后面想要了解更多AI编译器的内容请关注这门课程
67
00:03:35,200 --> 00:03:36,200
谢谢各位