SlideShare una empresa de Scribd logo
1 de 119
Descargar para leer sin conexión
What is Grammarly?
A writing assistant that helps
make your communication clear
and effective, wherever you type.
Works Where You Do
Emails and Messages
Documents and Projects
Social Media
Our Mission
Grammarly’s evolution
Custom Expressions in Spark
Umayah Abdennabi
Software Engineer @ Grammarly
A lot of data produced
every second! How do
we understand it?
Gnar
Grammarly’s internal data
analytics platform.
Gnar
Grammarly’s internal data
analytics platform.
Gnar
● Goal: to understand
Gnar
● Goal: to understand
○ Who are our users
Gnar
● Goal: to understand
○ Who are our users
○ How do they interact with the product
Gnar
● Goal: to understand
○ Who are our users
○ How do they interact with the product
○ How do they sign-up, engage, pay, and how long do
they stay
Gnar
● Goal: to understand
○ Who are our users
○ How do they interact with the product
○ How do they sign-up, engage, pay, and how long do
they stay
● Allows us to make data driven decisions
Gnar
Gnar
segment “eventName”
where foo = “bar”
by browser
time from 2 months ago to today
User writes a query
using GQL using our
web application
*GQL stands for Gnar Query language, a SQL like language
built on top of Spark SQL
Gnar
Sent to our backend
which will run a
Spark job
segment “eventName”
where foo = “bar”
by browser
time from 2 months ago to today
Gnar
Results will be sent
back to the user and
displayed
segment “eventName”
where foo = “bar”
by browser
time from 2 months ago to today
Gnar
● When users write queries they use something
called expressions to describe what they want to
do
Gnar
● When users write queries they use something
called expressions to describe what they want to
do
○ The previous query had 2
Gnar
● When users write queries they use something
called expressions to describe what they want to
do
○ The previous query had 2
segment “eventName”
where foo = “bar”
by browser
time from 2 months ago to today
Gnar
● When users write queries they use something
called expressions to describe what they want to
do
● Hundreds of queries are run every day, and all of
them use expressions
Expressions
SELECT
weight,
(price - cost) * sold
FROM products
WHERE price > 100
SELECT
weight,
(price - cost) * sold
FROM products
WHERE price > 100
SELECT
weight,
(price - cost) * sold
FROM products
WHERE price > 100
These are expressions
(price - cost) * sold
(price - cost) * sold
sold
cost
*
-(price - cost) * sold
price
sold
cost
*
-
price
sold: 10 price: 2.99 cost: 0.50
Input Row
sold
cost
*
-
price
sold: 10 price: 2.99 cost: 0.50
Input Row
sold
cost
*
-
price
sold: 10 price: 2.99 cost: 0.50
Input Row
10
cost
*
-
price
sold: 10 price: 2.99 cost: 0.50
Input Row
10
0.50
*
-
2.99
sold: 10 price: 2.99 cost: 0.50
Input Row
10
0.50
*
-
2.99
sold: 10 price: 2.99 cost: 0.50
Input Row
102.49
*
2.99
sold: 10 price: 2.99 cost: 0.50
Input Row
102.49
*
2.99
sold: 10 price: 2.99 cost: 0.50
Input Row
24.90
2.99
Expressions
abstract class Expression extends Tree[Expression] {
...
}
Expressions
abstract class Expression extends Tree[Expression] {
def children: Seq[Expression]
...
}
Expressions
abstract class Expression extends Tree[Expression] {
def children: Seq[Expression]
def eval(row: Row): Any
...
}
Expressions
class Add(left: Expression, right: Expression) extends
Expression {
...
}
Expressions
class Add(left: Expression, right: Expression) extends
Expression {
def children: Seq[Expression] = Seq(left, right)
...
}
Expressions
class Add(left: Expression, right: Expression) extends
Expression {
def children: Seq[Expression] = Seq(left, right)
def eval(input: Row): Any =
left.eval(input) + right.eval(input)
...
}
Expressions
● How to generate a value given input values
Expressions
● How to generate a value given input values
● Used by Spark SQL to build around 300 SQL
functions
What if the expression
we want isn’t available?
UDF
User Defined Function
UDF
● Easy way to add new expressions
UDF
● Easy way to add new expressions
● Can be written in Scala, Java, Python, or R
UDF
val profit = udf((price: BigDecimal, cost: BigDecimal) =>
(price - cost) * sold
)
UDF
val profit = udf((price: BigDecimal, cost: BigDecimal) =>
(msrp - cost) * sold
)
SELECT weight, profit(price, cost, sold)
FROM products
WHERE msrp > 100
What are the limitations
with UDFs?
UDF
● You are using a closure which is opaque to Spark
SQL, preventing many optimizations
UDF
● You are using a closure which is opaque to Spark
SQL, preventing many optimizations
● Access to input types
UDF
● You are using a closure which is opaque to Spark
SQL, preventing many optimizations
● Access to input types
○ Spark SQL data types
UDF
● You are using a closure which is opaque to Spark
SQL, preventing many optimizations
● Access to input types
○ Spark SQL data types
● Hard to have a stateful implementation
Optimizations
Minimizing IO and computation
Constant Folding
hours * ( 60 * 60 * 1000)
Constant Folding
hours * ( 60 * 60 * 1000)
● Commonly done to get milliseconds in an hour
Constant Folding
hours * ( 60 * 60 * 1000)
● Commonly done to get milliseconds in an hour
● How do we reduce the time we spend
computing this largely static operation
Constant Folding
hours
60 *
*
*
60 1000
Constant Folding
hours
60 *
*
*
60 1000
Constant Folding
hours
60 *
*
*
60 1000
Constant Folding
60 *
*
*
60
hours
1000
Constant Folding
60 60,000
*
* hours
Constant Folding
60
*
*
60,000
hours
Constant Folding
*
hours3.6e6
Constant Folding
*
hours3.6e6
You can make your expressions a candidate for constant
folding by adding the following to your expression class
def foldable: Boolean = true
Constant Folding
1.6x Slower
1.96x Slower
1.97x Slower
One billion rows on single node machine
spark.range(1000000000l).withColumn("m", <expr>).rdd.count
1.68x Slower
Optimizations
Catalyst Optimizer
Optimizations
Catalyst Optimizer
Optimizations
Catalyst Optimizer
Boolean Simplification
a
||
&&
true true
Boolean Simplification
a
||
&&
true true
Boolean Simplification
a
||
true
Boolean Simplification
a
||
true
Boolean Simplification
true
Other Examples
● Pruning Filters
Other Examples
● Pruning Filters
● Predicate Pushdown
Other Examples
● Pruning Filters
● Predicate Pushdown
○ Pushing predicate within the query plan
Other Examples
● Pruning Filters
● Predicate Pushdown
○ Pushing predicate within the query plan
○ Pushing predicate down to data source
Other Examples
● Pruning Filters
● Predicate Pushdown
Other Examples
● Pruning Filters
● Predicate Pushdown
● Simplifying Casts
Optimizations
● All these optimizations are rules which are
implemented with pattern matching
Optimizations
● All these optimizations are rules which are
implemented with pattern matching
● If an expression matches the rule, it is applied
Optimizations
● All these optimizations are rules which are
implemented with pattern matching
● If an expression matches the rule, it is applied
● UDFs aren’t expressions so you cannot apply
many of these optimizations
Rule Example: Constant Folding
object ConstantFolding extends Rule {
def apply(plan: Plan): Plan = plan transformExpressions {
case l: Literal => l
case e if e.foldable =>
Literal.create(e.eval(EmptyRow), e.dataType)
}
}
Rule Example: Boolean Simplification
object BooleanSimplification extends Rule {
def apply(plan: Plan): Plan = plan transformExpressions {
case TrueLiteral And e => e
case FalseLiteral Or e => e
case e Or FalseLiteral => e
case FalseLiteral And _ => FalseLiteral
case TrueLiteral Or _ => TrueLiteral
case Not(TrueLiteral) => FalseLiteral
...
}
}
Custom
Expressions
Custom Expressions
● Don’t have the limitations of UDFs
Custom Expressions
● Don’t have the limitations of UDFs
○ Benefit fully from optimizations
Custom Expressions
● Don’t have the limitations of UDFs
○ Benefit fully from optimizations
○ Access to Spark data types
Custom Expressions
● Don’t have the limitations of UDFs
○ Benefit fully from optimizations
○ Access to Spark data types
○ Easy to maintain state
Custom Expressions
● Don’t have the limitations of UDFs
○ Benefit fully from optimizations
○ Access to Spark data types
○ Easy to maintain state
○ You can specify code generation
State
class TimestampToDate(ts: Expression) extends Expression {
...
}
State
class TimestampToDate(ts: Expression) extends Expression {
def inputTypes: DataType = LongType
...
}
State
class TimestampToDate(ts: Expression) extends Expression {
def inputTypes: DataType = LongType
def dataType: DataType = DateType
...
}
State
class TimestampToDate(ts: Expression) extends Expression {
def inputTypes: DataType = LongType
def dataType: DataType = DateType
var date = -1
var nextDaySts = -1
var prevSts = -1
...
}
State
class TimestampToDate(ts: Expression) extends Expression {
...
var date = -1
var nextDaySts = -1
var prevSts = -1
def eval(input: Row): {..}
...
}
State
def eval(input: Row) = {
val currentTs = ts.eval(input)
if (currentTs >= nextDayTs || currentTs < prevTs) {
date = DateUtils.millisToSQLDate(currentTs)
nextDaySts = DateUtils.nextDayToMillis(currentTs)
}
prevTs = currentTs
date
}
Type
class ToJsonExpression(sts: Expression) extends Expression {
...
}
Type
class ToJsonExpression(json: Expression) extends Expression {
def eval(input: InternalRow): Any = {
toJson(json.dataType, json.eval(input))
}
...
}
Type
def toJson(dataType: DataType, value: Any): JsValue = {
if (value == null) JsNull
else dataType match {
case BooleanType => JsBoolean(value)
case LongType => JsNumber(value)
case IntegerType => JsNumber(value)
case StringType => JsString(value)
case structType: StructType => toJsonStruct(structType, value)
case arrayType: ArrayType => toJsonArray(arrayType, value)
...
}
}
Code Generation
class Add(left: Expression, right) extends Expression {
...
}
Code Generation
class Add(left: Expression, right) extends Expression {
def doGenCode() = {
val l = left.doCodeGen()
val r = right.doCodeGen()
“””
${l}
${r}
{l.value + r.value}
“””
}...}
Code Generation
sold
cost
+
+
price
left.eval(input) +
right.eval(input)
Code Generation
sold
cost
+
+
price
Code Generation
sold
cost
+
+
price
Decimal p= price;
Decimal c = cost;
Decimal res = price + cost;
Decimal s = sold;
Decimal value = sold + res;
Code Generation
One billion rows on single node machine
Conclusion
● UDFs are great
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
● Custom Expressions are great
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
● Custom Expressions are great
○ Performance matters
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
● Custom Expressions are great
○ Performance matters
○ Complex operations which require lower level API
Conclusion
● UDFs are great
○ Simple to write, compared to very involved
expressions, and they generally work well
● Custom Expressions are great
○ Performance matters
○ Complex operations which require lower level API
● We use both of them to solve our complex problems
We are hiring!
www.grammarly.com/jobs
Questions
?
?
?
?
?
?
? ?
?
?

