The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader –...

86
Joshua Patterson – Director, RAPIDS Engineering The Platform Inside and Out Release 0.11

Transcript of The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader –...

Page 1: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

Joshua Patterson – Director, RAPIDS Engineering

The Platform Inside and OutRelease 0.11

Page 2: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

8

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

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 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

9

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

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

End-to-End

Improving Over Time

Page 10: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

10

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

Page 11: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

11

RAPIDS Core

Page 12: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

12

PandasAnalytics

CPU Memory

Data Preparation VisualizationModel Training

Scikit-LearnMachine Learning

NetworkXGraph Analytics

PyTorch Chainer MxNetDeep Learning

Matplotlib/PlotlyVisualization

Open Source Data Science EcosystemFamiliar Python APIs

Dask

Page 13: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

13

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 14: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

14

Dask

Page 15: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

15

cuDF cuIOAnalytics

GPU Memory

Data Preparation VisualizationModel Training

cuMLMachine Learning

cuGraphGraph Analytics

PyTorch Chainer MxNetDeep Learning

cuXfilter <> pyVizVisualization

RAPIDSScaling RAPIDS with Dask

Dask

Page 16: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

16

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 17: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

17

Why OpenUCX?

• TCP sockets are slow!

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

• Alpha Python bindings for UCX (ucx-py)

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

Bringing hardware accelerated communications to Dask

conda install -c conda-forge -c rapidsai \ cudatoolkit=<CUDA version> ucx-proc=*=gpu ucx ucx-py

Page 18: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

18

cuDF v0.11, UCX-PY 0.11

Running on NVIDIA DGX-2:

GPU: NVIDIA Tesla V100 32GBCPU: Intel(R) Xeon(R) CPU 8168 @ 2.70GHz

Benchmark Setup:

DataFrames: Left/Right 1x int64 column key column, 1x int64 value columns

Merge: inner

30% of matching data balanced across each partition

Benchmarks: Distributed cuDF Random Merge

Page 19: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

19

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 20: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

20

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 21: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

21

cuDF

Page 22: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

22

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 23: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

23

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

models

Page 24: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

24

ETL Technology Stack

Dask cuDFcuDF

Pandas

ThrustCub

Jitify

Python

Cython

cuDF C++

CUDA Libraries

CUDA

Page 25: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

25

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 26: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

26

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 27: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

27

cuDF v0.10, 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 28: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

28

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 29: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

29

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•Combining cuStrings into libcudf

Current v0.11 String Support

• Extensive performance optimization• More Pandas String API compatibility• JIT-compiled String UDFs• string columns in libcudf replacing custring

Future v0.12+ String Support

Page 30: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

30

• Follow Pandas APIs and provide >10x speedup

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

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

• 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 31: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

31

ETL is not just DataFrames!

Page 32: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

32

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 33: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

33

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

Page 34: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

34

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

Page 35: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

35

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 36: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

36

Benchmark: single-GPU CuPy vs NumPy

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

Page 37: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

37

SVD BenchmarkDask and CuPy Doing Complex Workflows

Page 38: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

38

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 39: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

39

ETL – Arrays and DataFramesMore Dask Awesomeness from RAPIDS

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

Page 40: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

40

cuML

Page 41: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

41

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 42: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

42

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 43: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

43

ML Technology Stack

Python

Cython

cuML Algorithms

cuML Prims

CUDA Libraries

CUDA

Dask cuMLDask cuDF

cuDFNumpy

ThrustCub

cuSolvernvGraphCUTLASScuSparsecuRandcuBlas

Page 44: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

44

AlgorithmsGPU-accelerated Scikit-Learn

Classification / Regression

Inference

Clustering

Decomposition & Dimensionality Reduction

Time Series

Decision Trees / Random ForestsLinear RegressionLogistic RegressionK-Nearest NeighborsSupport Vector Machine Classification

Random forest / GBDT inference

K-MeansDBSCANSpectral Clustering

Principal ComponentsSingular Value DecompositionUMAPSpectral EmbeddingT-SNE

Holt-WintersKalman FilteringARIMA

Cross Validation

More to come!

Hyper-parameter TuningKey:

● Preexisting● NEW or enhanced for 0.11

Page 45: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

45

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 46: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

46

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 47: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

47

Benchmarks: single-GPU cuML vs scikit-learn

1x V100 vs.2x 20 core CPU

Page 48: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

48

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

