谷歌宣布了他们的TensorFlow模型优化工具包的量化感知训练(QAT) API的发布。QAT在神经网络训练过程中模拟低精度的硬件,将量化误差加入到整体网络损耗的度量中,使得训练过程尽量减少训练后量化的影响。
在最近的TensorFlow开发峰会上,谷歌软件工程师Pulkit Bhuwalka概述了新的API。TensorFlow的移动和物联网工具包TensorFlow Lite支持训练后的模型量化,可以将模型大小减少到4倍,并将推理速度提高到1.5倍。然而,量化降低了计算的精度,降低了模型的精度。通过模拟训练过程中的推理时间量化误差,QAT得到了“对量化更有鲁棒性”的模型。QAT API还支持自定义量化策略的模拟,这使得研究人员可以将他们的模型用于其他平台和量化算法,而不是目前由TensorFlow Lite支持的那些。TensorFlow模型优化团队在博客中写道,
我们非常兴奋地看到,QAT API进一步使TensorFlow用户能够在他们的TensorFlow litt产品中推进高效执行的边界,以及它如何为研究新的量化算法和进一步开发不同精度级别的新硬件平台打开大门。
许多最先进的深度学习模型太大,速度太慢,无法在移动设备和物联网设备上按现状使用,这些设备往往对所有资源都有限制——包括电力、存储、内存和处理器速度。量化通过存储模型参数和使用8位整数而不是32位浮点数执行计算来减少模型大小。这改善了模型的性能,但在计算中引入了错误,降低了模型的精度。这些错误随着计算最终答案所需的每个操作而累积。QAT的观点是,通过在训练过程中模拟这些误差,这些误差成为损失度量的一部分,并通过训练过程使损失最小化;因此,该模型是“预先建立的”,以补偿量化误差。
此外,由于数据输入和隐藏层激活的量化需要对这些值进行缩放,因此量化算法需要了解这些数据的分布情况;特别是它们的最大值和最小值。训练后的量化方案通常需要一个校准步骤来确定定标因子,但如果没有使用具有良好代表性的样本,则很容易出错。QAT通过维护选择好的比例因子所需的统计信息来改进这个过程;本质上,“学习”正确的数据量化。
TensorFlow模型优化在去年夏天引入了完整的训练后整数量化,但是量化感知训练只能作为一个非官方的“contrib”包使用。去年年底,TensorFlow在深度学习框架领域的主要竞争对手PyTorch发布了自己的官方量化感知培训工具。