热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SparsityQuantization之自我理解

Sparsity&Quantization之自我理解SparsityQuantizationDNN的最初的动力是以precise为中心,但随着DNN在Edge的推广&


Sparsity & Quantization 之自我理解

    • Sparsity
    • Quantization



DNN的最初的动力是以precise为中心,但随着DNN在Edge的推广,Latency和Throuput则成了inference过程中关心的问题;为了后者,即使损失些精度,都是可以接受的。

Inference的时间消耗主要分两部分: Computing 和 Data move。如何在这两部分节约时间,则就各显神通。如果就Ineference本身而言,目前常用的方法也就是Sparsity和Quantization。




Sparsity

其中Sparsity处于比较尴尬的位置。公司的VPU处理器的一个卖点就是Sparsity,但是推广时被问得最多的就是Sparsity能带来多大的性能收益。因为DNN在训练阶段,考虑到Edge端资源受限,会采用各种剪枝技术紧凑网络,最后生成的网络weights中很少有能够压缩的成分。至于Activation sparsity,在图像处理方面,少有用武之地。

就Sparsity技术本身而言,能减少数据搬移量(值为0的数据不搬移),且减少数据计算量(值为0的数据不计算),但也需要额外的硬件支撑,并且还需要有额外的meta数据做管理。所以也只有在Sparsity rate达到一定的阀值时,可能才有收益。




Quantization

而Quantization在Edge端则被广泛使用。数据位宽的变小,在Computing 和 Data move这两个方面都会有明显的性能提高,但对网络模型的要求就比较高了。

由于一般的DNN都是float数据类型,为int8/int4等数据类型,常用的做法是用工具将网络模型转换为支持Quantilization的模型。转换的过程,其实就是线性压缩和平移的算术过程。

Quantization有per layer和per channel两种方式,但是基于和normalization同样的道理,per channel的物理意义更清楚。Float转int8所固有的问题也是Quantization的问题,由于表示的数据范围变小,如何做数据映射则成了避不开的问题。这方面的资料挺多,就不展开了,主要提带来的问题。

在VPU上使能一个网络模型时,一般以在CPU的准确度为基准;经过Quantization后,会在VPU上得到自己的准确度。有时两者相差比较大,问题一般就出在min/max超出了阀值;或者某些layer的activation分布得不均匀,无法以线性的方式做压缩。就需要手工调节,修改scale和shift,或者针对特殊layer,修改数据映射方法。

一个比较完备的 神经网络模型量化综述, 记录下来。


推荐阅读
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 技嘉秀高端B450主板:不再支持第七代APU,性价比高且兼容锐龙一代和二代
    在台北电脑展上,技嘉展示了一款高端的B450主板,型号为“b450 aorus pro wi-fi”。该主板具有10+1相供电、散热片覆盖的供电区域和芯片组,以及两个m.2插槽和背部IO挡板。虽然不支持第七代APU bristol ridge,但它兼容锐龙一代和二代,且具有较高的性价比。该主板还配备了音频声卡、Wi-Fi无线网卡等功能,是一款性能出色且设计精良的主板。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在iOS平台中的Metal框架中,对于if语句中的判断条件的限制和处理方式。作者提到了在Metal shader中,判断条件不能写得太长太复杂,否则可能导致程序停留或没有响应。作者还分享了自己的经验,建议在CPU端进行处理,以避免出现问题。 ... [详细]
author-avatar
永恒多一天_313
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有