Más contenido relacionado

La actualidad más candente

Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Chris Fregly
 
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Chris Fregly
 
Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21
Hussain111321
 

La actualidad más candente (20)

PipelineAI + AWS SageMaker + Distributed TensorFlow + AI Model Training and S...
PipelineAI + AWS SageMaker + Distributed TensorFlow + AI Model Training and S...PipelineAI + AWS SageMaker + Distributed TensorFlow + AI Model Training and S...
PipelineAI + AWS SageMaker + Distributed TensorFlow + AI Model Training and S...
 
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
 
Chris Fregly, Research Scientist, PipelineIO at MLconf ATL 2016
Chris Fregly, Research Scientist, PipelineIO at MLconf ATL 2016Chris Fregly, Research Scientist, PipelineIO at MLconf ATL 2016
Chris Fregly, Research Scientist, PipelineIO at MLconf ATL 2016
 
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
 
Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016
 
Atlanta Hadoop Users Meetup 09 21 2016
Atlanta Hadoop Users Meetup 09 21 2016Atlanta Hadoop Users Meetup 09 21 2016
Atlanta Hadoop Users Meetup 09 21 2016
 
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
PipelineAI Real-Time Machine Learning - Global Artificial Intelligence Confer...
 
Go語言開發APM微服務在Kubernetes之經驗分享
Go語言開發APM微服務在Kubernetes之經驗分享Go語言開發APM微服務在Kubernetes之經驗分享
Go語言開發APM微服務在Kubernetes之經驗分享
 
