tensorflow & apache flink...use the model in a batch or streaming function 16 importing a model...

27
Eron Wright @eronwright TensorFlow & Apache Flink TM An 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

Upload: others

Post on 28-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Eron Wright @eronwright

TensorFlow & Apache FlinkTM

An 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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Background

2

Page 3: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

TF Scenarios

▪ Language Understanding • “syntaxnet”, Google Translate

▪ Image/Video/Audio Recognition • “Inception”

▪ Creative Arts • “Magenta”

4

Page 5: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

TF in Flink

7

Source map() window() sink

x

W*

b+ max() y

Page 8: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Introducing Flink-Tensorflow

8

Page 9: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Project Status

▪ A prototype focused on inference using pre-trained TF models

▪ Scala-only (for now) ▪ A community effort

9

Page 10: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Demo

11

Page 12: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

“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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Inception Model

▪ Pretrained with ImageNet dataset ▪ Supports “retraining” for learning new objects

not in original dataset

13

load() label()

burger.jpg ladybug.jpg

Stream (Connector)

1 0.02

..

623 0.97

Page 14: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Inception Model (Con’t)

14

Inception v3

Page 15: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Using the Library

15

Page 16: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Basic Usage

1. Import a TensorFlow model 2. Write code to convert your domain

objects to/from tensors 3. Use the model in a batch or streaming

function

16

Page 17: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Importing a Model

1. Define the graph method(s) supported by the model (ref)

2. Specify how to load the model 1. ”saved model” loader, or 2. graphdef loader, or 3. ad-hoc graph builder

17

Page 18: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Importing a Model (Con’t)

18

Page 19: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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 style

19

Page 20: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Runtime

▪ TF embedded within the Flink JobManager / TaskManager

▪ One model instance per sub-task ▪ Large unmanaged memory blocks ▪ No Python needed

21

Page 22: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Future Directions

22

Page 23: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Stateful Models

23

▪ Integrated checkpointing

▪ Support for keyed streams

▪ Emphasize online learning

Page 24: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Other

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

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

25

Page 26: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Eron Wright @eronwright

TensorFlow & Apache FlinkTM

An 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: TensorFlow & Apache Flink...Use the model in a batch or streaming function 16 Importing a Model 1. Define the graph method(s) supported by the model (ref) 2. Specify how to load the

Thanks!

27