SlideShare a Scribd company logo
Richard Garris (Principal Solutions Architect)
Apache Spark™ MLlib 2.x:
How to Productionize your Machine
Learning Models
Empower anyone to innovate faster with big data.
Founded by the creators of Apache Spark.
Contributes 75% of the open source code,
10x more than any other company.
VISION
WHO WE ARE
A fully-managed data processing platform
for the enterprise, powered by Apache Spark.
PRODUCT
CLUSTER TUNING &
MANAGEMENT
INTERACTIVE
WORKSPACE
PRODUCTION
PIPELINE
AUTOMATION
OPTIMIZED DATA
ACCESS
DATABRICKSENTERPRISE SECURITY
YOUR	TEAMS
Data Science
Data Engineering
Manyothers…
BIAnalysts
YOUR	DATA
Cloud Storage
Data Warehouses
Data Lake
VIRTUAL ANALYTICSPLATFORM
About Me
• Richard L Garris
• rlgarris@databricks.com
• Twitter @rlgarris
• Principal Data Solutions Architect @ Databricks
• 12+ years designing Enterprise Data Solutions for everyone from
startups to Global 2000
• Prior Work ExperiencePwC, Google and Skytree – the Machine
Learning Company
• Ohio State Buckeye and Masters from CMU
Outline
• Spark Mllib2.X
• Model Serialization
• Model Scoring SystemRequirements
• Model Scoring Architectures
• Databricks Model Scoring
About Apache Spark™ MLlib
• Started with Spark 0.8 in the
AMPLab in 2014
• Migration to Spark
DataFrames started with
Spark 1.3 with feature parity
within 2.X
• Contributions by 75+ orgs,
~250 individuals
• Distributed algorithms that
scale linearly with the data
MLlib’s Goals
• General purpose machine learning library optimizedfor big data
• Linearly scalable = 2x more machines , runtime theoretically cut in half
• Fault tolerant = resilient to the failure of nodes
• Covers the most common algorithms with distributed implementations
• Built around the concept of a Data Science Pipeline (scikit-learn)
• Written entirelyusing Apache Spark™
• Integrateswell withthe Agile Modeling Process
A Model is a MathematicalFunction
• A model is a function: 𝑓 𝑥
• Linear regression 𝑦	 = 	𝑏0	 + 	𝑏1 𝑥1	 + 	𝑏2 𝑥2
ML Pipelines
Train	model
Evaluate
Load	data
Extract	features
A	very	simple	pipeline
ML Pipelines
Train	model	1
Evaluate
Datasource 1
Datasource 2
Datasource	3
Extract	featuresExtract	features
Feature	transform	1
Feature	transform	2
Feature	transform	3
Train	model	2
Ensemble
A	real	pipeline!
ProductionizingModels Today
Data Science Data Engineering
Develop Prototype
Model using Python/R Re-implement model for
production (Java)
Problems with ProductionizingModels
Develop Prototype
Model using Python/R
Re-implement model for
production (Java)
- Extra work
- Different code paths
- Data science does not translate to production
- Slow to update models
Data Science Data Engineering
MLlib 2.X Model Serialization
Data Science Data Engineering
Develop Prototype
Model using Python/R
Persist model or Pipeline:
model.save(“s3n://...”)
Load Pipeline (Scala/Java)
Model.load(“s3n://…”)
Deploy in production
Scala
val lrModel = lrPipeline.fit(dataset)
// Save the Model
lrModel.write.save("/models/lr")
•
MLlib 2.X Model Serialization Snippet
Python
lrModel = lrPipeline.fit(dataset)
# Save the Model
lrModel.write.save("/models/lr")
•
Model Serialization Output
Code
// List Contents of the Model Dir
dbutils.fs.ls("/models/lr")
•
Output
Remember	this	is	a	pipeline	
model	and	these	are	the	stages!
TransformerStage (StringIndexer)
Code
// Cat the contents of the Metadata dir
dbutils.fs.head(”/models/lr/stages/00_strI
dx_bb9728f85745/metadata/part-00000")
// Display the Parquet File in the Data dir
display(spark.read.parquet(”/models/lr/sta
ges/00_strIdx_bb9728f85745/data/"))
Output
{
"class":"org.apache.spark.ml.feature.StringIndexerModel",
"timestamp":1488120411719,
"sparkVersion":"2.1.0",
"uid":"strIdx_bb9728f85745",
"paramMap":{
"outputCol":"workclassIdx",
"inputCol":"workclass",
"handleInvalid":"error"
}
}
Metadata	and	params
Data	(Hashmap)
Estimator Stage (LogisticRegression)
Code
// Cat the contents of the Metadata dir
dbutils.fs.head(”/models/lr/stages/18_logr
eg_325fa760f925/metadata/part-00000")
// Display the Parquet File in the Data dir
display(spark.read.parquet("/models/lr/sta
ges/18_logreg_325fa760f925/data/"))
Output
Model	params
Intercept	+	Coefficients
{"class":"org.apache.spark.ml.classification.LogisticRegressionModel",
"timestamp":1488120446324,
"sparkVersion":"2.1.0",
"uid":"logreg_325fa760f925",
"paramMap":{
"predictionCol":"prediction",
"standardization":true,
"probabilityCol":"probability",
"maxIter":100,
"elasticNetParam":0.0,
"family":"auto",
"regParam":0.0,
"threshold":0.5,
"fitIntercept":true,
"labelCol":"label” }}
Output
Decision	Tree	Splits
Estimator Stage (DecisionTree)
Code
// Display the Parquet File in the Data dir
display(spark.read.parquet(”/models/dt/stages/18_dtc_3d614bcb3ff825/data/"))
// Re-save as JSON
spark.read.parquet("/models/dt/stages/18_dtc_3d614bcb3ff825/data/").json((”/models/json/dt").
Visualize Stage (DecisionTree)
Visualization	of	the	Tree	
In	Databricks
What are the Requirementsfor
a Robust Model Deployment
System?
Model ScoringEnvironment Examples
• In Web Applications / EcommercePortals
• Mainframe / Batch ProcessingSystems
• Real-TimeProcessingSystems/ Middleware
• Via API / Microservice
• Embeddedin Devices (Mobile Phones, Medical Devices,Autos)
Hidden Technical Debt in ML Systems
“Hidden Technical Debt in Machine
Learning Systems “, Google NIPS 2015
“Hidden Technical Debt in Machine Learning Systems “, Google NIPS 2015
Agile Modeling Process
Set	Business	Goals
Understand	Your	
Data
Create	Hypothesis
Devise	Experiment
Prepare	Data
Train-Tune-Test	
Model
Deploy	Model
Measure/Evaluate	
Results
Agile Modeling Process
Set	Business	Goals
Understand	Your	
Data
Create	Hypothesis
Devise	Experiment
Prepare	Data
Train-Tune-Test	
Model
Deploy	Model
Measure/Evaluate	
Results
Focus	of	this	
talk
Set	Business	Goals
Understand	Your	
Data
Create	Hypothesis
Devise	Experiment
Prepare	Data
Train-Tune-Test	
Model
Deploy	Model
Measure/Evaluate	
Results
Deployment Should be Agile
• Deploymentneeds to
support A/B testing and
experiments
• Deploymentshould
support measuring and
evaluating model
performance
• Deploymentshould be
fast and adaptive to
business needs
Model A/B Testing, Monitoring, Updates
• A/B testing – comparing two versions to see what performs better
• Monitoring is the process of observing the model’s performance, logging it’s
behavior and alerting when the model degrades
• Logging should log exactly the data feed into the model at the time of scoring
• Model update process
• Benchmark (or Shadow Models)
• Phase-In (20% traffic)
• Avoid Big Bang
Consider the Scoring Environment
Customer SLAs
•Response time
•Throughput
(predictions per
second)
•Uptime / Reliability
Tech Stack
–C / C++
–Legacy (mainframe)
–Java
Batch Real-Time
Scoringin Batch vs Real-Time
• Synchronous
• Could be Seconds:
– Customer is waiting
(human real-time)
• Subsecond:
– High Frequency Trading
– Fraud Detection on the Swipe
• Asynchronous
• Internal Use
• Triggers can be event based on time
based
• Used for Email Campaigns,
Notifications
Open Loop – human being involved
Closed Loop – no human involved
• Model Scoring – almost always
closed loop, some open loop e.g.
alert agents or customer service
• Model Training – usually open loop
with a data scientist in the loop to
update the model
Online Learning and Open / Closed Loop
• Online is closed loop, entirely
machine driven but modeling is
risky
• need to have proper model
monitoring and safeguards to
prevent abuse / sensitivity to noise
• MLlib supports online through
streaming models (k-means, logistic
regression support online)
• Alternative – use a more complex
model to better fit new data rather
than using online learning
Open / ClosedLoop Online Learning
Model Scoring– Bot Detection
Not All Models Return Boolean – e.g. a Yes / No
Example: Login Bot Detector
Different behavior depending on probability that use is a bot
0.0-0.4 ☞ Allow login
0.4-0.6 ☞ Send Challenge Question
0.6 to 0.75 ☞ Send SMS Code
0.75 to 0.9 ☞ Refer to Agent
0.9 - 1.0 ☞ Block
Model Scoring– Recommendations
Output is a ranking of the top n items
API – send user ID + number of items
Returnsorted set of items to recommend
Optional –
pass contextsensitive informationto tailor results
Model Scoring Architectures
Architecture Option A
PrecomputePredictions using Spark and Serve fromDatabase
Train	ALS	Model
Send	Email	Offers	
to	Customers
Save	Offers	to	
NoSQL
Ranked	Offers
Display	Ranked	
Offers	in	Web	/	
Mobile
Recurring	
Batch
Architecture Option B
Spark Streamand Score using an API with CachedPredictions
Web	Activity	Logs
Kill	User’s	Login	
SessionCompute	Features Run	Prediction
Streaming
Cache	Predictions API	Check
Architecture Option C
Train with Spark and Score Outside of Spark
Train	Model	in	
Spark
Save	Model	to	S3	
/	HDFS
New	Data
Copy	
Model	to	
Production
Predictions
Load	coefficients	and	
intercept	from	file
Databricks Model Scoring
Databricks Model Scoring
• Based on ArchitectureOption C
• Goal: DeployMLlib model outside of Apache Spark and
Databricks.
• Easy to Embed in Existing Environments
• Low Latency and Complexity
• Low Overhead
• Train Model in Databricks
– Call Fit on Pipeline
– Save Model as JSON
• Deploy model in external system
– Add dependency on “dbml-local”
package (without Spark)
– Load model from JSON at startup
– Make predictions in real time
Databricks Model Scoring
Code
// Fit and Export the Model in Databricks
val lrModel = lrPipeline.fit(dataset)
ModelExporter.export(lrModel, " /models/db ")
// In Your Application (Scala)
import com.databricks.ml.local.ModelImport
val lrModel= ModelImport.import("s3a:/...")
val jsonInput = ...
val jsonOutput= lrModel.transform(jsonInput)
Databricks Model ScoringPrivate Beta
• Private BetaAvailable for Databricks Customers
• Available on Databricks using Apache Spark 2.1
• Only logistic regressionavailable now
• Additional Estimatorsand Transformersin Progress
Demo Model Scoring
https://community.cloud.databricks.com/?o=1526931011080774
#notebook/1904316851197504
Thank You.
Questions?
Happy Sparking
richard@databricks.com

More Related Content

PPTX
HBaseCon 2013: Apache HBase Table Snapshots
PPTX
Machine Learning - Dataset Preparation
PDF
Probabilistic modeling in deep learning
PDF
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
ODP
Machine Learning With Logistic Regression
PPTX
Stochastic Gradient Decent (SGD).pptx
PDF
Scalable and Available, Patterns for Success
PPTX
K means clustering
HBaseCon 2013: Apache HBase Table Snapshots
Machine Learning - Dataset Preparation
Probabilistic modeling in deep learning
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
Machine Learning With Logistic Regression
Stochastic Gradient Decent (SGD).pptx
Scalable and Available, Patterns for Success
K means clustering

What's hot (20)

PPTX
Practical learnings from running thousands of Flink jobs
PPTX
XgBoost.pptx
PPTX
Tuning Apache Kafka Connectors for Flink.pptx
PDF
Flink powered stream processing platform at Pinterest
PDF
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
PDF
Ridge regression
PDF
[기초개념] Recurrent Neural Network (RNN) 소개
PPTX
Introduction For seq2seq(sequence to sequence) and RNN
PPTX
Presentation on unsupervised learning
PPT
Perceptron
PDF
Transactional writes to cloud storage with Eric Liang
PPSX
ADABoost classifier
PDF
Feature Engineering
PDF
Logistic regression in Machine Learning
PDF
Flink Forward Berlin 2017: Stefan Richter - A look at Flink's internal data s...
PDF
PPTX
Click-Through Example for Flink’s KafkaConsumer Checkpointing
PDF
PR-270: PP-YOLO: An Effective and Efficient Implementation of Object Detector
PPTX
Graph Databases at Netflix
PPTX
Decision tree
Practical learnings from running thousands of Flink jobs
XgBoost.pptx
Tuning Apache Kafka Connectors for Flink.pptx
Flink powered stream processing platform at Pinterest
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Ridge regression
[기초개념] Recurrent Neural Network (RNN) 소개
Introduction For seq2seq(sequence to sequence) and RNN
Presentation on unsupervised learning
Perceptron
Transactional writes to cloud storage with Eric Liang
ADABoost classifier
Feature Engineering
Logistic regression in Machine Learning
Flink Forward Berlin 2017: Stefan Richter - A look at Flink's internal data s...
Click-Through Example for Flink’s KafkaConsumer Checkpointing
PR-270: PP-YOLO: An Effective and Efficient Implementation of Object Detector
Graph Databases at Netflix
Decision tree
Ad

Viewers also liked (8)

PDF
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
PDF
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
PDF
[Tutorial] building machine learning models for predictive maintenance applic...
PPTX
Use r tutorial part1, introduction to sparkr
PDF
Creating an end-to-end Recommender System with Apache Spark and Elasticsearch...
PDF
Building Custom ML PipelineStages for Feature Selection with Marc Kaminski
PPTX
Apache Spark Model Deployment
PPTX
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
[Tutorial] building machine learning models for predictive maintenance applic...
Use r tutorial part1, introduction to sparkr
Creating an end-to-end Recommender System with Apache Spark and Elasticsearch...
Building Custom ML PipelineStages for Feature Selection with Marc Kaminski
Apache Spark Model Deployment
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
Ad

Similar to How to Productionize Your Machine Learning Models Using Apache Spark MLlib 2.x with Richard Garris (20)

PDF
Apache ® Spark™ MLlib 2.x: How to Productionize your Machine Learning Models
PPTX
Deploying Data Science Engines to Production
PDF
Building machine learning service in your business — Eric Chen (Uber) @PAPIs ...
PPTX
Machine Learning Models in Production
PDF
Continuous delivery for machine learning
PDF
Productionizing Machine Learning with a Microservices Architecture
PDF
DevOps for DataScience
PDF
PyCon Sweden 2022 - Dowling - Serverless ML with Hopsworks.pdf
PDF
World Artificial Intelligence Conference Shanghai 2018
PDF
Media_Entertainment_Veriticals
PPTX
Tooling for Machine Learning: AWS Products, Open Source Tools, and DevOps Pra...
PDF
Monitoring AI with AI
PDF
Data Summer Conf 2018, “Monitoring AI with AI (RUS)” — Stepan Pushkarev, CTO ...
PDF
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
PDF
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
PDF
A survey on Machine Learning In Production (July 2018)
PDF
Low Latency Polyglot Model Scoring using Apache Apex
PDF
Real time data processing and model inferncing platform with Kafka streams (N...
PDF
Scaling Ride-Hailing with Machine Learning on MLflow
PDF
Machine learning model to production
Apache ® Spark™ MLlib 2.x: How to Productionize your Machine Learning Models
Deploying Data Science Engines to Production
Building machine learning service in your business — Eric Chen (Uber) @PAPIs ...
Machine Learning Models in Production
Continuous delivery for machine learning
Productionizing Machine Learning with a Microservices Architecture
DevOps for DataScience
PyCon Sweden 2022 - Dowling - Serverless ML with Hopsworks.pdf
World Artificial Intelligence Conference Shanghai 2018
Media_Entertainment_Veriticals
Tooling for Machine Learning: AWS Products, Open Source Tools, and DevOps Pra...
Monitoring AI with AI
Data Summer Conf 2018, “Monitoring AI with AI (RUS)” — Stepan Pushkarev, CTO ...
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
A survey on Machine Learning In Production (July 2018)
Low Latency Polyglot Model Scoring using Apache Apex
Real time data processing and model inferncing platform with Kafka streams (N...
Scaling Ride-Hailing with Machine Learning on MLflow
Machine learning model to production

More from Databricks (20)

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

Recently uploaded (20)

PPTX
climate analysis of Dhaka ,Banglades.pptx
PPTX
Supervised vs unsupervised machine learning algorithms
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PDF
Launch Your Data Science Career in Kochi – 2025
PDF
TRAFFIC-MANAGEMENT-AND-ACCIDENT-INVESTIGATION-WITH-DRIVING-PDF-FILE.pdf
PPTX
Moving the Public Sector (Government) to a Digital Adoption
PPTX
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
PDF
BF and FI - Blockchain, fintech and Financial Innovation Lesson 2.pdf
PPTX
Introduction to Knowledge Engineering Part 1
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PDF
Mega Projects Data Mega Projects Data
PDF
Galatica Smart Energy Infrastructure Startup Pitch Deck
PPTX
1_Introduction to advance data techniques.pptx
PDF
Foundation of Data Science unit number two notes
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
PPT
Quality review (1)_presentation of this 21
PPT
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
PPTX
Data_Analytics_and_PowerBI_Presentation.pptx
climate analysis of Dhaka ,Banglades.pptx
Supervised vs unsupervised machine learning algorithms
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
Launch Your Data Science Career in Kochi – 2025
TRAFFIC-MANAGEMENT-AND-ACCIDENT-INVESTIGATION-WITH-DRIVING-PDF-FILE.pdf
Moving the Public Sector (Government) to a Digital Adoption
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
BF and FI - Blockchain, fintech and Financial Innovation Lesson 2.pdf
Introduction to Knowledge Engineering Part 1
Miokarditis (Inflamasi pada Otot Jantung)
Mega Projects Data Mega Projects Data
Galatica Smart Energy Infrastructure Startup Pitch Deck
1_Introduction to advance data techniques.pptx
Foundation of Data Science unit number two notes
IBA_Chapter_11_Slides_Final_Accessible.pptx
Quality review (1)_presentation of this 21
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
Data_Analytics_and_PowerBI_Presentation.pptx

How to Productionize Your Machine Learning Models Using Apache Spark MLlib 2.x with Richard Garris

  • 1. Richard Garris (Principal Solutions Architect) Apache Spark™ MLlib 2.x: How to Productionize your Machine Learning Models
  • 2. Empower anyone to innovate faster with big data. Founded by the creators of Apache Spark. Contributes 75% of the open source code, 10x more than any other company. VISION WHO WE ARE A fully-managed data processing platform for the enterprise, powered by Apache Spark. PRODUCT
  • 3. CLUSTER TUNING & MANAGEMENT INTERACTIVE WORKSPACE PRODUCTION PIPELINE AUTOMATION OPTIMIZED DATA ACCESS DATABRICKSENTERPRISE SECURITY YOUR TEAMS Data Science Data Engineering Manyothers… BIAnalysts YOUR DATA Cloud Storage Data Warehouses Data Lake VIRTUAL ANALYTICSPLATFORM
  • 4. About Me • Richard L Garris • rlgarris@databricks.com • Twitter @rlgarris • Principal Data Solutions Architect @ Databricks • 12+ years designing Enterprise Data Solutions for everyone from startups to Global 2000 • Prior Work ExperiencePwC, Google and Skytree – the Machine Learning Company • Ohio State Buckeye and Masters from CMU
  • 5. Outline • Spark Mllib2.X • Model Serialization • Model Scoring SystemRequirements • Model Scoring Architectures • Databricks Model Scoring
  • 6. About Apache Spark™ MLlib • Started with Spark 0.8 in the AMPLab in 2014 • Migration to Spark DataFrames started with Spark 1.3 with feature parity within 2.X • Contributions by 75+ orgs, ~250 individuals • Distributed algorithms that scale linearly with the data
  • 7. MLlib’s Goals • General purpose machine learning library optimizedfor big data • Linearly scalable = 2x more machines , runtime theoretically cut in half • Fault tolerant = resilient to the failure of nodes • Covers the most common algorithms with distributed implementations • Built around the concept of a Data Science Pipeline (scikit-learn) • Written entirelyusing Apache Spark™ • Integrateswell withthe Agile Modeling Process
  • 8. A Model is a MathematicalFunction • A model is a function: 𝑓 𝑥 • Linear regression 𝑦 = 𝑏0 + 𝑏1 𝑥1 + 𝑏2 𝑥2
  • 10. ML Pipelines Train model 1 Evaluate Datasource 1 Datasource 2 Datasource 3 Extract featuresExtract features Feature transform 1 Feature transform 2 Feature transform 3 Train model 2 Ensemble A real pipeline!
  • 11. ProductionizingModels Today Data Science Data Engineering Develop Prototype Model using Python/R Re-implement model for production (Java)
  • 12. Problems with ProductionizingModels Develop Prototype Model using Python/R Re-implement model for production (Java) - Extra work - Different code paths - Data science does not translate to production - Slow to update models Data Science Data Engineering
  • 13. MLlib 2.X Model Serialization Data Science Data Engineering Develop Prototype Model using Python/R Persist model or Pipeline: model.save(“s3n://...”) Load Pipeline (Scala/Java) Model.load(“s3n://…”) Deploy in production
  • 14. Scala val lrModel = lrPipeline.fit(dataset) // Save the Model lrModel.write.save("/models/lr") • MLlib 2.X Model Serialization Snippet Python lrModel = lrPipeline.fit(dataset) # Save the Model lrModel.write.save("/models/lr") •
  • 15. Model Serialization Output Code // List Contents of the Model Dir dbutils.fs.ls("/models/lr") • Output Remember this is a pipeline model and these are the stages!
  • 16. TransformerStage (StringIndexer) Code // Cat the contents of the Metadata dir dbutils.fs.head(”/models/lr/stages/00_strI dx_bb9728f85745/metadata/part-00000") // Display the Parquet File in the Data dir display(spark.read.parquet(”/models/lr/sta ges/00_strIdx_bb9728f85745/data/")) Output { "class":"org.apache.spark.ml.feature.StringIndexerModel", "timestamp":1488120411719, "sparkVersion":"2.1.0", "uid":"strIdx_bb9728f85745", "paramMap":{ "outputCol":"workclassIdx", "inputCol":"workclass", "handleInvalid":"error" } } Metadata and params Data (Hashmap)
  • 17. Estimator Stage (LogisticRegression) Code // Cat the contents of the Metadata dir dbutils.fs.head(”/models/lr/stages/18_logr eg_325fa760f925/metadata/part-00000") // Display the Parquet File in the Data dir display(spark.read.parquet("/models/lr/sta ges/18_logreg_325fa760f925/data/")) Output Model params Intercept + Coefficients {"class":"org.apache.spark.ml.classification.LogisticRegressionModel", "timestamp":1488120446324, "sparkVersion":"2.1.0", "uid":"logreg_325fa760f925", "paramMap":{ "predictionCol":"prediction", "standardization":true, "probabilityCol":"probability", "maxIter":100, "elasticNetParam":0.0, "family":"auto", "regParam":0.0, "threshold":0.5, "fitIntercept":true, "labelCol":"label” }}
  • 18. Output Decision Tree Splits Estimator Stage (DecisionTree) Code // Display the Parquet File in the Data dir display(spark.read.parquet(”/models/dt/stages/18_dtc_3d614bcb3ff825/data/")) // Re-save as JSON spark.read.parquet("/models/dt/stages/18_dtc_3d614bcb3ff825/data/").json((”/models/json/dt").
  • 20. What are the Requirementsfor a Robust Model Deployment System?
  • 21. Model ScoringEnvironment Examples • In Web Applications / EcommercePortals • Mainframe / Batch ProcessingSystems • Real-TimeProcessingSystems/ Middleware • Via API / Microservice • Embeddedin Devices (Mobile Phones, Medical Devices,Autos)
  • 22. Hidden Technical Debt in ML Systems “Hidden Technical Debt in Machine Learning Systems “, Google NIPS 2015 “Hidden Technical Debt in Machine Learning Systems “, Google NIPS 2015
  • 25. Set Business Goals Understand Your Data Create Hypothesis Devise Experiment Prepare Data Train-Tune-Test Model Deploy Model Measure/Evaluate Results Deployment Should be Agile • Deploymentneeds to support A/B testing and experiments • Deploymentshould support measuring and evaluating model performance • Deploymentshould be fast and adaptive to business needs
  • 26. Model A/B Testing, Monitoring, Updates • A/B testing – comparing two versions to see what performs better • Monitoring is the process of observing the model’s performance, logging it’s behavior and alerting when the model degrades • Logging should log exactly the data feed into the model at the time of scoring • Model update process • Benchmark (or Shadow Models) • Phase-In (20% traffic) • Avoid Big Bang
  • 27. Consider the Scoring Environment Customer SLAs •Response time •Throughput (predictions per second) •Uptime / Reliability Tech Stack –C / C++ –Legacy (mainframe) –Java
  • 28. Batch Real-Time Scoringin Batch vs Real-Time • Synchronous • Could be Seconds: – Customer is waiting (human real-time) • Subsecond: – High Frequency Trading – Fraud Detection on the Swipe • Asynchronous • Internal Use • Triggers can be event based on time based • Used for Email Campaigns, Notifications
  • 29. Open Loop – human being involved Closed Loop – no human involved • Model Scoring – almost always closed loop, some open loop e.g. alert agents or customer service • Model Training – usually open loop with a data scientist in the loop to update the model Online Learning and Open / Closed Loop • Online is closed loop, entirely machine driven but modeling is risky • need to have proper model monitoring and safeguards to prevent abuse / sensitivity to noise • MLlib supports online through streaming models (k-means, logistic regression support online) • Alternative – use a more complex model to better fit new data rather than using online learning Open / ClosedLoop Online Learning
  • 30. Model Scoring– Bot Detection Not All Models Return Boolean – e.g. a Yes / No Example: Login Bot Detector Different behavior depending on probability that use is a bot 0.0-0.4 ☞ Allow login 0.4-0.6 ☞ Send Challenge Question 0.6 to 0.75 ☞ Send SMS Code 0.75 to 0.9 ☞ Refer to Agent 0.9 - 1.0 ☞ Block
  • 31. Model Scoring– Recommendations Output is a ranking of the top n items API – send user ID + number of items Returnsorted set of items to recommend Optional – pass contextsensitive informationto tailor results
  • 33. Architecture Option A PrecomputePredictions using Spark and Serve fromDatabase Train ALS Model Send Email Offers to Customers Save Offers to NoSQL Ranked Offers Display Ranked Offers in Web / Mobile Recurring Batch
  • 34. Architecture Option B Spark Streamand Score using an API with CachedPredictions Web Activity Logs Kill User’s Login SessionCompute Features Run Prediction Streaming Cache Predictions API Check
  • 35. Architecture Option C Train with Spark and Score Outside of Spark Train Model in Spark Save Model to S3 / HDFS New Data Copy Model to Production Predictions Load coefficients and intercept from file
  • 37. Databricks Model Scoring • Based on ArchitectureOption C • Goal: DeployMLlib model outside of Apache Spark and Databricks. • Easy to Embed in Existing Environments • Low Latency and Complexity • Low Overhead
  • 38. • Train Model in Databricks – Call Fit on Pipeline – Save Model as JSON • Deploy model in external system – Add dependency on “dbml-local” package (without Spark) – Load model from JSON at startup – Make predictions in real time Databricks Model Scoring Code // Fit and Export the Model in Databricks val lrModel = lrPipeline.fit(dataset) ModelExporter.export(lrModel, " /models/db ") // In Your Application (Scala) import com.databricks.ml.local.ModelImport val lrModel= ModelImport.import("s3a:/...") val jsonInput = ... val jsonOutput= lrModel.transform(jsonInput)
  • 39. Databricks Model ScoringPrivate Beta • Private BetaAvailable for Databricks Customers • Available on Databricks using Apache Spark 2.1 • Only logistic regressionavailable now • Additional Estimatorsand Transformersin Progress