关于深度学习量化的操作

简介: 0. 简介深度学习中做量化提升运行速度是最常用的方法,尤其是大模型这类非常吃GPU显存的方法。一般是高精度浮点数表示的网络权值以及激活值用低精度(例如8比特定点)来近似表示达到模型轻量化,加速深度学习模型推理,目前8比特推理已经比较成熟。比如int8量化,就是让原来32bit存储的数字映射到8bit存储。int8范围是[-128,127], uint8范围是[0,255]。使用低精度的模型推理的优点:1. 模型存储主要是每个层的权值,量化后模型占用空间小,32比特可以缩减至8比特,并且激活值用8比特后,减小了内存的访问带宽需求。2:单位时间内处理定点运算指令比浮点数运算指令多。1.

0. 简介

深度学习中做量化提升运行速度是最常用的方法,尤其是大模型这类非常吃GPU显存的方法。一般是高精度浮点数表示的网络权值以及激活值用低精度(例如8比特定点)来近似表示达到模型轻量化,加速深度学习模型推理,目前8比特推理已经比较成熟。比如int8量化,就是让原来32bit存储的数字映射到8bit存储。int8范围是[-128,127], uint8范围是[0,255]。

使用低精度的模型推理的优点:1. 模型存储主要是每个层的权值,量化后模型占用空间小,32比特可以缩减至8比特,并且激活值用8比特后,减小了内存的访问带宽需求。2:单位时间内处理定点运算指令比浮点数运算指令多。

1. 量化分类

一般按照量化阶段不同分为后量化和训练时量化,用的比较多的是后量化,像tensorRT和RKNN按照量化映射方法又可以分为对称量化和非对称量化。

1.1 非对称量化(uint8 0-256)

非对称量化需要一个偏移量Z来完成零点的映射,即量化前的零点和量化后的零点不一致。非对称量化的一般公式为:

S=rmax−rminqmax−qminS=qmax−qminrmax−rmin

Z=qmax−Round(rmaxS)Z=qmax−Round(Srmax)

rmaxrmax和rminrmin表示真实数据的最大值和最小值, qmaxqmax和qminqmin表示量化后的最大值和最小值,例如uint8就是0和256。 Round()表示取整,如果是量化为int型。

1.1.1 量化

q=Round(rS+Z)q=Round(Sr+Z)

1.1.2 反量化

r=(q−Z)∗Sr=(q−Z)∗S

1.2 对称量化(int8 -128-127)

对称算法是通过一个收缩因子,将FP32中的最大绝对值映射到8比特的最大值,最大绝对值的负值(注意此值不是fp32的最小值,是最大绝对值的相反数,故对称)映射到8比特的最小值。对称量化在量化前和量化后的零点保持一致,即零点对应,因此无需像非对称量化那样引入一个偏移量Z。 对称量化的一般公式为:

S=∣rmax∣∣qmax∣S=∣qmax∣∣rmax∣

1.2.1量化

q=Round(rS)q=Round(Sr)Round()表示取整,如果是量化为int型。

1.2.2 反量化

r=q∗Sr=q∗S

2. 量化的优缺点

2.1 量化的优点

  1. 减小模型尺寸,如8位整型量化可减少75%的模型大小
  2. 减少存储空间,在边缘侧存储空间不足时更具有意义
  3. 易于在线升级,模型更小意味着更加容易传输
  4. 减少内存耗用,更小的模型大小意味着不需要更多的内存
  5. 加快推理速度,访问一次32位浮点型可以访问四次int8整型,整型运算比浮点型运算更快
  6. 减少设备功耗,内存耗用少了推理速度快了自然减少了设备功耗
  7. 支持微处理器,有些微处理器属于8位的,低功耗运行浮点运算速度慢,需要进行8bit量化

2.2 量化的缺点

  1. 模型量化增加了操作复杂度,在量化时需要做一些特殊的处理,否则精度损失更严重
  2. 模型量化会损失一定的精度,虽然在微调后可以减少精度损失,但推理精度确实下降

3. 对称和非对称使用

