Extension for Scikit-learn*

Extension for Scikit-learn* is a free software AI accelerator designed to deliver up to 100X faster performance for your existing scikit-learn code. The software acceleration is achieved with vector instructions, AI hardware-specific memory optimizations, threading, and optimizations.

Designed for Data Scientists and Framework Designers

Use Extension for Scikit-learn*, to:

  • Speed up training and inference by up to 100x with equivalent mathematical accuracy

  • Benefit from performance improvements across different x86-64 CPUs and Intel(R) GPUs

  • Integrate the extension into your existing scikit-learn applications without code modifications

  • Enable and disable the extension with a couple of lines of code or at the command line

_images/scikit-learn-acceleration.PNG

These performance charts use benchmarks that you can find in the scikit-learn bench repository.

Supported Algorithms

See all of the Supported Algorithms.

Optimizations

Enable CPU Optimizations

import numpy as np
from sklearnex import patch_sklearn
patch_sklearn()

from sklearn.cluster import DBSCAN

X = np.array([[1., 2.], [2., 2.], [2., 3.],
              [8., 7.], [8., 8.], [25., 80.]], dtype=np.float32)
clustering = DBSCAN(eps=3, min_samples=2).fit(X)

Enable GPU optimizations

Note: executing on GPU has additional system software requirements - see oneAPI and GPU support in Extension for Scikit-learn*.

import numpy as np
import dpctl
from sklearnex import patch_sklearn, config_context
patch_sklearn()

from sklearn.cluster import DBSCAN

X = np.array([[1., 2.], [2., 2.], [2., 3.],
              [8., 7.], [8., 8.], [25., 80.]], dtype=np.float32)
with config_context(target_offload="gpu:0"):
    clustering = DBSCAN(eps=3, min_samples=2).fit(X)