TensorFlow官方发布消息称将引入一个新的优化工具包

李倩 发表于 2018-09-21 08:53:44 收藏 已收藏
赞(0) •  评论(0

TensorFlow官方发布消息称将引入一个新的优化工具包

李倩 发表于 2018-09-21 08:53:44
+关注

编者按:几个月前,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位整数存储和计算来达到内存占用更少、计算更少和功耗更少的目的。

随着深层神经网络不断在现实中落地,这种技术将适应现代科技设备的发展步伐,为开发者和产品用户带来便利。

收藏

相关话题

评论(0)

加载更多评论

参与评论

分享到

QQ空间 QQ好友 微博
取消