/cuml

cuML - RAPIDS Machine Learning Library

Primary LanguageC++Apache License 2.0Apache-2.0

 cuML - GPU Machine Learning Algorithms

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.

Supported Algorithms:

Algorithm Scale Notes
Truncated Singular Value Decomposition (tSVD) Single GPU Multi-GPU available in conda cuda10 package
Linear Regression (OLS) Single GPU Multi-GPU available in conda cuda10 package
Multi-Node with dask-cuml
Principal Component Analysis (PCA) Single GPU
Density-Based Spatial Clustering of Applications with Noise (DBSCAN) Single GPU
K-Means Clustering Multi-GPU
K-Nearest Neighbors (KNN) Multi-GPU Multi-Node with dask-cuml
Uses Faiss
Ridge Regression Single-GPU
Kalman Filter Single-GPU
UMAP Single-GPU
Stochastic Gradient Descent Single-GPU for linear regression, logistic regression, and linear svm with L1, L2, and elastic-net penalties

Algorithms in progress:

  • More Kalman Filter versions
  • Lasso
  • Elastic-Net
  • Logistic Regression

More ML algorithms in cuML and more ML primitives in ml-prims are being worked on. Goals for future versions include more algorithms and multi-gpu versions of the algorithms and primitives.

Installation

Ensure libomp and libopenblas are installed, for example via apt:

sudo apt install libopenblas-base libomp-dev

Conda

cuML can be installed using the rapidsai conda channel:

conda install -c nvidia -c rapidsai -c conda-forge -c pytorch -c defaults cuml

Pip

cuML can also be installed using pip. Select the package based on your version of CUDA.

# cuda 9.2
pip install cuml-cuda92

# cuda 10.0
pip install cuml-cuda100

Build/Install from Source

See build instructions.

Contributing

Please see our guide for contributing to cuML.

Contact

Find out more details on the RAPIDS site

Open GPU Data Science

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.