编者按:几个月前,tensorflow发布了一份名为《quantizing deep convolutional networks for efficient inference》的白皮书,主要介绍团队关于模型量化的相关工作,所谓量化,简单来说就是将32浮点数近似地用8位整数存储和计算,量化后,模型占用存储空间减小75%,能起到压缩模型的效果。而现在,这项技术就快和大家见面了。
今天凌晨,tensorflow官方发布消息称将引入一个新的优化工具包,方便机器学习初学者和高级开发人员进行优化,方便模型的部署和执行。
它的名字是训练后量化(post-training quantization),这是模型量化的一类,主要优点有:
模型占用存储空间缩小75%
如果是主要由卷积层组成的模型,执行速度提高10–50%
如果是基于rnn的模型,执行速度提高3倍
内存、算力要求的降低也意味着大多数模型的功耗会大幅降低
内存、算力、功耗,这是模型量化的主要优化对象,而在实践中,最能从中收益的自然是在各种移动端设备上使用机器学习模型的开发人员,尤其是tensorflow lite的用户。
下图展示了使用这个优化工具包后,几种典型模型在存储空间占用上的变化(单核android pixel 2手机):
模型尺寸比较:经优化的模型几乎为原来的1/4
下图是训练后量化对模型执行的加速效果(单核android pixel 2手机):
延迟比较:经优化的模型执行速度提高了1.2到1.4倍
通常情况下,模型压缩会对原有准确率造成不同程度的影响,但训练后量化的影响几乎等同于无,它能在缩小尺寸、提高速度的前提下保持模型精度,如下图所示(单核android pixel 2手机):
启用模型量化
现在训练后量化已被集成到tensorflow lite中,它的使用方法很简单:首先构建一个tensorflow模型,其次在conversion tool中找到模型量化的标志“posttrainingquantize”。假设模型存储在savedmodeldir中,那么具体命令就是:
converter=tf.contrib.lite.tococonverter.from_saved_model(saved_model_dir)
converter.post_training_quantize=true
tflite_quantized_model=converter.convert()
open(“quantized_model.tflite”, “wb”).write(tflite_quantized_model)
具体操作可见github:github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/tutorials/posttrainingquant.ipynb
虽然目前开发者们只能在tensorflow lite中用到这个技术,但官方也称将尽快把它整合到一般的tensorflow工具中。
小结
除了训练后量化,在之前提到的白皮书中,tensorflow还提到了训练时量化,它能使模型的准确率更高。而综合来看,它们都是基于量化设计的技术,依靠把32浮点数近似地用8位整数存储和计算来达到内存占用更少、计算更少和功耗更少的目的。
随着深层神经网络不断在现实中落地,这种技术将适应现代科技设备的发展步伐,为开发者和产品用户带来便利。
给年轻电子工程师的十大忠告
PCB、SMT、PCBA三者的区别
y电容和瓷片电容的区别有哪些?
OPPO Q1出货量增长78%,再次成为明星手机品牌
华为与三星“开打” 正式起诉对方侵权知识产权
TensorFlow官方发布消息称将引入一个新的优化工具包
你一定要知道从原理图到PCB设计流程
一种新型的LED显示屏获取显示数据方法
5G让印度电信富豪头疼 买频谱太贵不买没前途
Marvell推出业界首批音视频桥接SoC的LinkStreet系列器件
生产硅晶圆a股上市公司
液晶屏断电保护电路
怎样去设计一种基于51单片机的骑行帽呢?
5年内进入3纳米,台积电真能做到吗?
共享按摩椅前景好吗?怎么做?
1N5408功率二极管的基本概念及应用电路
隆基与enercity达成协议 为12000户家庭送去绿电
关于pipeline 以及 unroll 指令的介绍
链路上小段线的阻抗突变到底会不会影响信号质量?
三星半导体谈应对内存墙限制的解决方案