What's Changed
🚨 Breaking Changes
- Switch RandomForest max_depth default to None by @csadorf in #8200
- Link to libcuvs dynamically in wheel builds by @divyegala in #8250
- Cleanup pairwise distances by @jcrist in #8268
- Deprecate
convert_dtypeby @jcrist in #8300 - Deprecate
PorterStemmerby @jcrist in #8304 - Move
Larsout of experimental by @jcrist in #8336 - CI Extend time limit for hypothesis tests by @betatim in #8346
- Deprecate cuml.tsa by @csadorf in #8344
- wheels: build CUDA 13 wheels with latest CTK (13.3.0) by @jameslamb in #8345
- Deprecate
cuml.datasets.make_arimaby @jcrist in #8379 - Deprecate legacy output types by @jcrist in #8389
🐛 Bug Fixes
- Fix pandas 3 string dtype compatibility and CI flakes by @csadorf in #8142
- Fix KDE score_samples symbol exports by @csadorf in #8173
- Fix hinge loss decision-function shape handling by @csadorf in #8245
- Fix clang-tidy failures in CUDA 13.2 CI by @dantegd in #8251
- Match sklearn random forest feature sampling by @RAMitchell in #8239
- Test cuml.accel upstream test suite with sklearn 1.9 by @csadorf in #8207
- Update test suite to work with new
pytestrelease by @dantegd in #8266 - Introduce Safe Arithmetic by @divyegala in #8171
- Cleanup
extract_knn_graphby @jcrist in #8272 - Fix RandomForestClassifier sklearn child metadata by @csadorf in #8291
- Fallback unsupported cuml.accel PCA and KernelRidge cases to CPU by @csadorf in #8290
- Fix
FastIntDivtparam by @aamijar in #8299 - Remove sklearn example xfails by @csadorf in #8090
- FIX: handle None transformers in ColumnTransformer get_params/set_params by @Husnain987 in #8292
- Handle OpenML checksum failures in sklearn examples by @csadorf in #8359
- Fix RF feature importances with infinite metrics by @RAMitchell in #8347
- Limit cuml.accel pytest logging to errors by @csadorf in #8360
- Fix --print-status path in benchmark CLI by @fallintoplace in #8320
- fix(clang-format): preserve SPDX comments by @bdice in #8368
- Make LabelEncoder docstring account for cuDF update by @viclafargue in #8376
- Improve multi-GPU KMeans validation by @viclafargue in #8350
- Separate sklearn example compatibility and total pass rates by @csadorf in #8409
- Make FFT t-SNE deterministic when random seed is set by @dantegd in #8123
- Fix Dask logistic regression with non-contiguous class labels by @viclafargue in #8422
📖 Documentation
- Modernize the Python developer docs by @csadorf in #7642
- Update docs to use NVIDIA Sphinx theme by @bdice in #8308
- Restructure and clarify cuml.accel documentation by @csadorf in #8367
- Document list and tuple input support by @csadorf in #8381
🚀 New Features
- Add IPython magic for setting
cuml.accellog level by @jcrist in #8231 - [FEA] Add host-streaming support to single-GPU KMeans by @tarang-jain in #8248
- Isolation Forest Implementation by @dantegd in #8226
🛠️ Improvements
- Suppress intentional hardcoded version references by @csadorf in #8113
- Forward merge release/26.06 into main by @csadorf in #8138
- Improve devcontainer startup times by @trxcllnt in #8135
- Fix symbol export by @vyasr in #8037
- Fix a few lingering sklearn compat xfails by @jcrist in #8166
- Add YAML based benchmark definitions for cuML regression runs by @dantegd in #7980
- Report xfail details in Python test output by @csadorf in #8140
- Add SECURITY.md by @jameslamb in #8175
- merge release/26.06 into main by @jameslamb in #8184
- Replace RF global quantile sort with deterministic sampled quantiles by @RAMitchell in #8111
- Large (int64 indices) sparse input support by @jcrist in #8196
- RF: narrow
CountBintodoublefor weighted-training prep by @switch527 in #8132 - fix(ci): fix configuration for breaking change notification workflow by @jameslamb in #8199
- TST Make
check_estimatorcoverage opt-out by @betatim in #8176 - Forward merge release/26.06 into main by @csadorf in #8214
- Remove deprecated
sample_weightin naive bayes/sample_weightsinhinge_lossby @jcrist in #8221 - Remove deprecated
probabilityargument toSVCby @jcrist in #8223 - Bump scikit-learn minimum to 1.6 by @csadorf in #8091
- Avoid host sync in
_repr_mimebundle_when possible by @jcrist in #8232 - Remove deprecated
probabilityargument toLinearSVCby @jcrist in #8224 - Fix type reflection when input is an array-like by @jcrist in #8234
- Update
cuml.tsato use new validation by @jcrist in #8236 - Unify distributed RF quantile samples by @RAMitchell in #8190
- Remove numba-cuda upper bound by @brandon-b-miller in #8189
- refactor: switch to
rapids-artifact-namefor consistent artifact naming by @gforsyth in #8174 - Update cuML sklearn tags for scikit-learn 1.6 by @csadorf in #8227
- Refactor RF objectives by objective family by @RAMitchell in #8233
- Update multi-gpu estimators to new input validation by @jcrist in #8241
- Prepare RF bins and objectives for weights support by @RAMitchell in #8247
- A few fixups to multi-gpu implementations by @jcrist in #8249
- Remove obsolete scikit-learn 1.5 compatibility paths by @csadorf in #8253
- Remove stale sklearn example xfail by @csadorf in #8259
- Build and test with CUDA 13.3.0 by @bdice in #8246
- Remove
make_monotonicandsorted_unique_labelsby @jcrist in #8269 - Cleanup
cuml.model_selectionby @jcrist in #8270 - Fixup CI by @jcrist in #8280
- Limit high-dimensional cosine KDE property cases by @Federicorao in #8273
- Validate random forest n_streams by @fallintoplace in #8263
- Use main shared-workflows branch by @bdice in #8286
- Mark
test_logreg_l1[42-csr_array]flaky by @jcrist in #8289 - Use segmented scan for RF row partitioning by @RAMitchell in #8257
- Consolidate sparse utilities by @jcrist in #8288
- Validate LinearSVC n_streams by @fallintoplace in #8282
- Add C++ RF sample weight training support by @RAMitchell in #8258
- Center RF split thresholds across empty quantile bins by @RAMitchell in #8283
- Remove xfail markers for cuml.accel examples by @jinsolp in #8297
- FIX Make
__repr__show parameters set to non-default values by @betatim in #8229 - Avoid hard-coded SHAP test outputs by @viclafargue in #8264
- CI Run cuml.accel tests in the sklearn nightly test runs by @betatim in #8219
- Simplify
reflectdecorator by @jcrist in #8295 - Remove
cuml.internals.input_utilsand remaining legacy ingest paths by @jcrist in #8293 - Remove RMM make_any_device_resource helper usage by @bdice in #8197
- skip Cython 3.2.7 by @jameslamb in #8301
- Update CuPy and NumPy dependency specs by @bdice in #8287
- Implement weighted bootstrap sampling for RF by @RAMitchell in #8296
- Add benchmark coverage for missing cuML estimators by @viclafargue in #8271
- Warn in
cuml.accelif proxying a package outside a range of tested versions by @jcrist in #8303 cuml.accelSVM onnx support by @jcrist in #8307- Thread sample weights through RandomForest Python API by @RAMitchell in #8306
- Add benchmark coverage for missing cuML estimators 2 by @viclafargue in #8325
- Add benchmark coverage for missing cuML estimators 3 by @viclafargue in #8341
- switch from 'cuda-python' to specific components (e.g. 'cuda-bindings') by @jameslamb in #8314
- Handle RF split histogram shared-memory pressure by @RAMitchell in #8323
- Empty commit to trigger new builds due to RAFT 3052 ABI breakage by @divyegala in #8353
- fix(naive_bayes): use established classes_ on later partial_fit calls by @nethum529 in #8316
- Prevent cuVS types from leaking through public headers by @viclafargue in #8342
- Support row-major RandomForest training inputs by @RAMitchell in #8324
- Add regression test for cluster-metric label-permutation invariance (#7199) by @aminehd in #8355
- Prepare RF split counts for distributed training by @RAMitchell in #8348
- Raise TypeError for invalid sparse input types in benchmark datagen by @fallintoplace in #8318
- CI Fix bertopic testing by @betatim in #8298
- Unify reflection system & decorators by @jcrist in #8339
- Add JSON output for benchmark results by @dantegd in #8027
- Increase cython-lint line length by @jcrist in #8374
- A few sklearn compat test fixes by @jcrist in #8366
- Split random forest histogram building and split scoring kernels by @RAMitchell in #8370
- Re-enable RF regressor C++ benchmarks by @RAMitchell in #8371
- Support coercing host arrays in
mlfunc/ReflectedAttrby @jcrist in #8373 - Finish migration to new decorators/descriptors by @jcrist in #8378
- Address signedness compiler warning by @chyunsu3 in #8382
- Add RF histogram allreduce hook for distributed split scoring by @RAMitchell in #8377
- Enable building with 26.08 nvForest by @chyunsu3 in #8388
- Remove legacy array and reflection machinery by @jcrist in #8385
- Update developer wiki for new machinery by @jcrist in #8386
- Empty commit to trigger a build by @bdice in #8399
- [FEA] Skip Device Concat for KmeansMG by @tarang-jain in #8084
New Contributors
- @Federicorao made their first contribution in #8273
- @nethum529 made their first contribution in #8316
- @Husnain987 made their first contribution in #8292
- @aminehd made their first contribution in #8355
Full Changelog: v26.08.00a...v26.08.00