定点量化
量化技术计算并存储了更加紧凑的数字格式。TensorFlow Lite 增加了使用 8 位的定点量化表示。
由于现代神经网络的挑战之一是进行高精度的优化,首先要做的是改善训练期的精度和速度。使用浮点数运算是保持精度的简单方法之一,同时 GPU 也被设计为能为这些运算进行加速。
然而,随着越来越多的机器学习模型需要被部署到移动设备上,推理的效率已经成为了一个关键性问题。对于训练期的计算需求,随着在不同架构上训练的模型的数量增加而迅速增长;对于推断的计算需求,也随着用户数量的增加而成比例的增加。
量化的优势
使用 8 位定点量化表示的计算可以加速模型的运行速度,同时也能降低功耗。这点对于无法高效运行浮点计算的移动设备和嵌入式应用是非常有用的。比如物联网(IoT)和机器人设备。此外,在后端扩展这种支持、研究更低精度的神经网络还有很多机遇。
更小的文件大小 {: .hide-from-toc}
神经网络的模型需要消耗大量的磁盘空间。举个例子,原始的 AlexNet 需要至少 200 MB 的空间来存储浮点格式的模型文件 —— 几乎全部用于模型数百万的权重。在权重间只有细微差异的表示中,简单的压缩格式效果不佳(如 Zip)。
权重在所有层中都以数值形式出现。对每一层而言,权重倾向于分布在一定范围内。量化技术则可以通过存储每层中的最大和最小的权重,然后压缩每层权重的浮点值转换为表示在 256 个值范围内最接近真实实数的 8 位整数,从而达到压缩文件大小的目的。
更快的推断 {: .hide-from-toc}
由于计算完全是在 8 位输入和输出上执行的,量化减少推理计算所需的计算资源。这在训练阶段需要引入更多浮点计算,但在推断期间则会加速很多。
内存效率 {: .hide-from-t