摘要
作者提出了一种只使用整数运算的quantization方式,比起float point运算效率更高。同时提出了一种相应的训练方式来保证quantization之后的准确率。这篇文章的方法提升了accuracy和on-device latency之间的trade off,并且可以在MobileNets上使用。
1 introduction
作者总结了目前有效将庞大的神经网络应用在资源更为有限的移动端设备上的两种主流方式:1.神经全新的体量更小的神经网络,eg:MobileNets,SquueezeNet,ShuffleNet和DenseNet等等;2.将32-bit或64-bit的weights或activations缩小到精度更小的bit单元上,eg:8-bit。
在这篇文章当中,作者主要通过提升了在MobileNets上的accuracy和on-device latency之间的tradeoff来解决这个问题。作者主要采用的方法如下:
1. quantization scheme:将wights和activations全部quantize到8-bit,以及将部分的参数保留在32-bit,例如:bias vector;
2. quantized inference framework:可以在只能进行整数运算的硬件上高效运行,eg:Qualcomm Hexagon;
3.quantized training framework:和quantized inference framework相辅相成,减少quantization带来的accuracy loss;
4.提升了MobileNets在ARM CPUs上的accuracy和ond-device之间的tradeoff。
2 quantized inference
2.1 quantization scheme
quantization scheme就如同是从整数q到实数r的仿射变化:
其中S和Z被称为quantization parameters。并且,同一个weights、activations array中的值使用相同的quantization parameters