热门标签 | 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,修改数据映射方法。

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


推荐阅读
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 从运维繁忙到屡获殊荣:一位CIO的辉煌转型之路
    企业首席信息官(CIO)常常面临一个棘手的问题:如何有效推动公司的数字化转型?尽管数字化转型已成为企业未来发展的重要共识,但如何具体实施依然是许多CIO面临的重大挑战。在日常运营中,企业需要处理大量的业务问题和制定各种发展规划,这使得数字化转型往往被排在较低的优先级。此外,不断涌现的新问题和新规划也常常打乱原有的计划,进一步增加了转型的难度。 ... [详细]
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社区 版权所有