编者按:今年5月,Google的工程副总Dave Burke曾宣布将推出一个针对移动设备的TensorFlow精简版本——TensorFlow Lite,它允许开发者在手机上运行机器学习模型。而今天,这个版本正式发布了!
以下内容由论智编译整理自官方博客:
今年年初,谷歌推出Android Wear 2.0,允许智能手表在离线情况下利用AI进行自动回复,这是它在智能信息设备上搭载轻量化的全新机器学习架构的首次尝试。依靠越来越成熟的云技术,如今智能回复已经不再局限于邮箱、信箱和即时通讯应用,只需联网,云服务机器人能帮你即时回复所有信息,而Android Wear 2.0的出现意味着又一个进步:你甚至不需要联网。
站在开发者角度,由于机器学习的迅速发展和框架本身的优势,TensorFlow自2015年推出后一直在多个平台上运行,从大型服务器到微型物联网设备,它已经成为数据科学家认可的第一深度学习库。今天,谷歌发布TensorFlow Lite,也就是TensorFlow精简版,允许开发者在移动设备和嵌入式设备上运行机器学习模型,这意味着另一个小小的进步:你可以在手机上跑判定了。
支持模型介绍
MobileNet一种视觉模型,能识别超过1000个不同类别的对象,专为移动设备和嵌入式设备设计
Inception v3图像识别模型,和MobileNet功能类似,但准确率更高
Smart Reply一种设备上的对话模型,也就是聊天机器人,能对传入消息一键式回复
设计思路
谷歌针对TensorFlow Lite发了两篇博客,在面向开发者的由TensorFlow小组发表的文章中,他们介绍了新版本的设计思路:
轻量级。可以在移动端对TF模型做inference,占用空间小,计算速度快;
跨平台。可以在Android和iOS上运行,未来会支持更多平台;
速度快。TensorFlow Lite针对移动设备进行了优化,如大幅提高了模型加载速度、支持硬件加速等。
为了解决在移动端用TF运行模型时的负载问题,许多开发者曾制作了不少加速器——通过减少网络上的延迟和负载为程序运行提供更流畅的环境。而TensorFlow Lite保证运行速度的一大利器就是支持神经网络API(谷歌上月刚在Android 8.1中引入的一种加速器推理),能高效利用各类加速器。
当加速器停止加速时,TensorFlow Lite会退回优化CPU执行状态,保证模型的运行速度。
基础架构
在模型运行前,TensorFlow Lite会对模型进行一些简单处理:
组件介绍
TensorFlow模型保存在磁盘上的已经训练好的TF模型
TensorFlow Lite转换器把模型转成TensorFlow Lite格式的程序
TensorFlow Lite模型文件基于FlatBuffers(提升数据处理性能工具)的模型文件格式,可以按速度最大化、空间最小化的要求对模型进行优化
把经处理的模型导入APP后,TensorFlow Lite中的接口和工具开始发挥作用:
组件介绍
Java API安卓平台的独有组件,针对C++ API的便利性封装
C++ API加载TensorFlow Lite模型文件并调用解释器,Android和iOS上都有相同的库
解释器用一组运算符执行模型,解释器支持选择性转译运行,没有运算符时它只有70KB,加载后也只有300KB
神经网络API可调用加速器进行加速
应用案例
谷歌为TensorFlow Lite适配了3个模型,并让Expander团队的科学家Sujith Ravi用对话模型Smart Reply做了一些测试。众所周知,为了保证模型的准确率,自然语言处理需要的数据量十分庞大,在算力、存储空间极其有限的环境中保证模型有效运行,这本身是一件很矛盾的事。
对此,谷歌采取的方法是“投影”。Smart Reply是一个所谓的紧凑型神经网络,它结合一个简单的“投影”网络,能利用随机投影进行变换输入,以较小的内存占用量对空间中的轻量级和高效计算操作进行编码。简单来说,就是“hey, how’s it going?”和“How’s it going buddy?”这两个句子,投影到这个模型里是同一个向量。
在这个思想的指导下,谷歌建立了一个端对端训练的ML框架,并在其中训练两种模型——一种是更为紧凑的投影模型,另一种则是trainer模型。相较于前者,trainer模型的结构更庞大也更复杂,通过堆叠其他技术,开发者可以压缩或选择性的优化函数的某些部分,把特征提取到投影模型中。一旦完成训练,这个更小的投影模型就能直接做inference了。
在TensorFlow Lite上执行Smart Reply
有趣的是,上述ML框架可与不同机器学习方法兼容,例如,如果是TensorFlow深度学习,框架会训练出一个轻量级神经网络(ProjectionNet)作为基础模型;如果是一个非神经网络的图表框架,那这个ML框架就会投影相应的图(ProjectionGraph)。
这就意味着,这个联合训练框架可以为手机这样的轻量化设备训练各类机器学习模型。
ProjectionNet使用DL训练(左),ProjectionGraph使用图形学习训练(右)
为了方便开发者,谷歌针对神经网络和图表学习都训练了轻量化框架,引入了半监督学习。
论智点评
虽然把TF移植到移动端是一个有趣的尝试,但TensorFlow Lite对机器学习开发者,尤其需要大量大数据堆模型,如NLP、CV方向的学生、科研人员,真的是一个有用的工具吗?很不幸,答案是否定的。
事实上,在移动端运行TF并不是一种新鲜的做法,在谷歌宣布推出这个版本前,一些机器学习爱好者已经开始利用一些工具在手机上用TF跑跑概率模型、算算小矩阵,如让模型识别照片中的对象。比起训练高准确率的模型,这样的做法更偏向个人娱乐,应用空间有限。正如谷歌示例的用TensorFlow Lite训练对话模型,这其实就是建立一个精简版的chatbot,对比其他聊天机器人,如微软小冰使用的庞大数据量,这种紧凑型设计的局限性太大了,因此我们也无法对效果抱有太大的期待。
目前,用手机运行TF的局限主要有3个,一是算力,二是内存,三是能耗。TensorFlow Lite只是软件方面的尝试,现有手机的硬件水平还远远达不到相应水准。在TensorFlow Lite话题下,twitter一位网友的评论令人印象深刻:“没有加速器时跑CPU,IOS的CPU……拉倒吧!”虽然有一些调侃成分,但也足以说明一些问题。
最后就是产品定位的问题。从产品角度看,TensorFlow Lite的定位是很尴尬的,它作为一个版本远远比不上TensorFlow,在移动性上又有各种云平台的竞争,自身性能又有诸多局限,仅从目前的情况看,TensorFlow Lite也许真的只是开辟新领域的尝试,吃瓜群众们看看热闹、尝尝鲜即可,不必抱有太大热情。
TansorFlow团队博文:developers.googleblog.com/2017/11/announcing-tensorflow-lite.html
谷歌博文:research.googleblog.com/2017/11/on-device-conversational-modeling-with.html