The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML...

74
Joshua Patterson – GM, Data Science The Platform Inside and Out Release 0.9

Transcript of The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML...

Page 1: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

Joshua Patterson – GM, Data Science

The Platform Inside and OutRelease 0.9

Page 2: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

2

RAPIDSEnd-to-End Accelerated GPU Data Science

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

Dask

Page 3: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

3

Data Processing EvolutionFaster data access, less data movement

25-100x ImprovementLess code

Language flexiblePrimarily In-Memory

HDFS Read

HDFS Write

HDFS Read

HDFS Write

HDFS ReadQuery ETL ML Train

HDFS Read Query ETL ML Train

HDFS Read

GPU ReadQuery CPU

WriteGPU Read ETL CPU

WriteGPU Read

MLTrain

5-10x ImprovementMore code

Language rigidSubstantially on GPU

Traditional GPU Processing

Hadoop Processing, Reading from disk

Spark In-Memory Processing

Page 4: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

4

APP A

Data Movement and TransformationData Movement and TransformationThe bane of productivity and performance

CPU

APP B

Copy & Convert

Copy & Convert

Copy & Convert

APP A GPU Data

APP BGPU Data

Read Data

Load Data

APP B

APP A

GPU

Page 5: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

5

Data Movement and TransformationData Movement and TransformationWhat if we could keep data on the GPU?

APP A

APP B

Copy & Convert

Copy & Convert

Copy & Convert

Read Data

Load Data

CPU

APP A GPU Data

APP BGPU Data

APP B

APP A

GPUCopy & Convert

Page 6: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

6

Learning from Apache Arrow

From Apache Arrow Home Page - https://arrow.apache.org/

● Each system has its own internal memory format● 70-80% computation wasted on serialization and deserialization● Similar functionality implemented in multiple projects

● All systems utilize the same memory format● No overhead for cross-system communication● Projects can share functionality (eg, Parquet-to-Arrow

reader)

Page 7: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

7

Data Processing EvolutionFaster data access, less data movement

25-100x ImprovementLess code

Language flexiblePrimarily In-Memory

HDFS Read

HDFS Write

HDFS Read

HDFS Write

HDFS ReadQuery ETL ML Train

HDFS Read Query ETL ML Train

HDFS Read

GPU ReadQuery CPU

WriteGPU Read ETL CPU

WriteGPU Read

MLTrain

ArrowRead ETL ML

Train

5-10x ImprovementMore code

Language rigidSubstantially on GPU

50-100x ImprovementSame code

Language flexiblePrimarily on GPU

RAPIDS

Traditional GPU Processing

Hadoop Processing, Reading from disk

Spark In-Memory Processing

Query

Page 8: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

8

Faster Speeds, Real-World BenefitscuIO/cuDF – Load and Data Preparation cuML - XGBoost

Time in seconds (shorter is better)

cuIO/cuDF (Load and Data Prep) Data Conversion XGBoost

Benchmark

200GB CSV dataset; Data prep includes joins, variable transformations

CPU Cluster ConfigurationCPU nodes (61 GiB memory, 8 vCPUs, 64-bit platform), Apache Spark

DGX Cluster Configuration5x DGX-1 on InfiniBand network

8762

6148

3925

3221

322

213

End-to-End

Page 9: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

9

Speed, UX, and IterationThe Way to Win at Data Science

Page 10: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

10

RAPIDS Core

Page 11: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

11

PandasAnalytics

CPU Memory

Data Preparation VisualizationModel Training

Scikit-LearnMachine Learning

NetworkXGraph Analytics

PyTorch Chainer MxNetDeep Learning

Matplotlib/SeabornVisualization

Open Source Data Science EcosystemFamiliar Python APIs

Dask

Page 12: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

12

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

RAPIDSEnd-to-End Accelerated GPU Data Science

Dask

Page 13: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

13

Dask

Page 14: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

14

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

RAPIDSScaling RAPIDS with Dask

Dask

Page 15: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

15

Why Dask?

• Easy Migration: Built on top of NumPy, Pandas Scikit-Learn, etc.

• Easy Training: With the same APIs• Trusted: With the same developer community

PyData Native

• Easy to install and use on a laptop• Scales out to thousand-node clusters

