forked from chenzomi12/AISystem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03.srt
1024 lines (768 loc) · 19.8 KB
/
03.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
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1
00:00:00,000 --> 00:00:06,016
字幕生成:Galaxies 字幕校对:Not_Ur_77
2
00:00:06,016 --> 00:00:07,500
Hello 大家好,我是ZOMI
3
00:00:07,500 --> 00:00:13,500
现在的位置处于推理引擎这个系列里面的模型压缩
4
00:00:13,500 --> 00:00:16,700
今天我要给大家去带来一个新的内容
5
00:00:16,700 --> 00:00:18,500
应该不算新的内容了
6
00:00:18,500 --> 00:00:22,500
在量化里面再进一步的去展开感知量化训练
7
00:00:22,500 --> 00:00:25,700
也就是大家经常说到的QAT
8
00:00:26,200 --> 00:00:31,700
现在来到了低比特量化这个系列课程里面的第二个内容
9
00:00:31,700 --> 00:00:34,700
感知量化QAT
10
00:00:34,700 --> 00:00:39,200
下面再来看一下在整个推理引擎架构里面
11
00:00:39,200 --> 00:00:42,200
感知量化其实处于这个阶段
12
00:00:42,200 --> 00:00:46,200
讲错了,量化是处于这个阶段
13
00:00:46,200 --> 00:00:49,200
但是感知量化是跟训练强相关的
14
00:00:49,200 --> 00:00:51,700
所以这个内容是看不到的
15
00:00:52,200 --> 00:00:54,700
在AI框架上面的一个特性
16
00:00:54,700 --> 00:00:57,700
例如PyTorch也有自己的感知量化训练的一些特性
17
00:00:57,700 --> 00:01:01,700
还有MindSpore也会推出自己感知量化训练的特性
18
00:01:01,700 --> 00:01:07,200
接下来来一起看一下感知量化训练 它到底是怎么实现的
19
00:01:07,200 --> 00:01:11,700
简单的一句话就是会在一个正常的网络模型栏中
20
00:01:11,700 --> 00:01:15,200
去插入一些伪量化的算子或者节点
21
00:01:15,200 --> 00:01:17,700
这个节点叫做FakeQuant
22
00:01:17,700 --> 00:01:19,200
因为它不是真正的量化
23
00:01:19,200 --> 00:01:23,700
而是用来模拟量化的时候引入的一些误差
24
00:01:23,700 --> 00:01:25,700
而在真正端侧推理的时候
25
00:01:25,700 --> 00:01:29,200
需要把这些FakeQuant去进行一个折叠
26
00:01:29,200 --> 00:01:30,700
那为啥叫折叠呢?
27
00:01:30,700 --> 00:01:33,200
是因为它确实只剩下一些常量
28
00:01:33,200 --> 00:01:35,700
需要对这些常量进行折叠
29
00:01:35,700 --> 00:01:39,700
然后把相关的属性或者信息变成Tensor的信息
30
00:01:39,700 --> 00:01:41,700
最后再进行一个推理
31
00:01:41,700 --> 00:01:44,200
那看看下面这个图
32
00:01:44,200 --> 00:01:46,700
下面这个是一个计算图
33
00:01:46,700 --> 00:01:48,700
输进去的是一些数据
34
00:01:48,700 --> 00:01:52,200
需要在输进去的数据的时候插入一个伪量化的算子
35
00:01:52,200 --> 00:01:56,700
接着可能还需要对权重插入一个伪量化的算子
36
00:01:56,700 --> 00:02:01,200
完成卷积计算之后就会给一个NB层进行一个学习
37
00:02:01,200 --> 00:02:04,200
学习完之后就真正的去进入了一个ReLU了
38
00:02:04,200 --> 00:02:08,200
在出去ReLU之前也会插一个伪量化的节点在这里面
39
00:02:08,200 --> 00:02:11,700
像这种确实在一个正常的计算图里面
40
00:02:11,700 --> 00:02:13,700
去插入各种伪量化的节点
41
00:02:13,700 --> 00:02:16,700
这种方式叫做QAT
42
00:02:17,200 --> 00:02:22,200
接下来去看看刚才大量的去提到一些伪量化的节点Fake Quant
43
00:02:22,200 --> 00:02:25,200
那Fake Quant的节点有什幺用吗?
44
00:02:25,200 --> 00:02:27,200
下面就有两个比较大的作用了
45
00:02:27,200 --> 00:02:29,700
这也是伪量化节点的一个具体的作用
46
00:02:29,700 --> 00:02:33,700
首先这个伪量化节点主要是找到输入数据的分布
47
00:02:33,700 --> 00:02:38,200
也就是找到数据的一个最大值和最小值
48
00:02:38,200 --> 00:02:41,700
第二个点就是刚才简单的提到过的
49
00:02:41,700 --> 00:02:43,200
它去模拟量化操作
50
00:02:43,200 --> 00:02:50,200
就是把一些FP32量化到INT8这种低比特的时候的一些精度的损失
51
00:02:50,200 --> 00:02:53,700
把这些损失在网络模型训练或者Fine Tuning的时候
52
00:02:53,700 --> 00:02:57,700
作用到整个网络模型当中传递给损失函数
53
00:02:57,700 --> 00:02:58,700
就是Loss
54
00:02:58,700 --> 00:03:01,700
让优化器在训练或者Fine Tuning的过程当中
55
00:03:01,700 --> 00:03:07,700
对因为量化所造成的损失进行一个优化和学习
56
00:03:07,700 --> 00:03:14,700
那至于第二个就是真正的一个伪量化节点或者伪量化算子它的核心作用了
57
00:03:14,700 --> 00:03:21,700
下面去看看伪量化节点的一个正向传播具体是怎么算的
58
00:03:21,700 --> 00:03:25,700
其实为了求出网络模型的输入
59
00:03:25,700 --> 00:03:28,700
就是Tensor一个比较精确的min和max
60
00:03:28,700 --> 00:03:33,700
所以会在一个网络模型训练的时候插入伪量化节点
61
00:03:33,700 --> 00:03:36,200
也就是需要获取那个计算图
62
00:03:36,200 --> 00:03:40,200
然后对这个计算图进行改造插入希望的节点
63
00:03:40,200 --> 00:03:44,200
然后模拟误差得到数据的分布
64
00:03:44,200 --> 00:03:48,200
而对每一个算子都会去求输入的数据x
65
00:03:48,200 --> 00:03:50,200
它的一个最小值还有最大值
66
00:03:50,200 --> 00:03:53,200
还记得在上一节课里面去讲量化原理的时候
67
00:03:53,200 --> 00:03:55,200
有了最小值和最大值之后
68
00:03:55,200 --> 00:03:58,200
就可以去求量化的scale
69
00:03:58,200 --> 00:04:03,200
通过这个scale就可以把输入数据直接量化成INT8
70
00:04:03,200 --> 00:04:05,700
那正向的forward的时候就会做这个工作
71
00:04:05,700 --> 00:04:07,700
除了记录最大值和最小值
72
00:04:07,700 --> 00:04:11,700
它还要做一个量化模拟的操作
73
00:04:11,700 --> 00:04:15,700
假设之前的数据是一个平滑的数据 类似一条线性的
74
00:04:15,700 --> 00:04:19,700
经过伪量化算子进行模拟的时候就变成了有阶梯形状
75
00:04:19,700 --> 00:04:22,700
把大部分的数据都直接消掉了
76
00:04:22,700 --> 00:04:25,700
从FP32的数据变成INT8的数据
77
00:04:25,700 --> 00:04:28,700
那这个就是伪量化算子的正向传播
78
00:04:28,700 --> 00:04:31,700
有正向是不是应该有反向啊
79
00:04:31,700 --> 00:04:34,700
那现在来看看反向传播
80
00:04:34,700 --> 00:04:36,700
这个伪量化算子具体怎么实现
81
00:04:36,700 --> 00:04:38,700
按照刚才正向传播的公式
82
00:04:38,700 --> 00:04:40,700
如果反向的时候呢
83
00:04:40,700 --> 00:04:42,700
对刚才正向的那条公式求导数
84
00:04:42,700 --> 00:04:44,700
肯定会导致权重为0
85
00:04:44,700 --> 00:04:47,700
权重为0就没有办法去学习了
86
00:04:47,700 --> 00:04:48,700
于是呢反向的时候呢
87
00:04:48,700 --> 00:04:51,700
相当于一个直通的连通器
88
00:04:51,700 --> 00:04:53,700
把delta in直接给delta out
89
00:04:53,700 --> 00:04:55,700
但是有点注意的就是
90
00:04:55,700 --> 00:04:57,700
输入的数据x呢
91
00:04:57,700 --> 00:04:59,700
必须要在量化范围之内
92
00:04:59,700 --> 00:05:01,700
如果不在的把它截断
93
00:05:01,700 --> 00:05:04,700
于是呢最终反向传播的fake quart呢
94
00:05:04,700 --> 00:05:09,700
一般来说都会对它的数据 进行截断式的处理
95
00:05:10,700 --> 00:05:12,700
了解完伪量化算子呢
96
00:05:12,700 --> 00:05:14,700
现在呢伪量化算子
97
00:05:14,700 --> 00:05:17,700
还有一个很重要的工作 就是更新min和max
98
00:05:17,700 --> 00:05:20,700
因为每一次训练每一轮迭代
99
00:05:20,700 --> 00:05:22,700
每一个epoch每个step呢
100
00:05:22,700 --> 00:05:24,700
它都会有不同的min和max
101
00:05:24,700 --> 00:05:26,700
它都有不同的数据的输入
102
00:05:26,700 --> 00:05:30,700
有点类似于BN算子 或者LayerNorm算子呢
103
00:05:30,700 --> 00:05:33,700
去更新beta和gamma的这种方式
104
00:05:33,700 --> 00:05:35,700
通过一个runing min runing max
105
00:05:35,700 --> 00:05:37,700
还有moving min moving max进行计算
106
00:05:37,700 --> 00:05:40,700
如果大家看不懂没关系
107
00:05:40,700 --> 00:05:43,700
去看看BN这个算子呢 怎么去更新beta和gamma的
108
00:05:43,700 --> 00:05:48,700
如果大家确实很有兴趣 去了解伪量化算子 真正的一些代码实现呢
109
00:05:48,700 --> 00:05:51,700
也可以去看一下Pytorch的具体实现
110
00:05:51,700 --> 00:05:53,700
那下面呢去
111
00:05:53,700 --> 00:05:56,700
下面呢让观众提两个问题
112
00:05:57,700 --> 00:05:58,700
ZOMI老师你好啊
113
00:05:58,700 --> 00:06:06,700
我想问一下 在什么地方或者什幺位置去插入FakeQuant伪量化这个节点呢
114
00:06:08,700 --> 00:06:11,700
诶 小新你这个问题确实是灵魂拷问的
115
00:06:11,700 --> 00:06:14,700
刚才只是简单的去给大家讲了
116
00:06:14,700 --> 00:06:17,700
FakeQuant这个伪量化的算子是怎么去实现的
117
00:06:17,700 --> 00:06:20,700
正向怎么把它进行一个伪量化的学习
118
00:06:20,700 --> 00:06:23,700
反向呢怎么对它进行一个截断
119
00:06:23,700 --> 00:06:27,896
那一般来说呢 会在一些密集的计算的算子
120
00:06:27,896 --> 00:06:29,700
说到密集计算算子呢 其实并不多
121
00:06:29,700 --> 00:06:32,700
有点类似于华为昇腾里面的一个Cube 这些算子
122
00:06:32,700 --> 00:06:34,700
举个简单的几个例子
123
00:06:34,700 --> 00:06:39,465
就是GMM矩阵的相乘 还有卷积
124
00:06:39,465 --> 00:06:40,700
那这些呢就是密集计算的算子
125
00:06:40,700 --> 00:06:42,700
另外还会激活算子之后
126
00:06:42,700 --> 00:06:44,700
或者之前进行插入的
127
00:06:44,700 --> 00:06:46,700
最后呢还会在网络模型输入
128
00:06:46,700 --> 00:06:49,700
输出的地方进行插入伪量化算子
129
00:06:49,700 --> 00:06:52,700
下面呢看一个更加具体的例子
130
00:06:52,700 --> 00:06:55,700
那虽然看上去左边的这个图呢很复杂
131
00:06:55,700 --> 00:06:58,700
但实际上啊 这个是一个卷积 BN ReLU
132
00:06:58,700 --> 00:07:01,700
三个简单的算子的一个计算图
133
00:07:01,700 --> 00:07:04,700
因为BN层呢 它有很多的不同的参数
134
00:07:04,700 --> 00:07:06,700
它要更新Gamma了 要更新Beta了
135
00:07:06,700 --> 00:07:08,700
所以你看上去很复杂
136
00:07:08,700 --> 00:07:10,700
插入伪量化算子呢
137
00:07:10,700 --> 00:07:13,700
就会在这个图的input里面插入 在weights里面插入
138
00:07:13,700 --> 00:07:17,700
可能在对W进行输出的时候 插入一个
139
00:07:17,700 --> 00:07:21,700
另外的话 还会对激活后面插入一个
140
00:07:21,700 --> 00:07:23,700
这个呢就是一般的插入方式
141
00:07:23,700 --> 00:07:26,700
值得注意的就是 如果你研究感知量化算法呢
142
00:07:26,700 --> 00:07:30,700
你可能会提出很多不同的插入的方式 去学习
143
00:07:30,700 --> 00:07:33,700
也可能会自己造一个伪量化的算子
144
00:07:33,700 --> 00:07:35,700
或者把伪量化算子呢改掉
145
00:07:35,700 --> 00:07:38,700
那这个呢是最原始 或者最naive的一种方式
146
00:07:39,700 --> 00:07:46,700
好了 刚才只是简单的去给大家讲了 感知量化训练呢 一般的通用性的算法
147
00:07:46,700 --> 00:07:49,700
还讲了伪量化算子是怎么实现的
148
00:07:49,700 --> 00:07:51,700
包括正向反向 另外还有伪量化算子呢
149
00:07:51,700 --> 00:07:53,700
是怎么插入到计算图里面
150
00:07:53,700 --> 00:07:58,700
接下来我想提出几个问题 让大家一起去思考思考
151
00:07:58,700 --> 00:08:04,700
第一个点呢 就是如何平滑的计算伪量化阶段的两个值 Min和Max
152
00:08:04,700 --> 00:08:07,700
刚才提到batch normalization 这种算子
153
00:08:07,700 --> 00:08:09,700
它其实也有很多参数
154
00:08:09,700 --> 00:08:13,700
需要根据输入的数据 还有输出的数据进行学习的
155
00:08:13,700 --> 00:08:17,700
像BN层呢 一般都会有一个平滑计算的过程
156
00:08:17,700 --> 00:08:19,700
在具体算子或者kernel实现的时候呢
157
00:08:19,700 --> 00:08:23,700
就会有一个moving mean moving variance 去进行一个平滑
158
00:08:23,700 --> 00:08:27,700
那另外一点就是 我去看一些论文呢
159
00:08:27,700 --> 00:08:34,700
基本上都会对BN进行一个矫正 而且还会有一个Bessel矫正
160
00:08:34,700 --> 00:08:37,700
为什么需要做这些矫正呢
161
00:08:37,700 --> 00:08:41,700
那这一点呢 其实是跟样本有关系的
162
00:08:41,700 --> 00:08:43,700
我也非常欢迎大家去看一下
163
00:08:43,700 --> 00:08:46,700
或者去搜索一下相关的原理
164
00:08:46,700 --> 00:08:49,700
最后一点呢 如果要对BN进行折叠
165
00:08:49,700 --> 00:08:53,700
那计算公式或者kernel 会不会有新的变化呢
166
00:08:53,700 --> 00:08:57,700
在感知量化训练的过程当中 确实是有的
167
00:08:57,700 --> 00:09:02,700
在真正计算的时候呢 确实需要对它进行一个特殊的插入
168
00:09:02,700 --> 00:09:05,700
可以看到左边呢 这个就是在没有融合之前
169
00:09:05,700 --> 00:09:09,700
右边这个呢 就是在融合之后的 算子融合的过程当中呢
170
00:09:09,700 --> 00:09:11,700
有同学去问我
171
00:09:11,700 --> 00:09:12,700
上面这条公式呢
172
00:09:12,700 --> 00:09:13,700
变成下面这条公式
173
00:09:13,700 --> 00:09:15,700
具体有什么不一样呢
174
00:09:15,700 --> 00:09:18,700
很明显大家看计算图就知道了
175
00:09:18,700 --> 00:09:21,700
整体的计算公式或者整体的计算形态啊
176
00:09:21,700 --> 00:09:23,700
确实改变了很多
177
00:09:23,700 --> 00:09:25,700
回到AI系统
178
00:09:25,700 --> 00:09:27,700
AI框架里面去看一下
179
00:09:27,700 --> 00:09:29,700
QAT的一个工作流程
180
00:09:29,700 --> 00:09:33,700
首先会有很多预训练的模型
181
00:09:33,700 --> 00:09:34,700
或者已经训练好的模型
182
00:09:34,700 --> 00:09:36,700
获取这个计算图之后
183
00:09:36,700 --> 00:09:38,700
需要对网络模型呢
184
00:09:38,700 --> 00:09:39,700
进行一个改造
185
00:09:39,700 --> 00:09:45,700
去插入一些刚才讲到的 伪量化的算子 或者这里面呢 叫做观察算子
186
00:09:45,700 --> 00:09:48,700
那统一称为伪量化算子就好了
187
00:09:48,700 --> 00:09:51,700
另外还要准备一些训练的数据
188
00:09:51,700 --> 00:09:52,700
那这个时候呢
189
00:09:52,700 --> 00:09:55,700
这里面输进去的就是已经经过改造的
190
00:09:55,700 --> 00:09:58,700
插入了伪量化算子之后的一个计算图
191
00:09:58,700 --> 00:09:59,700
另外一边呢
192
00:09:59,700 --> 00:10:01,700
需要Fine Tuning或者Training的数据
193
00:10:01,700 --> 00:10:02,700
接着呢
194
00:10:02,700 --> 00:10:04,700
真正的去执行Training和Fine Tuning
195
00:10:04,700 --> 00:10:05,700
最后呢
196
00:10:05,700 --> 00:10:06,700
在学习的过程当中
197
00:10:06,700 --> 00:10:08,700
就会不断的去学习
198
00:10:08,700 --> 00:10:10,700
因为量化所造成的一些误差
199
00:10:10,700 --> 00:10:11,700
把这些误差呢
200
00:10:11,700 --> 00:10:12,700
通过学习的方式
201
00:10:12,700 --> 00:10:14,700
把它变得更小更好
202
00:10:14,700 --> 00:10:15,700
最后呢
203
00:10:15,700 --> 00:10:17,700
就输出了QAT的网络模型
204
00:10:17,700 --> 00:10:19,700
那这个QAT的网络模型
205
00:10:19,700 --> 00:10:22,700
还真没有办法马上去执行的哦
206
00:10:22,700 --> 00:10:24,700
它要经过推理系统的一个转换模块
207
00:10:24,700 --> 00:10:27,700
然后去掉一些冗余的伪量化的算子
208
00:10:27,700 --> 00:10:29,700
才能够正常的推理
209
00:10:29,700 --> 00:10:30,700
那这一部分呢
210
00:10:30,700 --> 00:10:33,700
会在下一个内容里面去给大家介绍
211
00:10:34,700 --> 00:10:37,700
接下来来聊一聊QAT的衍生研究
212
00:10:37,700 --> 00:10:39,700
那QAT的衍生研究非常多啊
213
00:10:39,700 --> 00:10:40,700
而且这方面呢
214
00:10:40,700 --> 00:10:42,700
确实有很多新的算法
215
00:10:42,700 --> 00:10:43,700
或者新的idea提出
216
00:10:43,700 --> 00:10:45,700
例如好像这篇文章
217
00:10:45,700 --> 00:10:47,700
例如好像这篇文章
218
00:10:47,700 --> 00:10:49,700
中文名我也翻译不出来
219
00:10:49,700 --> 00:10:50,700
它这里面呢
220
00:10:50,700 --> 00:10:52,700
就做了一个新的伪量化的算子
221
00:10:52,700 --> 00:10:53,700
那正向呢
222
00:10:53,700 --> 00:10:55,700
可能跟刚才讲的差不多
223
00:10:55,700 --> 00:10:56,700
但是反向呢
224
00:10:56,700 --> 00:10:57,700
它就不一样了
225
00:10:57,700 --> 00:10:59,700
它不是一个简单的节段
226
00:10:59,700 --> 00:11:00,700
那这种方式呢
227
00:11:00,700 --> 00:11:02,700
就是对伪量化算子进行一个创新的
228
00:11:03,700 --> 00:11:04,700
另外呢
229
00:11:04,700 --> 00:11:06,700
有一些科研类的创新的文章呢
230
00:11:06,700 --> 00:11:08,700
会对计算图啊
231
00:11:08,700 --> 00:11:10,700
或者对量化的流程
232
00:11:10,700 --> 00:11:12,700
进行一个改进
233
00:11:12,700 --> 00:11:13,700
那最后呢
234
00:11:13,700 --> 00:11:14,700
再看一下
235
00:11:14,700 --> 00:11:16,700
其实在做量化的时候呢
236
00:11:16,700 --> 00:11:17,700
刚才只是很笼统的
237
00:11:17,700 --> 00:11:19,700
说伪量化算子呢
238
00:11:19,700 --> 00:11:21,700
只是对输入的数据呢
239
00:11:21,700 --> 00:11:23,700
模拟伪量化的过程当中
240
00:11:23,700 --> 00:11:25,700
但是数据的形态是很多的
241
00:11:25,700 --> 00:11:27,700
有NCHW
242
00:11:27,700 --> 00:11:28,700
那这个时候呢
243
00:11:28,700 --> 00:11:29,700
可以对per-channel进行伪量化
244
00:11:29,700 --> 00:11:30,700
或者per-channel进行量化
245
00:11:30,700 --> 00:11:33,700
也可以对per-tensor进行量化
246
00:11:33,700 --> 00:11:37,700
所以量化的方式和种类 还有不同层次 有非常的多
247
00:11:37,700 --> 00:11:43,700
这里面呢 ZOMI更欢迎大家去看看 相关更多的论文 和最新的量化的研究
248
00:11:45,700 --> 00:11:50,700
最后我非常欢迎大家 去阅读一下 我这里面提到过的一些论文
249
00:11:50,700 --> 00:11:55,700
这里面这些论文呢 也是比较新的 一些关于量化相关的一些论文
250
00:11:55,775 --> 00:11:58,700
好了 今天的内容呢 就到这里为止