轻量、快速、兼容度高,TensorFlow Lite 正是人工智能开发和移动化最好的结合。
机器学习的发展改变着健康医疗、语言交流和城市交通等我们生活中的诸多领域,越来越多的企业、组织甚至是个人尝试用机器学习解决业务或者生活中遇到的难题。开发者数量的大量增加也意味着需要降低技术难度,让更多人参与进来。
在 2015 年底,Google 开源了端到端的机器学习开源框架 TensorFlow:它既可以用于研究,也可以用于大规模生产领域;它既支持大规模的模型训练,也支持各种环境的部署,包括服务器和移动端的部署;支持各种语言,包括 Python,C++,Java,Swift 甚至 Javascript。TensorFlow 提供全面灵活的专业工具生态系统,帮助解决各种艰难的问题。而近年来移动化浪潮和交互方式的改变,使得机器学习技术开发也在朝着轻量化的端侧发展,于是 TensorFlow 团队又在 2017 年底上线了 TensorFlow Lite,一个轻量、快速、兼容度高的专门针对移动式应用场景的深度学习工具,把移动端及 IoT 设备端的深度学习技术的门槛再次大大降低。
在 BMW · GeekPark Rebuild 2019 科技商业峰会上,极客公园邀请到了 TensorFlow 亚太研发负责人李双峰来谈一谈已经在全球 20 亿台设备上部署的 TensorFlow Lite 在技术上的新突破以及未来应用的前景。
以下是Google TensorFlow 亚太研发负责人李双峰在BMW · GeekPark Rebuild 2019 科技商业峰会上的演讲实录(经极客公园编辑整理):
李双峰:大家好,我是 Google TensorFlow 的李双峰,今天我来跟大家分享:TensorFlow Lite:开启智能互联生活的新可能。
伴随移动和 IoT 设备的普及,世界以超乎想象的方式存在被连接的可能,如今已有超过 32 亿的手机用户和 70 亿的联网 IoT 设备(不包括手机、PC等)。而随着手机成本不断降低,并且随着微控制器(MCU)和微机电系统(MEMs)的发展,高性能低功耗的芯片使得“万物”智能具有了可能性。从智能家居到家用机器人,从共享单车到智能穿戴,从工业控制到车载设备…这些设备都有智能化的基础。
边缘设备的数据传输到云端处理并非是最经济有效的方式,经过云端传输会有延迟,从而影响体验。
从用户端来看,他们对于交互的需求越来越高的,快速、及时的智能反应是消费者的普遍期待,这就给端侧的机器学习带来很多前景。以智能音箱为例,唤醒的反应速度,是良好体验的基础。
端侧机器学习的优势使得智能互联有了新的可能性:
1)更快更紧密的交互方式,因为模型在本地执行,延迟小;
2)在没有很好网络的情况下仍然可以很好的提供服务;
3)更好的保护隐私,因为在本地进行数据收集和处理,减少数据上传。
但是实现端侧机器学习有很多挑战,主要是三个方面:
1)端侧算力有限,限制了模型的复杂度;
2)端侧内存有限,限制了能运行的模型大小;
3)电力有限,需要模型运算效率更好,比如对于大家所熟知的智能手表而言,省电是一个很重要的考虑。
作为开源的机器学习生态系统 TensorFlow 的一部分,TensorFlow Lite 致力于帮助企业克服这些困难,从而简化移动设备和嵌入式设备的部署。
做为背景,我简单介绍一下 TensorFlow。TensorFlow 是一个端到端的开源的机器学习平台,大家日常接触的智能服务比如语音识别、图像处理和智能推荐等,背后很多都是基于 TensorFlow 开发的。TensorFlow 可以用于前沿的研究也可以用于生产领域大规模使用,可以支持大规模数据的训练也可以支持各种环境的部署,你可以用 Java、Python、Swift 甚至 Javascript 等各种语言来写。TensorFlow Lite 是 TensorFlow 非常重要的一部分,专注于让大家更好的部署移动端的机器学习应用,「一次转换,随处部署」,包括安卓、ios,Linux,还包括更小的芯片,比如微控制器 MCU 这样的平台。
刚才讲了三个挑战,算力有限,内存有限,电量有限,怎么样解决这样的部署难题呢?这正是 TensorFlow Lite 所专注解决的问题:第一,我们很希望大家部署端侧的机器学习模型时,模型转换起来很便捷,部署非常快;第二我们认为性能非常关键;第三就是希望有更多模型优化的空间。TensorFlow Lite 就是为速度设计而生,提供了便捷的转换率,让我们在移动端部署更快,也意味着开发效率会更高。其次,我们希望更快一些,这是性能的问题,我们会尽量利用手机端硬件加速。第三,希望运行环境更小一下,模型更小一些。
下面介绍一下 TensorFlow Lite 的整体架构,帮大家更好地理解一下 TensorFlow Lite 怎么面对这些挑战。
第一点就是更小的模型格式,并提供了方便的模型转换器,可以把比较大的 TensorFlow 模型方便地转化成更小的 TensorFlow Lite 模型。第二有更小的解释器,安卓应用只需 1 兆左右的运行环境,在 MCU 上甚至可以小于 100KB。第三,在硬件加速层面,对于 CPU 利用了 ARM 的 NEON 指令集做了大量的优化。同时,Lite 还可以利用手机上的加速器,比如 GPU 或者 DSP(即将支持)等。另外,最新的安卓系统提供了 Android 神经网络 API(Android NN API),让硬件厂商可以扩展支持这样的接口,经常听到的 NPU 是专门为神经网络加速设计的芯片,NPU 可以支持 NN API,而 Lite 可以调用 NN API,从而利用 NPU 加速。
更激动人心的前景发生在 IoT 领域,TensorFlow Lite 可以支持微控制器 MCU,而 MCU 是单一芯片的小型计算机,没有操作系统,只有内存,也许内存只有几十 KB,全球有超过一千五百亿的 MCU,很多设备上都有 MCU。我们发布了 MCU 上的语音识别的模型,可以识别若干关键词,语言模型只有 20KB 左右。同时我们还在构建 MCU 上的图像识别模型,预计只有 250KB。
这里面有很大的想象空间。举个例子,一些小玩具里面可能有 MCU 这样小的芯片,你呼叫它的呢称时就有一些反应,你还可以让这个玩具在做一些设定的动作时会有一些反应,这些能力都依赖于小的低功耗的 MCU 上的机器学习的能力。让 MCU 上都可以部署机器学习的模型时,智能开始无处不在。
TensorFlow Lite 还提供了很强大的优化工具,可以在精度损失很小的情况下,模型大大被压缩。常见的一个概念叫量化,4 字节的浮点数模型可以转换成 1 字节的整数模型,模型可以缩小 4 倍。另一个常用的技巧是剪枝,可以去掉一些复杂的树枝和连接,模型的参数就会大大减少。这样我们更进一步取得模型的压缩 5 到 10 倍的效果。正是有非常强大的优化工具,将模型的大小大大减少,因此得以部署到各种移动设备上。
我们经过不断努力,TensorFlow Lite 取得了非常好的运行速度。比如 MobileNet V1, 是我们设计的适用于移动的开源模型,单线程的情况下,在 Pixel3 上可以取得 83 毫秒的速度,如果用量化的技巧可以加速 1.8 倍,如果用 GPU 可以加速 5.5 倍。如果使用 DSP,则加速可以提到 13.8 倍。可以想象在一个普通手机上就可以处理几十帧的效率。
之前谈了端侧机器学习的基本概念,下面看一看有意思的一些 Demo。Dance Like 是我们在 Google IO 发布的一个基于 TensorFlow Lite 的应用。希望通过动作识别来进行舞蹈识别。我们在手机上运行五个不同的任务,且不牺牲性能,下面看看我们是如何做到的。
第一步运行两个身体部位的图像分割模型,第二步根据分割模型进行匹配和打分。第三和第五步分别进行播放录制的视频,同时进行视频的解码,并且做运行时的调整。有五个不同的任务在手机上运行,调用了 CPU 和 GPU 资源,可以取得非常好的性能,这证明了端侧的机器学习有非常强大的功能。
更加激动人心的领域是在于端侧的语音识别,不久前我们,宣布了最新研究的完全基于神经网络的端侧语音识别,效果和基于服务器端的效果十分接近,精度没有太大的损失,这代表着端侧机器学习时代的逐步到来,端侧语音识别是比较难的问题,我们在这方面有很多进展,一方面是算法和技术层面有很多突破,另外一方面依赖 TensorFlow Lite 的框架帮助大家取得很的高性能。
另外这样的功能还可以离线运行,可以想像大家拿着手机在没有信号的时候语音识别都可以很好的工作。我们也依赖于很多压缩的技巧,左侧服务器模型需要 2G 大小,右侧只需要 80 兆。我们今年的 Google IO 我们也提到了 Live Caption,可以在手机端离线把语音转换成文字。在未来,很多能力都可以在设备端执行,并不需要到云端。
端侧机器学习在文本、语音、图像和音频方面都有非常广泛的想象空间。全球有超过 20 亿的设备上部署着 TensorFlow Lite,这个数字还在不断增加当中。Google 自己的产品大量部署 Lite,比如 Google Assistant(部署在非常多元的设备上,比如手机端、手表、车载和智能音箱),Google Photos 等;也可以看到国际巨头像 Uber,Airbnb 等,还有国内大的公司比如网易、爱奇艺等都在使用 TensorFlow Lite。还有更多元的 TensorFlow Lite 的场景。
第一个例子是闲鱼,闲鱼是闲置物品的交易市场,面临的问题是更好服务非专业的卖家,通过使用机器学习的帮助,让买卖双方有更轻松的交易。自动给一些标签,识别这个照片里面有没有家具,提高了发布的效率。TensorFlow Lite 给闲鱼的端侧体验提供了很好的帮助。另外一个例子来自于科沃斯,是国内家用机器人的领导者,如何让用户用更少的时间进行清扫工作是他们不断追求的目标。科沃斯使用了机器视觉的帮助,可以识别这个过程中的一些障碍物,他们选择了用 TensorFlow Lite 部署深度神经网络,将推理速度提高了 30%,提高了用户的体验。
TensorFlow Lite 也非常适合工业物联智能设备的开发,因为它很好地支持如树莓派及其他基于 Linux SoC 的工业自动化系统。创新奇智应用 TensorFlow Lite 开发智能质检一体机、智能读码等工业软硬一体化智能产品,在 PC 端训练模型,在端侧部署模型。他们的工作已经被应用到工业质检等场景,比如用于服装厂的快速质检。
还有一个例子是出门问问,是语音交互软硬件为核心的智能产品公司,热词唤醒是用户对语音交互第一个印象,准确、实时、轻量化的唤醒非常重要。特别是待机的时候保持低能效,非常重要。通过 TensorFlow Lite 部署的端侧模型,能够给予保障高唤醒率和低错误率,同时保持运行环境非常轻量化。
最后我们谈一个重要的话题,就是数据隐私。在不久前召开的 Google I/O 大会的主题演讲当中提到的联邦学习(Federated Learning),可以很好的解决的这个难题。联邦学习是一种新的机器学习方法,它不需要从设备中收集原始数据,每个设备会计算一个局部的模型,把这些局部模型的参数更新安全地上传到服务器端,服务器端就可以聚合大量的局部模型,形成一个全局模型,最后全局模型发回到用户手机中。可以看到,整个过程当中并不需要收集用户真实的输入数据,能够很好的保证用户隐私,同时实现更好的体验。
谷歌键盘输入法 Gboard 已经迁移到这项技术中,当一个新的单词流行的时候,联邦学习允许成千人在刚开始使用后就很快学会新的单词。而 Google 本身并未看过你输入的内容。
最后无论是个人开发者还是企业,TensorFlow 都希望提供不断优化的开源技术,帮助大家解决问题,创造未来。谢谢大家。