Easy Scalability

• Most common parallelism framework today in the PyData and SciPy community

Popular

• HPC: SLURM, PBS, LSF, SGE• Cloud: Kubernetes• Hadoop/Spark: Yarn

Deployable

Page 16: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

16

Why OpenUCX?

• TCP sockets are slow!

• UCX provides uniform access to transports (TCP, InfiniBand, shared memory, NVLink)

• Python bindings for UCX (ucx-py) in the works https://github.com/rapidsai/ucx-py

• Will provide best communication performance, to Dask based on available hardware on nodes/cluster

Bringing hardware accelerated communications to Dask

Page 17: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

17

Scale up with RAPIDS

Accelerated on single GPU

NumPy -> CuPy/PyTorch/..Pandas -> cuDFScikit-Learn -> cuMLNumba -> Numba

RAPIDS and Others

NumPy, Pandas, Scikit-Learn, Numba and many more

Single CPU coreIn-memory data

PyData

Scal

e U

p /

Acce

lera

te

Page 18: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

18

Scale out with RAPIDS + Dask with OpenUCX

Accelerated on single GPU

NumPy -> CuPy/PyTorch/..Pandas -> cuDFScikit-Learn -> cuMLNumba -> Numba

RAPIDS and Others

Multi-GPUOn single Node (DGX)Or across a cluster

RAPIDS + Dask with OpenUCX

Scal

e U

p /

Acce

lera

te

Scale out / Parallelize

NumPy, Pandas, Scikit-Learn, Numba and many more

Single CPU coreIn-memory data

PyDataMulti-core and Distributed PyData

NumPy -> Dask ArrayPandas -> Dask DataFrameScikit-Learn -> Dask-ML… -> Dask Futures

Dask

Page 19: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

19

cuDF

Page 20: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

20

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

RAPIDSGPU Accelerated data wrangling and feature engineering

Dask

Page 21: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

21

GPU-Accelerated ETLThe average data scientist spends 90+% of their time in ETL as opposed to training

models

Page 22: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

22

ETL - the Backbone of Data SciencelibcuDF is…

CUDA C++ Library

● Low level library containing function implementations and C/C++ API

● Importing/exporting Apache Arrow in GPU memory using CUDA IPC

● CUDA kernels to perform element-wise math operations on GPU DataFrame columns

● CUDA sort, join, groupby, reduction, etc. operations on GPU DataFrames

Page 23: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

23

ETL - the Backbone of Data SciencecuDF is…

Python Library

● A Python library for manipulating GPU DataFrames following the Pandas API

● Python interface to CUDA C++ library with additional functionality

● Creating GPU DataFrames from Numpy arrays, Pandas DataFrames, and PyArrow Tables

● JIT compilation of User-Defined Functions (UDFs) using Numba

Page 24: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

24

cuDF v0.9, Pandas 0.24.2

Running on NVIDIA DGX-1:

GPU: NVIDIA Tesla V100 32GBCPU: Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz

Benchmark Setup:

DataFrames: 2x int32 columns key columns, 3x int32 value columns

Merge: inner

GroupBy: count, sum, min, max calculated for each value column

Benchmarks: single-GPU Speedup vs. Pandas

Page 25: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

25

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

Dask

ETL - the Backbone of Data SciencecuDF is not the end of the story

Page 26: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

26

ETL - the Backbone of Data ScienceString Support

•Regular Expressions•Element-wise operations

• Split, Find, Extract, Cat, Typecasting, etc…•String GroupBys, Joins•Categorical columns fully on GPU

Current v0.9 String Support

• Combining cuStrings into libcudf• Extensive performance optimization• More Pandas String API compatibility• JIT-compiled String UDFs

Future v0.10+ String Support

Page 27: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

27

• Follow Pandas APIs and provide >10x speedup

• CSV Reader - v0.2, CSV Writer v0.8

• Parquet Reader – v0.7, Parquet Writer v0.10

• ORC Reader – v0.7, ORC Writer v0.10

• JSON Reader - v0.8

• Avro Reader - v0.9

• GPU Direct Storage integration in progress for bypassing PCIe bottlenecks!

• Key is GPU-accelerating both parsing and decompression wherever possible Source: Apache Crail blog: SQL Performance: Part 1 - Input File Formats

