NOTE: For the latest stable README.md ensure you are on the master
branch.
cuML is a suite of libraries that implement machine learning algorithms and mathematical primitives functions that share compatible APIs with other RAPIDS projects.
cuML enables data scientists, researchers, and software engineers to run traditional tabular ML tasks on GPUs without going into the details of CUDA programming.
As an example, the following Python snippet loads input and computes DBSCAN clusters, all on GPU:
import cudf
from cuml import DBSCAN
# Create and populate a GPU DataFrame
gdf_float = cudf.DataFrame()
gdf_float['0'] = [1.0, 2.0, 5.0]
gdf_float['1'] = [4.0, 2.0, 1.0]
gdf_float['2'] = [4.0, 2.0, 1.0]
# Setup and fit clusters
dbscan_float = DBSCAN(eps=1.0, min_samples=1)
dbscan_float.fit(gdf_float)
print(dbscan_float.labels_)
Output:
0 0
1 1
2 2
dtype: int32
For additional examples, browse our complete API documentation, or check out our more detailed walkthrough notebooks.
Algorithm | Scale | Notes |
---|---|---|
Coordinate Descent | Single-GPU | |
Density-Based Spatial Clustering of Applications with Noise (DBSCAN) | Single GPU | |
K-Means Clustering | Single-GPU | |
K-Nearest Neighbors (KNN) | Multi-GPU with dask-cuml Uses Faiss |
|
Linear Kalman Filter | Single-GPU | |
Linear Regression (OLS) | Single GPU | Multi-GPU available in conda cuda10 package and dask-cuml |
Linear Regression with Lasso Regularization | Single-GPU | |
Linear Regression with Elastic-Net Regularization | Single-GPU | |
Principal Component Analysis (PCA) | Single GPU | |
Ridge Regression | Single-GPU | |
Stochastic Gradient Descent | Single-GPU | for linear regression, logistic regression, and linear svm with L1, L2, and elastic-net penalties |
Truncated Singular Value Decomposition (tSVD) | Single GPU | Multi-GPU available in conda cuda10 package |
UMAP | Single-GPU |
More ML algorithms in cuML and more ML primitives in ml-prims are being worked on, among them: t-sne, random forests, spectral embedding, spectral clustering, random projections, support vector machine and others. Goals for future versions include more multi-gpu versions of the algorithms and primitives.
- Install NVIDIA drivers with CUDA 9.2 or 10.0
- Ensure
libomp
andlibopenblas
are installed, for example via apt:
sudo apt install libopenblas-base libomp-dev
cuML can be installed using the rapidsai
conda channel:
CUDA 9.2
conda install -c nvidia -c rapidsai -c conda-forge -c defaults cuml cudatoolkit=9.2
CUDA 10.0
conda install -c nvidia -c rapidsai -c conda-forge -c defaults cuml cudatoolkit=10.0
See the build guide.
Please see our guide for contributing to cuML.
Find out more details on the RAPIDS site
The RAPIDS suite of open source software libraries aim to enable execution of end-to-end data science and analytics pipelines entirely on GPUs. It relies on NVIDIA® CUDA® primitives for low-level compute optimization, but exposing that GPU parallelism and high-bandwidth memory speed through user-friendly Python interfaces.