Introduction to Polyaxon
Introduction to PolyaxonIntroduction to Polyaxon
Introduction to Polyaxon
 
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds UpdatedSmokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
Smokey and the Multi-Armed Bandit Featuring BERT Reynolds Updated
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 
Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016
 
TensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.jsTensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.js
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
 
Inferno Scalable Deep Learning on Spark
Inferno Scalable Deep Learning on SparkInferno Scalable Deep Learning on Spark
Inferno Scalable Deep Learning on Spark
 
Advanced Spark and TensorFlow Meetup 08-04-2016 One Click Spark ML Pipeline D...
Advanced Spark and TensorFlow Meetup 08-04-2016 One Click Spark ML Pipeline D...Advanced Spark and TensorFlow Meetup 08-04-2016 One Click Spark ML Pipeline D...
Advanced Spark and TensorFlow Meetup 08-04-2016 One Click Spark ML Pipeline D...
 
Optimizing Application Performance on Kubernetes
Optimizing Application Performance on KubernetesOptimizing Application Performance on Kubernetes
Optimizing Application Performance on Kubernetes
 
Os Lamothe
Os LamotheOs Lamothe
Os Lamothe
 
Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
 

Similar a Spark SQL Catalyst Optimizer, Custom Expressions, UDFs - Advanced Spark and TensorFlow Meetup - San Francisco - May 7 2019

