Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion python/cuml/cuml/accel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,33 @@
#

from cuml.accel.core import enabled, install
from cuml.accel.estimator_proxy import is_proxy
from cuml.accel.estimator_proxy_mixin import ProxyMixin as _ProxyMixin
from cuml.accel.magics import load_ipython_extension
from cuml.accel.pytest_plugin import (
pytest_addoption,
pytest_collection_modifyitems,
pytest_load_initial_conftests,
)

try:
from cuml.accel.estimator_proxy import ProxyBase as _ProxyBase
except ImportError:

class _ProxyBase:
pass


# TODO: move back to estimator_proxy.py once sklearn is a required dependency
def is_proxy(instance_or_class) -> bool:
"""Check if an instance or class is a proxy object created by the accelerator."""

if isinstance(instance_or_class, type):
cls = instance_or_class
else:
cls = type(instance_or_class)
return issubclass(cls, (_ProxyMixin, _ProxyBase))


__all__ = (
"enabled",
"install",
Expand Down
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/hdbscan.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.cluster
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("HDBSCAN",)

Expand Down
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/sklearn/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.cluster
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("KMeans", "DBSCAN")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.decomposition
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("PCA", "TruncatedSVD")

Expand Down
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/sklearn/ensemble.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.ensemble
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("RandomForestRegressor", "RandomForestClassifier")

Expand Down
48 changes: 37 additions & 11 deletions python/cuml/cuml/accel/_wrappers/sklearn/linear_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
#

import cuml.linear_model
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy import ProxyBase
from cuml.common.sparse_utils import is_sparse
from cuml.internals.input_utils import input_to_cuml_array
from cuml.internals.interop import UnsupportedOnGPU

__all__ = (
"LinearRegression",
Expand All @@ -26,21 +29,44 @@
)


class LinearRegression(ProxyMixin, cuml.linear_model.LinearRegression):
pass
class LinearRegression(ProxyBase):
_gpu_class = cuml.linear_model.LinearRegression
Comment thread
jcrist marked this conversation as resolved.

def _gpu_fit(self, X, y, sample_weight=None):
if is_sparse(X):
raise UnsupportedOnGPU
return self._gpu.fit(X, y, sample_weight=sample_weight)
Comment thread
jcrist marked this conversation as resolved.

class LogisticRegression(ProxyMixin, cuml.linear_model.LogisticRegression):
pass

class LogisticRegression(ProxyBase):
_gpu_class = cuml.linear_model.LogisticRegression

class ElasticNet(ProxyMixin, cuml.linear_model.ElasticNet):
pass

class ElasticNet(ProxyBase):
_gpu_class = cuml.linear_model.ElasticNet

class Ridge(ProxyMixin, cuml.linear_model.Ridge):
pass
def _gpu_fit(self, X, y, sample_weight=None):
if is_sparse(X):
raise UnsupportedOnGPU
return self._gpu.fit(X, y, sample_weight=sample_weight)


class Lasso(ProxyMixin, cuml.linear_model.Lasso):
pass
class Ridge(ProxyBase):
_gpu_class = cuml.linear_model.Ridge

def _gpu_fit(self, X, y, sample_weight=None):
y = input_to_cuml_array(y, convert_to_mem_type=False)[0]
Comment thread
jcrist marked this conversation as resolved.
if len(y.shape) > 1:
raise UnsupportedOnGPU
if is_sparse(X):
raise UnsupportedOnGPU
return self._gpu.fit(X, y, sample_weight=sample_weight)


class Lasso(ProxyBase):
_gpu_class = cuml.linear_model.Lasso

def _gpu_fit(self, X, y, sample_weight=None):
if is_sparse(X):
raise UnsupportedOnGPU
return self._gpu.fit(X, y, sample_weight=sample_weight)
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/sklearn/manifold.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.manifold
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("TSNE",)

Expand Down
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/sklearn/neighbors.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.neighbors
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("NearestNeighbors", "KNeighborsClassifier", "KNeighborsRegressor")

Expand Down
2 changes: 1 addition & 1 deletion python/cuml/cuml/accel/_wrappers/umap.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

import cuml.manifold
from cuml.accel.estimator_proxy import ProxyMixin
from cuml.accel.estimator_proxy_mixin import ProxyMixin

__all__ = ("UMAP",)

Expand Down
Loading