Skip to content

EasyQuant 技术细节答疑 #3

@wonderDiWu

Description

@wonderDiWu

EQ 技术细节答疑

我们最近收到了很多朋友对 EQ 的咨询建议,对大家的关心和建议表示感谢。论文目前不太完善,Motivation 实验对比有所欠缺。我们会考虑在后续的版本做进一步优化,欢迎大家提出更多的建议, 我们会仔细评估后做出修订。我们希望 EQ 能给学术界带来在线性离线量化方案上带来有意义的启发,给工业界在实际的量化部署上带来精度和速度的提升。

EQ 的 Contributions

  1. 我们提出了一种全新的,有效的同时也非常简单易用的对激活和权重 Scale 优化的策略。对比传统的 TRT 量化方案(这里只讨论Scale 计算部分),我们认为权重和激活的 Scale 调优是有很大提升空间的。我们提出对权重和激活的 Scale 做联合的迭代优化,这里的联合体现在我们交替地对权重和激活scale值进行优化,并且优化的目标对象是卷积后的结果,区别与 TRT 的方案(激活scale单独优化,权重和激活的优化都不考虑卷积的影响的)。最后在整体上,我们对 CNN网络采用了从第一层到最后一层的逐层优化的方案。

  2. 鉴于 EQ 在 INT7 离线量化下非常好的精度保持,我们提出了 INT7 的推理方案。减少的1 bit 在基于 ARM 平台上的推理中给了我们更大的指令级别的优化空间。我们实现了基于 NCNN 的 INT7 的推理方案。基于我们测试的结果可以在原始 INT8 NCNN 的基础上额外提速 30% 左右(实际不同网络结构会有差异)。

  3. 我们基于各种模型结构( VGG16, ResNet18, MobileNet v1 )在不同的任务上(分类,检测,识别)对 EQ 进行验证,都取得了很好的效果。我们的实验验证不仅包括论文中公开的公开模型和数据集,同时也有大量的企业级别实际应用的模型和数据集。这充分证明了 EQ 的有效性。

EQ 的疑问有几点做统一回复:

  1. Q:相似度度量的问题:在优化激活和权重的 Scale 时, KL 散度、余弦相似度、MSE 到底哪个好?
    A:我们并没有应用过 K L散度,因为 EQ 是对卷积后的特征图进行相似度的比较,KL 散度并不是很合适,也不直观。余弦相似度和 MSE 在我们实验中效果很相似,我们之所以选择余弦相似度是因为他统一了量纲在 -1 和 1 之间,方便我们对每层的情况进行比对分析。我们的初衷是希望 EQ 能很好的证明激活和权重的 Scale 在优化上有很大的提升空间,而不仅仅在于度量的选择上的比较。

  2. Q:EQ 的 Scale 优化怎么应用到实际的推理框架中?
    A:EQ 的 Scale 优化方法非常的简单有效,几乎可以零成本的嵌入到各种线性离线量化的工具中。这是 EQ 非常大的优势。实际上我们也是这么做的,我们很方便的将优化后的 Scale 嵌入到了 NCNN 的 Scale 文件(即 Calibration.table)中, TRT 等离线量化工具也暴露了相关的接口。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions