Skip to content

Releases: NVIDIA/cuml

v26.08.00

Choose a tag to compare

@gforsyth gforsyth released this 05 Aug 21:59
265b9da

What's Changed

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

🚀 New Features

🛠️ Improvements

Read more

v26.06.00

Choose a tag to compare

@jolorunyomi jolorunyomi released this 04 Jun 14:42
62cd497

What's Changed

🚨 Breaking Changes

  • Migrate RMM usage to CCCL MR design by @bdice in #7951
  • Remove unused C API by @divyegala in #8011
  • Cleanup and apply new validation to cuml.naive_bayes by @jcrist in #8051
  • Apply new validation to metrics.hinge_loss by @csadorf in #8060
  • Cleanup LabelEncoder by @jcrist in #8039
  • Use the PTDS for (most) cupy operations by @jcrist in #8086
  • Deprecate probability parameter on SVC and LinearSVC by @switch527 in #8089
  • Adopt nvForest for random forest inference by @hcho3 in #8048

🐛 Bug Fixes

  • Fixes for CCCL 3.4 update by @dantegd in #7949
  • Set unique CUDA cache path for each pytest-xdist worker by @divyegala in #7948
  • Fix IncrementalPCA: handle missing batch_size_ in sparse transform after partial_fit by @csadorf in #8010
  • Drop __firstlineno__ on ProxyBase instances by @jcrist in #8045
  • Fix KMeans int32 index overflow check by @csadorf in #8067
  • Add early validation for n_clusters > n_samples in dask KMeans by @csadorf in #8071
  • Fix CI by changing SVC intercept selection kernel dispatch by @dantegd in #8077
  • Fix FIL buffer bounds assertions by @csadorf in #8069
  • Fix KMeans score test tolerances by @csadorf in #8099
  • Add vertex-parallel kernels to UMAP to enforce sequential behavior by @jinsolp in #7974
  • Fix wrapping metaestimators in Pipeline in cuml.accel by @jcrist in #8115

📖 Documentation

🚀 New Features

🛠️ Improvements

  • Remove PoolMemoryResource wrapper by @jcrist in #7878
  • fix more verify-hardcoded-version findings by @jameslamb in #7891
  • Forward-merge release/26.04 into main by @csadorf in #7888
  • Forward-merge release/26.04 into main by @csadorf in #7894
  • Forward merge from release/26.04 by @jcrist in #7910
  • Update CODEOWNERS by @jcrist in #7919
  • Forward-merge release/26.04 into main by @gforsyth in #7914
  • Forward merge release/26.04 into main by @jcrist in #7936
  • Forward-merge release/26.04 into main by @jameslamb in #7937
  • Remove deprecations from 26.04 by @jcrist in #7928
  • update pip devcontainers' base image tags by @trxcllnt in #7947
  • chore: bump codespell version for Python 3.14+ compatibility by @gforsyth in #7925
  • Restart xdist workers on corrupted CUDA context by @jcrist in #7954
  • chore: remove comment in devcontainer.json that breaks jq by @gforsyth in #7952
  • A few linear model test cleanups by @jcrist in #7957
  • Support recent hdbscan by @jcrist in #7956
  • Re-enabling precomputed kNN on host for UMAP by @viclafargue in #7915
  • Add -v option to timeout in CI scripts by @jcrist in #7966
  • Mark a few cuml-accel upstream tests as flaky by @jcrist in #7967
  • Update to clang 20.1.8 by @bdice in #7968
  • Run all scikit-learn examples under cuml.accel in nightlies by @csadorf in #7960
  • xfail ARIMA test on 'endog_hourly_earnings_by_industry_missing_exog' dataset by @jameslamb in #7972
  • New input validation utilities by @jcrist in #7973
  • Improve timeout verbosity and graceful shutdown for pytest CI jobs by @csadorf in #7979
  • Use new input validation in cuml.linear_models/cuml.solvers by @jcrist in #7978
  • Apply new validation to cuml.cluster by @jcrist in #7984
  • Apply new validation to cuml.random_projection by @jcrist in #8009
  • Use new input validation infrastructure for cuml.decomposition. by @csadorf in #8006
  • Apply new input validation to cuml.multiclass by @mgrauer in #8017
  • Deprecate max_depth=16 in RandomForest and add None support by @Nzouh in #7958
  • Migrate _classification and _ranking metrics to new input validation infrastructure by @csadorf in #8012
  • CI Fix cuml.svm compatibility with scikit-learn 1.9 deprecation of probability= by @betatim in #7981
  • Use scikit-learn's array-api to accelerate StandardScaler by @jcrist in #8020
  • Apply new input validation to cuml.kernel_ridge by @jcrist in #8007
  • Apply new validation to cuml.covariance by @jcrist in #8008
  • [FIL] Validate Treelite model input to prevent integer overflow and OOB memory access by @hcho3 in #8016
  • Cleanup Lars, apply new validation by @jcrist in #8024
  • Add MinMaxScaler, MaxAbsScaler, and PolynomialFeatures to cuml.accel by @jcrist in #8032
  • Several ensemble scikit-learn compatibility improvements by @jcrist in #8023
  • Remove inertia_check Param from KMeans by @tarang-jain in #8033
  • Fix sample_weight handling in KernelRidge by @jcrist in #8040
  • Apply new validation to cuml.svm by @jcrist in #8029
  • Support subclassing proxy estimators by @jcrist in #8041
  • fix(ci): resolve all zizmor findings and add zizmor pre-commit checks by @gforsyth in #8046
  • Add check_cudf, and a few other validation changes by @jcrist in #8038
  • Fix labeler config by @jcrist in #8047
  • Apply new validation to cuml.explainer by @jcrist in #8043
  • Apply new validation to metrics.pairwise_kernels by @csadorf in #8050
  • Apply new validation to cuml.neighbors by @viclafargue in #8019
  • Apply new input validation to metrics.regression by @csadorf in #8044
  • Ensure output of classifier predict has aligned index by @jcrist in #8056
  • Fix explainer hypothesis test by @jcrist in #8054
  • Apply new validation to metrics.confusion_matrix by @csadorf in #8049
  • Apply new validation to metrics.kl_divergence by @csadorf in #8057
  • Use token.rapids.nvidia.com when issuing S3 bucket creds in devcontainers by @trxcllnt in #8036
  • Apply new input validation to cuml.metrics.cluster by @csadorf in #8059
  • Apply new validation to cuml.manifold by @jinsolp in #8042
  • Cleanup and apply new validation to cuml._thirdparty and cuml.preprocessing by @jcrist in #8052
  • Apply new validation to metrics.pairwise_distances by @csadorf in #8065
  • Apply new input validation to metrics.trustworthiness by @csadorf in #8058
  • A few validation fixups by @jcrist in #8066
  • Use cudaStream_t instead of cuda_stream_view in cuml Cython by @vyasr in #8072
  • Fix failing IncrementalPCA test by @jcrist in #8080
  • Fallback on ensure_all_finite in UMAP on cuml.accel by @jcrist in #8076
  • Cleanup TargetEncoder by @jcrist in https://github.com/rapidsai...
Read more

v26.04.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 09 Apr 06:04
f223d89

What's Changed

🚨 Breaking Changes

  • FIX Raise TypeError when sparse input is not supported by @betatim in #7728
  • Add cuml.internals.validation, check_is_fitted checks by @jcrist in #7868
  • Add support for feature_names_in_ by @jcrist in #7877
  • Validate that X is 2 dimensional by @jcrist in #7889

🐛 Bug Fixes

📖 Documentation

  • Fix documentation for in-notebook cuml.accel activation. by @csadorf in #7767
  • [DOC] Add missing parameters to UMAP and NearestNeighbors docstrings by @silasmue in #7632
  • docs updates for new RAPIDS branching strategy by @jameslamb in #7795
  • DOC Restructure API documentation by @betatim in #7798
  • Remove deprecated tree_method=gpu_hist with XGBoost by @hcho3 in #7858

🚀 New Features

🛠️ Improvements

Read more

v26.02.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 05 Feb 08:03
v26.02.00
22b12c8

What's Changed

🚨 Breaking Changes

  • Simplify type reflection implementation by @jcrist in #7539
  • Deprecate TotalIters for SVC/SVR by @jcrist in #7612
  • Deprecate handle from public APIs by @jcrist in #7628
  • Don't coerce output_type=None to global output_type in __init__ by @jcrist in #7649
  • Remove unused QR decomposition MG code by @JohnZed in #7687
  • Use train_test_split from scikit-learn by @betatim in #7667