Unit 1 introduction to visual basic programming
Unit 1 introduction to visual basic programmingUnit 1 introduction to visual basic programming
Unit 1 introduction to visual basic programming
Abha Damani
 

Similar a Spark SQL Catalyst Optimizer, Custom Expressions, UDFs - Advanced Spark and TensorFlow Meetup - San Francisco - May 7 2019 (20)

Faceted Search And Result Reordering
Faceted Search And Result ReorderingFaceted Search And Result Reordering
Faceted Search And Result Reordering
 
Anatomy of Data Frame API : A deep dive into Spark Data Frame API
Anatomy of Data Frame API :  A deep dive into Spark Data Frame APIAnatomy of Data Frame API :  A deep dive into Spark Data Frame API
Anatomy of Data Frame API : A deep dive into Spark Data Frame API
 
Unit 1 introduction to visual basic programming
Unit 1 introduction to visual basic programmingUnit 1 introduction to visual basic programming
Unit 1 introduction to visual basic programming
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
 
Legacy is Good
Legacy is GoodLegacy is Good
Legacy is Good
 
CD in Machine Learning Systems
CD in Machine Learning SystemsCD in Machine Learning Systems
CD in Machine Learning Systems
 
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
 
Strata 2016 - Lessons Learned from building real-life Machine Learning Systems
Strata 2016 -  Lessons Learned from building real-life Machine Learning SystemsStrata 2016 -  Lessons Learned from building real-life Machine Learning Systems
Strata 2016 - Lessons Learned from building real-life Machine Learning Systems
 
Deep Learning Introduction - WeCloudData
Deep Learning Introduction - WeCloudDataDeep Learning Introduction - WeCloudData
Deep Learning Introduction - WeCloudData
 
Deep Learning and Text Mining
Deep Learning and Text MiningDeep Learning and Text Mining
Deep Learning and Text Mining
 
Graph Gurus 15: Introducing TigerGraph 2.4
Graph Gurus 15: Introducing TigerGraph 2.4 Graph Gurus 15: Introducing TigerGraph 2.4
Graph Gurus 15: Introducing TigerGraph 2.4
 
PRELIM-Lesson-2.pdf
PRELIM-Lesson-2.pdfPRELIM-Lesson-2.pdf
PRELIM-Lesson-2.pdf
 
Introduction to C ++.pptx
Introduction to C ++.pptxIntroduction to C ++.pptx
Introduction to C ++.pptx
 
02 functions, variables, basic input and output of c++
02   functions, variables, basic input and output of c++02   functions, variables, basic input and output of c++
02 functions, variables, basic input and output of c++
 
1000 track2 Bharadwaj
1000 track2 Bharadwaj1000 track2 Bharadwaj
1000 track2 Bharadwaj
 
Section1 compound data class
Section1 compound data classSection1 compound data class
Section1 compound data class
 
C3 w2
C3 w2C3 w2
C3 w2
 
Getting Started with Data Integration: FME Desktop
Getting Started with Data Integration: FME DesktopGetting Started with Data Integration: FME Desktop
Getting Started with Data Integration: FME Desktop
 
Hadoop France meetup Feb2016 : recommendations with spark
Hadoop France meetup  Feb2016 : recommendations with sparkHadoop France meetup  Feb2016 : recommendations with spark
Hadoop France meetup Feb2016 : recommendations with spark
 
FlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache FlinkFlinkML: Large Scale Machine Learning with Apache Flink
FlinkML: Large Scale Machine Learning with Apache Flink
 

Más de Chris Fregly

Amazon reInvent 2020 Recap: AI and Machine Learning
Amazon reInvent 2020 Recap:  AI and Machine LearningAmazon reInvent 2020 Recap:  AI and Machine Learning
Amazon reInvent 2020 Recap: AI and Machine Learning
Chris Fregly
 
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
Chris Fregly
 
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
Chris Fregly
 
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
Chris Fregly
 
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
Chris Fregly
 

Más de Chris Fregly (18)

AWS reInvent 2022 reCap AI/ML and Data
AWS reInvent 2022 reCap AI/ML and DataAWS reInvent 2022 reCap AI/ML and Data
AWS reInvent 2022 reCap AI/ML and Data
 
Pandas on AWS - Let me count the ways.pdf
Pandas on AWS - Let me count the ways.pdfPandas on AWS - Let me count the ways.pdf
Pandas on AWS - Let me count the ways.pdf
 
Ray AI Runtime (AIR) on AWS - Data Science On AWS Meetup
Ray AI Runtime (AIR) on AWS - Data Science On AWS MeetupRay AI Runtime (AIR) on AWS - Data Science On AWS Meetup
Ray AI Runtime (AIR) on AWS - Data Science On AWS Meetup
 
Amazon reInvent 2020 Recap: AI and Machine Learning
Amazon reInvent 2020 Recap:  AI and Machine LearningAmazon reInvent 2020 Recap:  AI and Machine Learning
Amazon reInvent 2020 Recap: AI and Machine Learning
 
Waking the Data Scientist at 2am: Detect Model Degradation on Production Mod...
Waking the Data Scientist at 2am:  Detect Model Degradation on Production Mod...Waking the Data Scientist at 2am:  Detect Model Degradation on Production Mod...
Waking the Data Scientist at 2am: Detect Model Degradation on Production Mod...
 
Quantum Computing with Amazon Braket
Quantum Computing with Amazon BraketQuantum Computing with Amazon Braket
Quantum Computing with Amazon Braket
 
15 Tips to Scale a Large AI/ML Workshop - Both Online and In-Person
15 Tips to Scale a Large AI/ML Workshop - Both Online and In-Person15 Tips to Scale a Large AI/ML Workshop - Both Online and In-Person
15 Tips to Scale a Large AI/ML Workshop - Both Online and In-Person
 
AWS Re:Invent 2019 Re:Cap
AWS Re:Invent 2019 Re:CapAWS Re:Invent 2019 Re:Cap
AWS Re:Invent 2019 Re:Cap
 
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
KubeFlow + GPU + Keras/TensorFlow 2.0 + TF Extended (TFX) + Kubernetes + PyTo...
 
PipelineAI Continuous Machine Learning and AI - Rework Deep Learning Summit -...
PipelineAI Continuous Machine Learning and AI - Rework Deep Learning Summit -...PipelineAI Continuous Machine Learning and AI - Rework Deep Learning Summit -...
PipelineAI Continuous Machine Learning and AI - Rework Deep Learning Summit -...
 
Advanced Spark and TensorFlow Meetup - Dec 12 2017 - Dong Meng, MapR + Kubern...
Advanced Spark and TensorFlow Meetup - Dec 12 2017 - Dong Meng, MapR + Kubern...Advanced Spark and TensorFlow Meetup - Dec 12 2017 - Dong Meng, MapR + Kubern...
Advanced Spark and TensorFlow Meetup - Dec 12 2017 - Dong Meng, MapR + Kubern...
 
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
High Performance Distributed TensorFlow in Production with GPUs - NIPS 2017 -...
 
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
 
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
 
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
Building Google's ML Engine from Scratch on AWS with GPUs, Kubernetes, Istio,...
 
Nvidia GPU Tech Conference - Optimizing, Profiling, and Deploying TensorFlow...
Nvidia GPU Tech Conference -  Optimizing, Profiling, and Deploying TensorFlow...Nvidia GPU Tech Conference -  Optimizing, Profiling, and Deploying TensorFlow...
Nvidia GPU Tech Conference - Optimizing, Profiling, and Deploying TensorFlow...
 
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
 
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
High Performance Distributed TensorFlow with GPUs - NYC Workshop - July 9 2017
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 

Spark SQL Catalyst Optimizer, Custom Expressions, UDFs - Advanced Spark and TensorFlow Meetup - San Francisco - May 7 2019