对称量化无需引入偏移量Z,因此计算量低,缺点是量化后的数据是非饱和的,即有一部分区域不存在量化的数据。

非对称量化因为额外引入了一个偏移量来修正零点,因此需要的计算量会大一点。优点是其量化后的数据是饱和的,即量化前的最小值对应量化范围的最小值,量化后的最大值对应量化范围的最大值。

对于fp32的值若均匀分布在0左右,映射后的值也会均匀分布,若fp32的值分布不均匀,映射后不能充分利用。所以非对称可以处理好FP32数据分布不均匀的情况

若对称算法产生的量化后数据很多都是在【0,127】内,左边的范围利用很少,减弱了量化数据的表示能力,影响模型精度。

此外还有很多其他的魔改版本,比如激活值饱和量化,通过选择合适的阈值T来将一些范围利用少的情况去除,然后再做对称量化。从而也实现对应的饱和量化的操作。下图为魔改版本激活值饱和量化(右图),选择合适的阈值T。以及原始版本权值非饱和量化(左图)

相关文章
|
机器学习/深度学习 人工智能 算法
Nature:科学家首次利用深度学习量化人类意识
Nature:科学家首次利用深度学习量化人类意识
134 0
|
机器学习/深度学习 存储 算法
【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述
【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述
1530 0
【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述
|
机器学习/深度学习 算法 BI
AQN:一种通过交替量化对深度学习模型压缩以及加速推理的方法
本文提供了一种对深度学习模型量化压缩以及加速推理的方法
6671 0
|
机器学习/深度学习 人工智能 算法
11月2日云栖精选夜读:BNN - 基于low-bits量化压缩的跨平台深度学习框架
本文介绍阿里IDST部门研发、基于low-bits量化压缩的跨平台深度学习框架BNN。BNN可以在算法精度几乎无损的前提下,将模型大小压缩40-100倍,同时获得2-3倍的加速效果。
4851 0
|
4天前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
37 8
|
3天前
|
机器学习/深度学习 监控 自动驾驶
深度学习在图像识别中的应用与挑战
本文探讨了深度学习在图像识别领域的应用现状,分析了其面临的主要技术挑战和解决方案。通过对比传统方法和深度学习模型的优势,揭示了深度学习如何推动图像识别技术的发展,并展望了未来的研究方向。
|
1天前
|
机器学习/深度学习 人工智能 算法
探索深度学习在图像识别中的应用与挑战
【10月更文挑战第28天】 本文深入探讨了深度学习技术,特别是卷积神经网络(CNN)在图像识别领域的应用及其面临的主要挑战。通过分析CNN的工作原理和架构设计,揭示了其在处理大规模图像数据时的优势。同时,本文也讨论了当前深度学习模型在图像识别任务中遇到的一些关键问题,如过拟合、数据不平衡以及计算资源的需求等,并提出了相应的解决策略。此外,文章还展望了未来深度学习技术在图像识别领域的发展方向,包括模型优化、算法创新及应用场景的拓展。
11 1
|
7天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第22天】 本文深入探讨了深度学习在图像识别领域的应用,分析了其技术原理、优势以及面临的挑战。通过实例展示了深度学习如何推动图像识别技术的发展,并对未来趋势进行了展望。
22 5
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用与挑战
【10月更文挑战第20天】 随着人工智能技术的不断发展,深度学习已经在许多领域展现出强大的应用潜力。本文将探讨深度学习在图像识别领域的应用,以及面临的挑战和可能的解决方案。通过分析现有的研究成果和技术趋势,我们可以更好地理解深度学习在图像识别中的潜力和局限性,为未来的研究和应用提供参考。
33 7
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习在图像识别中的革命性应用
本文探讨了深度学习技术在图像识别领域中的应用,重点分析了卷积神经网络(CNN)的工作原理及其对图像处理的影响。通过对比传统图像识别方法和深度学习方法,展示了深度学习如何显著提高了图像识别的准确率和效率。文章还简要介绍了一些著名的深度学习框架,如TensorFlow和PyTorch,并讨论了它们在实际应用中的优势。