RAPIDS 24.12 Introduces cuDF on PyPI, CUDA Unified Memory for Polars, and Faster GNNs

RAPIDS 24.12 introduces cuDF packages to PyPI, speeds up aggregations and reading files from AWS S3, enables larger-than-GPU memory queries in the Polars GPU…

Nick Becker
7 min readadvanced
--
View Original

Overview

RAPIDS 24.12 introduces significant enhancements including the availability of cuDF packages on PyPI, improved performance for groupby aggregations, and expanded support for larger datasets in the Polars GPU engine. Additionally, the release features faster training for graph neural networks (GNNs) and optimizations for reading from AWS S3.

What You'll Learn

1

How to install cuDF and RMM packages from PyPI

2

Why chunked IO and CUDA Unified Memory are essential for processing large datasets

3

How to optimize groupby operations in cuDF for low-cardinality data

4

When to use hierarchy-based gathers for GNN training

Key Questions Answered

How can I install cuDF and RMM packages without extra configuration?
With RAPIDS 24.12, you can install cuDF and RMM packages directly from PyPI using the command: pip install 'cudf-cu12==24.12.*' 'dask-cudf-cu12==24.12.*' 'rmm-cu12==24.12.*'. This eliminates the need for extra-index-url configurations.
What features help avoid out-of-memory errors in Polars GPU engine?
The RAPIDS 24.12 release introduces chunked IO and CUDA Unified Memory to the Polars GPU engine. Chunked IO processes parquet files in 8 GiB chunks, reducing peak memory pressure, while CUDA Unified Memory allows DataFrames to extend between GPU and host memory, enabling larger datasets to be processed without running out of memory.
What performance improvements are included in cuDF 24.12?
RAPIDS 24.12 includes optimizations for low-cardinality groupby operations, resulting in a speedup from 0.177 seconds in cuDF 24.10 to 0.012 seconds in cuDF 24.12 for a specific use case. This enhancement is particularly beneficial for Spark and Dask users.
How does the new multithreaded S3 object read functionality improve performance?
The new multithreaded S3 object read functionality in cuDF 24.12, based on KvikIO, can significantly enhance performance. For instance, throughput can reach 963 MiB/s with 128 threads compared to 450 MiB/s without KvikIO, improving the overall scalability of S3 reads.

Key Statistics & Figures

Speedup for low-cardinality groupby in cuDF
15x
The speedup is observed when comparing cuDF 24.10 to cuDF 24.12 for groupby operations on low-cardinality data.
Throughput with KvikIO for S3 reads
963 MiB/s
This throughput is achieved with 128 threads enabled for multithreaded S3 object reads.
Chunk size for chunked IO
8 GiB
This is the default chunk size used for processing parquet files in the Polars GPU engine.
End-to-end speedup for GNN training
30-40%
This speedup is achieved by using the hierarchy-based gather operation in WholeGraph for training a three-layer GraphSAGE model.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Data Processing
Cudf
Used for GPU-accelerated DataFrame operations.
Data Processing
Polars
Provides GPU-accelerated data manipulation capabilities.
Data Access
Kvikio
Facilitates multithreaded reads from AWS S3.
Parallel Computing
Cuda
Enables GPU acceleration for various operations in RAPIDS.
Machine Learning
Graph Neural Networks (gnns)
Used for training models on graph-structured data.

Key Actionable Insights

1
Leverage the new multithreaded S3 read capability to enhance data ingestion speeds.
By enabling the KvikIO feature in cuDF, users can significantly improve the performance of reading large datasets from AWS S3, which is crucial for data-intensive applications.
2
Utilize chunked IO to manage large datasets effectively and avoid memory issues.
Implementing chunked IO allows for processing large parquet files in manageable segments, reducing the risk of out-of-memory errors and ensuring smoother data workflows.
3
Adopt the hierarchy-based gather operation for training GNNs on power-law graphs.
This optimization can lead to substantial performance improvements, especially when dealing with datasets where repeated vertices are common, thereby enhancing training efficiency.

Common Pitfalls

1
Failing to enable multithreading for S3 reads can lead to suboptimal performance.
Without enabling the KvikIO feature, users may experience significantly lower throughput when reading large datasets from S3, which can bottleneck data processing workflows.

Related Concepts

Dataframe Analytics
Graph Neural Networks
GPU Acceleration Techniques
AWS S3 Data Access