SlideShare a Scribd company logo
1 of 38
Download to read offline
Deploying end-to-end
deep learning
pipelines with ONNX
—
Nick Pentreath
Principal Engineer
@MLnick
About
IBM Developer / © 2019 IBM Corporation
– @MLnick on Twitter & Github
– Principal Engineer, IBM CODAIT (Center for
Open-Source Data & AI Technologies)
– Machine Learning & AI
– Apache Spark committer & PMC
– Author of Machine Learning with Spark
– Various conferences & meetups
2
CODAIT
Improving the Enterprise AI Lifecycle in Open Source
Center for Open Source
Data & AI Technologies
IBM Developer / © 2019 IBM Corporation 3
CODAIT aims to make AI solutions dramatically
easier to create, deploy, and manage in the
enterprise.
We contribute to and advocate for the open-source
technologies that are foundational to IBM’s AI
offerings.
30+ open-source developers!
The Machine Learning
Workflow
IBM Developer / © 2019 IBM Corporation 4
Perception
IBM Developer / © 2019 IBM Corporation 5
In reality the
workflow spans teams …
IBM Developer / © 2019 IBM Corporation 6
… and tools …
IBM Developer / © 2019 IBM Corporation 7
… and is a small (but critical!)
piece of the puzzle
*Source: Hidden Technical Debt in Machine Learning Systems
IBM Developer / © 2019 IBM Corporation 8
Machine Learning
Deployment
IBM Developer / © 2019 IBM Corporation 9
What, Where, How?
– What are you deploying?
• What is a “model”
– Where are you deploying?
• Target environment (cloud, browser, edge)
• Batch, streaming, real-time?
– How are you deploying?
• “devops” deployment mechanism
• Serving framework
We will talk mostly about the what
IBM Developer / © 2019 IBM Corporation 10
What is a “model”?
IBM Developer / © 2019 IBM Corporation 11
Deep Learning doesn’t need
feature engineering or data
processing …
IBM Developer / © 2019 IBM Corporation 12
right?
Deep learning
pipeline?
IBM Developer / © 2019 IBM Corporation 13
Source: https://ai.googleblog.com/2016/03/train-your-own-image-classifier-with.html
beagle: 0.82
Input image Inference Prediction
Deep learning
pipeline!
IBM Developer / © 2019 IBM Corporation 14
beagle: 0.82
basset: 0.09
bluetick: 0.07
...
Input image Image pre-processing Prediction
Decode image
Resize
Normalization
Convert types / format
Inference Post-processing
[0.2, 0.3, … ]
(label, prob)
Sort
Label map
PIL, OpenCV, tf.image,
…
Custom
Python
* Logos trademarks of their respective projects
Image pre-processing
IBM Developer / © 2019 IBM Corporation 15
Decode image
Resize
Normalization
Convert types / format
vs
Color mode cat: 0.45
beagle: 0.34
Decoding lib
RGB BGR
PIL vs OpenCV vs tf.image vs skimage
libJPEG vs OpenCV
INTEGER_FAST vs INTEGER_ACCURATE
Data layout
NCHW vs NHWC
Image pre-processing
IBM Developer / © 2019 IBM Corporation 16
Decode image
Resize
Normalization
Convert types / format
Operation order
Normalize INT pixels (128) Convert Float32
Convert Float32 Normalize float (0.5)
Inference post-
processing
IBM Developer / © 2019 IBM Corporation 17
Convert to numpy array
[0.2, 0.3, … ]
(label, prob)
Sort
Label map
Custom loading label mapping / vocab / …
TF SavedModel (assets)
Keras decode_predictions
Custom code
Custom code
Pipelines, not Models
– Deploying just the model part of the
workflow is not enough
– Entire pipeline must be deployed
• Data transforms
• Feature extraction & pre-processing
• DL / ML model
• Prediction transformation
– Even ETL is part of the pipeline!
– Pipelines in frameworks
• scikit-learn
• Spark ML pipelines
• TensorFlow Transform
• pipeliner (R)
IBM Developer / © 2019 IBM Corporation 18
Challenges
IBM Developer / © 2019 IBM Corporation
– Formats
• Each framework does things differently
• Proprietary formats: lock-in, not portable
– Lack of standardization leads to custom
solutions and extensions
– Need to manage and bridge many different:
• Languages - Python, R, Notebooks, Scala / Java / C
• Frameworks – too many to count!
• Dependencies
• Versions
– Performance characteristics can be highly
variable across these dimensions
– Friction between teams
• Data scientists & researchers – latest & greatest
• Production – stability, control, minimize changes,
performance
• Business – metrics, business impact, product must
always work!
* Logos trademarks of their respective projects
19
Containers for ML
Deployment
IBM Developer / © 2019 IBM Corporation 20
Containers are “The Solution”
… right?
– But …
• What goes in the container is still the most
important factor
• Performance can be highly variable across
language, framework, version
• Requires devops knowledge, CI / deployment
pipelines, good practices
• Does not solve the issue of standardization
• Formats
• APIs exposed
• A serving framework is still required on top
– Container-based deployment has
significant benefits
• Repeatability
• Ease of configuration
• Separation of concerns – focus on what, not
how
• Allow data scientists & researchers to use their
language / framework of choice
• Container frameworks take care of (certain)
monitoring, fault tolerance, HA, etc.
IBM Developer / © 2019 IBM Corporation 21
Open Standards for
Model Serialization &
Deployment
IBM Developer / © 2019 IBM Corporation 22
Why a standard?
Standard
Format
Execution
Optimization
Tooling
(Viz, analysis, …)
Single stack
IBM Developer / © 2019 IBM Corporation 23
Why an Open Standard?
– Open-source vs open standard
– Open source (license) is only one
aspect
• OSS licensing allows free use, modification
• Inspect the code etc
• … but may not have any control
– Open governance is critical
• Avoid concentration of control (typically by large
companies, vendors)
• Visibility of development processes, strategic
planning, roadmaps
– However there are downsides
• Standard needs wide adoption and critical mass
to succeed
• A standard can move slowly in terms of new
features, fixes and enhancements
• Design by committee
• Keeping up with pace of framework development
IBM Developer / © 2019 IBM Corporation 24
Open Neural Network Exchange
(ONNX)
– Championed by Facebook & Microsoft
– Protobuf for serialization format and type
specification
– Describes
• computation graph (inputs, outputs, operators) - DAG
• values (weights)
– In this way the serialized graph is “self-
contained”
– Focused on Deep Learning / tensor operations
– Baked into PyTorch from 1.0.0 / Caffe2 as the
serialization & interchange format
IBM Developer / © 2019 IBM Corporation 25
ONNX Graphs
IBM Developer / © 2019 IBM Corporation 26
matmult/Mul (op#0)
input0 X
input1 Y
output0 Z
X
Z
Y
Source: http://onnx.ai/sklearn-onnx/auto_examples/plot_pipeline.html
graph {
node {
input: "X"
input: "Y"
output: "Z"
name: "matmult"
op_type: "Mul"
}
input {
name: "X"
type { ... }
}
output {
name: "Z"
type { ... }
}
}
ONNX Graphs
Source: https://github.com/onnx/tutorials/blob/master/tutorials/VisualizingAModel.md
SqueezeNet Graph Visualization
IBM Developer / © 2019 IBM Corporation 27
ONNX-ML
– Provides support for (parts of)
“traditional” machine learning
• Additional types
– sequences
– maps
• Operators
• Vectorizers (numeric & string data)
• One hot encoding, label encoding
• Scalers (normalization, scaling)
• Models (linear, SVM, TreeEnsemble)
• …
https://github.com/onnx/onnx/blob/master/docs/Operators-ml.md
IBM Developer / © 2019 IBM Corporation 28
ONNX-ML
– Exporter support
• Scikit-learn – 60+
• LightGBM
• XGBoost
• Apache Spark ML – 25+
• Keras – all layers + TF custom layers
• Libsvm
• Apple CoreML
https://github.com/onnx/onnxmltools/
http://onnx.ai/sklearn-onnx/index.html
https://github.com/onnx/keras-onnx
IBM Developer / © 2019 IBM Corporation 29
ONNX-ML for Apache Spark
– Exporter support
• Linear models, DT, RF, GBT,
NaiveBayes, OneVsRest
• Scalers, Imputer, Binarizer,
Bucketizer
• String indexing, Stop words
• OneHotEncoding, Feature
selection / slicing
• PCA, Word2Vec, LSH
https://github.com/onnx/onnxmltools/tree/master/onnxmltools/convert/sparkml
IBM Developer / © 2019 IBM Corporation 30
initial_types = [
("label", StringTensorType([1, 1])),
...
]
pipeline_model = pipeline.fit(training_data)
onnx_model = convert_sparkml(pipeline_model,
..., initial_types)
ONNX-ML for Apache Spark
– Missing exporters
• Feature hashing, TFIDF
• RFormula
• NGram
• SQLTransformer
• Models – clustering, FP, ALS
– Current issues
• Tokenizer - supported but not in ONNX spec
(custom operator)
• Limited invalid data handling
• Python / PySpark only
IBM Developer / © 2019 IBM Corporation 31
ONNX Ecosystem
Other compliant
runtimes
Single stack
IBM Developer / © 2019 IBM Corporation 32
Network visualization
Converters ONNX Spec
ONNX
Model Zoo
ONNX Governance
– Move towards open governance
model
• Multiple vendors
• High level steering committee
• Special Interest Groups (SIGs)
– Converters
– Training
– Pipelines
– Model zoos
• Working groups
https://github.com/onnx/onnx/tree/master/community
IBM Developer / © 2019 IBM Corporation 33
– However ... not in a foundation
ONNX Missing Pieces
– ONNX
• Operator / converter coverage
– E.g. TensorFlow coverage
• Image processing
– Support for basic resize, crop
– No support for reading image directly (like
tf.image.decode_jpeg)
• String processing
• Comprehensive benchmarks
IBM Developer / © 2019 IBM Corporation 34
– ONNX-ML
• Types
– datetime
• Operators
– String processing / NLP – e.g. tokenization
– Hashing
– Clustering models
• Specific exporters
– Apache Spark ML – python only
– Very basic tokenization in sklearn
– No support for Keras tokenizer
• Combining frameworks
– Still ad-hoc, requires custom code
Summary
ONNX
! !
• Backing by large industry
players
• Growing rapidly with lots
of momentum
• Open governance model
• Focused on deep learning
operators
• ONNX-ML provides some
support for ”traditional”
ML and feature processing
• Still relatively new
• Difficult to keep up with
breadth and depth of
framework evolution
• Still work required for
feature processing and
other data types (strings,
datetime, etc)
• Limited image & text pre-
processing
IBM Developer / © 2019 IBM Corporation 35
Conclusion
– However there are risks
• ONNX still relatively young
• Operator / framework coverage
• Limitations of the standard
• Can one standard encompass all requirements &
use cases?
– Open standard for serialization and
deployment of deep learning pipelines
• True portability across languages, frameworks,
runtimes and versions
• Execution environment independent of the producer
• One execution stack
– Solves a significant pain point for the
deployment of ML pipelines in a truly
open manner
Get involved - it’s open source, (open governance)!
https://onnx.ai/
IBM Developer / © 2019 IBM Corporation 36
Thank you
IBM Developer / © 2019 IBM Corporation
Sign up for IBM Cloud and try Watson Studio: https://ibm.biz/BdznGk
codait.org
twitter.com/MLnick
github.com/MLnick
developer.ibm.com
37
IBM Developer / © 2019 IBM Corporation 38

More Related Content

What's hot

Explainable AI in Industry (KDD 2019 Tutorial)
Explainable AI in Industry (KDD 2019 Tutorial)Explainable AI in Industry (KDD 2019 Tutorial)
Explainable AI in Industry (KDD 2019 Tutorial)
Krishnaram Kenthapadi
 
Managing the Complete Machine Learning Lifecycle with MLflow
Managing the Complete Machine Learning Lifecycle with MLflowManaging the Complete Machine Learning Lifecycle with MLflow
Managing the Complete Machine Learning Lifecycle with MLflow
Databricks
 
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
Krishnaram Kenthapadi
 
BYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFiBYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFi
DataWorks Summit
 
Introduction to machine learning-2023-IT-AI and DS.pdf
Introduction to machine learning-2023-IT-AI and DS.pdfIntroduction to machine learning-2023-IT-AI and DS.pdf
Introduction to machine learning-2023-IT-AI and DS.pdf
SisayNegash4
 

What's hot (20)

Distributed Trace & Log Analysis using ML
Distributed Trace & Log Analysis using MLDistributed Trace & Log Analysis using ML
Distributed Trace & Log Analysis using ML
 
Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)
 
