forked from chenzomi12/AISystem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04.srt
504 lines (378 loc) · 9.52 KB
/
04.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
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
1
00:00:00,000 --> 00:00:04,594
字幕生成:qiaokai 字幕校对:A是传奇
2
00:00:05,350 --> 00:00:08,640
Hello大家好,我是ZOMI,冷得瑟瑟发抖的ZOMI
3
00:00:08,640 --> 00:00:12,000
大家不要只关注不点赞,也不要只点赞不关注
4
00:00:12,000 --> 00:00:17,440
现在还是在推理引擎模型转换和优化的内容
5
00:00:17,440 --> 00:00:21,080
因为在转换模块确实之前的内容有点多
6
00:00:21,080 --> 00:00:23,240
所以最终还是分成三节内容
7
00:00:23,240 --> 00:00:28,000
今天主要去给大家汇报一下的就是模型转换的整体的流程
8
00:00:28,000 --> 00:00:30,760
看一下之前讲到的一些内容
9
00:00:30,760 --> 00:00:32,360
先来简单的回顾一下
10
00:00:32,360 --> 00:00:35,760
之前去看了一下最基础的挑战和架构
11
00:00:35,760 --> 00:00:38,920
然后看了一下网络模型怎么去反序列化和序列化
12
00:00:38,920 --> 00:00:42,040
接着进入了一个自定义的计算图
13
00:00:42,040 --> 00:00:43,160
自定义完计算图之后
14
00:00:43,160 --> 00:00:46,880
现在来看看整体的转换模块的流程
15
00:00:46,880 --> 00:00:49,360
还有相关的一些技术的细节
16
00:00:51,200 --> 00:00:54,160
下面来到转换模块的最后一个内容
17
00:00:54,360 --> 00:00:57,240
就是模型转换的流程和技术细节
18
00:00:57,360 --> 00:00:59,480
说实话这里面的更多的技术细节
19
00:00:59,480 --> 00:01:01,520
在分散在每一节了
20
00:01:01,520 --> 00:01:04,600
来看一看转换模块主要有两个思路
21
00:01:04,840 --> 00:01:07,040
第一个就是直接转换
22
00:01:07,040 --> 00:01:10,160
第二个就是规范式的一种转换
23
00:01:10,160 --> 00:01:15,160
直接转换看刚才一个转换的架构图可以看到
24
00:01:15,160 --> 00:01:16,920
例如现在以MindSpore为例
25
00:01:17,040 --> 00:01:21,440
把MindSpore通过一个converter转成推理引擎的IR
26
00:01:22,200 --> 00:01:27,000
这种方式就是直接把AI框架的格式转换成为推理引擎的格式
27
00:01:31,800 --> 00:01:36,040
然后让更多的主流的AI框架都对应到格式范围
28
00:01:36,040 --> 00:01:38,360
说白了就是像这个图
29
00:01:38,360 --> 00:01:40,120
架构图又出现了
30
00:01:40,120 --> 00:01:42,760
例如PyTorch它不是直接转PyTorch
31
00:01:42,760 --> 00:01:44,680
而是把PyTorch转成ONNX
32
00:01:44,680 --> 00:01:47,360
或者可以把MindSpore转成ONNX
33
00:01:47,360 --> 00:01:51,760
然后通过ONNX converter这个模块转成推理引擎的IR
34
00:01:51,760 --> 00:01:54,440
这种就是第二种规范性的转换
35
00:01:54,480 --> 00:01:58,400
其实在现在至少在ZOMI了解过的很多的AI框架
36
00:01:58,400 --> 00:02:03,000
基本上两种的转换的方式和转换的技术都是同时支持的
37
00:02:04,120 --> 00:02:07,400
像直接转换它整个算法还是比较清晰的
38
00:02:07,400 --> 00:02:10,400
看一下第一个就是内容的读取
39
00:02:10,400 --> 00:02:13,480
把从不同AI框架生成的一个网络模型
40
00:02:13,920 --> 00:02:16,200
通过识别几个内容非常重要
41
00:02:16,200 --> 00:02:19,480
网络模型的张量的数据的类型和格式
42
00:02:19,480 --> 00:02:21,680
还有算子的类型和参数
43
00:02:21,800 --> 00:02:24,560
另外还有计算图的结构和命名规范
44
00:02:24,560 --> 00:02:27,760
和它们之间的相关的信息进行读取
45
00:02:27,760 --> 00:02:31,800
这几个也是对应于自定义计算图里面的张量
46
00:02:31,800 --> 00:02:36,120
算子还有图三个内容进行一个识别
47
00:02:36,120 --> 00:02:38,680
接着第二步就是格式的转换
48
00:02:38,680 --> 00:02:42,640
格式的转换就是把刚才识别到的一些内容了
49
00:02:42,640 --> 00:02:45,640
其实在识别完之后就变成了
50
00:02:45,640 --> 00:02:48,840
内存的一个对象或者代码具体指向的一个地址
51
00:02:48,960 --> 00:02:52,520
这个时候就可以真正的做一些格式的转换
52
00:02:52,520 --> 00:02:54,520
通过Converter来进行转换
53
00:02:55,160 --> 00:02:58,080
转换之后就是对模型进行保存的保存
54
00:02:58,200 --> 00:03:02,880
可能还会用回PBR或者FB的这种文档的格式
55
00:03:02,880 --> 00:03:05,120
然后用于下一次推理引擎
56
00:03:05,120 --> 00:03:07,680
真正runtime的时候去调用的
57
00:03:09,200 --> 00:03:12,680
像第二种规范式的转换就是ONNX的
58
00:03:12,680 --> 00:03:15,960
确实ONNX是个非常典型的代表
59
00:03:16,280 --> 00:03:19,760
现在看一下ONNX官网的一个AI的定义
60
00:03:20,920 --> 00:03:23,640
下面这个就是ONNX的AI的定义
61
00:03:23,640 --> 00:03:25,280
确实大家也可以去看一看
62
00:03:25,280 --> 00:03:26,760
ONNX的AI跟protobuffer
63
00:03:26,760 --> 00:03:28,880
或者刚才定义的有什么不一样
64
00:03:28,880 --> 00:03:31,680
对于它的网络模型它的定义有什么不同
65
00:03:31,680 --> 00:03:33,840
对于模型的一些可选的参数
66
00:03:33,840 --> 00:03:35,400
还有OP, OP-set
67
00:03:35,400 --> 00:03:38,280
当然还有很多function的功能
68
00:03:38,280 --> 00:03:39,560
还有graph的功能
69
00:03:39,560 --> 00:03:43,760
确实它的定义比刚才讲的要多很多
70
00:03:43,960 --> 00:03:46,640
这里面我就不跟大家一一去介绍了
71
00:03:48,320 --> 00:03:51,400
回到模型转换的一个通用的流程
72
00:03:51,520 --> 00:03:54,480
下面这个图就是整个模型转换的通用流程
73
00:03:54,480 --> 00:03:56,080
不管是直接转换
74
00:03:56,080 --> 00:03:59,280
还是像ONNX的这种规范化的一个格式转换
75
00:03:59,440 --> 00:04:01,640
其实流程还是这一套流程
76
00:04:01,640 --> 00:04:03,720
首先有AI框架
77
00:04:03,720 --> 00:04:05,080
就AI训练好的框架
78
00:04:05,080 --> 00:04:06,440
生成一个计算图
79
00:04:06,640 --> 00:04:07,920
这个生成计算图的功能
80
00:04:08,240 --> 00:04:10,360
主要是AI框架去实现的
81
00:04:10,360 --> 00:04:11,560
在推理引擎
82
00:04:11,560 --> 00:04:14,160
实际上是不感知或者没怎么去接触的
83
00:04:14,160 --> 00:04:17,080
接着真正的在推理引擎里面的converter
84
00:04:17,240 --> 00:04:18,560
主要是三个模块
85
00:04:18,560 --> 00:04:21,120
第一个是做一个算子的对接
86
00:04:21,120 --> 00:04:23,800
需要把计算图里面的IR的算子
87
00:04:23,800 --> 00:04:27,240
或者计算图里面的一些primitive的算子
88
00:04:27,240 --> 00:04:29,640
对接到刚才自定义的一些算子
89
00:04:30,640 --> 00:04:33,240
接着会进行一个具体的格式的转换
90
00:04:33,240 --> 00:04:35,240
就真正的一些工程化的转换
91
00:04:35,240 --> 00:04:38,120
把不同的计算图的IR转成自己的一个IR
92
00:04:38,120 --> 00:04:40,720
最后就是模型的保存与导出
93
00:04:40,800 --> 00:04:41,720
主要是这三步
94
00:04:41,720 --> 00:04:42,920
而这里面的代码量
95
00:04:42,920 --> 00:04:44,680
确实基本上都是一一对应
96
00:04:44,680 --> 00:04:46,320
你要做很多大量的工程
97
00:04:46,320 --> 00:04:48,600
这里面就是大家各位兄弟们
98
00:04:48,600 --> 00:04:52,080
夜以继日去开发的一些工作了
99
00:04:52,080 --> 00:04:54,840
好了今天的内容就到这里为止
100
00:04:54,840 --> 00:04:56,600
简单的回顾一下
101
00:04:58,200 --> 00:04:59,960
今天主要是给大家汇报了一下
102
00:04:59,960 --> 00:05:01,960
整个转换模块最核心的
103
00:05:02,160 --> 00:05:03,960
计算图的一个概念
104
00:05:03,960 --> 00:05:06,720
那计算图更重要的主要有三个模块
105
00:05:07,040 --> 00:05:08,640
计算图的两个基本组成
106
00:05:08,880 --> 00:05:09,960
张量和算子
107
00:05:09,960 --> 00:05:11,760
另外还有图相关的信息
108
00:05:11,760 --> 00:05:13,880
就完成了整个计算图的定义
109
00:05:14,720 --> 00:05:15,720
中间还穿插了
110
00:05:15,720 --> 00:05:16,720
AI框架的计算图
111
00:05:16,720 --> 00:05:18,480
跟推理引擎的计算图的区别
112
00:05:18,840 --> 00:05:20,200
接着去看了一下
113
00:05:20,200 --> 00:05:22,280
转换模块的一个整体的流程
114
00:05:22,720 --> 00:05:25,400
还有它的技术的细节和算法的流程
115
00:05:25,680 --> 00:05:26,480
讲完这个之后
116
00:05:26,680 --> 00:05:29,320
整个转换模块基本上就结束了
117
00:05:30,000 --> 00:05:31,360
将会在下一个内容里面
118
00:05:31,520 --> 00:05:35,160
去给大家汇报一下图优化的相关的功能
119
00:05:35,160 --> 00:05:38,520
这些功能也是在AI编辑里面比较像的
120
00:05:38,560 --> 00:05:41,320
所以后面应该会过得稍微快一点点
121
00:05:41,640 --> 00:05:42,200
谢谢各位
122
00:05:42,200 --> 00:05:43,000
拜了个拜
123
00:05:44,240 --> 00:05:45,840
卷的不行了
124
00:05:45,840 --> 00:05:47,280
记得一键三连加关注
125
00:05:47,720 --> 00:05:50,680
所有的内容都会开源在下面这条链接里面
126
00:05:51,320 --> 00:05:52,000
拜了个拜