-
Notifications
You must be signed in to change notification settings - Fork 69
Description
EQ 技术细节答疑
我们最近收到了很多朋友对 EQ 的咨询建议,对大家的关心和建议表示感谢。论文目前不太完善,Motivation 实验对比有所欠缺。我们会考虑在后续的版本做进一步优化,欢迎大家提出更多的建议, 我们会仔细评估后做出修订。我们希望 EQ 能给学术界带来在线性离线量化方案上带来有意义的启发,给工业界在实际的量化部署上带来精度和速度的提升。
EQ 的 Contributions
-
我们提出了一种全新的,有效的同时也非常简单易用的对激活和权重 Scale 优化的策略。对比传统的 TRT 量化方案(这里只讨论Scale 计算部分),我们认为权重和激活的 Scale 调优是有很大提升空间的。我们提出对权重和激活的 Scale 做联合的迭代优化,这里的联合体现在我们交替地对权重和激活scale值进行优化,并且优化的目标对象是卷积后的结果,区别与 TRT 的方案(激活scale单独优化,权重和激活的优化都不考虑卷积的影响的)。最后在整体上,我们对 CNN网络采用了从第一层到最后一层的逐层优化的方案。
-
鉴于 EQ 在 INT7 离线量化下非常好的精度保持,我们提出了 INT7 的推理方案。减少的1 bit 在基于 ARM 平台上的推理中给了我们更大的指令级别的优化空间。我们实现了基于 NCNN 的 INT7 的推理方案。基于我们测试的结果可以在原始 INT8 NCNN 的基础上额外提速 30% 左右(实际不同网络结构会有差异)。
-
我们基于各种模型结构( VGG16, ResNet18, MobileNet v1 )在不同的任务上(分类,检测,识别)对 EQ 进行验证,都取得了很好的效果。我们的实验验证不仅包括论文中公开的公开模型和数据集,同时也有大量的企业级别实际应用的模型和数据集。这充分证明了 EQ 的有效性。
EQ 的疑问有几点做统一回复:
-
Q:相似度度量的问题:在优化激活和权重的 Scale 时, KL 散度、余弦相似度、MSE 到底哪个好?
A:我们并没有应用过 K L散度,因为 EQ 是对卷积后的特征图进行相似度的比较,KL 散度并不是很合适,也不直观。余弦相似度和 MSE 在我们实验中效果很相似,我们之所以选择余弦相似度是因为他统一了量纲在 -1 和 1 之间,方便我们对每层的情况进行比对分析。我们的初衷是希望 EQ 能很好的证明激活和权重的 Scale 在优化上有很大的提升空间,而不仅仅在于度量的选择上的比较。 -
Q:EQ 的 Scale 优化怎么应用到实际的推理框架中?
A:EQ 的 Scale 优化方法非常的简单有效,几乎可以零成本的嵌入到各种线性离线量化的工具中。这是 EQ 非常大的优势。实际上我们也是这么做的,我们很方便的将优化后的 Scale 嵌入到了 NCNN 的 Scale 文件(即 Calibration.table)中, TRT 等离线量化工具也暴露了相关的接口。