Feature request
cuML provides GPU-accelerated implementations for many classical machine-learning algorithms, but there is currently no native cuML training implementation corresponding to the scikit-learn Gradient Boosting family, such as:
- GradientBoostingClassifier
- GradientBoostingRegressor
- HistGradientBoostingClassifier
- HistGradientBoostingRegressor
I would like to propose adding native GPU Gradient Boosting Machine (GBM) estimators to cuML.
Motivation
Gradient-boosted decision trees remain one of the most widely used model families for structured/tabular machine learning.
cuML already provides a strong GPU-accelerated workflow for many classical estimators. Native GBM support would make it easier to keep complete tabular ML pipelines within cuML/RAPIDS without moving to another library solely for gradient boosting.
It could also improve scikit-learn API coverage and potentially expand the usefulness of cuml.accel for pipelines that rely on sklearn gradient boosting estimators.
Suggested scope
A staged implementation could begin with:
- GradientBoostingClassifier
- GradientBoostingRegressor
and potentially extend to:
- HistGradientBoostingClassifier
- HistGradientBoostingRegressor
Useful compatibility areas could include:
- binary and multiclass classification
- regression
- sample_weight
- common loss functions
- learning rate
- boosting iterations / n_estimators
- depth and leaf controls
- early stopping where applicable
- deterministic random_state behavior where possible
- sklearn-style fit, predict, and predict_proba
- cuDF/CuPy and CPU/GPU input interoperability consistent with cuML conventions
Why native cuML support?
XGBoost, LightGBM and CatBoost already provide GPU gradient boosting, but native cuML support could serve a different purpose:
- Closer scikit-learn API compatibility.
- Seamless integration with existing cuML pipelines.
- Potential acceleration through cuml.accel.
- Consistent RAPIDS memory and dataframe interoperability.
- A common estimator and benchmarking interface alongside other cuML algorithms.
The goal would not necessarily be to reproduce every capability of dedicated boosting libraries, but to provide a strong GPU-native implementation of the standard sklearn GBM family.
Possible implementation direction
It may be useful to first decide whether the initial target should be:
- classic Gradient Boosting for sklearn API parity, or
- histogram-based Gradient Boosting as the more GPU-friendly/performance-oriented starting point.
A benchmark suite could compare:
- scikit-learn CPU implementation
- proposed cuML GPU implementation
- training time
- inference time
- GPU memory consumption
- predictive/numerical parity
- scaling with rows, columns, classes and boosting iterations
Feature request
cuML provides GPU-accelerated implementations for many classical machine-learning algorithms, but there is currently no native cuML training implementation corresponding to the scikit-learn Gradient Boosting family, such as:
I would like to propose adding native GPU Gradient Boosting Machine (GBM) estimators to cuML.
Motivation
Gradient-boosted decision trees remain one of the most widely used model families for structured/tabular machine learning.
cuML already provides a strong GPU-accelerated workflow for many classical estimators. Native GBM support would make it easier to keep complete tabular ML pipelines within cuML/RAPIDS without moving to another library solely for gradient boosting.
It could also improve scikit-learn API coverage and potentially expand the usefulness of cuml.accel for pipelines that rely on sklearn gradient boosting estimators.
Suggested scope
A staged implementation could begin with:
and potentially extend to:
Useful compatibility areas could include:
Why native cuML support?
XGBoost, LightGBM and CatBoost already provide GPU gradient boosting, but native cuML support could serve a different purpose:
The goal would not necessarily be to reproduce every capability of dedicated boosting libraries, but to provide a strong GPU-native implementation of the standard sklearn GBM family.
Possible implementation direction
It may be useful to first decide whether the initial target should be:
A benchmark suite could compare: