Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7,...

87
Joshua Patterson – Director, RAPIDS Engineering The Platform Inside and Out Release 0.12

Transcript of Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7,...

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

Joshua Patterson – Director, RAPIDS Engineering

The Platform Inside and OutRelease 0.12

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

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

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

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

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

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

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

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

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

10

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

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

11

RAPIDS Core

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

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

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

14

Dask

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

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

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

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

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

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

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

21

cuDF

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

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

23

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

models

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

24

ETL Technology Stack

Dask cuDFcuDF

Pandas

ThrustCub

Jitify

Python

Cython

cuDF C++

CUDA Libraries

CUDA

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

25

ETL: the Backbone of Data SciencelibcuDF is…

CUDA C++ Library

● Table (dataframe) and column types and algorithms

● CUDA kernels for sorting, join, groupby, reductions, partitioning, elementwise operations, etc.

● Optimized GPU implementations for strings, timestamps, numeric types (more coming)

● Primitives for scalable distributed ETL

std::unique_ptr<table>gather(table_view const& input, column_view const& gather_map, …){

// return a new table containing // rows from input indexed by // gather_map}

Page 26: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

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

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

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

29

ETL: the Backbone of Data ScienceString Support

•Regular Expressions•Element-wise operations

• Split, Find, Extract, Cat, Typecasting, etc…•String GroupBys, Joins, Sorting, etc.•Categorical columns fully on GPU•Native String type in libcudf C++

Current v0.12 String Support

• Extensive performance optimization• More Pandas String API compatibility• JIT-compiled String UDFs

Future v0.13+ String Support

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

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 CornerstonecuDF I/O for Faster Data Loading

Page 31: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

31

ETL is not just DataFrames!

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

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

33

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

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

34

Interoperability for the WinDLPack and __cuda_array_interface__

mpi4py

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

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

36

Benchmark: single-GPU CuPy vs NumPy

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

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

37

SVD BenchmarkDask and CuPy Doing Complex Workflows

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

38

Architecture Time

Single CPU Core 2hr 39min

Forty CPU Cores 11min 30s

One GPU 1min 37s

Eight GPUs 19s

Petabyte Scale 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: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

39

ETL: Arrays and DataFramesMore Dask Awesomeness from RAPIDS

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

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

40

cuML

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

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

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

43

ML Technology Stack

Python

Cython

cuML Algorithms

cuML Prims

CUDA Libraries

CUDA

Dask cuMLDask cuDF

cuDFNumpy

ThrustCub

cuSolvernvGraphCUTLASScuSparsecuRandcuBlas

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

44

AlgorithmsGPU-accelerated Scikit-Learn

Classification / Regression

Inference

Clustering

Decomposition & Dimensionality Reduction

Time Series

Decision Trees / Random ForestsLinear RegressionLogistic RegressionK-Nearest NeighborsSupport Vector Machines

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.12

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

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

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

47

Benchmarks: single-GPU cuML vs scikit-learn

1x V100 vs.2x 20 core CPU

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

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 for large (sparse) or dense models

Forest InferenceTaking models from training to production

23x 36x 34x 23x

Page 49: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

49

● RAPIDS works closely with the XGBoost community to accelerate GBDTs on GPU

● The default rapids conda metapackage includes XGBoost

● XGBoost can seamlessly load data from cuDF dataframes

● Dask allows XGBoost to scale to arbitrary numbers of GPUs

● With the gpu_hist tree method, a single GPU can outpace 10s to 100s of CPUs

+

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

50

Road to 1.0 February 2020 - RAPIDS 0.12

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

ARIMA

t-SNE

Principal Components

Singular Value Decomposition

SVM

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

51

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

Holt-Winters

ARIMA

t-SNE

Principal Components

Singular Value Decomposition

SVM

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

52

cuGraph

Page 53: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

53

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

54

Goals and Bendfits 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 55: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

55

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 56: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

56

AlgorithmsGPU-accelerated NetworkX

Community

Components

Link Analysis

Link Prediction

Traversal

Structure

Spectral ClusteringBalanced-CutModularity Maximization

LouvainEnsemble Clustering for GraphsSubgraph 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

RenumberingAuto-renumbering

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

57

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 58: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

58

Benchmarks: cyLouvain and SciPy PageRank

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

59

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 60: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

60

Road to 1.0 February 2020 - RAPIDS 0.12

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 and ECG

Spectral Clustering

K-Cores

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

61

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 and ECG

Spectral Clustering

K-Cores

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

62

cuSpatial

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

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

64

cuSpatial Technology Stack

Python

Cython

cuSpatial

cuDF C++

Thrust

CUDA

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

65

cuSpatial0.12 and Beyond

Layer 0.12 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 66: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

66

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 67: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

67

Community

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

68

Ecosystem Partners

Page 69: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

69

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 70: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

70

BlazingSQL

AI

SQL Queries Data Preparation Machine Learning Graph Analytics

Apache Arrow on GPU

blazingSQL cuDF cuML cuGRAPH

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

71

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 72: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

72

RAPIDS + NuclioServerless meets GPUs

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

Page 73: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

73

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 75: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

75

Easy InstallationInteractive Installation Guide

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

76

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

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

77

Explore: RAPIDS DocsImproved and easier to use!

https://docs.rapids.ai

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

78

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

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

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

79

Explore: Notebooks ContribTutorials, examples, and various E2E demos available, with Youtube explanations,

code walkthroughs and use cases

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

80

Join the Conversation

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

81

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

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

82

Getting Started

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

83

RAPIDS DocsNew, improved, and easier to use

https://docs.rapids.ai

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

84

RAPIDS DocsEasier than ever to get started with cuDF

Page 85: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

85

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

86

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 87: Release 0.12 The Platform Inside and Out - RAPIDS 0.12 Release Deck.pdf · Parquet Reader – v0.7, Parquet Writer v0.12 ORC Reader – v0.7, ORC Writer v0.10 JSON Reader - v0.8 Avro

THANK YOU

Joshua Patterson @datametrician

[email protected]