地址:https://arxiv.org/abs/1806.08342
这篇白皮书统一介绍了当前将网络进行定点化的方法。下面将看到的重点记录下来。
为了降低深度神经网络的计算量以及带宽(内存占用量),一种简单可行的方式就是将浮点网络(网络权重都是float类型数值)转换成定点网络(网络权重都是或者部分是int8类型)具体来说,这么做的优势在于:
- 不用改变网络结构,不用重新训练
- 单个int8定点数的内存占用就已经是float32这种浮点数的1/4。显然这样的定点化转换能够降低模型的占用
- 降低运行时所需的带宽(内存占用量),降低功耗(因为很多时候功耗很大部分取决于内存的访问)
- 便于部署:目前许多平台都能为定点数的计算提供加速支持
量化器(Quantizer)的设计
这里说的量化器实际上做的就是指浮点数(取值范围 [ x m i n , x m a x ] [x_{min}, x_{max}] [xmin,xmax])与定点数(取值范围 [ 0 , N l e v e l s − 1 ] [0, N_{levels}-1] [0,Nlevels−1],只能取整数)之间的映射。
Affine(Asymmetric quantizer)
这里我们只考虑线性映射:也就是包含2个参数,尺度(scale) Δ \Delta Δ和零点 z z z。其中
- z z z是一个整数,并且需要保证零点的量化是没有损失的(我理解是一个数 + 零点还是得等于它本身,有点抽象代数的意思)
- 因此 [ x m i n , x m a x ] [x_{min}, x_{max}] [xmin,xmax]需要做一个松弛,使得它能够包含数值0,如 [ 2.1 , 3.5 ] [2.1, 3.5] [2.1,3.5] 需要松弛至 [ 0 , 3.5 ] [0, 3.5] [0,3.5]
- 量化的过程如下表示:
x i n t = r o u n d ( x / Δ ) + z x Q = c l a m p ( 0 , N l e v e l s − 1 , x i n t

本文深入探讨深度神经网络定点量化方法,涵盖量化器设计、训练特殊处理、预测实验及定点模型训练等关键环节,旨在降低计算量与带宽消耗,提升模型部署效率。
最低0.47元/天 解锁文章
537

被折叠的 条评论
为什么被折叠?