Extraction is the CornerstonecuIO for Faster Data Loading

Page 28: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

28

ETL is not just DataFrames!

Page 29: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

29

GPU Memory

Data Preparation VisualizationModel Training

RAPIDSBuilding bridges into the array ecosystem

Dask

cuDF cuIOAnalytics

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

Page 30: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

30

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

Page 31: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

31

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

Page 32: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

32

ETL – Arrays and DataFramesDask and CUDA Python arrays

• Scales NumPy to distributed clusters• Used in climate science, imaging, HPC analysis

up to 100TB size• Now seamlessly accelerated with GPUs

Page 33: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

33

Benchmark: single-GPU CuPy vs NumPy

More details: https://blog.dask.org/2019/06/27/single-gpu-cupy-benchmarks

Page 34: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

34

SVD BenchmarkDask and CuPy Doing Complex Workflows

Page 35: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

35

Architecture Time

Single CPU Core 2hr 39min

Forty CPU Cores 11min 30s

One GPU 1min 37s

Eight GPUs 19s

Also…Achievement Unlocked: Petabyte Scale Data Analytics with Dask and CuPy

Cluster configuration: 20x GCP instances, each instance has:CPU: 1 VM socket (Intel Xeon CPU @ 2.30GHz), 2-core, 2 threads/core, 132GB mem, GbE ethernet, 950 GB diskGPU: 4x NVIDIA Tesla P100-16GB-PCIe (total GPU DRAM across nodes 1.22 TB)Software: Ubuntu 18.04, RAPIDS 0.5.1, Dask=1.1.1, Dask-Distributed=1.1.1, CuPY=5.2.0, CUDA 10.0.130

https://blog.dask.org/2019/01/03/dask-array-gpus-first-steps

Page 36: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

36

ETL – Arrays and DataFramesMore Dask Awesomeness from RAPIDS

https://youtu.be/gV0cykgsTPM https://youtu.be/R5CiXti_MWo

Page 37: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

37

cuML

Page 38: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

38

GPU Memory

Data Preparation VisualizationModel Training

Dask

Machine LearningMore models more problems

cuDF cuIOAnalytics

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

Page 39: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

39

ProblemData sizes continue to grow

Histograms / Distributions

Dimension ReductionFeature Selection

Remove Outliers

Sampling

Massive Dataset

Better to start with as much data aspossible and explore / preprocess to scaleto performance needs.

Iterate. Cross Validate & Grid Search.

Iterate some more.

Meet reasonable speed vs accuracy tradeoff

Hours? Days?

TimeIncreases

Page 40: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

40

ML Technology Stack

Python

Cython

cuML Algorithms

cuML Prims

CUDA Libraries

CUDA

Dask cuMLDask cuDF

cuDFNumpy

ThrustCub

cuSolvernvGraphCUTLASScuSparsecuRandcuBlas

Page 41: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

41

AlgorithmsGPU-accelerated Scikit-Learn

Classification / Regression

Inference

Clustering

Decomposition & Dimensionality Reduction

Time Series

Decision Trees / Random ForestsLinear RegressionLogistic RegressionK-Nearest Neighbors

Random forest / GBDT inference

K-MeansDBSCANSpectral Clustering

Principal ComponentsSingular Value DecompositionUMAPSpectral Embedding

Holt-WintersKalman Filtering

Cross Validation

More to come!

Hyper-parameter TuningKey:

● Preexisting● NEW for 0.9

Page 42: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

42

RAPIDS matches common Python APIs

from sklearn.cluster import DBSCANdbscan = DBSCAN(eps = 0.3, min_samples = 5)

dbscan.fit(X)

y_hat = dbscan.predict(X)

Find Clusters

from sklearn.datasets import make_moonsimport pandas

X, y = make_moons(n_samples=int(1e2), noise=0.05, random_state=0)

X = pandas.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})

CPU-Based Clustering

Page 43: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

43

RAPIDS matches common Python APIs

from cuml import DBSCANdbscan = DBSCAN(eps = 0.3, min_samples = 5)

dbscan.fit(X)

y_hat = dbscan.predict(X)

Find Clusters

