写点什么

TensorFlow 模型优化工具包增加新功能,可将深度学习模型缩小一半

  • 2019-08-07
  • 本文字数:1487 字

    阅读完需:约 5 分钟

TensorFlow模型优化工具包增加新功能,可将深度学习模型缩小一半

北京时间 8 月 7 日,TensorFlow 官方在 Medium 博客上更新了一篇文章,宣布为模型优化工具包添加了一项新功能:半精度浮点量化工具,据介绍,该工具能够在几乎不损失精度的情况下,将训练模型缩小一半,还能改善 CPU 和硬件加速器延迟。


TensorFlow 团队将训练后的半精度浮点量化作为模型优化工具包的一部分,这一套工具包括了混合量化,全整数量化和修剪等功能。


通过牺牲极少的精度,训练后的半精度浮点量化成功缩小了 TensorFlow Lite 模型的尺寸(高达 50%),并将模型常数(如权重和偏差值)从全精度浮点(32 位)为精度降低的浮点数据类型(IEEE FP16)。


训练后的半精度浮点是训练 TensorFlow Lite 模型的好工具,因为它对精度的影响极小并且模型尺寸显着减小。


感兴趣的读者可以点击这里查看相关文档,以便解不同的量化选项和方案。


降低精度的好处

降低精度有很多好处,特别是在部署到边缘时:


  • 模型尺寸减少 2 倍。模型中的所有常量值都存储在 16 位浮点数而不是 32 位浮点数中。由于这些常数值通常在整个模型尺寸中占主导地位,因此通常会将模型的尺寸减小约一半。

  • 精确度损失可忽略不计。深度学习模型经常能够在推理上产生良好的结果,同时使用比最初训练时更少的精度。在对几个模型的实验中,研发人员发现推理质量几乎没有损失(见下面的结果)。

尺寸缩小 2 倍,精度折衷可忽略不计

训练后的半精度浮点量化对精度的影响很小,但可以使深度学习模型的大小缩小约 2 倍。例如,以下是 MobileNet V1 和 V2 型号以及 MobileNet SSD 型号的一些结果。MobileNet v1 和 v2 的准确度结果基于ImageNet图像识别任务。在COCO对象识别任务上评估 SSD 模型。


模型准确性

通过将标准 Mobilenet float32 模型和 fp16 变体分别在:ILSVRC 2012 图像分类任务,以及 COCO 对象检测任务上进行了评估,研发人员得到了如下的结果:


如何启用后训练半精度浮点量化

开发者可以在 TensorFlow Lite 转换器上指定训练后的半精度浮点量化,方法是使用训练好的 float32 模型,将优化设置为 DEFAULT,并将目标规范支持的类型设置为半精度浮点常量:


import tensorflow as tf converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.target_spec.supported_types = [tf.lite.constants.FLOAT16] Tflite_quanit_model = converter.convert()
复制代码


转换模型后即可直接运行,就像任何其他 TensorFlow Lite 模型一样。默认情况下,模型将通过将 16 位参数“上采样”为 32 位,然后在标准 32 位浮点运算中执行操作来在 CPU 上运行。


开发者还可以在 GPU 上运行模型。研发团队已经增强了 TensorFlow Lite GPU 代理,以接收精简参数并直接运行(不需要像在 CPU 上那样转换为 float32)。在应用程序中,开发者可以通过 TfLiteGpuDelegateCreate 功能创建GPU代理。指定代理的选项时,请务必设置 precision_loss_allowed 为 1:


//Prepare GPU delegate.  const TfLiteGpuDelegateOptions options = {    .metadata = NULL,    .compile_options = {      .precision_loss_allowed = 1, // FP16      .preferred_gl_object_type = TFLITE_GL_OBJECT_TYPE_FASTEST,      .dynamic_batch_enabled = 0, // Not fully functional yet    },  }; 
复制代码


有关 GPU 代理的概述,请参阅此链接:


