TensorFlow Lite: TensorFlow for Mobile

周玥枫 Yuefeng Zhou

TensorFlow 团队刚刚发布了针对移动和嵌入式设备的 TensorFlow 轻量级解决方案 TensorFlow Lite。在本演讲中,我们将学习 TensorFlow Lite 的作用以及如何在应用中使用它,此外还会深入探讨在 iOS 和 Android 平台上的 TensorFlow Lite 架构设计。

Why small devices?

越来越多的渠道随着移动设备展开

Why on-device?

离线、低带宽、高时延、大量数据传输的能量消耗

挑战

资源有限、计算异构(GPUs、CPUs、DSPs)

定位

TF在大型设备上works well TF Lite专注于小型设备

What is TensorFlow Lite?

轻量级的移动、嵌入设设备上的机器学习库

Our inspiration

  • 审视内部移动 ML 工具
  • 与 Android 专家共同讨论
  • 了解用户需求

Our goal

  • Small binary size
  • Startup / Latency: low overhead
  • Throughput: Optimized set of core kernels, Quantized kernels

Main Components

  • Model file-format
  • Interpreter
  • Ops / Kernels
  • Hardware accelerator interface

Workflow

使用传统方式在 Workstation 端训练模型,生成 Graphdef、Checkpoint,通过转换器生成特定格式模型,TFL 在移动设备上访问模型。

对 ARM 架构有优化的 Neon Kernel。

Details

Model file-format

轻量级格式,对其他软件依赖很低 TOCO GraphDef 转换

Flatbuffer-based

Flatbuffers

是一个最早用于视频游戏开发上的开源项目,致力于序列化信息,使用内存映射,高效使用内存

Interpreter

优化:

  • 300k(包含内置ops)

  • 极高加载速度

  • 静态内存计划

  • 静态执行计划

  • 为了达到静态执行计划,不支持control flow

  • 内置 ops,针对 ARM Neon 指令集优化

  • 支持 op 与 op 间相互融合

  • 有自定义 op 的 C API

Hardware accelerator interface

Android: Neural Network API

充分发挥异构计算资源,包括 DSP

How do I use it?

第一步:训练模型

第二步:生成TFL格式flatbuffer

尽早转换格式,不然可能遇到不支持的 op

第三步:移动端使用模型

  • 使用 Maven 告知 TFL 的依赖
  • 加载文件,使用相关 op
  • 创建解释器
  • Invoke 解释器
  • 从解释器获得推理结果

如何添加自定义的 op

Custom Neon Op

4个相关函数:

  • init
  • free
  • prepare
  • invoke

Plans for Further Releases

开源:11 月 14 日