from sklearn.datasets import make_moonsimport cudf

X, y = make_moons(n_samples=int(1e2), noise=0.05, random_state=0)

X = cudf.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})

GPU-Accelerated Clustering

Page 44: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

44

Benchmarks: single-GPU cuML vs scikit-learn

1x V100 vs 2x 20 core CPU

Page 45: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

45

cuML’s Forest Inference Library accelerates prediction (inference) for random forests and boosted decision trees:

● Works with existing saved models (XGBoost and LightGBM today, scikit-learn RF and cuML RF soon)

● Lightweight Python API● Single V100 GPU can infer up to 34x

faster than XGBoost dual-CPU node● Over 100 million forest inferences

per sec (with 1000 trees) on a DGX-1

Forest InferenceTaking models from training to production

23x 36x 34x 23x

Page 46: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

46

Road to 1.0 August 2019 - RAPIDS 0.9

cuML Single-GPU Multi-GPU Multi-Node-Multi-GPU

Gradient Boosted Decision Trees (GBDT)

GLM

Logistic Regression

Random Forest

K-Means

K-NN

DBSCAN

UMAP

Holt-Winters

Kalman Filter

t-SNE

Principal Components

Singular Value Decomposition

Page 47: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

47

Road to 1.0 March 2020 - RAPIDS 0.14

cuML Single-GPU Multi-GPU Multi-Node-Multi-GPU

Gradient Boosted Decision Trees (GBDT)

GLM

Logistic Regression

Random Forest

K-Means

K-NN

DBSCAN

UMAP

ARIMA & Holt-Winters

Kalman Filter

t-SNE

Principal Components

Singular Value Decomposition

Page 48: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

48

cuGraph

Page 49: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

49

GPU Memory

Data Preparation VisualizationModel Training

Dask

Graph AnalyticsMore connections more insights

cuDF cuIOAnalytics

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

Page 50: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

50

GOALS AND BENEFITS OF CUGRAPHFocus on Features and User Experience

• Property Graph support via DataFrames

Seamless Integration with cuDF and cuML

• Up to 500 million edges on a single 32GB GPU• Multi-GPU support for scaling into the billions

of edges

Breakthrough Performance

• Python: Familiar NetworkX-like API• C/C++: lower-level granular control for

application developers

Multiple APIs

• Extensive collection of algorithm, primitive, and utility functions

Growing Functionality

Page 51: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

51

Graph Technology Stack

Python

Cython

cuGraph Algorithms

Prims

CUDA Libraries

CUDA

Dask cuGraphDask cuDF

cuDFNumpy

thrustcub

cuSolvercuSparsecuRand

Gunrock*

cuGraphBLAS cuHornet

nvGRAPH has been Opened Sourced and integrated into cuGraph. A legacy version is available in a RAPIDS GitHub repo * Gunrock is from UC Davis

Page 52: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

52

AlgorithmsGPU-accelerated NetworkX

Community

Components

Link Analysis

Link Prediction

Traversal

Structure

Spectral ClusteringBalanced-CutModularity Maximization

LouvainSubgraph ExtractionTriangle Counting

JaccardWeighted JaccardOverlap Coefficient

Single Source Shortest Path (SSSP)Breadth First Search (BFS)

COO-to-CSR (Multi-GPU)TransposeRenumbering

Multi-GPU

More to come!

Utilities

Weakly Connected ComponentsStrongly Connected Components

Page Rank (Multi-GPU)Personal Page Rank

Query Language

Page 53: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

53

Louvain Single Run

Dataset Nodes Edges

preferentialAttachment 100,000 999,970

caidaRouterLevel 192,244 1,218,132

coAuthorsDBLP 299,067 299,067

dblp-2010 326,186 1,615,400

citationCiteseer 268,495 2,313,294

coPapersDBLP 540,486 30,491,458

coPapersCiteseer 434,102 32,073,440

as-Skitter 1,696,415 22,190,596

Louvain returns:cudf.DataFrame with two names columns: louvain["vertex"]: The vertex id. louvain["partition"]: The assigned partition.

G = cugraph.Graph()G.add_edge_list(gdf["src_0"], gdf["dst_0"], gdf["data"])df, mod = cugraph.nvLouvain(G)