🐛 Bug Fixes

  • Don't link to cumlprims_mg when MG is turned off by @robertmaynard in #7583
  • UMAP fix int32 overflow causing illegal mem access by @aamijar in #7587
  • Explicitly initialize uninitialized SvmParameter fields in SVC constructor by @dantegd in #7604
  • Use a generated dataset in place of the actual Covertype dataset. by @csadorf in #7634
  • Remove reliance on remote datasets in tests by @csadorf in #7637
  • Use synthetic dataset in BERTopic wheel integration tests. by @csadorf in #7644
  • Refactor pointer comparison in check_ptr function for input validation by @csadorf in #7636
  • Add XGBoost back to tests by @dantegd in #7653
  • xfail check_estimators spectral embedding tests by @aamijar in #7677
  • Update RMM memory resource APIs to use ref-based equivalents by @bdice in #7668
  • Xfail test 'test_tsne_distance_metrics_on_sparse_input' by @csadorf in #7681
  • Use NCCL for Dask kNN and DBSCAN by @viclafargue in #7574
  • Mark some SpectralEmbedding() common test_estimators tests as flaky. by @csadorf in #7686
  • Handle new sklearn LARS error message in test_typeerror_input by @csadorf in #7694
  • Build.sh now support custom LIBCUML_BUILD_DIR value by @robertmaynard in #7582
  • Fix UMAP outliers when random_state is given by @jinsolp in #7597
  • Work-around sentence-transformer regression in BERTopic integration tests and do not fail test runs on integration tests by @csadorf in #7715
  • classlabels utils refactor by @viclafargue in #7691

📖 Documentation

  • DOC Rework LinearRegression documentation by @virchan in #7218
  • k-means++ documented as a init option by @aamijar in #7615
  • Add general XGBoost demo notebook by @dantegd in #7601
  • Add security warnings to model serialization/deserialization notebook. by @csadorf in #7661

🚀 New Features

🛠️ Improvements

Read more

v25.12.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 11 Dec 05:33
v25.12.00
5c22c20

What's Changed

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

  • Add Spectral Embedding algorithm to README.md by @aamijar in #7348
  • Fix and improve build docs by @csadorf in #7383
  • Mention pip as install path in README. by @csadorf in #7414
  • Use current system architecture in conda environment creation command by @bdice in #7447
  • Use sklearn.datasets.fetch_covtype in example notebook by @jcrist in #7581

🚀 New Features

🛠️ Improvements

Read more

v25.10.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 08 Oct 22:37