● Works with existing saved models (XGBoost, LightGBM, scikit-learn RF 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 49: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

49

Road to 1.0 December 2019 - RAPIDS 0.11cuML 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

ARIMA

t-SNE

Principal Components

Singular Value Decomposition

SVM

Page 50: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

50

Road to 1.0 March 2020 - RAPIDS 0.13

cuML Single-GPU Multi-Node-Multi-GPU

Gradient Boosted Decision Trees (GBDT)

GLM

Logistic Regression

Random Forest

K-Means

K-NN

DBSCAN

UMAP

ARIMA & Holt-Winters

ARIMA

t-SNE

Principal Components

Singular Value Decomposition

SVM

Page 51: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

51

cuGraph

Page 52: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

52

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 53: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

53

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 54: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

54

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 55: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

55

AlgorithmsGPU-accelerated NetworkX

Community

Components

Link Analysis

Link Prediction

Traversal

Structure

Spectral ClusteringBalanced-CutModularity Maximization

LouvainSubgraph ExtractionKCore and KCore Number

JaccardWeighted JaccardOverlap Coefficient

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

Triangle CountingCOO-to-CSR (Multi-GPU)Transpose

Multi-GPU

More to come!

Utilities

Weakly Connected ComponentsStrongly Connected Components

Page Rank (Multi-GPU)Personal Page RankKatz

Query Language

Renumbering

Page 56: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

56

Benchmarks: single-GPU cuGraph vs NetworkX

Dataset Nodes Edges

preferentialAttachment 100,000 999,970caidaRouterLevel 192,244 1,218,132coAuthorsDBLP 299,067 299,067dblp-2010 326,186 1,615,400citationCiteseer 268,495 2,313,294coPapersDBLP 540,486 30,491,458coPapersCiteseer 434,102 32,073,440as-Skitter 1,696,415 22,190,596

Page 57: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

57

Benchmarks: cyLouvain and SciPy PageRank

Page 58: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

58

Multi-GPU PageRank Performance

PageRank portion of the HiBench benchmark suite

HiBench Scale Vertices Edges CSV File (GB)

# of GPUs # of CPU Threads

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

BigData x8 400,000,000 16,000,000,000 300 800* 5760*

*BigData x8, 100x 8-vCPU nodes, Apache Spark GraphX ⇒ 96 mins!

Page 59: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

59

Road to 1.0 December 2019 - RAPIDS 0.11

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

K-Cores

Page 60: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

60

Road to 1.0 March 2020 - RAPIDS 0.13

cuGraph Single-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

K-Cores

Page 61: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

61

cuSpatial

Page 62: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

62

cuSpatial Technology Stack

Python

Cython

cuSpatial

cuDF C++

Thrust

CUDA

Page 63: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

63

cuSpatial

• cuDF for data loading, cuGraph for routing optimization, and cuML for clustering are just a few examples

Seamless Integration into RAPIDS

• Extensive collection of algorithm, primitive, and utility functions for spatial analytics

Growing Functionality

• Up to 1000x faster than CPU spatial libraries• Python and C++ APIs for maximum usability

and integration

Breakthrough Performance & Ease of Use

Page 64: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

64

cuSpatial0.11 and Beyond

Layer 0.11 Functionality Functionality Roadmap (2020)

High-level Analytics C++ Library w. Python bindings enabling distance, speed, trajectory similarity, trajectory clustering

C++ Library w. Python bindings for additional spatio-temporal trajectory clustering, acceleration, dwell-time, salient locations, trajectory anomaly detection, origin destination, etc.

Graph layer cuGraph Map matching, Djikstra algorithm, Routing

Query layer Spatial Window Nearest Neighbor,KNN, Spatiotemporal range search and joins

Index layer Grid, Quad Tree, R-Tree, Geohash, Voronoi Tessellation

Geo-operations Point in polygon (PIP), Haversine distance, Hausdorff distance, lat-lon to xy transformation

Line intersecting polygon, Other distance functions, Polygon intersection, union

Geo-representation Shape primitives, points, polylines, polygons Additional shape primitives

Page 65: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

65

cuSpatial

cuSpatial Operation Input data cuSpatial Runtime Reference Runtime Speedup

Point-in-Polygon Test 1.3+ million vehicle point locations and 27 Region of Interests

1.11 ms (C++)1.50 ms (Python)[Nvidia Titan V]

334 ms (C++, optimized serial)130468.2 ms (python Shapely API, serial)[Intel i7-7800X]

301X(C++)86,978X (Python)

Haversine Distance Computation

13+ million Monthly NYC taxi trip pickup and drop-off locations

7.61 ms (Python)[Nvidia T4]

416.9 ms (Numba)[Nvidia T4]

54.7X (Python)

Hausdorff Distance Computation (for clustering)

52,800 trajectories with 1.3+ million points

13.5s[Quadro V100]

19227.5s (Python SciPy API, serial)[Intel i7-6700K]

1,400X (Python)

Performance at a Glance

Page 66: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

66

Community

Page 67: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

67

Ecosystem Partners

Page 68: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

68

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 69: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

69

BlazingSQL

AI

SQL Queries Data Preparation Machine Learning Graph Analytics

Apache Arrow on GPU

blazingSQL cuDF cuML cuGRAPH

Page 70: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

70

CSV GDF

ORC Parquet JSON

ETLFeature

Engineering

cuML>cuDFBlazingSQL >>

YOURDATA

MACHINELEARNING

from blazingsql import BlazingContext

import cudf

bc = BlazingContext()

bc.s('bsql', bucket_name='bsql', access_key_id='<access_key>', secret_key='<secret_key')

bc.create_table('orders', s3://bsql/orders/')

gdf = bc.sql('select * from orders').get()

BlazingSQL

Page 71: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

71

RAPIDS + NuclioServerless meets GPUs

https://towardsdatascience.com/python-pandas-at-extreme-performance-912912b1047c

Page 72: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

72

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 74: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

74

Easy InstallationInteractive Installation Guide

Page 75: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

75

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

Page 76: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

76

Explore: RAPIDS DocsImproved and easier to use!

https://docs.rapids.ai

Page 77: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

77

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

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

Page 78: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

78

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

Youtube channel has explanations, code walkthroughs and use cases.

Page 79: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

79

Join the Conversation

Page 80: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

80

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

Page 81: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

81

Getting Started

Page 82: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

82

RAPIDS DocsNew, improved, and easier to use

https://docs.rapids.ai

Page 83: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

83

RAPIDS DocsEasier than ever to get started with cuDF

Page 84: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

84

• 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 85: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

85

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 86: The Platform Inside and Out Release 0 - RAPIDS 0.11 Release Deck.pdf · • Parquet Reader – v0.7, Parquet Writer v0.12 • ORC Reader – v0.7, ORC Writer v0.10 • JSON Reader

THANK YOU

Joshua Patterson @datametrician

[email protected]