200109-Open AI Chat GPT.pptx
200109-Open AI Chat GPT.pptx200109-Open AI Chat GPT.pptx
200109-Open AI Chat GPT.pptx
 
Kubeflow
KubeflowKubeflow
Kubeflow
 
AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1
 
AI in Manufacturing - John.pdf
AI in Manufacturing - John.pdfAI in Manufacturing - John.pdf
AI in Manufacturing - John.pdf
 
Explainable AI in Industry (KDD 2019 Tutorial)
Explainable AI in Industry (KDD 2019 Tutorial)Explainable AI in Industry (KDD 2019 Tutorial)
Explainable AI in Industry (KDD 2019 Tutorial)
 
Large Language Models - Chat AI.pdf
Large Language Models - Chat AI.pdfLarge Language Models - Chat AI.pdf
Large Language Models - Chat AI.pdf
 
Local Apache NiFi Processor Debug
Local Apache NiFi Processor DebugLocal Apache NiFi Processor Debug
Local Apache NiFi Processor Debug
 
MLOps with Kubeflow
MLOps with Kubeflow MLOps with Kubeflow
MLOps with Kubeflow
 
What Is GPT-3 And Why Is It Revolutionizing Artificial Intelligence?
What Is GPT-3 And Why Is It Revolutionizing Artificial Intelligence?What Is GPT-3 And Why Is It Revolutionizing Artificial Intelligence?
What Is GPT-3 And Why Is It Revolutionizing Artificial Intelligence?
 
