Skip to content

Forward merge release/25.12 into main#7531

Merged
gforsyth merged 8 commits intorapidsai:mainfrom
jcrist:fix-forward-merge-for-real-this-time-i-mean-it
Nov 25, 2025
Merged

Forward merge release/25.12 into main#7531
gforsyth merged 8 commits intorapidsai:mainfrom
jcrist:fix-forward-merge-for-real-this-time-i-mean-it

Conversation

@jcrist
Copy link
Copy Markdown
Member

@jcrist jcrist commented Nov 25, 2025

I accidentally /merge merged #7519, this re-does it and should fix things. Should resolve conflicts in #7529.

jcrist and others added 8 commits November 19, 2025 22:57
This:

- Cleans up `SGD`, `MBSGDClassifier`, and `MBSGDRegressor`, following all the guidelines in rapidsai#7317.
- Adds a new `fit_sgd` function to handle fitting a linear model using SGD. This was the last part of rapidsai#6938 sans deprecation/removal of the solver classes themselves.
- Removes the undocumented `solver_model` attribute in favor of storing the fitted attributes on the models themselves.
- Adds support for all label types to `MBSGDClassifier`, bringing it in line with our other classifiers
- Adds a validation check to `MBSGDClassifier` to ensure it's fitting a binary classification problem, since multiclass is currently not supported.
- Removes the `SGD.predictClass` method. This method is now unused. It didn't validate the `SGD` represented a classification problem, didn't handle non [0, 1] classes, and didn't match any standard method name or interface. Our other solvers only support regression problems, with the caller required to convert the output to solve a classification problem when needed. I dropped it as a breaking change here since I doubt anyone is using it, but could back off to a deprecation if people feel strongly. Dropping it lets us rip out `target_dtype` sooner/easier.

Breaking Change Summary:
- Removal of `SGD.predictClass`
- `MBSGDClassifier.classes_` is now always a `numpy.ndarray` (mirroring the recent work on our other classifiers)

With this cleanup, `target_dtype` is no longer used. After this is in we can remove that bit from our api decorators/base class to simplify our internals further.

Part of rapidsai#7317.
Fixes rapidsai#6938.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: rapidsai#7504
With all the work in rapidsai#7317, we're now at a point where `target_dtype` is no longer used.

This PR removes `target_dtype` and all supporting infra. This simplifies our decorators and base class, and reduces the amount of state stored on an estimator. Since this was all private implementation details, this is not a breaking change.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Anupam (https://github.com/aamijar)
  - Simon Adorf (https://github.com/csadorf)

URL: rapidsai#7516
…dsai#7481)

Closes rapidsai#7143

This PR improves memory usage in UMAP when given a precomputed knn graph.
Previously, a user-given knn graph will occupy GPU memory throughout the full UMAP pipeline even though it is not needed in later steps of UMAP.

In this PR, if the user-given knn graph is on host memory, we keep it on host memory and copy to device at the cpp level to allow better memory management.

### This PR with precomputed knn graph on CPU
<img width="808" height="313" alt="Screenshot 2025-11-12 at 7 00 33 PM" src="https://github.com/user-attachments/assets/6c752f62-a1b2-4fb1-a44d-d86ed468915b" />

### Before with precomputed knn graph on CPU
<img width="828" height="316" alt="Screenshot 2025-11-12 at 7 01 12 PM" src="https://github.com/user-attachments/assets/8237fdd4-e0bb-48f5-bc46-71878ce14b33" />

Authors:
  - Jinsol Park (https://github.com/jinsolp)

Approvers:
  - Philip Hyunsu Cho (https://github.com/hcho3)
  - Simon Adorf (https://github.com/csadorf)
  - Tarang Jain (https://github.com/tarang-jain)

URL: rapidsai#7481
Dropping xgboost from our CI for now while upstream builds are fixed.

Stopgap for rapidsai#7520. Supersedes rapidsai#7523.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - https://github.com/jakirkham

URL: rapidsai#7526
## Summary

This PR improves documentation quality and consistency across cuML's Dask multi-GPU estimators, adds a comprehensive multi-GPU guide, and fixes two minor bugs in KNeighborsClassifier and RandomForestClassifier.

## Changes

### New Documentation
- Added `dask_multigpu_guide.ipynb` - comprehensive guide for multi-GPU usage with Dask

### Documentation Improvements
- Standardized terminology: "multi-node multi-GPU", "Dask cuDF DataFrame" 
- Fixed docstring formatting (parameter underlines, spacing, capitalization)
- Removed "experimental" language from stable APIs
- Added known limitations:
  - PCA: `random_state` parameter not supported in MNMG
  - LogisticRegression: labels must be float32 dtype with code example
  - UMAP: clarified this is for distributed inference only, not training
- Improved class docstrings with clearer descriptions
- Fixed typos and improved grammar throughout

### Bug Fixes
- **KNeighborsClassifier**: Added CuPy array support for label handling
- **RandomForestClassifier**: Fixed `unique()` handling for Dask Arrays vs DataFrames

Closes rapidsai#7309. Fixes rapidsai#3663.

Authors:
  - Simon Adorf (https://github.com/csadorf)

Approvers:
  - Jim Crist-Harif (https://github.com/jcrist)

URL: rapidsai#7499
@jcrist jcrist self-assigned this Nov 25, 2025
@jcrist jcrist requested a review from a team as a code owner November 25, 2025 03:07
@jcrist jcrist requested a review from dantegd November 25, 2025 03:07
@review-notebook-app
Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@github-actions github-actions Bot added the Cython / Python Cython or Python issue label Nov 25, 2025
@jcrist jcrist added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Nov 25, 2025
@jcrist
Copy link
Copy Markdown
Member Author

jcrist commented Nov 25, 2025

/merge nosquash

@rapids-bot
Copy link
Copy Markdown
Contributor

rapids-bot Bot commented Nov 25, 2025

Could not determine original ForwardMerger PR from branch name. The branch name should follow the pattern <target_branch>-merge-<source_branch> (e.g., branch-25.06-merge-branch-25.04 or main-merge-release/25.06). Please contact @rapidsdevops on Slack for assistance.

@gforsyth gforsyth merged commit cef1129 into rapidsai:main Nov 25, 2025
105 checks passed
@jcrist jcrist deleted the fix-forward-merge-for-real-this-time-i-mean-it branch November 25, 2025 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Cython / Python Cython or Python issue improvement Improvement / enhancement to an existing function non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants