民政局两学一做专题网站,做美食网站的需求,wordpress断点续传,百度指数是啥1.量化简介
量化主要是一种加速推理的技术#xff0c;量化运算符仅支持前向传递。量化是指使用精度较低的数据进行计算和内存访问的技术#xff0c;与浮点实现相比#xff0c;通常是 int8。这可以在几个重要领 (1).域实现性能提升#xff1a; (2).模型尺寸缩小 4 倍#…1.量化简介
量化主要是一种加速推理的技术量化运算符仅支持前向传递。量化是指使用精度较低的数据进行计算和内存访问的技术与浮点实现相比通常是 int8。这可以在几个重要领 (1).域实现性能提升 (2).模型尺寸缩小 4 倍 (3).内存带宽减少 2-4 倍 (4).由于内存带宽的节省和使用 int8 算法的更快计算推理速度提高了 2-4 倍确切的加速取决于硬件、运行时和模型。 然而量化并非没有额外代价。从根本上说量化意味着引入近似值由此产生的网络精度略低。这些技术试图最小化完整浮点精度和量化精度之间的差距。
2. 三种量化模式
2.1 Dynamic Quantization - 动态量化
PyTorch支持的最简单的量化方法称为动态量化。这不仅涉及将权重转换为int8正如所有量化变量中所发生的那样而且还涉及在执行计算之前将激活转换为int 8因此为“动态”。因此将使用高效的int8矩阵乘法和卷积实现来执行计算从而实现更快的计算。然而激活是以浮点格式读取和写入内存的。
2.2 Post-Training Static Quantization - 训练后静态量化
通过将网络转换为同时使用整数算术和int8内存访问可以进一步提高性能延迟。静态量化执行额外的步骤首先通过网络输入数据批并计算不同激活的结果分布具体来说这是通过在记录这些分布的不同点插入“观察者”模块来完成的。该信息用于确定不同的激活应该在推断时量化的具体程度一种简单的技术是将整个激活范围简单地划分为256个级别但我们也支持更复杂的方法。重要的是这一附加步骤允许我们在操作之间传递量化值而不是在每个操作之间将这些值转换为浮点值然后再转换为整数从而大大加快了速度。
在PyTorch中支持几个允许用户优化静态量化的功能
观察者可以自定义观察者模块指定如何在量化之前收集统计信息以尝试更高级的方法来量化数据。 运算符融合可以将多个操作融合为一个操作节省内存访问同时提高操作的数值精度。 每通道量化我们可以在卷积/线性层中独立量化每个输出通道的权重这可以以几乎相同的速度获得更高的精度。
2.3 Quantization Aware Training - 量化感知训练
量化感知训练QAT是第三种方法也是这三种方法中精度最高的一种。使用QAT所有权重和激活在训练的前向和后向过程中都是“伪量化”的也就是说浮点值被舍入为模拟int8值但所有计算仍然使用浮点数字完成。因此训练期间的所有权重调整都是在“感知到”模型最终将被量化这一事实的情况下进行的因此在量化之后该方法通常比其他两种方法产生更高的精度。