Managing the Complete Machine Learning Lifecycle with MLflow
Managing the Complete Machine Learning Lifecycle with MLflowManaging the Complete Machine Learning Lifecycle with MLflow
Managing the Complete Machine Learning Lifecycle with MLflow
 
Generative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptxGenerative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptx
 
Knowledge Graphs and Generative AI
Knowledge Graphs and Generative AIKnowledge Graphs and Generative AI
Knowledge Graphs and Generative AI
 
End to end Machine Learning using Kubeflow - Build, Train, Deploy and Manage
End to end Machine Learning using Kubeflow - Build, Train, Deploy and ManageEnd to end Machine Learning using Kubeflow - Build, Train, Deploy and Manage
End to end Machine Learning using Kubeflow - Build, Train, Deploy and Manage
 
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
Responsible AI in Industry (Tutorials at AAAI 2021, FAccT 2021, and WWW 2021)
 
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data ScienceGet Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
 
BYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFiBYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFi
 
How to fine-tune and develop your own large language model.pptx
How to fine-tune and develop your own large language model.pptxHow to fine-tune and develop your own large language model.pptx
How to fine-tune and develop your own large language model.pptx
 
Introduction to machine learning-2023-IT-AI and DS.pdf
Introduction to machine learning-2023-IT-AI and DS.pdfIntroduction to machine learning-2023-IT-AI and DS.pdf
Introduction to machine learning-2023-IT-AI and DS.pdf
 

Similar to Deploying End-to-End Deep Learning Pipelines with ONNX

Continuous Deployment for Deep Learning
Continuous Deployment for Deep LearningContinuous Deployment for Deep Learning
Continuous Deployment for Deep Learning
Databricks
 
Cell Today and Tomorrow - IBM Systems and Technology Group
Cell Today and Tomorrow - IBM Systems and Technology GroupCell Today and Tomorrow - IBM Systems and Technology Group
Cell Today and Tomorrow - IBM Systems and Technology Group
Slide_N
 
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Bjarni Kristjánsson
 

Similar to Deploying End-to-End Deep Learning Pipelines with ONNX (20)

End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNXEnd-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNX
 
Continuous Deployment for Deep Learning
Continuous Deployment for Deep LearningContinuous Deployment for Deep Learning
Continuous Deployment for Deep Learning
 
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksAi pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooks
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examples
 
Scaling up Deep Learning by Scaling Down
Scaling up Deep Learning by Scaling DownScaling up Deep Learning by Scaling Down
Scaling up Deep Learning by Scaling Down
 
Scaling up deep learning by scaling down
Scaling up deep learning by scaling downScaling up deep learning by scaling down
Scaling up deep learning by scaling down
 
IBM Developer Model Asset eXchange
IBM Developer Model Asset eXchangeIBM Developer Model Asset eXchange
IBM Developer Model Asset eXchange
 
