昨天,谷歌正式宣布推出针对移动设备和嵌入式设备的轻量级解决方案 TensorFlow Lite。而在此之前,今年 5 月份的谷歌 I/O 大会上他们已经对此进行了预告。承袭 TensorFlow 在服务器、IoT 设备等平台的良好表现,TensorFlow Lite 的推出将使得移动端的机器学习模型部署得以大范围推广。

模型下载:download.tensorflow.org/models/tflite/smartreply_1.0_2017_11_01.zip

项目代码:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/models/smartreply

TensorFlow Lite 突出特征

轻量级:满足机器学习模型推断的小型二进制规模和快速初始化/启动的要求;

跨平台:可以满足在多个平台运行,首先是安卓和 iOS;

快速:专为移动设备进行优化,包括模型加载时间显著加快,支持硬件加速等等。

如今,越来越多移动设备内置了专门的自定义硬件以更加有效地处理机器学习工作负载。TensorFlow Lite 支持安卓神经网络 API(https://developer.android.com/ndk/guides/neuralnetworks/index.html),以充分利用新的可用加速器。 

当加速器硬件不可用时,TensorFlow Lite 会退至优化的 CPU 执行状态,从而确保模型仍然可以在大量设备上快速运行。 

图丨 TensorFlow Lite 的设计架构

组成部分 

TensorFlow 模型(TensorFlow Model):保存在磁盘上、经过训练的 TensorFlow 模型; 

TensorFlow Lite 转换器(TensorFlow Lite Converter):将模型转换为 TensorFlow Lite 文件格式的一个程序; 

TensorFlow Lite 模型文件(TensorFlow Lite Model File):基于 FlatBuffers 的模型文件格式,经过适应最大速度和最小规模的优化。  

TensorFlow Lite 模型文件被应用在移动应用程序中  

Java API:安卓设备上适用于 C++ API 的便利封装; 

C++ API:加载 TensorFlow Lite 模型文件并启动编译器(Interpreter)。安卓和 iOS 上都有相同的库; 

编译器:使用一组运算符来执行模型。编译器支持选择性操作员加载。没有运算符的情况下,只有 70KB,加载了所有运算符,有 300KB。这比 TensorFlow Mobile 所要求的 1.5M 的明显低得多; 

在选定的安卓设备上,编译器将使用安卓神经网络 API 实现硬件加速,或者在无可用 API 的情况下默认执行 CPU。  

TensorFlow Lite 已支持多个面向移动端训练和优化的模型  

MobileNet:一类能够识别 1000 个不同的对象的视觉模型,专门为移动和嵌入式设备而设计;

Inception v3:一种功能类似 MobileNet 的图像识别模型,虽然体积更大,但能提供更高的准确率; 

Smart Reply:一种设备上的对话模型,能对接收到的会话聊天信息提供触发性应答。第一方和第三方通信应用可以在 Android Wear 上使用该功能。  

Inception v3 和 MobileNets 已经在 ImageNet 数据集上训练。你可以通过迁移学习,在自己的图像数据集上重新训练。

-End-

参考:https://research.googleblog.com/2017/11/on-device-conversational-modeling-with.html