https://medium.com/tensorflow/tensorflow-lite-now-faster-with-mobile-gpus-developer-preview-e15797e6dee7


查看使用半精度浮点量化的工作示例请点这里:


https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/performance/post_training_float16_quant.ipynb


2019-08-07 15:016831
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 288.5 次阅读, 收获喜欢 1303 次。

关注

评论

发布
暂无评论
发现更多内容

接地气的面试记录:记一次Android面试心得(1),详细的Android学习指南

android 程序员 移动开发

普通Android码农,该如何逆袭月薪-5W-的移动端架构师?

android 程序员 移动开发

扒一扒:2020台湾Android-Kotlin-&-Java-面試題庫,竟如此--

android 程序员 移动开发

换肤、全局字体替换、无需编写shape,Android程序员月薪20k的涨薪秘籍

android 程序员 移动开发

搞Android开发为什么这么难?想哭了!,vue双向绑定

android 程序员 移动开发

新来的小师妹问我:哥,有哪些是新手程序员不知道的小技巧

android 程序员 移动开发

手把手教你打通车载蓝牙与手机app的音频信息传输&车载反向控制手机app

android 程序员 移动开发

掌握了这些Android高级工程师必备知识后,他拿到了 BAT Offer

android 程序员 移动开发

数据结构(一), BST 二叉搜索树(1),app可视化开发工具

android 程序员 移动开发

新手必看,避免踩雷---一篇文带你吃透Android开发的所有必备考点,轻松拿offer

android 程序员 移动开发

手把手讲解-一个复杂动效的自定义绘制,2021Android开发社招面试总结

android 程序员 移动开发

换个姿势,带着问题深入学习Handler,手撕吊打面试官,kotlin单例firbase

android 程序员 移动开发

支付宝 App 构建优化解析:Android 包大小极致压缩(1),阿里P8亲自讲解

android 程序员 移动开发

数据结构(一), BST 二叉搜索树,高级程序员面试题

android 程序员 移动开发

打造一个完整的Flutter-APP项目!,安卓高级开发面试题

android 程序员 移动开发

文件数据储存之内部储存,移动端开发技术创新

android 程序员 移动开发

新鲜出炉的Android“面筋”,kotlininline函数

android 程序员 移动开发

是让人-提神醒脑-的-MVP、MVVM-关系精讲!,2021最新Android开发面试解答

android 程序员 移动开发

把Flutter扩展到微信小程序端的探索,安卓面试题库

android 程序员 移动开发

抖音四面被拒,再战头条终获offer!凭什么我可以做到,2021最新Android笔试题及答案

android 程序员 移动开发

拿不到想要的offer,只缘身在CV中,关于一些面试小知识,Android开发人员不得不收集的代码

android 程序员 移动开发

接地气的面试记录:记一次Android面试心得,retrofit教程

android 程序员 移动开发

揭秘:如何化身BAT面试offer收割机?,androidapp内存优化

android 程序员 移动开发

数据结构与算法回顾-1:算法的度量和基本数据结构,近期有面试的必看

android 程序员 移动开发

数据结构算法---红黑树,这可能是我看过红黑树讲的最好的文章。

android 程序员 移动开发

拖不得了,Android11真的要来了,最全适配实践指南奉上

android 程序员 移动开发

插件化框架解读之Class文件与Dex文件的结构(一),android软件开发教程第二版电子版

android 程序员 移动开发

插件化框架解读之四大组件调用原理-Activity(三)上篇

android 程序员 移动开发

揭秘!大厂招聘内幕!如何才能进大厂,Android技术类校招面试题汇总

android 程序员 移动开发

支付宝 App 构建优化解析:Android 包大小极致压缩,android界面开发实验报告

android 程序员 移动开发

最新Android面试题整理,移动端h5页面适配

android 程序员 移动开发

TensorFlow模型优化工具包增加新功能,可将深度学习模型缩小一半_AI&大模型_陈思_InfoQ精选文章