今年 5 月,谷歌曾在 I/O 大会上宣布即将推出 TensorFlow Lite,现在,谷歌终于发布了新工具的开发者预览版本,这是一款 TensorFlow 用于移动设备和嵌入式设备的轻量级解决方案。
TensorFlow 可以在多个平台上运行,从机架式服务器到小型 IoT 设备。但是随着近年来机器学习模型的广泛使用,出现了在移动和嵌入式设备上部署它们的需求。而 TensorFlow Lite 允许设备端的机器学习模型的低延迟推断。在本文中,TensorFlow 团队将向我们介绍 TensorFlow Lite 的特点,并展示一个可用的轻量级模型。
设计初衷
轻量级:允许小 binary size 和快速初始化/启动的设备端机器学习模型进行推断。
跨平台:运行时的设计使其可以在不同的平台上运行,最先允许的平台是安卓和 iOS。
快速:专为移动设备进行优化,包括大幅提升模型加载时间,支持硬件加速。
现在,越来越多移动设备内置了专门的自定义硬件以高效处理机器学习工作负载。TensorFlow Lite 支持安卓神经网络 API,以充分利用新的可用加速器。
当加速器硬件不可用时,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 模型文件部署到移动 App 中:
Java API:安卓设备上适用于 C++ API 的便利封装。
C++ API:加载 TensorFlow Lite 模型文件,启动编译器。安卓和 iOS 设备上均有同样的库。
编译器(Interpreter):使用运算符执行模型。解释器支持选择性加载运算符;没有运算符时,编译器只有 70KB,加载所有运算符后,编译器为 300KB。这比 TensorFlow Mobile(具备一整套运算符)的 1.5M 要小得多。
在选择的安卓设备上,编译器将使用安卓神经网络 API 进行硬件加速,或者在无可用 API 的情况下默认执行 CPU。
开发者还使用 C++ API 实现自定义 kernel,它可被解释器使用。
模型
TensorFlow Lite 已经支持多个面向移动端训练和优化的模型:
MobileNet:一种能够识别超过 1000 种不同物体的视觉模型,专为移动端和嵌入式设备设计;
Inception V3:一种图像识别模型,功能上类似于 MobileNet,但能提供更高的准确率(当然模型也更大);
Smart Reply:一种设备端对话模型,能对接收到的会话聊天信息提供触发性应答。第一方和第三方通信 App 可在 Android Wear 上使用该特性。
Inception v3 和 MobileNet 都在 ImageNet 数据集上训练过,你可以通过迁移学习轻松地在自己的图像数据集上重新训练这些模型。
关于 TensorFlow Mobile API
如你所知,TensorFlow 已经支持通过 TensorFlow Mobile API 在移动端和嵌入端部署模型。进一步来说,TensorFlow Lite 可以看作 TensorFlow Mobile 的升级,它成熟之后,就可以作为在移动设备、嵌入设备上部署模型的首要推荐。此次公开的 TensorFlow Lite 是开发者预览版,而 TensorFlow Mobile 依旧支持 APP 开发。
关于 TensorFlow Lite 更多信息请参见:/mobile/tflite。
来源:机器之心