Page 54: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

54

Multi-GPU PageRank Performance

PageRank portion of the HiBench benchmark suite

HiBench Scale Vertices Edges CSV File (GB)

# of GPUs PageRank for3 Iterations (secs)

Huge 5,000,000 198,000,000 3 1 1.1

BigData 50,000,000 1,980,000,000 34 3 5.1

BigData x2 100,000,000 4,000,000,000 69 6 9.0

BigData x4 200,000,000 8,000,000,000 146 12 18.2

BigData x8 400,000,000 16,000,000,000 300 16 31.8

Page 55: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

55

Road to 1.0 August 2019 - RAPIDS 0.9

cuGraph Single-GPU Multi-GPU Multi-Node-Multi-GPU

Jaccard and Weighted Jaccard

Page Rank

Personal Page Rank

SSSP

BFS

Triangle Counting

Subgraph Extraction

Katz Centrality

Betweenness Centrality

Connected Components (Weak and Strong)

Louvain

Spectral Clustering

InfoMap

K-Cores

Page 56: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

56

Road to 1.0 March 2020 - RAPIDS 0.14

cuGraph Single-GPU Multi-GPU Multi-Node-Multi-GPU

Jaccard and Weighted Jaccard

Page Rank

Personal Page Rank

SSSP

BFS

Triangle Counting

Subgraph Extraction

Katz Centrality

Betweenness Centrality

Connected Components (Weak and Strong)

Louvain

Spectral Clustering

InfoMap

K-Cores

Page 57: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

57

Community

Page 58: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

58

Ecosystem Partners

Page 59: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

59

Building on top of RAPIDSA bigger, better, stronger ecosystem for all

Streamz

High-Performance Serverless event and data processing that utilizes RAPIDS for GPU Acceleration

Distributed stream processing using RAPIDS and Dask

GPU accelerated SQL engine built on top of RAPIDS

Page 60: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

60

Deploy RAPIDS EverywhereFocused on robust functionality, deployment, and user experience

Integration with major cloud providersBoth containers and cloud specific machine instancesSupport for Enterprise and HPC Orchestration Layers

Cloud Dataproc Azure Machine Learning

Page 62: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

62

Easy InstallationInteractive Installation Guide

Page 63: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

63

Join the Conversation

Page 64: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

64

Explore: RAPIDS Githubhttps://github.com/rapidsai

Page 65: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

65

Explore: RAPIDS DocsImproved and easier to use!

https://docs.rapids.ai

Page 66: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

66

Explore: RAPIDS Code and BlogsCheck out our code and how we use it

https://github.com/rapidsai https://medium.com/rapids-ai

Page 67: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

67

Explore: Notebooks ContribNotebooks Contrib Repo has tutorials and examples, and various E2E demos. RAPIDS

Youtube channel has explanations, code walkthroughs and use cases.

Page 68: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

68

Contribute BackIssues, feature requests, PRs, Blogs, Tutorials, Videos, QA...bring your best!

Page 69: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

69

Getting Started

Page 70: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

70

RAPIDS DocsNew, improved, and easier to use

https://docs.rapids.ai

Page 71: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

71

RAPIDS DocsEasier than ever to get started with cuDF

Page 72: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

72

• https://ngc.nvidia.com/registry/nvidia-rapidsai-rapidsai

• https://hub.docker.com/r/rapidsai/rapidsai/

• https://github.com/rapidsai

• https://anaconda.org/rapidsai/

RAPIDSHow do I get the software?

Page 73: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

73

Join the MovementEveryone can help!

Integrations, feedback, documentation support, pull requests, new issues, or code donations welcomed!

APACHE ARROW GPU Open Analytics Initiative

https://arrow.apache.org/

@ApacheArrow

http://gpuopenanalytics.com/

@GPUOAI

RAPIDS

https://rapids.ai

@RAPIDSAI

Dask

https://dask.org

@Dask_dev

Page 74: The Platform Inside and Out Release 0 - RAPIDS Docs 0.9 Release Deck.pdf · Scikit-Learn -> cuML Numba -> Numba RAPIDS and Others Multi-GPU On single Node (DGX) Or across a cluster

THANK YOU

Joshua Patterson @datametrician

[email protected]