Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TinyML-4:(Quantization) 为什么int8足够用于ML

TinyML-4:(Quantization) 为什么int8足够用于ML

原创
作者头像
flavorfan
修改于 2021-01-10 12:06:59
修改于 2021-01-10 12:06:59
1.9K0
举报
文章被收录于专栏:范传康的专栏范传康的专栏

TF-Lite 量化(Quantization )由来

当神经网络最初被开发时,最大的挑战是使它们能够工作!这意味着训练期间的准确性和速度是重中之重。使用浮点算术是保持精度的最简单方法,并且GPU具备完善的设备来加速这些计算,因此自然不会对其他数字格式给予太多关注。

如今,实际上已经在商业应用程序中部署了许多模型。训练的计算需求随着研究人员的数量而增长,但是推理所需的周期与用户数量成比例地扩大。这意味着推理效率已成为部署ML解决方案(包括TinyML)的一个紧迫问题。

这就是Quantization量化的用处。这是一个概括性的术语,涵盖了许多不同的技术来存储数字并以比32位浮点数更紧凑的格式对其进行计算。

量化(Quantization )为什么能起作用

神经网络通过随机梯度下降进行训练;在weights上施加许多微小的推动力。这些小增量通常需要浮点精度才能起作用(尽管也有研究工作在这里使用量化表示形式),否则,可能会因为“vanishing gradients”而陷入困境。

采用预先训练的模型并进行推理非常不同。深度网络的神奇特性之一是,它们可以很好地应对输入中的高水平噪声。如果您想识别刚刚拍摄的照片中的物体,则网络必须忽略所有CCD噪声,照明变化以及该物体与以前看到的训练示例之间的其他不必要的差异,并着重于重要相反。这种能力意味着他们似乎将低精度计算视为噪声的另一个来源,即使使用包含较少信息的数字格式,它们仍然可以产生准确的结果。

可以使用八位参数和中间缓冲区(而不是全精度的32位浮点值)运行许多神经网络,并且最终精度不会受到明显损失。有时可能会损失一些准确性,但是通常可以从性能延迟和内存带宽方面获得收益。

为什么要量化?

神经网络模型可能会占用大量磁盘空间,例如原始的AlexNet以float格式超过200 MB。weights几乎占据了所有尺寸,因为单个模型中通常有数以百万计的weights。由于它们的浮点数略有不同,因此简单的压缩格式(如“ zip”)无法很好地对其进行压缩。但是,它们以较大的层排列,并且在每一层中,权重倾向于在一定范围内(例如-3.0到6.0)正态分布。

量化的最简单动机是通过存储每一层的最小值和最大值来缩小文件大小,然后将每个浮点值压缩为一个八位整数,该整数表示该范围内256个线性集合中最接近的实数。例如,在-3.0到6.0范围内,0字节表示-3.0,255表示6.0,而128表示1.5。这意味着您可以使用磁盘上缩小了75%的文件,然后在加载后将其转换回浮点格式,以便现有浮点代码可以正常工作而无需进行任何更改。

image.png
image.png

例如,这是AlexNet的网络分配权重。它是一个直方图,显示大部分重量值,实际上就是所有这些条形,都聚集在一起形成两个巨大的肿块。这不是非常广泛的分布,而是相当狭窄的分布。因此,实际上可以采用int8在有限的范围内表达它们。

进行量化的另一个原因是,通过完全使用八位输入和输出运行推理计算,可以减少进行推理计算所需的计算资源。这要困难得多,因为它需要在您进行计算的任何地方进行更改,但是会提供很多潜在的回报。提取8位值仅需要浮点数的25%的内存带宽,因此您将更好地利用缓存并避免出现RAM访问瓶颈。您通常还可以使用硬件加速的单指令多数据(SIMD)操作,每个时钟周期执行更多操作。在某些情况下,您会提供数字信号处理器(DSP)芯片,该芯片也可以加速八位计算,这可以提供很多优势。

将计算移至八位将有助于您更快地运行模型,并使用较少的功率,这在移动设备上尤其重要。它还为许多无法高效运行浮点代码的嵌入式系统打开了大门,因此它可以在TinyML世界中启用许多应用程序。

对于TinyML量化带来的优势

1) size

Storage

image.png
image.png

存储大小至关重要。如NRF52840微控制器上的存储大小是1兆字节的大小。例如MobileNet模型,是视觉任务中经常使用的东西,往往约为几兆字节。但是典型的微控制器只有1兆字节,我们甚至不能在设备上存储它。如果可以采用32位模型并将其简化为8位模型例如,每个权重用8位而不是32位表示,那么内存就会自动减少4倍。安装到设备上成为可能。

RAM Size

image.png
image.png

TinyML在嵌入式上设备上运行时,应用程序由机器学习任务和非机器学习任务组成,这些都要占用RAM空间。如图所示,一个典型的TinyML应用的RAM空间占用,橙色的Tensorflow micro对战,红色的model只占很小的比例。所以必须压缩模型,能够在RAM中得以容纳运行。

2)Latency

image.png
image.png