🚨 Breaking Changes

  • Deprecate convert_to_* methods in favor of as_* methods in cuml.ensemble (#7254) @jcrist
  • KernelDensity.score_samples output type & dtype fixes (#7240) @jcrist
  • Remove get_json/get_detailed_text/get_summary_text from ensemble estimators (#7177) @jcrist
  • Deprecate accuracy_metric (#7170) @jcrist
  • Deprecate predict_model in cuml.ensemble/cuml.dask.ensemble (#7155) @jcrist
  • Remove deprecated cuml.accel CLI options (#7110) @jcrist
  • Remove deprecation warnings in 25.10 (#7109) @jcrist
  • Remove deprecation warning and data_on_host option for UMAP (#7099) @jinsolp
  • Fix UMAP graph thresholding (#6595) @viclafargue

🐛 Bug Fixes

  • Set NCCL rpath for cu13 wheels (#7304) @divyegala
  • Add NCCL library path to CMakeLists.txt for libcuml (#7281) @csadorf
  • Ensure finite values passed to SpectralEmbedding (#7280) @jcrist
  • Ensure sklearn roundtrip attribute consistency (#7278) @jcrist
  • Fix SpectralEmbedding precomputed option with 0% sparsity (#7271) @aamijar
  • Fix test reference object in test_onehot_inverse_transform_handle_unknown (#7246) @mroeschke
  • Slightly increase tolerance in ridge regression test. (#7243) @csadorf
  • Increase rtol for float32 in test_complement_partial_fit to reduce intermittent failures (#7237) @csadorf
  • Conditionally xfail test_umap_fit_transform_score for nrows=500. (#7232) @csadorf
  • Fixup StandardScaler.n_samples_seen_ (#7209) @jcrist
  • Validate sample_weight in KernelDensity.fit (#7208) @jcrist
  • Support non-contiguous input in input_to_host_array (#7207) @jcrist
  • Set correct min_samples for HDBSCAN single_linkage (#7195) @tarang-jain
  • Raise Proper Exception when HDBSCAN min_samples > number of samples (#7193) @tarang-jain
  • Remove docs/handling of solver="cd" in Ridge (#7190) @jcrist
  • Error nicely in KMeans if n_samples < n_clusters (#7189) @jcrist
  • Further increase tolerance in test_random_seed_consistency. (#7180) @csadorf
  • Use custom plugin to download test data early (#7169) @betatim
  • Fix UMAP outlier issue by checking for outliers and shuffling (#7131) @jinsolp
  • Note non-determinism in random projection transforms (#7129) @jcrist
  • Rewrite random projection estimators (#7119) @jcrist
  • Prevent CUDA issues when running UMAP with scikit-learn compatibility test suite (#7107) @viclafargue
  • Fix accel profiler 2x count of some fallback methods (#7101) @jcrist
  • Don't call to_output on a cupy array (#7044) @Matt711
  • Add fix for devices that do not have memory resources (#6823) @viclafargue
  • Fix UMAP graph thresholding (#6595) @viclafargue

📖 Documentation

🚀 New Features

🛠️ Improvements

[NIGHTLY] v25.12.00

[NIGHTLY] v25.12.00 Pre-release
Pre-release

Choose a tag to compare

@rapids-bot rapids-bot released this 03 Oct 17:57

🔗 Links

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

🚀 New Features

🛠️ Improvements

v25.08.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 06 Aug 20:19
b081fcd

cuML 25.08 Release Notes

🎉 What's New

⭐ Highlights

  • Spectral Embedding: New algorithm for dimensionality reduction and manifold learning (#6581) @aamijar
  • cuML.accel Profiler: Added profiling capabilities for Zero Code Change Acceleration (#7021) @jcrist
  • cuML.accel LinearSVC/LinearSVR: New support for linear support vector classification and regression (#6866) @viclafargue
  • cuML.accel set_output/get_feature_names_out: Added support for scikit-learn output configuration (#6942) @jcrist

🔧 Major Improvements

UMAP Enhancements

  • Multi-GPU KNN graph building support (#7019) @jinsolp
  • Improved handling of identical vectors in distance calculations (#6904) @jinsolp
  • Disabled non-determinism on small datasets for better reproducibility (#7004) @viclafargue

FIL (Forest Inference Library) Improvements

  • Support for wide data inference (#7014) @hcho3
  • Better handling of empty categorical nodes (#6924) @hcho3
  • Improved GPU context handling (#6987) @hcho3
  • Restored legacy threshold behavior (#6922) @hcho3

Zero Code Change Acceleration (cuml.accel)

Algorithm Enhancements

  • DBSCAN: Now computes components_ attribute (#6976) @jcrist
  • LogisticRegression: Exposed n_iter_ attribute for iteration tracking (#6911) @betatim
  • RandomForest: Fixed default max_features parameter (#6862) @jcrist
  • TSNE: Added fallback support for unsupported metrics (#6992) @jcrist
  • Ridge: Better handling of underdetermined systems (#7003) @betatim

Developer Experience

  • Testing: Enhanced CI with upstream test suites for HDBSCAN, UMAP, and other algorithms (#6995, #6989, #6986) @jcrist
  • Documentation: Comprehensive updates to Python developer guide and API documentation (#6843) @csadorf
  • Dependencies: Updated to CUDA 12.9 and added support for scikit-learn 1.4 (#6944, #6845) @jakirkham, @betatim

🚨 Breaking Changes

Deprecated Parameters & Functions

  • UMAP: data_on_host parameter is deprecated (#6953) @jinsolp
  • HDBSCAN:
    • Prediction functions in cuml.cluster namespace are deprecated (#6943) @jcrist
    • connectivity parameter is deprecated (#6936) @jcrist
  • SGD Algorithms: penalty='none' is deprecated in MBSGDClassifier, MBSGDRegressor, and SGD (#6926) @jcrist
  • KMeans: random_state default changed to None (#6884) @jcrist

Removed Components

  • Experimental FIL: experimental.fil Python module removed (#6899) @hcho3
  • Legacy FIL: Removed from libcuml (#6844) @hcho3
  • CUDA 11 Support: Removed from dependencies and CI (#6847, #6885) @KyleFromNVIDIA, @dantegd
  • Package Distribution: Stopped uploading to downloads.rapids.ai (#6803) @jameslamb

API Changes

🐛 Bug Fixes

Algorithm Fixes

  • UMAP: Improved handling of identical vectors in UMAP distance calculations (#6904) @jinsolp
  • TSNE: Relaxed tolerance for sparse input tests (#7033) @jinsolp
  • RandomForest: Fixed default max_features parameter (#6862) @jcrist
  • HDBSCAN: Rewrote Python wrapper for better stability (#6913) @jcrist
  • Logistic Regression: Increased tolerance in Dask tests (#6848) @csadorf

Compatibility & Dependencies

  • Fixed compatibility with scikit-learn 1.7.0 and Python 3.13.4 (#6865) @csadorf
  • Unxfailed tests affected by numba compilation errors (#6905) @csadorf

Other

📖 Documentation Updates

User Documentation

  • Supported Versions: Added comprehensive version compatibility documentation (#7040) @csadorf
  • Zero Code Change Acceleration: Updated title and reorganized documentation (#7030, #7026) @csadorf, @jcrist
  • UMAP: Added multi-GPU KNN graph building documentation (#7019) @jinsolp
  • TSNE: Fixed FFT TSNE documentation (#6967) @jinsolp
  • Limitations: Revamped cuml.accel limitations documentation (#6965) @jcrist

Developer Documentation

  • Python Developer Guide: Comprehensive updates (#6843) @csadorf
  • CI Workflow: Added documentation for workflow inputs (#6952) @jameslamb
  • Async Operations: Removed outdated async operation section (#6980) @csadorf

🔄 Migration Guide

For Users

  1. UMAP: Remove data_on_host parameter from your code
  2. HDBSCAN: Update to use new prediction function signatures
  3. SGD: Replace penalty='none' with appropriate alternatives
  4. KMeans: Be aware that random_state=None is now the default

For Developers

  1. CUDA 11: Update your development environment to CUDA 12.9
  2. FIL: Update imports from experimental.fil to fil
  3. Dependencies: Update to supported versions as documented

📊 Summary

This release brings significant improvements to cuML's performance, stability, and developer experience. The highlight is the new Spectral Embedding algorithm, along with major architectural improvements to HDBSCAN and UMAP. The Zero Code Change Acceleration feature continues to expand with new algorithms and better tooling.

The breaking changes are primarily focused on cleaning up deprecated APIs and improving the overall codebase structure. Users are encouraged to review the migration guide and update their code accordingly.

🔧 Internal & Technical Changes

Architecture Improvements

  • HDBSCAN Migration: Migrated to cuVS cluster primitives from raft::cluster for better performance (#6560) @tarang-jain
  • Module Porting: Ported cuml.neighbors, cuml.ensemble, and UMAP to InteropMixin/ProxyBase (#6851, #6863, #6840) @jcrist
  • Base Class Cleanup: Removed deprecated base classes and functions (#6919, #6888) @jcrist
  • Cython Optimization: De-Cythonized several modules for better maintainability (#6920) @jcrist

Performance Optimizations

Infrastructure & CI/CD

Code Quality

  • Shell Scripts: Fixed all shellcheck warnings and errors (#6901) @gforsyth
  • Linting: Updated cython-lint and fixed long lines (#6969) @jcrist
  • Documentation: Comprehensive updates to developer guides (#6843) @csadorf

For detailed information about specific changes, please refer to the individual pull requests linked in each entry.

v25.06.00

Choose a tag to compare

@raydouglass raydouglass released this 06 Jun 12:44
v25.06.00
eb0a262

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

🚀 New Features

🛠️ Improvements

v25.04.00

Choose a tag to compare

@AyodeAwe AyodeAwe released this 09 Apr 21:28
4307c22

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

🚀 New Features

🛠️ Improvements