Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

27
Eron Wright @eronwright TensorFlow & Apache Flink TM An early look at a community project he Flink™, Flink™, and the Apache feather logo are trademarks of The Apache Software Foundation . he TensorFlow logo and any related marks are trademarks of Google Inc. https://github.com/cookieai/flink-tensorflow

Transcript of Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Page 1: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Eron Wright@eronwright

TensorFlow & Apache FlinkTMAn early look at a community project

Apache®, Apache Flink™, Flink™, and the Apache feather logo are trademarks of The Apache Software Foundation.TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc.

https://github.com/cookieai/flink-tensorflow

Page 2: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

2

Background

Page 3: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Why TensorFlow? A powerful & flexible platform for

machine intelligence Reusable machine learning models C++ core / Java language binding Ease of integration with Apache Flink

3

Page 4: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

TF Scenarios Language Understanding• “syntaxnet”, Google Translate

Image/Video/Audio Recognition• “Inception”

Creative Arts• “Magenta”

4

Page 5: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

TF Models Portable using “Saved Model” format• Train on GPU-equipped cluster• Perform inference anywhere

Well-defined interactions and data types using “signatures”

Moving towards a Model Zoo5

Page 6: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

TF Graphs

6

x

W

*

b

+ softmax() y

x = tf.placeholder(tf.float32, [None, 784])W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))y = tf.nn.softmax(tf.matmul(x, W) + b)

Page 7: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

TF in Flink

7

Source map() window() sink

x

W*

b+ max() y

Page 8: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

8

Introducing Flink-Tensorflow

Page 9: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Project Status A prototype focused on inference

using pre-trained TF models Scala-only (for now) A community effort

9

Page 10: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Basic Idea Use TF functionality in a Flink

program; Not a TF compatibility layer “TF graph as a Flink map function” Support inference today, online

learning in the future

10

Page 11: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

11

Demo

Page 12: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

“Johnny” A hypothetical security system based on

picture passwords• Present three specific pictures within one

minute: Access Granted!• On timeout: Access Denied!

TF model for image labeling (“Inception”) Flink CEP library for sequence detection

12

Page 13: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Inception Model Pretrained with ImageNet dataset Supports “retraining” for learning

new objects not in original dataset

13

load() label()

burger.jpgladybug.jpg

Stream(Connector)

1 0.02

..

623 0.97

Page 14: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Inception Model (Con’t)

14

Inception v3

Page 15: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

15

Using the Library

Page 16: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Basic Usage1. Import a TensorFlow model2. Write code to convert your domain

objects to/from tensors3. Use the model in a batch or

streaming function

16

Page 17: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Importing a Model1. Define the graph method(s)

supported by the model (ref)2. Specify how to load the model

1. ”saved model” loader, or2. graphdef loader, or3. ad-hoc graph builder

17

Page 18: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Importing a Model (Con’t)

18

Page 19: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Working with Tensors Tensors are off-heap, AutoCloseable

multi-dimensional arrays You: convert input records to tensor Use Scala Automatic Resource

Management (ARM)• Supports both imperative and monadic

style19

Page 20: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Writing a Flink Function Design goal: use TF in any

transformation function• `MapFunction`• `ProcessFunction` (with event-time timers!)• `WindowFunction`

Required: model lifecycle support• `ModelAwareFunction`

20

Page 21: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Runtime TF embedded within the Flink

JobManager / TaskManager One model instance per sub-task Large unmanaged memory blocks No Python needed

21

Page 22: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

22

Future Directions

Page 23: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Stateful Models

23

Integrated checkpointing

Support for keyed streams

Emphasize online learning

Page 24: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Graph Builder (DSL) Construct TensorFlow graphs from

scratch (ref) Code generation for TF operations Incorporate other libraries, high-level

APIs (e.g. TF Keras)

24

Page 25: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Other Instrumentation• TF Summaries (for TensorBoard)• Flink Metrics

Model versioning• Leverage Flink job versioning methods• Treat models as side-input

25

Page 26: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

Eron Wright@eronwright

TensorFlow & Apache FlinkTMAn early look at a community project

Apache®, Apache Flink™, Flink™, and the Apache feather logo are trademarks of The Apache Software Foundation.TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc.

https://github.com/cookieai/flink-tensorflow

Page 27: Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow

27

Thanks!