SlideShare a Scribd company logo
1 of 56
Download to read offline
1© Ari Kamlani 2017
skymind.ai | deeplearning4j.org | gitter.im/deeplearning4j
Ari Kamlani @akamlani
Skymind | Deep Learning Consultant
Cognitive Frameworks Festival (CFF) 06/09/2017
2© Ari Kamlani 2017
AGENDA
• Skymind Background
• DL4J Overview
• Environment Setup
• DL4J Component Breakdown
• Data Workflow
• Distributed Computed in DL4J
• Resource Goodies
3© Ari Kamlani 2017
TAKEAWAYS
• Developing your own network model in IntelliJ/Maven
• A High level understanding in migrating from other ML/DL frameworks
• Configuring the DL4J stack for your particular environment use case
• Scaling-Up vs Scaling-Out the network in DL4J
4© Ari Kamlani 2017 4© Ari Kamlani 2017
SKYMIND
+ Skymind Intro
+ Who we are
5© Ari Kamlani 2017
SKYMIND
Where you can find us…
Founded 2014
Funding $3.3M
Founders Adam Gibson, Chris Nicholson
Clients 12 enterprises
4,100+ community members
160,000+ DL4J downloads/mo.
Staff ~25 (Expected to Scale in 2017)
6© Ari Kamlani 2017
SKYMIND
Deep Learning for the Enterprise…
• RedHat for AI
• Custom Deep Learning Solutions the Enterprise (Java Focused)
• Focus is on a different User Base: Production vs Research
• Stack operates natively w/existing Big Data Infrastructure Architecture
• Build, Customize, and Maintain the complete Deep Learning Stack
7© Ari Kamlani 2017
HOW WE ARE USED
• Finance & Fraud (Financial Banks)
• Government (Nasa JPL)
• Telcom
• Retail (IBM, Amazon)
Customer Segments
Notable Uses Cases
• Anomaly Detection (Fraud Detection, Network Intrusion, Predictive Maintenance)
• Predictive Analytics (Demand Forecasting, Consumer Shopping Preferences)
• Computer Vision (Digital Stamp Recognition, OCR, Image Classification)
• Text Analytics (Chemical Compounds, FAA Part Document Versioning)
Partners
8© Ari Kamlani 2017 8© Ari Kamlani 2017
DL4J INTRO
+ Skymind DL4J Suite
+ High-Level Architecture
9© Ari Kamlani 2017
WHY JAVA
• Enterprises do not generally run Python in Production
• Python <-> Java Serialization is Expensive
• Modern Data Pipelines exist on the JVM (Provide a toolkit on the JVM)
• DL4J as First-Class Citizen to the JVM (Spark, Hadoop) on a cluster
Deep Learning for the Enterprise…
10© Ari Kamlani 2017
DL4J SUITE
• Apache Software Foundation (ASF) 2.0 Licensed
• Current Stable Release: 0.8.0 (Mar 2017)
• Java Client Interface w/underlying C++ Bindings
• Integrates well with other components of Big Data Ecosystem with ability to scale
The “Hadoop” of Deep Learning
11© Ari Kamlani 2017
SKYMIND STACK
Where our Stack fits in
12© Ari Kamlani 2017
SKYMIND CORE OPEN SOURCE
13© Ari Kamlani 2017
SKYMIND INTELLIGENCE LAYER (SKIL)
• Combines Open Source Components + Proprietary Vendor Integrations
• Provisioned Model Serving & Vendor Integration Deployment, Training of Scalable Models
• Vendor Integrations: Hadoop Distributions, Connectors, Chip/BLAS Integrations
• Model Serving ~ Tensorflow Serving provisioned for the Enterprise environment
14© Ari Kamlani 2017
ML WORKFLOW: PYTHON
Depending upon featurization/augmentation
Distributed/Tuning
VECTORIZEINGEST MODELING TUNING INFERENCE
15© Ari Kamlani 2017
ML WORKFLOW: DL4J
VECTORIZEINGEST MODELING TUNING INFERENCE
ETL
(DataVec)
Vectorize
(DataVec)
Modeling
(DL4J)
Evaluation
(Arbiter)
Execution Platform: e.g. Local, Cluster (Spark)
ND4J – Processor(CPU, GPU), Linear Algebra Runtime
16© Ari Kamlani 2017
DL4J SUITE
17© Ari Kamlani 2017 17© Ari Kamlani 2017
ENVIRONMENT
+ IntelliJ Setup
+ Configuration: pom.xml
+ Install Curated Examples
+ Install Snippets Repo
18© Ari Kamlani 2017
RESOURCES
• DL4J Examples: http://github.com/deeplearning4j/dl4j-examples
Repositories to clone
19© Ari Kamlani 2017
SETUP ENVIRONMENT
IntelliJ: From Scratch
• MAVEN-ARCHETYPE-QUICKSTART
Creates a basic template with pom.xml
http://nd4j.org/getstarted#starting-a-new-nd4j-project
• Afterwards: Enable Auto-Import
• Create Resource Directory: Mark as “Source Root”
IntelliJ: Import Project
• Follow DL4J Quickstart to import examples
https://deeplearning4j.org/quickstart#dl4j-
examples-in-a-few-easy-steps
• Import Project from External Model
20© Ari Kamlani 2017
MAVEN INTRO
Build System and Dependency Management
• Dependency Management via pom.xml file(s) – parent/child relationship
• Maven repository stored locally in ~/.m2
• In Scala ~ SBT (build.sbt)
General Format
<dependencies>
<dependency>
<groupId>${module.group.id}</groupId>
<artifactId>${module.group.name}</artifactId>
<version>${module.version}</version>
<scope></scope>
</dependency>
</dependencies>
<properties>
<!-- e.g. release version: 0.8.0 -->
<datavec.version>${release.version}</datavec.version>
<nd4j.version>${release.version}</nd4j.version>
<dl4j.version>${release.version}</dl4j.version>
</properties>
21© Ari Kamlani 2017
DEPENDENCY MANAGEMENT
Maven Dependency Variants (pom.xml)
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-api</artifactId>
<version>${datavec.version}</version>
</dependency>
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-spark_${spark.scala.version}</artifactId>
<version>${datavec.spark.version}</version>
</dependency>
• org.{deeplearning4j, nd4j, datavec}
• org.apache.{hadoop, spark}
• org.scala-lang
Commonly Used: ${module.group.id}
22© Ari Kamlani 2017 22© Ari Kamlani 2017
DL4J Component
Breakdown
+ Component Migration/Responsibilities
+ Maven Intro
+ Workflow, Pipeline
23© Ari Kamlani 2017
DATAVEC
ETL for ML: Persistable Data Pipelines
• Data Preprocessing/Transformations: The Pandas of Enterprise Deep Learning
• Core Responsibilities: Data Ingestion, Normalization, Vectorization
• Extending into Transformation Process (e.g. Data Augmentation, Spark Transformations)
• Example Data Source Formats: JSON, CSV, Text, Image/Video, Audio
• “Canova” Module now integrated into DataVec (Per legacy context: <= Release 0.4)
24© Ari Kamlani 2017
DATAVEC ETL FOR ML
data.csv
Directory
Images
Transform
Process
Directory
Labeled Images
Path Label
Generator
Path Path
Label Generator
Record Reader
CSV
RecordReader
Image
RecordReader
RecordReaderDataSetIterator
ND4J Pre-Processor
Scaler/Standardizers
based on Data Format
Convert to INDArray
25© Ari Kamlani 2017
DATAVEC: ETL FOR ML
26© Ari Kamlani 2017
ND4J CORE
High Performance Tensor Library for Scientific Computing
• Multi-Platform Functionality including GPUs
• Numpy for the JVM, Linear Algebra & Signal Processing (Scipy) Framework
• Built for manipulation of Tensors, Matrices, INDArrays (NDArray)
• ND4J Indexing/Boolean Indexing (Slicing as in Numpy): via NDArrayIndex (INDArrayIndex)
• DataSet acts as a container for INDArray(s): e.g. features, labels
RecordReader recordReader = new CSVRecordReader(numLinesToSkip,delimiter);
recordReader.initialize(new FileSplit(new ClassPathResource("iris.txt").getFile()));
DataSetIterator iterator = new
RecordReaderDataSetIterator(recordReader,batchSize,labelIndex,numClasses);
DataSet allData = iterator.next();
allData.shuffle();
SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.7);
DataSet trainingData = testAndTrain.getTrain();
DataSet testData = testAndTrain.getTest();
27© Ari Kamlani 2017
ND4J BACKENDS
• Function: Determines the flow of execution
• Swappable backends for linear-algebra libraries
and processors (more on this to come…)
• Default Config: execute on CPUs (native platform)
• Regardless of the Backend –
Same consistent ND4J API
ND4J
JavaCPP
libND4J
DL4J
HW Arch
Chip Lib
Native
28© Ari Kamlani 2017
NATIVE: IT’S NOT ALL JAVA
JavaCPP
• The Cython (C-Extensions for Python) for Java
• Performs as a bridge per Hardware Accelerator Libraries (e.g. cuDNN, MKL)
• Auto Generates Java Bindings from C++ (via Parsing) – avoid overhead of JNI
• For Memory Management off-heap (not JVM) – own GC for GPU CUDA/cuDNN
libND4J
• C++ Native Engine that powers ND4J for efficient compute operations on CPU/GPU
• Pluggable Hardware Architecture Libraries (NVIDIA cuDNN, Intel MKL)
• Drives the native performance (latency) required for computational operations
• Contains bindings for BLAS, LAPACK
29© Ari Kamlani 2017
DL4J TRAINING UI
• Browser Based (Default Port: 9000)
• Configure UI via Maven: -Dorg.deeplearning4j.ui.port=9001
• Real-Time Processing upon model.fit (vs TensorBoard)
• Remote UI Collection per Distributing Training (e.g. Spark)
Play-Based Web App
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-ui_${scala_binary_version}</artifactId>
<version>${dl4j.version}</version>
</dependency>
Maven Dependency (pom.xml)
30© Ari Kamlani 2017
ARBITER
Model Tuning NN Library: Search Space for Deep Learning
• Platform Agnostic Hyperparameter search per training and evaluating models
• Supports Grid and Randomized Search for MultiLayerNetwork, ComputationGraph
• UI(ArbiterUIServer) for evaluating search space
• Traditional ML (Python) ~ sklearn.model_selection{GridSearchCV, RandomizedSearchCV}
Maven Dependency (pom.xml)
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>arbiter-deeplearning4j</artifactId>
<version>${arbiter.version}</version>
</dependency>
31© Ari Kamlani 2017 31© Ari Kamlani 2017
WORKFLOW
+ Keras
+ Network Data Workflow
32© Ari Kamlani 2017
KERAS
• Keras Model Import: Released 0.7.1 (Dec 2016) – Support for Keras Pre v2.0
• Export Model Config/Weights from existing Keras model
• Keras as Frontend backed by JVM Stack
• Keras Integration (expected Q4 2017)
• DL4J Model Zoo
​
Keras Model Import (Trained Models from Keras into Dl4J)
Backends
Not related to ND4J Backends
33© Ari Kamlani 2017
TRANSFER LEARNING
Model Config Trained Model
Keras Model
Import
Train in DL4J
Model Serve/
Inference
Model Zoo
Keras
DL4J
Load Pretrained Models
from Keras
DL4J has its own Model Zoo too!
Refine Existing Models
Implement ‘Fine Tune’ Config
enforceTrainingConfig:
Training vs Inference
model.out(newSamples)
model.fit(trainData)
34© Ari Kamlani 2017
KERAS – DL4J NETWORK
Keras Model
Import
MultiLayerNetworkConfiguration ComputationGraphConfiguration
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-modelimport</artifactId>
<version>${dl4j.version}</version>
</dependency>
MultiLayerNetwork (conf) ComputationGraph (conf)
Equivalent to Keras Sequential Model:
Linear Stack of Layers
Equivalent to Keras Functional Model:
Complex Models, Non-Sequential, MIMO
Maven Dependency Variants (pom.xml)
35© Ari Kamlani 2017
SIMPLE DATA WORKFLOW
VECTORIZEINGEST MODELING TUNING INFERENCE
RecordReader
DataSetIterator
DataSet
NormalizerStandardize
shuffle
splitTestandTrain
MultiLayerNetworkConf
MultiLayerNetwork
• model.init
• model.setListeners
• model.fit(train)
• modelSerializer.writeModel(net)
• modelSerializer.restore*
• model.out(test)
• eval(testYhat, testLabels)
ModelSerializerModelSerializer
~ Vectorize Pipeline
ND4J Pre-Processor
Optional TP
36© Ari Kamlani 2017 36© Ari Kamlani 2017
DISTRIBUTED
COMPUTING
+ Applicability
+ Parallelism
37© Ari Kamlani 2017
EXECUTION
Selecting a Network
• Single CPU/GPU, Custom ASIC Variants (TPU)
• Networks: MultiLayerNetwork, ComputationGraph
• Single Node/Multi-Processor (e.g. Multi-GPU)
• Networks: ParallelWrapper
• Distributed across Nodes
• Networks: SparkDl4jMultiLayer, SparkComputationGraph
38© Ari Kamlani 2017
DATA PIPELINE
GPUs
• Optimized for Matrix Computations
• DL4J avoids additional Python <-> JVM Serialization
• Hybrid: Standardization, Featurization via initial layers as part of Model Architecture
​
I/O
INTENSIVE
COMPUTE
INTENSIVE
I/O
INTENSIVE
INGEST ETL FEATURIZATION MODELING
POST
TUNING
SERVING
LARGE CLUSTER
HIGH MEMORY
SMALL CLUSTER
SMALL MEMORY
GPUs for Training
Improve Training Time
Low RAM ~ 12-24 GB
39© Ari Kamlani 2017
PARALLELISM
• Delta in ingesting data & setting up training data, hyperparameter tuning
• Number of Parameters may grow to be large
• Update Large Numerical Multi-Dimensional Matrix
• Workloads either CPU vs GPU Intensive
​
Is Distributed worth the Cost
• Avoid Small & Shallow Networks
• Want Low Ratio of Network Transfer to Computation
• Good Candidates: Parameter Sharing (CNN, LSTM)
​
40© Ari Kamlani 2017
PARALLELISM
MODEL PARALLELISM
• Different partitions of the model assigned
to different nodes on a cluster – each
device operating on all data
• Allows for scaling to large Models, useful
when a model does not fit on single node
• Apply model compression to constrain the
size to improve network overhead
• Reference Google/Jeff Dean Paper
(Large Scaled Distributed Networks,
NIPS, 2012)
​
DATA PARALLELISM
• Apache Spark driven as Data Parallelism
• Model Replication w/devices having
different partitions of the data
• Results from each device are combined
MODEL & DATA PARALLELISM
• Examples: MXNet, Tensorflow
​
41© Ari Kamlani 2017
MULTI-GPU
To Enable Multi-GPU Access (pom.xml)
<properties>
<!-- for multi-gpu -->
<nd4j.backend>nd4j-cuda-8.0-platform</nd4j.backend>
<!-- for native platform -->
<nd4j.backend>nd4j-native-platform</nd4j.backend>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native-platform</artifactId>
<version>${nd4j.version}</version>
</dependency>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-cuda-7.5-platform</artifactId>
<version>${nd4j.version}</version>
</dependency>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-cuda-8.0-platform</artifactId>
<version>${nd4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>${nd4j.backend}</artifactId>
</dependency>
</dependencies>
​In Contrast to Tensorflow:
• pip install –-upgrade tensorflow-gpu
• Device Graph Scoping: tf.device(‘/gpu:<id>’)
​
42© Ari Kamlani 2017
MULTI-GPU
GPU Configuration
public static void main(String[] args) {
//Configure Cuda Environment
CudaEnvironment.getInstance().getConfiguration()
// key option enabled
.allowMultiGPU(true)
// allowing larger memory caches
.setMaximumDeviceCache(2L * 1024L * 1024L * 1024L)
// cross-device access is used for faster model averaging over pcie
.allowCrossDeviceAccess(true);
}
• Manage memory from Java:
via JavaCPP for own Memory Management of GPU (cuDNN)
• Per GPU allocation per job
​
43© Ari Kamlani 2017
FP HALF-PRECISION
FP16
• FP16 (2x less GPU RAM used) instead of FP32, FP64 to speed up Training
• Half Precision is good enough for approximate deep learning (not as sensitive)
• Smaller Precision, so tuning for loss may be more difficult
• Caveat: Not all variants of Linear Algebra Libraries are supported by FP16
• Powerful for memory-intensive computations
public static void main(String[] args) {
//Enable FP16
DataTypeUtil.setDTypeForContext(DataBuffer.Type.HALF);
}
44© Ari Kamlani 2017
RESOURCE MANAGERS
As a Scheduler
• Co-locate Resource where data is stored
• Co-locate compute with storage for fault tolerance
• Schedule as a Resource(available for job): Compute, Memory(RAM), Processor
• Mesos (GPU as schedulable quantity) vs YARN (only Compute, Memory)
• Execute distributed job across Nodes on pool of specified resources
​
45© Ari Kamlani 2017
APACHE SPARK
As a Scheduler
• Per Fast ETL & Fault tolerance at Worker Level
• Spark can use GPU as a resource (Mesos) as part of a job
• Spark 2.1.1 designed for use with Mesos >= 1.0.0
• DL4J uses Spark as a Data Access Layer (per Scheduler: does not manage data)
• Integrations: Cooperative Frameworks (Native: DL4J) vs Spark Bindings (TFoS)
46© Ari Kamlani 2017
APACHE SPARK
Spark Core
SQL Streaming MLlib GraphX DL4JBigDL
Partition
Partition
Partition
RDD
Use Spark RDD as Input to DataVec Transform Process
Natively on Spark
47© Ari Kamlani 2017
PARAMETER SERVER (PS)
Maintain State across workers (hold updated gradients)
• Separate Jobs: Workers (GPU, Low Memory), Parameter server (CPU, High Memory)
• Distributed Gradients from training batch fed into PS to produced new model parameters
• Centralized (DL4J) vs Decentralized (P2P: CoS) Parameter Synchronization Updates
• Synchronous (DL4J) vs Asynchronous Parameter Averaging (acts as Regularization)
48© Ari Kamlani 2017
SINGLE-NODE/MULTI-PROCESSOR
ParallelWrapper
• Single Node Parameter Averaging
• Via Model Duplication – Each Worker trains on same model
• Useful for testing Parameter Averaging on single node before going Distributed
Via Latency Hiding
• Asynchronous ETL to GPU in Background + Compute in Parallel using all cores
• Training Time = GPU ETL Time + Matrix Compute Time
49© Ari Kamlani 2017
DISTRIBUTED SPARK NETWORK
SparkDl4jMultiLayer(sc, conf, tm)
network
ParameterAveragingTrainingMaster
tm
MultiLayerNetworkConf confComputationGraphConf conf
SparkComputationGraph(sc, conf, tm)
network
network.fit(JavaRDD<DataSet> trainingData)Train Network
Evaluate Network network.evaluate(JavaRDD<DataSet> testData)
Note: DataSet is not a Spark DataSet!!!
network.init()
• Gather Statistics across DataSet
• Statistics per Columnar Basis
• Generate HTML or Text Output
network.setListeners(*)
SparkContext(scConf)
sc
Via SparkAnalyze
50© Ari Kamlani 2017
SPARK DEPENDENCIES
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-spark_${spark.scala.version}</artifactId>
<version>${datavec.spark.version}</version>
</dependency>
<properties>
<datavec.spark.version>0.8.0_spark_2</datavec.spark.version>
<spark.major.version>2</spark.major.version>
<spark.version>2.1.1</spark.version>
<spark.scala.version>2.11</spark.scala.version>
</properties>
minimal pom.xml maven dependencies
e.g. For Spark Transformation Process (tp) ETL
51© Ari Kamlani 2017 51© Ari Kamlani 2017
RESOURCE
GOODIES
+ Useful Links: DL4J
52© Ari Kamlani 2017
DOCS
DL4J Documentation
§ http://nd4j.org/documentation
§ http://nd4j.org/doc
§ http://deeplearning4j.org/doc
§ http://deeplearning4j.org/datavecdoc
§ http://deeplearning4j.org/quickstart
§ http://deeplearning4j.org/etl-userguide
§ http://deeplearning4j.org/documentation
§ http://deeplearning4j.org/spark
§ http://deeplearning4j.org/gpu
§ http://deeplearning4j.org/model-import-keras
Pdfs
§ Model Parallelism: (Google 2012: Jeffrey Dean)
https://static.googleusercontent.com/media/research.google.com/en//archive/
large_deep_networks_nips2012.pdf
53© Ari Kamlani 2017
USEFUL EXAMPLES
§ dl4j-examples = http://github.com/deeplearning4j/dl4j-examples
§ {dl4j-examples}/tree/master/datavec-examples
§ {dl4j-examples}/tree/master/dl4j-cuda-specific-examples
§ {dl4j-examples}/tree/master/dl4j-spark-examples
Notable Getting Started DL4J Examples
Screencasts (any many more…)
§ Datavec Spark Transform:
http://github.com/SkymindIO/screencasts/tree/master/datavec_spark_transform
§ YouTube
http://www.youtube.com/watch?v=MLEMw2NxjxE
54© Ari Kamlani 2017
COMMUNITY
§ Github Repository
http://github.com/deeplearning4j
§ Gitter Channel
http://gitter.im/deeplearning4j/deeplearning4j
§ SF Meetup: Deep Learning in Production with Skymind
https://www.meetup.com/SF-Deep-Learning-in-Production/
Contribute – We’d love your help!
Issues
§ Extend Yarn to include GPU as a Resource:
http://issues.apache.org/jira/browse/YARN-5517
55© Ari Kamlani 2017 55© Ari Kamlani 2017
Thank You
56© Ari Kamlani 2017
CONTACT ME
​If you want to contact Me:
Personal:
http://arikamlani.com/
akamlani@gmail.com
Twitter:
@akamlani
​ LinkedIn:
akamlani
​SlideShare:
Ari Kamlani

More Related Content

What's hot

Spark on Mesos
Spark on MesosSpark on Mesos
Spark on MesosJen Aman
 
Arc305 how netflix leverages multiple regions to increase availability an i...
Arc305 how netflix leverages multiple regions to increase availability   an i...Arc305 how netflix leverages multiple regions to increase availability   an i...
Arc305 how netflix leverages multiple regions to increase availability an i...Ruslan Meshenberg
 
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Chris Fregly
 
Hive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsHive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsYifeng Jiang
 
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...Databricks
 
Scalable Scientific Computing with Dask
Scalable Scientific Computing with DaskScalable Scientific Computing with Dask
Scalable Scientific Computing with DaskUwe Korn
 
Deep Learning on Apache® Spark™ : Workflows and Best Practices
Deep Learning on Apache® Spark™ : Workflows and Best PracticesDeep Learning on Apache® Spark™ : Workflows and Best Practices
Deep Learning on Apache® Spark™ : Workflows and Best PracticesJen Aman
 
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production ScaleGPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production ScaleSpark Summit
 
Deep Learning to Production with MLflow & RedisAI
Deep Learning to Production with MLflow & RedisAIDeep Learning to Production with MLflow & RedisAI
Deep Learning to Production with MLflow & RedisAIDatabricks
 
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...Spark Summit
 
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using OpenstackCloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using OpenstackAndrew Yongjoon Kong
 
Apache Spark Performance: Past, Future and Present
Apache Spark Performance: Past, Future and PresentApache Spark Performance: Past, Future and Present
Apache Spark Performance: Past, Future and PresentDatabricks
 
Spark Summit 2016: Connecting Python to the Spark Ecosystem
Spark Summit 2016: Connecting Python to the Spark EcosystemSpark Summit 2016: Connecting Python to the Spark Ecosystem
Spark Summit 2016: Connecting Python to the Spark EcosystemDaniel Rodriguez
 
CaffeOnSpark Update: Recent Enhancements and Use Cases
CaffeOnSpark Update: Recent Enhancements and Use CasesCaffeOnSpark Update: Recent Enhancements and Use Cases
CaffeOnSpark Update: Recent Enhancements and Use CasesDataWorks Summit
 
Spark Summit EU talk by Josef Habdank
Spark Summit EU talk by Josef HabdankSpark Summit EU talk by Josef Habdank
Spark Summit EU talk by Josef HabdankSpark Summit
 
Low Latency Execution For Apache Spark
Low Latency Execution For Apache SparkLow Latency Execution For Apache Spark
Low Latency Execution For Apache SparkJen Aman
 
UCX-Python - A Flexible Communication Library for Python Applications
UCX-Python - A Flexible Communication Library for Python ApplicationsUCX-Python - A Flexible Communication Library for Python Applications
UCX-Python - A Flexible Communication Library for Python ApplicationsMatthew Rocklin
 
High Performance Computing (HPC) in cloud
High Performance Computing (HPC) in cloudHigh Performance Computing (HPC) in cloud
High Performance Computing (HPC) in cloudAccubits Technologies
 
Karmasphere Studio for Hadoop
Karmasphere Studio for HadoopKarmasphere Studio for Hadoop
Karmasphere Studio for HadoopHadoop User Group
 

What's hot (20)

Spark on Mesos
Spark on MesosSpark on Mesos
Spark on Mesos
 
Simplified Cluster Operation & Troubleshooting
Simplified Cluster Operation & TroubleshootingSimplified Cluster Operation & Troubleshooting
Simplified Cluster Operation & Troubleshooting
 
Arc305 how netflix leverages multiple regions to increase availability an i...
Arc305 how netflix leverages multiple regions to increase availability   an i...Arc305 how netflix leverages multiple regions to increase availability   an i...
Arc305 how netflix leverages multiple regions to increase availability an i...
 
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
 
Hive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsHive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfs
 
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...
Serverless Machine Learning on Modern Hardware Using Apache Spark with Patric...
 
Scalable Scientific Computing with Dask
Scalable Scientific Computing with DaskScalable Scientific Computing with Dask
Scalable Scientific Computing with Dask
 
Deep Learning on Apache® Spark™ : Workflows and Best Practices
Deep Learning on Apache® Spark™ : Workflows and Best PracticesDeep Learning on Apache® Spark™ : Workflows and Best Practices
Deep Learning on Apache® Spark™ : Workflows and Best Practices
 
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production ScaleGPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale
GPU Support In Spark And GPU/CPU Mixed Resource Scheduling At Production Scale
 
Deep Learning to Production with MLflow & RedisAI
Deep Learning to Production with MLflow & RedisAIDeep Learning to Production with MLflow & RedisAI
Deep Learning to Production with MLflow & RedisAI
 
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
 
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using OpenstackCloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
 
Apache Spark Performance: Past, Future and Present
Apache Spark Performance: Past, Future and PresentApache Spark Performance: Past, Future and Present
Apache Spark Performance: Past, Future and Present
 
Spark Summit 2016: Connecting Python to the Spark Ecosystem
Spark Summit 2016: Connecting Python to the Spark EcosystemSpark Summit 2016: Connecting Python to the Spark Ecosystem
Spark Summit 2016: Connecting Python to the Spark Ecosystem
 
CaffeOnSpark Update: Recent Enhancements and Use Cases
CaffeOnSpark Update: Recent Enhancements and Use CasesCaffeOnSpark Update: Recent Enhancements and Use Cases
CaffeOnSpark Update: Recent Enhancements and Use Cases
 
Spark Summit EU talk by Josef Habdank
Spark Summit EU talk by Josef HabdankSpark Summit EU talk by Josef Habdank
Spark Summit EU talk by Josef Habdank
 
Low Latency Execution For Apache Spark
Low Latency Execution For Apache SparkLow Latency Execution For Apache Spark
Low Latency Execution For Apache Spark
 
UCX-Python - A Flexible Communication Library for Python Applications
UCX-Python - A Flexible Communication Library for Python ApplicationsUCX-Python - A Flexible Communication Library for Python Applications
UCX-Python - A Flexible Communication Library for Python Applications
 
High Performance Computing (HPC) in cloud
High Performance Computing (HPC) in cloudHigh Performance Computing (HPC) in cloud
High Performance Computing (HPC) in cloud
 
Karmasphere Studio for Hadoop
Karmasphere Studio for HadoopKarmasphere Studio for Hadoop
Karmasphere Studio for Hadoop
 

Similar to deep learning in production cff 2017

Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube
 Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube
Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nubeavanttic Consultoría Tecnológica
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21JDA Labs MTL
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT_MTL
 
JDBC, What Is It Good For?
JDBC, What Is It Good For?JDBC, What Is It Good For?
JDBC, What Is It Good For?VMware Tanzu
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1Ivan Ma
 
Turning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Turning Relational Database Tables into Hadoop Datasources by Kuassi MensahTurning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Turning Relational Database Tables into Hadoop Datasources by Kuassi MensahData Con LA
 
Container Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey BoxellContainer Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey BoxellOracle Developers
 
Heat - keep the clouds up
Heat - keep the clouds upHeat - keep the clouds up
Heat - keep the clouds upKiran Murari
 
Introduction to OpenStack Heat
Introduction to OpenStack HeatIntroduction to OpenStack Heat
Introduction to OpenStack Heatopenstackindia
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0Eric Wendelin
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with DockerMariaDB plc
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018harvraja
 
Running Magnolia on Jelastic Cloud Hosting
Running Magnolia on Jelastic Cloud HostingRunning Magnolia on Jelastic Cloud Hosting
Running Magnolia on Jelastic Cloud HostingMagnolia
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on JelasticEdgar Vonk
 
Magnolia CMS - on Jelastic
Magnolia CMS - on JelasticMagnolia CMS - on Jelastic
Magnolia CMS - on JelasticInfo.nl
 
Spark forspringdevs springone_final
Spark forspringdevs springone_finalSpark forspringdevs springone_final
Spark forspringdevs springone_finalsdeeg
 

Similar to deep learning in production cff 2017 (20)

Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube
 Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube
Meetup Oracle Database MAD_BCN: 1.1 Servicios de Oracle Database en la nube
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017
 
JDBC, What Is It Good For?
JDBC, What Is It Good For?JDBC, What Is It Good For?
JDBC, What Is It Good For?
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1
 
Dask: Scaling Python
Dask: Scaling PythonDask: Scaling Python
Dask: Scaling Python
 
Turning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Turning Relational Database Tables into Hadoop Datasources by Kuassi MensahTurning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Turning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
 
Container Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey BoxellContainer Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey Boxell
 
Heat - keep the clouds up
Heat - keep the clouds upHeat - keep the clouds up
Heat - keep the clouds up
 
Introduction to OpenStack Heat
Introduction to OpenStack HeatIntroduction to OpenStack Heat
Introduction to OpenStack Heat
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with Docker
 
Screw DevOps, Let's Talk DataOps
Screw DevOps, Let's Talk DataOpsScrew DevOps, Let's Talk DataOps
Screw DevOps, Let's Talk DataOps
 
Virtualization and Containers
Virtualization and ContainersVirtualization and Containers
Virtualization and Containers
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
 
Running Magnolia on Jelastic Cloud Hosting
Running Magnolia on Jelastic Cloud HostingRunning Magnolia on Jelastic Cloud Hosting
Running Magnolia on Jelastic Cloud Hosting
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on Jelastic
 
Magnolia CMS - on Jelastic
Magnolia CMS - on JelasticMagnolia CMS - on Jelastic
Magnolia CMS - on Jelastic
 
Spark forspringdevs springone_final
Spark forspringdevs springone_finalSpark forspringdevs springone_final
Spark forspringdevs springone_final
 
Sightly_techInsight
Sightly_techInsightSightly_techInsight
Sightly_techInsight
 

Recently uploaded

Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...Call Girls in Nagpur High Profile
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 

Recently uploaded (20)

Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 

deep learning in production cff 2017

  • 1. 1© Ari Kamlani 2017 skymind.ai | deeplearning4j.org | gitter.im/deeplearning4j Ari Kamlani @akamlani Skymind | Deep Learning Consultant Cognitive Frameworks Festival (CFF) 06/09/2017
  • 2. 2© Ari Kamlani 2017 AGENDA • Skymind Background • DL4J Overview • Environment Setup • DL4J Component Breakdown • Data Workflow • Distributed Computed in DL4J • Resource Goodies
  • 3. 3© Ari Kamlani 2017 TAKEAWAYS • Developing your own network model in IntelliJ/Maven • A High level understanding in migrating from other ML/DL frameworks • Configuring the DL4J stack for your particular environment use case • Scaling-Up vs Scaling-Out the network in DL4J
  • 4. 4© Ari Kamlani 2017 4© Ari Kamlani 2017 SKYMIND + Skymind Intro + Who we are
  • 5. 5© Ari Kamlani 2017 SKYMIND Where you can find us… Founded 2014 Funding $3.3M Founders Adam Gibson, Chris Nicholson Clients 12 enterprises 4,100+ community members 160,000+ DL4J downloads/mo. Staff ~25 (Expected to Scale in 2017)
  • 6. 6© Ari Kamlani 2017 SKYMIND Deep Learning for the Enterprise… • RedHat for AI • Custom Deep Learning Solutions the Enterprise (Java Focused) • Focus is on a different User Base: Production vs Research • Stack operates natively w/existing Big Data Infrastructure Architecture • Build, Customize, and Maintain the complete Deep Learning Stack
  • 7. 7© Ari Kamlani 2017 HOW WE ARE USED • Finance & Fraud (Financial Banks) • Government (Nasa JPL) • Telcom • Retail (IBM, Amazon) Customer Segments Notable Uses Cases • Anomaly Detection (Fraud Detection, Network Intrusion, Predictive Maintenance) • Predictive Analytics (Demand Forecasting, Consumer Shopping Preferences) • Computer Vision (Digital Stamp Recognition, OCR, Image Classification) • Text Analytics (Chemical Compounds, FAA Part Document Versioning) Partners
  • 8. 8© Ari Kamlani 2017 8© Ari Kamlani 2017 DL4J INTRO + Skymind DL4J Suite + High-Level Architecture
  • 9. 9© Ari Kamlani 2017 WHY JAVA • Enterprises do not generally run Python in Production • Python <-> Java Serialization is Expensive • Modern Data Pipelines exist on the JVM (Provide a toolkit on the JVM) • DL4J as First-Class Citizen to the JVM (Spark, Hadoop) on a cluster Deep Learning for the Enterprise…
  • 10. 10© Ari Kamlani 2017 DL4J SUITE • Apache Software Foundation (ASF) 2.0 Licensed • Current Stable Release: 0.8.0 (Mar 2017) • Java Client Interface w/underlying C++ Bindings • Integrates well with other components of Big Data Ecosystem with ability to scale The “Hadoop” of Deep Learning
  • 11. 11© Ari Kamlani 2017 SKYMIND STACK Where our Stack fits in
  • 12. 12© Ari Kamlani 2017 SKYMIND CORE OPEN SOURCE
  • 13. 13© Ari Kamlani 2017 SKYMIND INTELLIGENCE LAYER (SKIL) • Combines Open Source Components + Proprietary Vendor Integrations • Provisioned Model Serving & Vendor Integration Deployment, Training of Scalable Models • Vendor Integrations: Hadoop Distributions, Connectors, Chip/BLAS Integrations • Model Serving ~ Tensorflow Serving provisioned for the Enterprise environment
  • 14. 14© Ari Kamlani 2017 ML WORKFLOW: PYTHON Depending upon featurization/augmentation Distributed/Tuning VECTORIZEINGEST MODELING TUNING INFERENCE
  • 15. 15© Ari Kamlani 2017 ML WORKFLOW: DL4J VECTORIZEINGEST MODELING TUNING INFERENCE ETL (DataVec) Vectorize (DataVec) Modeling (DL4J) Evaluation (Arbiter) Execution Platform: e.g. Local, Cluster (Spark) ND4J – Processor(CPU, GPU), Linear Algebra Runtime
  • 16. 16© Ari Kamlani 2017 DL4J SUITE
  • 17. 17© Ari Kamlani 2017 17© Ari Kamlani 2017 ENVIRONMENT + IntelliJ Setup + Configuration: pom.xml + Install Curated Examples + Install Snippets Repo
  • 18. 18© Ari Kamlani 2017 RESOURCES • DL4J Examples: http://github.com/deeplearning4j/dl4j-examples Repositories to clone
  • 19. 19© Ari Kamlani 2017 SETUP ENVIRONMENT IntelliJ: From Scratch • MAVEN-ARCHETYPE-QUICKSTART Creates a basic template with pom.xml http://nd4j.org/getstarted#starting-a-new-nd4j-project • Afterwards: Enable Auto-Import • Create Resource Directory: Mark as “Source Root” IntelliJ: Import Project • Follow DL4J Quickstart to import examples https://deeplearning4j.org/quickstart#dl4j- examples-in-a-few-easy-steps • Import Project from External Model
  • 20. 20© Ari Kamlani 2017 MAVEN INTRO Build System and Dependency Management • Dependency Management via pom.xml file(s) – parent/child relationship • Maven repository stored locally in ~/.m2 • In Scala ~ SBT (build.sbt) General Format <dependencies> <dependency> <groupId>${module.group.id}</groupId> <artifactId>${module.group.name}</artifactId> <version>${module.version}</version> <scope></scope> </dependency> </dependencies> <properties> <!-- e.g. release version: 0.8.0 --> <datavec.version>${release.version}</datavec.version> <nd4j.version>${release.version}</nd4j.version> <dl4j.version>${release.version}</dl4j.version> </properties>
  • 21. 21© Ari Kamlani 2017 DEPENDENCY MANAGEMENT Maven Dependency Variants (pom.xml) <dependency> <groupId>org.datavec</groupId> <artifactId>datavec-api</artifactId> <version>${datavec.version}</version> </dependency> <dependency> <groupId>org.datavec</groupId> <artifactId>datavec-spark_${spark.scala.version}</artifactId> <version>${datavec.spark.version}</version> </dependency> • org.{deeplearning4j, nd4j, datavec} • org.apache.{hadoop, spark} • org.scala-lang Commonly Used: ${module.group.id}
  • 22. 22© Ari Kamlani 2017 22© Ari Kamlani 2017 DL4J Component Breakdown + Component Migration/Responsibilities + Maven Intro + Workflow, Pipeline
  • 23. 23© Ari Kamlani 2017 DATAVEC ETL for ML: Persistable Data Pipelines • Data Preprocessing/Transformations: The Pandas of Enterprise Deep Learning • Core Responsibilities: Data Ingestion, Normalization, Vectorization • Extending into Transformation Process (e.g. Data Augmentation, Spark Transformations) • Example Data Source Formats: JSON, CSV, Text, Image/Video, Audio • “Canova” Module now integrated into DataVec (Per legacy context: <= Release 0.4)
  • 24. 24© Ari Kamlani 2017 DATAVEC ETL FOR ML data.csv Directory Images Transform Process Directory Labeled Images Path Label Generator Path Path Label Generator Record Reader CSV RecordReader Image RecordReader RecordReaderDataSetIterator ND4J Pre-Processor Scaler/Standardizers based on Data Format Convert to INDArray
  • 25. 25© Ari Kamlani 2017 DATAVEC: ETL FOR ML
  • 26. 26© Ari Kamlani 2017 ND4J CORE High Performance Tensor Library for Scientific Computing • Multi-Platform Functionality including GPUs • Numpy for the JVM, Linear Algebra & Signal Processing (Scipy) Framework • Built for manipulation of Tensors, Matrices, INDArrays (NDArray) • ND4J Indexing/Boolean Indexing (Slicing as in Numpy): via NDArrayIndex (INDArrayIndex) • DataSet acts as a container for INDArray(s): e.g. features, labels RecordReader recordReader = new CSVRecordReader(numLinesToSkip,delimiter); recordReader.initialize(new FileSplit(new ClassPathResource("iris.txt").getFile())); DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader,batchSize,labelIndex,numClasses); DataSet allData = iterator.next(); allData.shuffle(); SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.7); DataSet trainingData = testAndTrain.getTrain(); DataSet testData = testAndTrain.getTest();
  • 27. 27© Ari Kamlani 2017 ND4J BACKENDS • Function: Determines the flow of execution • Swappable backends for linear-algebra libraries and processors (more on this to come…) • Default Config: execute on CPUs (native platform) • Regardless of the Backend – Same consistent ND4J API ND4J JavaCPP libND4J DL4J HW Arch Chip Lib Native
  • 28. 28© Ari Kamlani 2017 NATIVE: IT’S NOT ALL JAVA JavaCPP • The Cython (C-Extensions for Python) for Java • Performs as a bridge per Hardware Accelerator Libraries (e.g. cuDNN, MKL) • Auto Generates Java Bindings from C++ (via Parsing) – avoid overhead of JNI • For Memory Management off-heap (not JVM) – own GC for GPU CUDA/cuDNN libND4J • C++ Native Engine that powers ND4J for efficient compute operations on CPU/GPU • Pluggable Hardware Architecture Libraries (NVIDIA cuDNN, Intel MKL) • Drives the native performance (latency) required for computational operations • Contains bindings for BLAS, LAPACK
  • 29. 29© Ari Kamlani 2017 DL4J TRAINING UI • Browser Based (Default Port: 9000) • Configure UI via Maven: -Dorg.deeplearning4j.ui.port=9001 • Real-Time Processing upon model.fit (vs TensorBoard) • Remote UI Collection per Distributing Training (e.g. Spark) Play-Based Web App <dependency> <groupId>org.deeplearning4j</groupId> <artifactId>deeplearning4j-ui_${scala_binary_version}</artifactId> <version>${dl4j.version}</version> </dependency> Maven Dependency (pom.xml)
  • 30. 30© Ari Kamlani 2017 ARBITER Model Tuning NN Library: Search Space for Deep Learning • Platform Agnostic Hyperparameter search per training and evaluating models • Supports Grid and Randomized Search for MultiLayerNetwork, ComputationGraph • UI(ArbiterUIServer) for evaluating search space • Traditional ML (Python) ~ sklearn.model_selection{GridSearchCV, RandomizedSearchCV} Maven Dependency (pom.xml) <dependency> <groupId>org.deeplearning4j</groupId> <artifactId>arbiter-deeplearning4j</artifactId> <version>${arbiter.version}</version> </dependency>
  • 31. 31© Ari Kamlani 2017 31© Ari Kamlani 2017 WORKFLOW + Keras + Network Data Workflow
  • 32. 32© Ari Kamlani 2017 KERAS • Keras Model Import: Released 0.7.1 (Dec 2016) – Support for Keras Pre v2.0 • Export Model Config/Weights from existing Keras model • Keras as Frontend backed by JVM Stack • Keras Integration (expected Q4 2017) • DL4J Model Zoo ​ Keras Model Import (Trained Models from Keras into Dl4J) Backends Not related to ND4J Backends
  • 33. 33© Ari Kamlani 2017 TRANSFER LEARNING Model Config Trained Model Keras Model Import Train in DL4J Model Serve/ Inference Model Zoo Keras DL4J Load Pretrained Models from Keras DL4J has its own Model Zoo too! Refine Existing Models Implement ‘Fine Tune’ Config enforceTrainingConfig: Training vs Inference model.out(newSamples) model.fit(trainData)
  • 34. 34© Ari Kamlani 2017 KERAS – DL4J NETWORK Keras Model Import MultiLayerNetworkConfiguration ComputationGraphConfiguration <dependency> <groupId>org.deeplearning4j</groupId> <artifactId>deeplearning4j-modelimport</artifactId> <version>${dl4j.version}</version> </dependency> MultiLayerNetwork (conf) ComputationGraph (conf) Equivalent to Keras Sequential Model: Linear Stack of Layers Equivalent to Keras Functional Model: Complex Models, Non-Sequential, MIMO Maven Dependency Variants (pom.xml)
  • 35. 35© Ari Kamlani 2017 SIMPLE DATA WORKFLOW VECTORIZEINGEST MODELING TUNING INFERENCE RecordReader DataSetIterator DataSet NormalizerStandardize shuffle splitTestandTrain MultiLayerNetworkConf MultiLayerNetwork • model.init • model.setListeners • model.fit(train) • modelSerializer.writeModel(net) • modelSerializer.restore* • model.out(test) • eval(testYhat, testLabels) ModelSerializerModelSerializer ~ Vectorize Pipeline ND4J Pre-Processor Optional TP
  • 36. 36© Ari Kamlani 2017 36© Ari Kamlani 2017 DISTRIBUTED COMPUTING + Applicability + Parallelism
  • 37. 37© Ari Kamlani 2017 EXECUTION Selecting a Network • Single CPU/GPU, Custom ASIC Variants (TPU) • Networks: MultiLayerNetwork, ComputationGraph • Single Node/Multi-Processor (e.g. Multi-GPU) • Networks: ParallelWrapper • Distributed across Nodes • Networks: SparkDl4jMultiLayer, SparkComputationGraph
  • 38. 38© Ari Kamlani 2017 DATA PIPELINE GPUs • Optimized for Matrix Computations • DL4J avoids additional Python <-> JVM Serialization • Hybrid: Standardization, Featurization via initial layers as part of Model Architecture ​ I/O INTENSIVE COMPUTE INTENSIVE I/O INTENSIVE INGEST ETL FEATURIZATION MODELING POST TUNING SERVING LARGE CLUSTER HIGH MEMORY SMALL CLUSTER SMALL MEMORY GPUs for Training Improve Training Time Low RAM ~ 12-24 GB
  • 39. 39© Ari Kamlani 2017 PARALLELISM • Delta in ingesting data & setting up training data, hyperparameter tuning • Number of Parameters may grow to be large • Update Large Numerical Multi-Dimensional Matrix • Workloads either CPU vs GPU Intensive ​ Is Distributed worth the Cost • Avoid Small & Shallow Networks • Want Low Ratio of Network Transfer to Computation • Good Candidates: Parameter Sharing (CNN, LSTM) ​
  • 40. 40© Ari Kamlani 2017 PARALLELISM MODEL PARALLELISM • Different partitions of the model assigned to different nodes on a cluster – each device operating on all data • Allows for scaling to large Models, useful when a model does not fit on single node • Apply model compression to constrain the size to improve network overhead • Reference Google/Jeff Dean Paper (Large Scaled Distributed Networks, NIPS, 2012) ​ DATA PARALLELISM • Apache Spark driven as Data Parallelism • Model Replication w/devices having different partitions of the data • Results from each device are combined MODEL & DATA PARALLELISM • Examples: MXNet, Tensorflow ​
  • 41. 41© Ari Kamlani 2017 MULTI-GPU To Enable Multi-GPU Access (pom.xml) <properties> <!-- for multi-gpu --> <nd4j.backend>nd4j-cuda-8.0-platform</nd4j.backend> <!-- for native platform --> <nd4j.backend>nd4j-native-platform</nd4j.backend> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-platform</artifactId> <version>${nd4j.version}</version> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-cuda-7.5-platform</artifactId> <version>${nd4j.version}</version> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-cuda-8.0-platform</artifactId> <version>${nd4j.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>${nd4j.backend}</artifactId> </dependency> </dependencies> ​In Contrast to Tensorflow: • pip install –-upgrade tensorflow-gpu • Device Graph Scoping: tf.device(‘/gpu:<id>’) ​
  • 42. 42© Ari Kamlani 2017 MULTI-GPU GPU Configuration public static void main(String[] args) { //Configure Cuda Environment CudaEnvironment.getInstance().getConfiguration() // key option enabled .allowMultiGPU(true) // allowing larger memory caches .setMaximumDeviceCache(2L * 1024L * 1024L * 1024L) // cross-device access is used for faster model averaging over pcie .allowCrossDeviceAccess(true); } • Manage memory from Java: via JavaCPP for own Memory Management of GPU (cuDNN) • Per GPU allocation per job ​
  • 43. 43© Ari Kamlani 2017 FP HALF-PRECISION FP16 • FP16 (2x less GPU RAM used) instead of FP32, FP64 to speed up Training • Half Precision is good enough for approximate deep learning (not as sensitive) • Smaller Precision, so tuning for loss may be more difficult • Caveat: Not all variants of Linear Algebra Libraries are supported by FP16 • Powerful for memory-intensive computations public static void main(String[] args) { //Enable FP16 DataTypeUtil.setDTypeForContext(DataBuffer.Type.HALF); }
  • 44. 44© Ari Kamlani 2017 RESOURCE MANAGERS As a Scheduler • Co-locate Resource where data is stored • Co-locate compute with storage for fault tolerance • Schedule as a Resource(available for job): Compute, Memory(RAM), Processor • Mesos (GPU as schedulable quantity) vs YARN (only Compute, Memory) • Execute distributed job across Nodes on pool of specified resources ​
  • 45. 45© Ari Kamlani 2017 APACHE SPARK As a Scheduler • Per Fast ETL & Fault tolerance at Worker Level • Spark can use GPU as a resource (Mesos) as part of a job • Spark 2.1.1 designed for use with Mesos >= 1.0.0 • DL4J uses Spark as a Data Access Layer (per Scheduler: does not manage data) • Integrations: Cooperative Frameworks (Native: DL4J) vs Spark Bindings (TFoS)
  • 46. 46© Ari Kamlani 2017 APACHE SPARK Spark Core SQL Streaming MLlib GraphX DL4JBigDL Partition Partition Partition RDD Use Spark RDD as Input to DataVec Transform Process Natively on Spark
  • 47. 47© Ari Kamlani 2017 PARAMETER SERVER (PS) Maintain State across workers (hold updated gradients) • Separate Jobs: Workers (GPU, Low Memory), Parameter server (CPU, High Memory) • Distributed Gradients from training batch fed into PS to produced new model parameters • Centralized (DL4J) vs Decentralized (P2P: CoS) Parameter Synchronization Updates • Synchronous (DL4J) vs Asynchronous Parameter Averaging (acts as Regularization)
  • 48. 48© Ari Kamlani 2017 SINGLE-NODE/MULTI-PROCESSOR ParallelWrapper • Single Node Parameter Averaging • Via Model Duplication – Each Worker trains on same model • Useful for testing Parameter Averaging on single node before going Distributed Via Latency Hiding • Asynchronous ETL to GPU in Background + Compute in Parallel using all cores • Training Time = GPU ETL Time + Matrix Compute Time
  • 49. 49© Ari Kamlani 2017 DISTRIBUTED SPARK NETWORK SparkDl4jMultiLayer(sc, conf, tm) network ParameterAveragingTrainingMaster tm MultiLayerNetworkConf confComputationGraphConf conf SparkComputationGraph(sc, conf, tm) network network.fit(JavaRDD<DataSet> trainingData)Train Network Evaluate Network network.evaluate(JavaRDD<DataSet> testData) Note: DataSet is not a Spark DataSet!!! network.init() • Gather Statistics across DataSet • Statistics per Columnar Basis • Generate HTML or Text Output network.setListeners(*) SparkContext(scConf) sc Via SparkAnalyze
  • 50. 50© Ari Kamlani 2017 SPARK DEPENDENCIES <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.binary.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.datavec</groupId> <artifactId>datavec-spark_${spark.scala.version}</artifactId> <version>${datavec.spark.version}</version> </dependency> <properties> <datavec.spark.version>0.8.0_spark_2</datavec.spark.version> <spark.major.version>2</spark.major.version> <spark.version>2.1.1</spark.version> <spark.scala.version>2.11</spark.scala.version> </properties> minimal pom.xml maven dependencies e.g. For Spark Transformation Process (tp) ETL
  • 51. 51© Ari Kamlani 2017 51© Ari Kamlani 2017 RESOURCE GOODIES + Useful Links: DL4J
  • 52. 52© Ari Kamlani 2017 DOCS DL4J Documentation § http://nd4j.org/documentation § http://nd4j.org/doc § http://deeplearning4j.org/doc § http://deeplearning4j.org/datavecdoc § http://deeplearning4j.org/quickstart § http://deeplearning4j.org/etl-userguide § http://deeplearning4j.org/documentation § http://deeplearning4j.org/spark § http://deeplearning4j.org/gpu § http://deeplearning4j.org/model-import-keras Pdfs § Model Parallelism: (Google 2012: Jeffrey Dean) https://static.googleusercontent.com/media/research.google.com/en//archive/ large_deep_networks_nips2012.pdf
  • 53. 53© Ari Kamlani 2017 USEFUL EXAMPLES § dl4j-examples = http://github.com/deeplearning4j/dl4j-examples § {dl4j-examples}/tree/master/datavec-examples § {dl4j-examples}/tree/master/dl4j-cuda-specific-examples § {dl4j-examples}/tree/master/dl4j-spark-examples Notable Getting Started DL4J Examples Screencasts (any many more…) § Datavec Spark Transform: http://github.com/SkymindIO/screencasts/tree/master/datavec_spark_transform § YouTube http://www.youtube.com/watch?v=MLEMw2NxjxE
  • 54. 54© Ari Kamlani 2017 COMMUNITY § Github Repository http://github.com/deeplearning4j § Gitter Channel http://gitter.im/deeplearning4j/deeplearning4j § SF Meetup: Deep Learning in Production with Skymind https://www.meetup.com/SF-Deep-Learning-in-Production/ Contribute – We’d love your help! Issues § Extend Yarn to include GPU as a Resource: http://issues.apache.org/jira/browse/YARN-5517
  • 55. 55© Ari Kamlani 2017 55© Ari Kamlani 2017 Thank You
  • 56. 56© Ari Kamlani 2017 CONTACT ME ​If you want to contact Me: Personal: http://arikamlani.com/ akamlani@gmail.com Twitter: @akamlani ​ LinkedIn: akamlani ​SlideShare: Ari Kamlani