神经网络模型量化综述(下)

本文详细探讨了神经网络模型的整数量化,包括量化基础、训练后量化(PTQ)、提高量化精度的方法以及推荐的量化流程。重点介绍了INT8量化中的非对称量化、对称量化以及TensorRT的量化策略,强调了校准过程对模型精度的重要性。文章还比较了不同校准方法,如最大值、熵和百分位数,以及权重量化和激活量化的最佳实践。
摘要由CSDN通过智能技术生成

通过训练,神经网络就可以使用更低精度的数据格式(包括浮点、定点和整数)进行推理。低精度数据格式提供了几个性能优势:

  • 许多处理器通过 low-bit 格式提供更高吞吐量的数学管道,这可以加快计算密集型的运算,如卷积和矩阵乘法;
  • 低精度的数据格式可以减少了内存带宽压力,提高了带宽有限计算的性能;
  • 低精度的数据格式可以降低内存大小的需求,这可以提高缓存利用率以及内存系统操作的其他方面。

本文主要研究神经网络模型推理的整数量化,其中网络模型在推理时使用整数权重和激活。表 1 列出了 NVIDIA Turing GPU 体系结构中各种数据类型相对的张量运算吞吐量和带宽减少倍数。与 FP32 中的相同操作相比,在 INT8 类型上执行的数学密集型张量运算的速度可以提高 16 倍。与 FP32 数据类型相比,受内存限制的运算,INT8 可以提高 4 倍的速度,因为它的位数更小。其他处理器,如 TPU,带有 VNNI 指令的英特尔 CPU 和许多新兴的加速器设计都为 INT8 操作提供了显著的加速。

表 1 NVIDIA Turing GPU 架构中张量运算的低精度数据类型的优势

1. 量化基础

均匀量化可分为两步:

  • 首先,选择要量化的实数的范围,限制在该范围之外的值;
  • 其次,将实值映射到可由量化表示的相应位宽的整数(将每个映射的实值四舍五入到最接近的整数值)。

在预先训练的浮点神经网络中启用整数运算需要两个基本操作:

  • 将实数转换为量化的整数表示(例如从 FP32 到 INT8);
  • 将数字从量化的整数表示转换为实数(例如从 INT32 转换为 FP16)。

1.1 映射范围

 [β,α]为选择用于量化的可表示实值的范围, b为有符号整数表示的位宽。均匀量化将输入值 xϵ[β,α] 转换为 [-2b-1,2b-1-1] 整数范围内,其中超出范围的输入被截断到最近边界值。由于我们只考虑均匀变换,变换函数只有两种选择:f(x)=sx+z 及其特殊情形 f(x)=sx,其中 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值