Open, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI PipelinesOpen, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI Pipelines
 
Decision Optimization - CPLEX Optimization Studio - Product Overview(2).PPTX
Decision Optimization - CPLEX Optimization Studio - Product Overview(2).PPTXDecision Optimization - CPLEX Optimization Studio - Product Overview(2).PPTX
Decision Optimization - CPLEX Optimization Studio - Product Overview(2).PPTX
 
Cell Today and Tomorrow - IBM Systems and Technology Group
Cell Today and Tomorrow - IBM Systems and Technology GroupCell Today and Tomorrow - IBM Systems and Technology Group
Cell Today and Tomorrow - IBM Systems and Technology Group
 
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
 
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeInteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for Code
 
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayStrata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
 
Ml also helps generic compiler ?
Ml also helps generic compiler ?Ml also helps generic compiler ?
Ml also helps generic compiler ?
 
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
 
IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017
 
Cloud nativecomputingtechnologysupportinghpc cognitiveworkflows
Cloud nativecomputingtechnologysupportinghpc cognitiveworkflowsCloud nativecomputingtechnologysupportinghpc cognitiveworkflows
Cloud nativecomputingtechnologysupportinghpc cognitiveworkflows
 
Db2 developer ecosystem
Db2 developer ecosystemDb2 developer ecosystem
Db2 developer ecosystem
 
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
 
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
 

More from Databricks

Democratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized PlatformDemocratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized Platform
Databricks
 
Stage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI IntegrationStage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI Integration
Databricks
 
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorchSimplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Databricks
 
Raven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction QueriesRaven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction Queries
Databricks
 
Processing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache SparkProcessing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache Spark
Databricks
 

More from Databricks (20)

DW Migration Webinar-March 2022.pptx
DW Migration Webinar-March 2022.pptxDW Migration Webinar-March 2022.pptx
DW Migration Webinar-March 2022.pptx
 
Data Lakehouse Symposium | Day 1 | Part 1
Data Lakehouse Symposium | Day 1 | Part 1Data Lakehouse Symposium | Day 1 | Part 1
Data Lakehouse Symposium | Day 1 | Part 1
 
Data Lakehouse Symposium | Day 1 | Part 2
Data Lakehouse Symposium | Day 1 | Part 2Data Lakehouse Symposium | Day 1 | Part 2
Data Lakehouse Symposium | Day 1 | Part 2
 
Data Lakehouse Symposium | Day 2
Data Lakehouse Symposium | Day 2Data Lakehouse Symposium | Day 2
Data Lakehouse Symposium | Day 2
 
Data Lakehouse Symposium | Day 4
Data Lakehouse Symposium | Day 4Data Lakehouse Symposium | Day 4
Data Lakehouse Symposium | Day 4
 
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
 
Democratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized PlatformDemocratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized Platform
 
Learn to Use Databricks for Data Science
Learn to Use Databricks for Data ScienceLearn to Use Databricks for Data Science
Learn to Use Databricks for Data Science
 
Why APM Is Not the Same As ML Monitoring
Why APM Is Not the Same As ML MonitoringWhy APM Is Not the Same As ML Monitoring
Why APM Is Not the Same As ML Monitoring
 
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
The Function, the Context, and the Data—Enabling ML Ops at Stitch FixThe Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
 
Stage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI IntegrationStage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI Integration
 
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorchSimplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorch
 
Scaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on KubernetesScaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on Kubernetes
 
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
Scaling and Unifying SciKit Learn and Apache Spark PipelinesScaling and Unifying SciKit Learn and Apache Spark Pipelines
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
 