于浮点计算相比,整数计算可能只要1-2指令周期,二浮点计算往往需要10-15个指令周期;计算性能需求方面几乎相差一个数量级,所以把模型从浮点值转为更易于计算的int8可以带来性能的巨大提升。

同时,浮点计算需要花费更长的时间,需要更多的电量。切换到int8,可以降低功率,这是相当可观的。

image.png
image.png

上图的所有三个模型,代表int8模型的绿色条都短得多。原因是因为该算法实际上运行得更快。该模型的延迟要好得多。

3) Portablility

image.png
image.png

TinyML的一个关键因素是是可移植性。低成本的mcu,通常不支持浮点,如果一个模型推理需要浮点支持,无形降低了模型可移植的范围。另外为了嵌入式系统成本较低,并且保持在较低功耗水平,一般通过删除浮点单元之类的功能。

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【云+社区年度征文】TinyML实践-2:How TinyML Works?
对于Tensorflow最大需求是能够在桌面系统中训练并运行模型,这种需求影响了很多设计决策,例如为了更低的延迟和更多的功能而增加可执行文件的大小。云端服务器上,RAM以GB为衡量单位,存储空间以TB为单位,几百兆字节的二进制文件通常不是问题。
flavorfan
2020/12/07
1.9K0
【云+社区年度征文】TinyML实践-2:How TinyML Works?
TinyML-5:TFLite Quantization背后的运行机制
上一篇文章描述了为什么quantization 量化的int8足够运行推理,以及Quantization量化对TinyML的重要性,但是没有深入说明Quantization的实现机制,本篇博文打算从TFlite的案例代码切入,从代码的Optimize选项展开讲TFLite背后Quantization的PTQ,QAT技术等。
flavorfan
2021/01/17
2.5K0
TinyML-5:TFLite Quantization背后的运行机制
深度学习算法优化系列三 | Google CVPR2018 int8量化算法
这是Google在CVPR 2018上发表的一篇int8量化的论文,题目为《Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》。也是入门量化最经典的论文之一。论文介绍了一种只使用整数运算的量化方式,相比于浮点数运算效率更高。一起先来看看这篇论文吧。论文的axriv地址可以在附录中找到。
BBuf
2019/12/27
2.7K0
深度学习算法优化系列三 | Google CVPR2018 int8量化算法
TensorFlow下构建高性能神经网络模型的最佳实践
作者 | 李嘉璇 责编 | 何永灿 随着神经网络算法在图像、语音等领域都大幅度超越传统算法,但在应用到实际项目中却面临两个问题:计算量巨大及模型体积过大,不利于移动端和嵌入式的场景;模型内存占用过大,导致功耗和电量消耗过高。因此,如何对神经网络模型进行优化,在尽可能不损失精度的情况下,减小模型的体积,并且计算量也降低,就是我们将深度学习在更广泛的场景下应用时要解决的问题。 加速神经网络模型计算的方向 在移动端或者嵌入式设备上应用深度学习,有两种方式:一是将模型运行在云端服务器上,向服务器发送请求,接收服务器
用户1737318
2018/07/20
1.2K0
[AI学习笔记]DeepSeek 量化压缩实战:INT8 精度保持方案详解
随着人工智能技术的飞速发展,深度学习模型在各个领域的应用越来越广泛。然而,这些模型通常具有庞大的参数规模和高计算复杂度,导致在实际部署和应用中面临诸多挑战:
数字扫地僧
2025/03/27
4514
[AI学习笔记]DeepSeek 量化压缩实战:INT8 精度保持方案详解
边缘AI新方法TinyML,超低功耗,存储占用KB计,在边缘设备上进行机器学习
本文关于微型机器学习系列文章的第一篇,旨在向读者介绍微型机器学习的概念及其未来的潜力。后续文章将深入讨论特定应用、实现和相关教程。
机器之心
2020/11/04
8961
边缘AI新方法TinyML,超低功耗,存储占用KB计,在边缘设备上进行机器学习
终端遇到AI:TinyML如何拓展端侧人工智能和LPWAN的“新疆界”
TinyML无疑大大拓展了机器学习和嵌入式应用的疆界。自此,机器学习不再囿于云端超级计算机,而是可以被隐藏于众多小到可以忽略的电子零件中;嵌入式应用也不再局限于简单的信号处理,而是可以“看懂”“听懂”“感受到”周围的世界。
ZETA开发者
2021/03/09
6660
深度学习Int8的部署推理原理和经验验证
论文出处:《Integer Quantization for Deep Learning Inference Principles and Empirical Evaluation》 时间:2020.April 单位:NVIDIA
BBuf
2022/05/27
2.1K0
深度学习Int8的部署推理原理和经验验证
INT8量化训练
【GiantPandaCV导读】本文聊了两篇做INT8量化训练的文章,量化训练说的与quantization-aware Training有区别,量化训练指的是在模型训练的前向传播和后向传播都有INT8量化。两篇文章都是基于对梯度构建分析方程求解得到解决量化训练会引起的训练崩溃和精度损失严重的情况。
BBuf
2021/04/30
1.1K0
LLM 推理和应用 开源框架梳理
之前对LLM 推理和应用了解不多,因此抽时间梳理了一下,我们从模型量化,模型推理,以及开发平台等三个层面来梳理分析。
JadePeng
2024/03/13
2K0
LLM 推理和应用 开源框架梳理
英伟达首席科学家:5nm实验芯片用INT4达到INT8的精度,每瓦运算速度可达H100的十倍
在IEEE计算机运算研讨会上,他介绍了一种实验性5nm芯片,可以混合使用8位与4位格式,并且在4位上得到近似8位的精度。
量子位
2022/12/13
9200
英伟达首席科学家:5nm实验芯片用INT4达到INT8的精度,每瓦运算速度可达H100的十倍
【AI系统】低比特量化原理
计算机里面数值有很多种表示方式,如浮点表示的 FP32、FP16,整数表示的 INT32、INT16、INT8,量化一般是将 FP32、FP16 降低为 INT8 甚至 INT4 等低比特表示。
用户11307734
2024/12/05
2110
INT8量化训练
【导读】本文聊了两篇做INT8量化训练的文章,量化训练说的与quantization-aware Training有区别,量化训练指的是在模型训练的前向传播和后向传播都有INT8量化。两篇文章都是基于对梯度构建分析方程求解得到解决量化训练会引起的训练崩溃和精度损失严重的情况。
LoBob
2021/06/06
1.3K0
INT8量化训练
低功耗、高精度,PowerYOLO 在动态视觉传感器上的高性能检测 !
基于机器学习算法的视觉系统已经成为作者生活中许多领域的标准:在提供娱乐的应用和设备(智能照片和视频处理、增强/虚拟现实)中,在监控和安全系统以及自动驾驶汽车中,或先进的驾驶员辅助系统中。
未来先知
2024/08/08
2610
低功耗、高精度,PowerYOLO 在动态视觉传感器上的高性能检测 !
学习笔记TF066 : TensorFlow 移动端应用,iOS、Android系统实践
TensorFlow对Android、iOS、树莓派都提供移动端支持。 移动端应用原理。移动端、嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应;二在本地运行模型,
利炳根
2017/11/14
3.2K0
深入了解NNIE量化技术
【GiantPandaCV导语】这篇文章对量化技术做了概要的介绍,由原理推导,验证实现了海思NNIE的量化算法。最后,作者还尝试了使用Pytorch对训练感知量化算法的进行复现,使其不依赖固定Cuda版本,并且可以使用多卡进行训练,内容非常硬核,具体请看文章。本文同步发表于知乎,地址为:https://zhuanlan.zhihu.com/p/223018242 。文末送出4本《机器学习与深度学习算法基础》书籍,欢迎评论区留言抽奖。
BBuf
2020/09/27
3.4K0
深入了解NNIE量化技术
ICCV2019 高通Data-Free Quantization论文解读
https://openaccess.thecvf.com/content_ICCV_2019/papers/Nagel_Data-Free_Quantization_Through_Weight_Equalization_and_Bias_Correction_ICCV_2019_paper.pdf
BBuf
2020/08/04
1.3K0
ICCV2019 高通Data-Free Quantization论文解读
INT4量化用于目标检测
【GiantPandaCV】文章2019 CVPR,讲的是Int 4量化用于目标检测,主要是工程化的一些trick。
BBuf
2021/03/24
1.1K0
INT4量化用于目标检测
【YOLOv5】【模型压缩与加速】【量化】FP32、FP16、INT8
量化是将模型参数的存储类型从高精度存储降到低精度存储,从而达到减小模型体积大小、加快模型推理速度的效果。
叶茂林
2023/11/13
2.4K0
【YOLOv5】【模型压缩与加速】【量化】FP32、FP16、INT8
DeepSeek模型:从压缩到实战,性能飞升全攻略(2/18)
摘要:随着深度学习模型在实际应用中的广泛部署,模型的计算资源消耗和推理速度成为关键问题。本文以 DeepSeek 模型为例,详细探讨了模型压缩与加速的实战方法,包括知识蒸馏、量化部署以及移动端推理性能优化。首先,介绍了知识蒸馏技术在轻量化模型中的应用,通过教师 - 学生模型架构,将复杂模型的知识迁移到轻量化模型中,显著提升了模型的性能。其次,详细阐述了量化部署的流程,包括 TensorRT 和 OpenVINO 的适配方法,通过量化技术优化模型的精度和推理速度。最后,对比了 CPU、GPU 和 NPU 在移动端推理中的性能表现,提出了针对不同硬件的优化策略,并通过实验验证了优化后的性能提升。本文的研究结果表明,通过综合应用知识蒸馏、量化部署和硬件优化,可以在保持较高模型精度的同时,显著提高推理速度,降低计算资源消耗,为深度学习模型的实际部署提供了有价值的参考。
正在走向自律
2025/02/14
5690
DeepSeek模型:从压缩到实战,性能飞升全攻略(2/18)
推荐阅读
相关推荐
【云+社区年度征文】TinyML实践-2:How TinyML Works?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档