NVIDIA Accelerated Data Science Professional - Fact Sheet¶
Quick Reference¶
Exam Code: NCP-ADS Duration: 120 minutes Questions: 60-70 questions Passing Score: Not officially published Cost: $200 USD Validity: 2 years Difficulty: Advanced
Exam Domains¶
| Domain | Weight | Key Focus |
|---|---|---|
| RAPIDS Framework Overview | 15% | Ecosystem, components, setup |
| cuDF - GPU DataFrames | 25% | DataFrame ops, pandas compat, memory |
| cuML - GPU Machine Learning | 25% | Algorithms, training, evaluation |
| cuGraph - GPU Graph Analytics | 15% | Graph algorithms, construction |
| GPU ETL and Spark Integration | 20% | ETL pipelines, Spark, Dask-cuDF |
Domain 1: RAPIDS Framework¶
RAPIDS Ecosystem¶
| Component | Purpose | CPU Equivalent |
|---|---|---|
| cuDF | GPU DataFrames | pandas |
| cuML | GPU Machine Learning | scikit-learn |
| cuGraph | GPU Graph Analytics | NetworkX |
| cuSpatial | GPU Spatial Analytics | GeoPandas |
| Dask-cuDF | Multi-GPU DataFrames | Dask DataFrame |
| cuCIM | GPU Image Processing | scikit-image |
Key Benefits: - 10-100x speedup over CPU equivalents - pandas-like API - minimal code changes - Interoperable with existing Python ecosystem - Open-source (Apache 2.0 license) - π RAPIDS Documentation
Installation¶
# Conda installation
conda install -c rapidsai -c conda-forge -c nvidia \
rapids=24.02 python=3.10 cuda-version=12.0
# Docker container
docker run --gpus all nvcr.io/nvidia/rapidsai/base:24.02-cuda12.0-py3.10
Domain 2: cuDF - GPU DataFrames¶
Core Operations¶
Data Loading:
import cudf
# Read CSV (GPU-accelerated)
df = cudf.read_csv('data.csv')
# Read Parquet (GPU-accelerated)
df = cudf.read_parquet('data.parquet')
# From pandas DataFrame
df = cudf.from_pandas(pandas_df)
# To pandas
pandas_df = df.to_pandas()
DataFrame Operations:
# Filtering
filtered = df[df['age'] > 30]
# Groupby aggregation
result = df.groupby('category').agg({'value': ['mean', 'sum', 'count']})
# Joins
merged = df1.merge(df2, on='key', how='inner')
# Sorting
sorted_df = df.sort_values('column', ascending=False)
# String operations
df['name_upper'] = df['name'].str.upper()
pandas Compatibility¶
- Most pandas operations have direct cuDF equivalents
.to_pandas()andcudf.from_pandas()for conversion- Some operations fall back to CPU if not GPU-implemented
- Custom apply functions may need cuDF UDFs or Numba kernels
Memory Management¶
- GPU memory is limited compared to system memory
- Use
rmm(RAPIDS Memory Manager) for allocation control - Spilling to host memory when GPU memory is full
- Chunked processing for datasets larger than GPU memory
- Monitor with
nvidia-smiorrmmutilities
π cuDF Documentation - API reference
Domain 3: cuML - GPU Machine Learning¶
Supported Algorithms¶
Classification: - Logistic Regression - Random Forest - K-Nearest Neighbors (KNN) - Support Vector Machine (SVM) - Naive Bayes
Regression: - Linear Regression, Ridge, Lasso - Random Forest Regressor - KNN Regressor - ElasticNet
Clustering: - K-Means - DBSCAN - HDBSCAN - Agglomerative Clustering
Dimensionality Reduction: - PCA (Principal Component Analysis) - UMAP - t-SNE - Truncated SVD
Time Series: - ARIMA - Exponential Smoothing - Holt-Winters
Usage Pattern¶
from cuml.ensemble import RandomForestClassifier
from cuml.model_selection import train_test_split
# Split data (GPU)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Train (GPU-accelerated)
model = RandomForestClassifier(n_estimators=100, max_depth=16)
model.fit(X_train, y_train)
# Predict (GPU)
predictions = model.predict(X_test)
# Evaluate
from cuml.metrics import accuracy_score
accuracy = accuracy_score(y_test, predictions)
scikit-learn Compatibility¶
- Similar API to scikit-learn
- Drop-in replacement for many algorithms
- Input: cuDF DataFrame or cuPy array
- Also accepts pandas/numpy (auto-converts)
π cuML Documentation - Algorithm reference
Domain 4: cuGraph - GPU Graph Analytics¶
Graph Construction¶
import cugraph
import cudf
# From edge list
edges = cudf.DataFrame({
'src': [0, 1, 2, 3],
'dst': [1, 2, 3, 0],
'weight': [1.0, 2.0, 3.0, 4.0]
})
G = cugraph.Graph()
G.from_cudf_edgelist(edges, source='src', destination='dst', edge_attr='weight')
Key Algorithms¶
| Algorithm | Category | Use Case |
|---|---|---|
| PageRank | Centrality | Node importance ranking |
| BFS | Traversal | Shortest path (unweighted) |
| SSSP | Traversal | Shortest path (weighted) |
| Louvain | Community | Community detection |
| Triangle Count | Structure | Network density |
| Jaccard | Similarity | Node similarity |
| Connected Components | Structure | Graph connectivity |
π cuGraph Documentation - Graph algorithms
Domain 5: GPU ETL and Spark¶
Dask-cuDF¶
Multi-GPU Processing:
import dask_cudf
# Read large dataset across multiple GPUs
ddf = dask_cudf.read_parquet('large_data/*.parquet')
# Operations distribute across GPUs
result = ddf.groupby('key').agg({'value': 'mean'}).compute()
Scaling Patterns: - Single GPU: cuDF for datasets that fit in GPU memory - Multi-GPU (single node): Dask-cuDF with LocalCUDACluster - Multi-node: Dask-cuDF with distributed scheduler
RAPIDS Accelerator for Apache Spark¶
Purpose: Run Spark SQL and DataFrame operations on GPUs
Key Features: - Transparent GPU acceleration of Spark queries - No code changes required (plugin-based) - GPU-accelerated joins, aggregations, sorts - GPU-accelerated data format readers (Parquet, ORC, CSV)
Configuration:
spark.plugins=com.nvidia.spark.SQLPlugin
spark.rapids.sql.enabled=true
spark.rapids.memory.pinnedPool.size=2G
π Spark RAPIDS Documentation - Configuration guide
Performance Tuning¶
- Maximize GPU memory utilization
- Use columnar data formats (Parquet, ORC) for best speedup
- Partition data to match GPU count
- Monitor GPU utilization during pipeline execution
- Profile with Nsight Systems for bottleneck identification
Exam Tips¶
Key Concepts to Master¶
- RAPIDS component mapping to CPU equivalents
- cuDF API for common DataFrame operations
- cuML algorithm selection and API usage
- cuGraph construction and algorithm execution
- Dask-cuDF for multi-GPU scaling
- Spark RAPIDS configuration and benefits