Sawtooth Windows for Feature Aggregations
Sawtooth Windows for Feature AggregationsSawtooth Windows for Feature Aggregations
Sawtooth Windows for Feature Aggregations
 
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Redis + Apache Spark = Swiss Army Knife Meets Kitchen SinkRedis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
 
Re-imagine Data Monitoring with whylogs and Spark
Re-imagine Data Monitoring with whylogs and SparkRe-imagine Data Monitoring with whylogs and Spark
Re-imagine Data Monitoring with whylogs and Spark
 
Raven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction QueriesRaven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction Queries
 
Processing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache SparkProcessing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache Spark
 
Massive Data Processing in Adobe Using Delta Lake
Massive Data Processing in Adobe Using Delta LakeMassive Data Processing in Adobe Using Delta Lake
Massive Data Processing in Adobe Using Delta Lake
 

Recently uploaded

Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter Lessons
JoseMangaJr1
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
amitlee9823
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
amitlee9823
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
MarinCaroMartnezBerg
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter Lessons
 
ELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptxELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptx
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceBDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 
Predicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science ProjectPredicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science Project
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
 
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% SecureCall me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
ALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptxALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptx
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptx
 
CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptx
 
Halmar dropshipping via API with DroFx
Halmar  dropshipping  via API with DroFxHalmar  dropshipping  via API with DroFx
Halmar dropshipping via API with DroFx
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Deploying End-to-End Deep Learning Pipelines with ONNX

  • 1. Deploying end-to-end deep learning pipelines with ONNX — Nick Pentreath Principal Engineer @MLnick
  • 2. About IBM Developer / © 2019 IBM Corporation – @MLnick on Twitter & Github – Principal Engineer, IBM CODAIT (Center for Open-Source Data & AI Technologies) – Machine Learning & AI – Apache Spark committer & PMC – Author of Machine Learning with Spark – Various conferences & meetups 2
  • 3. CODAIT Improving the Enterprise AI Lifecycle in Open Source Center for Open Source Data & AI Technologies IBM Developer / © 2019 IBM Corporation 3 CODAIT aims to make AI solutions dramatically easier to create, deploy, and manage in the enterprise. We contribute to and advocate for the open-source technologies that are foundational to IBM’s AI offerings. 30+ open-source developers!
  • 4. The Machine Learning Workflow IBM Developer / © 2019 IBM Corporation 4
  • 5. Perception IBM Developer / © 2019 IBM Corporation 5
  • 6. In reality the workflow spans teams … IBM Developer / © 2019 IBM Corporation 6
  • 7. … and tools … IBM Developer / © 2019 IBM Corporation 7
  • 8. … and is a small (but critical!) piece of the puzzle *Source: Hidden Technical Debt in Machine Learning Systems IBM Developer / © 2019 IBM Corporation 8
  • 9. Machine Learning Deployment IBM Developer / © 2019 IBM Corporation 9
  • 10. What, Where, How? – What are you deploying? • What is a “model” – Where are you deploying? • Target environment (cloud, browser, edge) • Batch, streaming, real-time? – How are you deploying? • “devops” deployment mechanism • Serving framework We will talk mostly about the what IBM Developer / © 2019 IBM Corporation 10
  • 11. What is a “model”? IBM Developer / © 2019 IBM Corporation 11
  • 12. Deep Learning doesn’t need feature engineering or data processing … IBM Developer / © 2019 IBM Corporation 12 right?
  • 13. Deep learning pipeline? IBM Developer / © 2019 IBM Corporation 13 Source: https://ai.googleblog.com/2016/03/train-your-own-image-classifier-with.html beagle: 0.82 Input image Inference Prediction
  • 14. Deep learning pipeline! IBM Developer / © 2019 IBM Corporation 14 beagle: 0.82 basset: 0.09 bluetick: 0.07 ... Input image Image pre-processing Prediction Decode image Resize Normalization Convert types / format Inference Post-processing [0.2, 0.3, … ] (label, prob) Sort Label map PIL, OpenCV, tf.image, … Custom Python * Logos trademarks of their respective projects
  • 15. Image pre-processing IBM Developer / © 2019 IBM Corporation 15 Decode image Resize Normalization Convert types / format vs Color mode cat: 0.45 beagle: 0.34 Decoding lib RGB BGR PIL vs OpenCV vs tf.image vs skimage libJPEG vs OpenCV INTEGER_FAST vs INTEGER_ACCURATE Data layout NCHW vs NHWC
  • 16. Image pre-processing IBM Developer / © 2019 IBM Corporation 16 Decode image Resize Normalization Convert types / format Operation order Normalize INT pixels (128) Convert Float32 Convert Float32 Normalize float (0.5)
  • 17. Inference post- processing IBM Developer / © 2019 IBM Corporation 17 Convert to numpy array [0.2, 0.3, … ] (label, prob) Sort Label map Custom loading label mapping / vocab / … TF SavedModel (assets) Keras decode_predictions Custom code Custom code
  • 18. Pipelines, not Models – Deploying just the model part of the workflow is not enough – Entire pipeline must be deployed • Data transforms • Feature extraction & pre-processing • DL / ML model • Prediction transformation – Even ETL is part of the pipeline! – Pipelines in frameworks • scikit-learn • Spark ML pipelines • TensorFlow Transform • pipeliner (R) IBM Developer / © 2019 IBM Corporation 18
  • 19. Challenges IBM Developer / © 2019 IBM Corporation – Formats • Each framework does things differently • Proprietary formats: lock-in, not portable – Lack of standardization leads to custom solutions and extensions – Need to manage and bridge many different: • Languages - Python, R, Notebooks, Scala / Java / C • Frameworks – too many to count! • Dependencies • Versions – Performance characteristics can be highly variable across these dimensions – Friction between teams • Data scientists & researchers – latest & greatest • Production – stability, control, minimize changes, performance • Business – metrics, business impact, product must always work! * Logos trademarks of their respective projects 19
  • 20. Containers for ML Deployment IBM Developer / © 2019 IBM Corporation 20
  • 21. Containers are “The Solution” … right? – But … • What goes in the container is still the most important factor • Performance can be highly variable across language, framework, version • Requires devops knowledge, CI / deployment pipelines, good practices • Does not solve the issue of standardization • Formats • APIs exposed • A serving framework is still required on top – Container-based deployment has significant benefits • Repeatability • Ease of configuration • Separation of concerns – focus on what, not how • Allow data scientists & researchers to use their language / framework of choice • Container frameworks take care of (certain) monitoring, fault tolerance, HA, etc. IBM Developer / © 2019 IBM Corporation 21
  • 22. Open Standards for Model Serialization & Deployment IBM Developer / © 2019 IBM Corporation 22
  • 23. Why a standard? Standard Format Execution Optimization Tooling (Viz, analysis, …) Single stack IBM Developer / © 2019 IBM Corporation 23
  • 24. Why an Open Standard? – Open-source vs open standard – Open source (license) is only one aspect • OSS licensing allows free use, modification • Inspect the code etc • … but may not have any control – Open governance is critical • Avoid concentration of control (typically by large companies, vendors) • Visibility of development processes, strategic planning, roadmaps – However there are downsides • Standard needs wide adoption and critical mass to succeed • A standard can move slowly in terms of new features, fixes and enhancements • Design by committee • Keeping up with pace of framework development IBM Developer / © 2019 IBM Corporation 24
  • 25. Open Neural Network Exchange (ONNX) – Championed by Facebook & Microsoft – Protobuf for serialization format and type specification – Describes • computation graph (inputs, outputs, operators) - DAG • values (weights) – In this way the serialized graph is “self- contained” – Focused on Deep Learning / tensor operations – Baked into PyTorch from 1.0.0 / Caffe2 as the serialization & interchange format IBM Developer / © 2019 IBM Corporation 25
  • 26. ONNX Graphs IBM Developer / © 2019 IBM Corporation 26 matmult/Mul (op#0) input0 X input1 Y output0 Z X Z Y Source: http://onnx.ai/sklearn-onnx/auto_examples/plot_pipeline.html graph { node { input: "X" input: "Y" output: "Z" name: "matmult" op_type: "Mul" } input { name: "X" type { ... } } output { name: "Z" type { ... } } }
  • 28. ONNX-ML – Provides support for (parts of) “traditional” machine learning • Additional types – sequences – maps • Operators • Vectorizers (numeric & string data) • One hot encoding, label encoding • Scalers (normalization, scaling) • Models (linear, SVM, TreeEnsemble) • … https://github.com/onnx/onnx/blob/master/docs/Operators-ml.md IBM Developer / © 2019 IBM Corporation 28
  • 29. ONNX-ML – Exporter support • Scikit-learn – 60+ • LightGBM • XGBoost • Apache Spark ML – 25+ • Keras – all layers + TF custom layers • Libsvm • Apple CoreML https://github.com/onnx/onnxmltools/ http://onnx.ai/sklearn-onnx/index.html https://github.com/onnx/keras-onnx IBM Developer / © 2019 IBM Corporation 29
  • 30. ONNX-ML for Apache Spark – Exporter support • Linear models, DT, RF, GBT, NaiveBayes, OneVsRest • Scalers, Imputer, Binarizer, Bucketizer • String indexing, Stop words • OneHotEncoding, Feature selection / slicing • PCA, Word2Vec, LSH https://github.com/onnx/onnxmltools/tree/master/onnxmltools/convert/sparkml IBM Developer / © 2019 IBM Corporation 30 initial_types = [ ("label", StringTensorType([1, 1])), ... ] pipeline_model = pipeline.fit(training_data) onnx_model = convert_sparkml(pipeline_model, ..., initial_types)
  • 31. ONNX-ML for Apache Spark – Missing exporters • Feature hashing, TFIDF • RFormula • NGram • SQLTransformer • Models – clustering, FP, ALS – Current issues • Tokenizer - supported but not in ONNX spec (custom operator) • Limited invalid data handling • Python / PySpark only IBM Developer / © 2019 IBM Corporation 31
  • 32. ONNX Ecosystem Other compliant runtimes Single stack IBM Developer / © 2019 IBM Corporation 32 Network visualization Converters ONNX Spec ONNX Model Zoo
  • 33. ONNX Governance – Move towards open governance model • Multiple vendors • High level steering committee • Special Interest Groups (SIGs) – Converters – Training – Pipelines – Model zoos • Working groups https://github.com/onnx/onnx/tree/master/community IBM Developer / © 2019 IBM Corporation 33 – However ... not in a foundation
  • 34. ONNX Missing Pieces – ONNX • Operator / converter coverage – E.g. TensorFlow coverage • Image processing – Support for basic resize, crop – No support for reading image directly (like tf.image.decode_jpeg) • String processing • Comprehensive benchmarks IBM Developer / © 2019 IBM Corporation 34 – ONNX-ML • Types – datetime • Operators – String processing / NLP – e.g. tokenization – Hashing – Clustering models • Specific exporters – Apache Spark ML – python only – Very basic tokenization in sklearn – No support for Keras tokenizer • Combining frameworks – Still ad-hoc, requires custom code
  • 35. Summary ONNX ! ! • Backing by large industry players • Growing rapidly with lots of momentum • Open governance model • Focused on deep learning operators • ONNX-ML provides some support for ”traditional” ML and feature processing • Still relatively new • Difficult to keep up with breadth and depth of framework evolution • Still work required for feature processing and other data types (strings, datetime, etc) • Limited image & text pre- processing IBM Developer / © 2019 IBM Corporation 35
  • 36. Conclusion – However there are risks • ONNX still relatively young • Operator / framework coverage • Limitations of the standard • Can one standard encompass all requirements & use cases? – Open standard for serialization and deployment of deep learning pipelines • True portability across languages, frameworks, runtimes and versions • Execution environment independent of the producer • One execution stack – Solves a significant pain point for the deployment of ML pipelines in a truly open manner Get involved - it’s open source, (open governance)! https://onnx.ai/ IBM Developer / © 2019 IBM Corporation 36
  • 37. Thank you IBM Developer / © 2019 IBM Corporation Sign up for IBM Cloud and try Watson Studio: https://ibm.biz/BdznGk codait.org twitter.com/MLnick github.com/MLnick developer.ibm.com 37
  • 38. IBM Developer / © 2019 IBM Corporation 38