Skip to content

Commit 577e5c0

Browse files
authored
Release 25.06.0 (#964)
Merge branch-25.06 into main release notes: - Updates RAPIDS dependencies to 25.06 - Spark Rapids Connect ML plugin improvements: - Extends Spark Rapids Connect ML plugin to support accelerated KMeans, LinearRegression, RandomForest regression and classifiction, and PCA. - Adds runtime spark configs for verbose, float32_inputs, num_workers to allow these to be set over spark connect when using the accelerated plugin. - improves transfer of RandomForest models from python to jvm - Bundles plugin jar for Spark 4.0 in pip package. - bug fixes in UMAP and in LogisticRegression on large datasets Known issues: - RandomForest inference: - may fail on nodes with multiple GPUs. Convert via cpu() api for cpu based inference as a work around. - may fail for very wide inputs (e.g. > 10000 features). - CrossValidator for RandomForest over Spark Connect will fail in Spark 4.0. Fix pending in Spark 4.1 Note: merge this PR with **Create a merge commit to merge**
2 parents 9ccd267 + c316a70 commit 577e5c0

79 files changed

Lines changed: 2537 additions & 429 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Spark Rapids ML enables GPU accelerated distributed machine learning on [Apache
44

55
These APIs seek to minimize any code changes to end user Spark code. After your environment is configured to support GPUs (with drivers, CUDA toolkit, and RAPIDS dependencies), you should be able to just change an import statement or class name to take advantage of GPU acceleration. See [here](./python/README.md#clis-enabling-no-package-import-change) for experimental CLIs that enable GPU acceleration without the need for changing the `pyspark.ml` package names in an existing pyspark ml application.
66

7+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/NVIDIA/spark-rapids-ml)
8+
79
**Python**
810
```python
911
# from pyspark.ml.feature import PCA

ci/Dockerfile

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,23 @@
1717
ARG CUDA_VERSION=11.8.0
1818
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04
1919

20+
# ubuntu22
21+
RUN sed -i -e 's|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' \
22+
-e 's|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g' \
23+
/etc/apt/sources.list
24+
# ubuntu24+
25+
RUN find /etc/apt/sources.list.d/ -name '*.sources' -exec sed -i \
26+
-e "s|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g" \
27+
-e "s|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g" {} +
2028
# Install packages to build spark-rapids-ml
2129
RUN chmod 1777 /tmp
2230
RUN apt update -y \
23-
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-8-jdk \
24-
&& apt install -y git numactl software-properties-common wget zip \
31+
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-17-jdk \
32+
&& apt install -y git numactl software-properties-common wget zip maven \
2533
&& rm -rf /var/lib/apt/lists
2634

2735
# Config JAVA_HOME
28-
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
36+
ENV JAVA_HOME /usr/lib/jvm/java-1.17.0-openjdk-amd64
2937

3038
# Install conda
3139
ENV PATH="/root/miniconda3/bin:${PATH}"
@@ -38,6 +46,6 @@ RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86
3846
&& conda config --set solver libmamba
3947

4048
# install cuML
41-
ARG CUML_VER=25.04
49+
ARG CUML_VER=25.06
4250
RUN conda install -y -c rapidsai -c conda-forge -c nvidia cuml=$CUML_VER cuvs=$CUML_VER python=3.10 cuda-version=11.8 numpy~=1.0 \
4351
&& conda clean --all -f -y

ci/deploy.sh

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
#
3-
# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved.
3+
# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
44
#
55
# Licensed under the Apache License, Version 2.0 (the "License");
66
# you may not use this file except in compliance with the License.
@@ -17,6 +17,17 @@
1717

1818
set -ex
1919

20+
# build plugin jar
21+
pushd jvm
22+
mvn clean package -DskipTests
23+
popd
24+
25+
# copy plugin jar to python package
26+
JARS_DIR=python/src/spark_rapids_ml/jars
27+
mkdir -p $JARS_DIR
28+
rm -f $JARS_DIR/*.jar
29+
cp jvm/target/*.jar $JARS_DIR
30+
2031
# build whl package
2132
pushd python
2233
pip install -r requirements_dev.txt && pip install -e .

ci/test.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
#
3-
# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved.
3+
# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
44
#
55
# Licensed under the Apache License, Version 2.0 (the "License");
66
# you may not use this file except in compliance with the License.
@@ -44,6 +44,9 @@ pip install -r requirements_dev.txt && pip install -e .
4444
# benchmark
4545
./run_benchmark.sh $bench_args
4646

47+
# plugin tests
48+
./run_plugin_test.sh
49+
4750
# check compatibility with Spark 3.3 in nightly run
4851
# also push draft release docs to gh-pages
4952
if [[ $type == "nightly" ]]; then

docker/Dockerfile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2023, NVIDIA CORPORATION.
2+
# Copyright (c) 2023-2025, NVIDIA CORPORATION.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -38,6 +38,14 @@
3838
ARG CUDA_VERSION=11.5.2
3939
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04
4040

41+
# ubuntu22
42+
RUN sed -i -e 's|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' \
43+
-e 's|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g' \
44+
/etc/apt/sources.list
45+
# ubuntu24+
46+
RUN find /etc/apt/sources.list.d/ -name '*.sources' -exec sed -i \
47+
-e "s|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g" \
48+
-e "s|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g" {} +
4149
# Install packages to build spark-rapids-ml jars
4250
RUN apt update -y && \
4351
DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-8-jdk wget git zip

docker/Dockerfile.pip

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,21 @@ ARG CUDA_VERSION=11.8.0
1818
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04
1919

2020
ARG PYSPARK_VERSION=3.3.1
21-
ARG RAPIDS_VERSION=25.4.0
21+
ARG RAPIDS_VERSION=25.6.0
2222
ARG ARCH=amd64
2323
#ARG ARCH=arm64
24+
25+
# ubuntu22
26+
RUN sed -i -e 's|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' \
27+
-e 's|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g' \
28+
/etc/apt/sources.list
29+
# ubuntu24+
30+
RUN find /etc/apt/sources.list.d/ -name '*.sources' -exec sed -i \
31+
-e "s|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g" \
32+
-e "s|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g" {} +
2433
# Install packages to build spark-rapids-ml
2534
RUN apt-get update -y \
26-
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-8-jdk \
35+
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-17-jdk \
2736
&& rm -rf /var/lib/apt/lists
2837

2938
RUN apt-get update -y \
@@ -50,7 +59,7 @@ RUN pip install --no-cache-dir pyspark==${PYSPARK_VERSION} "scikit-learn>=1.2.1"
5059
numpydoc pydata-sphinx-theme pylint pytest "sphinx<6.0" "twine>=4.0.0"
5160

5261
# Config JAVA_HOME
53-
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-$ARCH
62+
ENV JAVA_HOME /usr/lib/jvm/java-1.17.0-openjdk-$ARCH
5463

5564
### END OF CACHE ###
5665

docker/Dockerfile.python

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,26 @@
1515
#
1616

1717
ARG CUDA_VERSION=11.8.0
18-
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04
18+
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04
1919

20-
ARG CUML_VERSION=25.04
20+
ARG CUML_VERSION=25.06
2121

22+
# ubuntu22
23+
RUN sed -i -e 's|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' \
24+
-e 's|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g' \
25+
/etc/apt/sources.list
26+
# ubuntu24+
27+
RUN find /etc/apt/sources.list.d/ -name '*.sources' -exec sed -i \
28+
-e "s|http://archive.ubuntu.com/ubuntu|https://archive.ubuntu.com/ubuntu|g" \
29+
-e "s|http://security.ubuntu.com/ubuntu|https://security.ubuntu.com/ubuntu|g" {} +
2230
# Install packages to build spark-rapids-ml
2331
RUN apt update -y \
24-
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-8-jdk \
32+
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y openjdk-17-jdk \
2533
&& apt install -y git numactl software-properties-common wget zip \
2634
&& rm -rf /var/lib/apt/lists
2735

2836
# Config JAVA_HOME
29-
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
37+
ENV JAVA_HOME /usr/lib/jvm/java-1.17.0-openjdk-amd64
3038

3139
# Install conda
3240
ENV PATH="/root/miniconda3/bin:${PATH}"

docs/site/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,9 @@ The following configurations can be supplied as Spark properties.
1111
| spark.rapids.ml.uvm.enabled | false | if set to true, enables [CUDA unified virtual memory](https://developer.nvidia.com/blog/unified-memory-cuda-beginners/) (aka managed memory) during estimator.fit() operations to allow processing of larger datasets than would fit in GPU memory |
1212
| spark.rapids.ml.gpuMemRatioForData | None | If set to a float value between 0 and 1, Spark Rapids ML will reserve a portion of free GPU memory on each GPU and incrementally append PySpark data batches into this reserved space. This setting is recommended for large datasets, as it prevents duplicating the entire dataset in GPU memory and reduces the risk of out-of-memory errors. |
1313
| spark.rapids.ml.cpu.fallback.enabled | false | if set to true and spark-rapids-ml estimator.fit() is invoked with unsupported parameters or parameter values, the pyspark.ml cpu based estimator.fit() and model.transform() will be run; if set to false, an exception is raised in this case (default). |
14+
| spark.rapids.ml.verbose | None | if set to a boolean value (true/false) or an integer between 0 and 6, controls the verbosity level for cuML logging during estimator.fit() operations. This parameter can be set globally in Spark configuration and will be used if not explicitly set in the estimator constructor. |
15+
| spark.rapids.ml.float32_inputs | None | if set to a boolean value (true/false), controls whether input data should be converted to float32 precision before being passed to cuML algorithms. Setting this to true can reduce memory usage and potentially improve performance, but may affect numerical precision. This parameter can be set globally in Spark configuration and will be used if not explicitly set in the estimator constructor. |
16+
| spark.rapids.ml.num_workers | None | if set to an integer value greater than 0, specifies the number of workers to use for distributed training. This parameter can be set globally in Spark configuration and will be used if not explicitly set in the estimator constructor. |
17+
1418

1519
Since the algorithms rely heavily on Pandas UDFs, we also require `spark.sql.execution.arrow.pyspark.enabled=true` to ensure efficient data transfer between the JVM and Python processes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: Spark Connect
3+
parent: Getting Started
4+
---
5+
# Getting Started on Spark Connect
6+
7+
Spark Rapids ML supports Spark Connect via the [Spark Rapids ML Connect Plugin](https://github.com/NVIDIA/spark-rapids-ml/blob/main/jvm). A prebuilt plugin jar compatible with Spark Connect 4.0 is bundled with the `spark-rapids-ml` pip package. See the getting-started [guide](https://github.com/NVIDIA/spark-rapids-ml/blob/main/jvm/README.md) for more information.

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
project = 'spark-rapids-ml'
2424
copyright = '2025, NVIDIA'
2525
author = 'NVIDIA'
26-
release = '25.04.0'
26+
release = '25.06.0'
2727

2828
# -- General configuration ---------------------------------------------------
2929
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

0 commit comments

Comments
 (0)