From 8c0833f9134e77c7cac767bfe14ad946583ab4f1 Mon Sep 17 00:00:00 2001 From: "Rishi C." <77904151+rishic3@users.noreply.github.com> Date: Fri, 13 Dec 2024 20:33:27 -0500 Subject: [PATCH] Publish Optuna-Spark Examples (#462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Support running optuna on Spark * play around with optuna + xgboost + joblibspark * update * update * update * Optuna: Add how optuna + xgboost + spark works * deploy optuna examples on databricks * Cleanup and prepare for open source * Update README.md * Update run-optuna-spark-xgboost.sh * Update README.md with chmod for run scripts * update/add copyright * Replace RDD example with Dataframe example, cleanups to README and repo structure * Move files to separate dir for merge to spark-rapids-examples * separate dir * Merge branch-24.10 * Remove gitignore Signed-off-by: Rishi Chandra * remove username * Update README.md * Update README.md * Update README.md * Update README.md * Fix run-sparkrapids-xgboost.sh implementation path * Fix corrupt mysql installation in init_optuna.sh * Fix corrupt mysql installation in init_optuna_xgboost.sh * Update run-joblibspark-xgboost.sh * Update run-sparkrapids-xgboost.sh * Update run-joblibspark-simple.sh * Update run-joblibspark-xgboost.sh * Update run-sparkrapids-xgboost.sh * Update to 24.10, include apt updates * use gpu_hist for older xgb versions * use gpu_hist for older xgb versions * Update sparkrapids-xgboost-read-per-worker.py * Update init script with mysql installation fixes * Address comments * Add cluster startup script * Move around files, add notebooks * Repo renovations * Update README, remove run scripts, fix PCA to use 24.10.1 * minor updates * Final cleanups, runs passed on databricks * README updates * Updates to comments, cleanup outputs * Address comments, minor reordering, update README * comment fix * remove unnecessary imports * tuning max bins and n_estimators bug fixes * 'max_bin' != 'max_bins' 🤦 * ensure QDM and XGB bins are the same * typos * cleanup * Address comments * Note about sampler serialization * Add link * Add link * Undo benchmark commit * typo --------- Signed-off-by: Rishi Chandra Co-authored-by: Bobby Wang (SW-TEGRA) Co-authored-by: Bobby Wang Co-authored-by: Erik Ordentlich --- .../ML+DL-Examples/Optuna-Spark/README.md | 243 ++++ .../Optuna-Spark/images/optuna.svg | 4 + .../Optuna-Spark/images/runtimes.png | Bin 0 -> 567196 bytes .../optuna-examples/databricks/init_optuna.sh | 71 ++ .../databricks/start_cluster.sh | 58 + .../optuna-examples/optuna-dataframe.ipynb | 1036 +++++++++++++++++ .../optuna-examples/optuna-joblibspark.ipynb | 868 ++++++++++++++ .../Spark-Rapids-ML/pca/README.md | 2 +- .../Spark-Rapids-ML/pca/notebooks/pca.ipynb | 4 +- 9 files changed, 2283 insertions(+), 3 deletions(-) create mode 100644 examples/ML+DL-Examples/Optuna-Spark/README.md create mode 100644 examples/ML+DL-Examples/Optuna-Spark/images/optuna.svg create mode 100644 examples/ML+DL-Examples/Optuna-Spark/images/runtimes.png create mode 100644 examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/init_optuna.sh create mode 100755 examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/start_cluster.sh create mode 100644 examples/ML+DL-Examples/Optuna-Spark/optuna-examples/optuna-dataframe.ipynb create mode 100644 examples/ML+DL-Examples/Optuna-Spark/optuna-examples/optuna-joblibspark.ipynb diff --git a/examples/ML+DL-Examples/Optuna-Spark/README.md b/examples/ML+DL-Examples/Optuna-Spark/README.md new file mode 100644 index 00000000..4c7e460b --- /dev/null +++ b/examples/ML+DL-Examples/Optuna-Spark/README.md @@ -0,0 +1,243 @@ + + +# Distributed Hyperparameter Tuning + +These examples demonstrate distributed hyperparameter tuning with [Optuna](https://optuna.readthedocs.io/en/stable/index.html) on Apache Spark, accelerated with [RAPIDS](https://rapids.ai/) on GPU. We showcase how to set up and tune XGBoost on GPU, with deployment on Spark Standalone or Databricks clusters. + +## Contents: +- [Overview](#overview) + - [Examples](#examples) +- [Running Optuna on Spark Standalone](#running-optuna-on-spark-standalone) + - [Setup Database for Optuna](#1-setup-database-for-optuna) + - [Setup Optuna Python Environment](#2-setup-optuna-python-environment) + - [Start Standalone Cluster and Run](#3-start-standalone-cluster-and-run) +- [Running Optuna on Databricks](#running-optuna-on-databricks) + - [Upload Init Script and Notebook](#1-upload-init-script-and-notebook) + - [Create Cluster](#2-create-cluster) + - [Run Notebook](#3-run-notebook) +- [Benchmarks](#benchmarks) +- [How Does it Work?](#how-does-it-work) + - [Implementation Notes](#implementation-notes) + +--- + +## Overview + +Optuna is a lightweight Python library for hyperparameter tuning, integrating state-of-the-art hyperparameter optimization algorithms. + +At a high level, we optimize hyperparameters in three steps: +1. Wrap model training with an `objective` function that returns a loss metric. +2. In each `trial`, suggest hyperparameters based on previous results. +3. Create a `study` object, which executes the optimization and stores the trial results. + +**Local example**: tuning XGBoost with Optuna (from [Optuna docs](https://optuna.org/#code_examples)): +```python +import xgboost as xgb +import optuna + +# 1. Define an objective function to be maximized. +def objective(trial): + ... + + # 2. Suggest values of the hyperparameters using a trial object. + param = { + "objective": "binary:logistic", + "booster": trial.suggest_categorical("booster", ["gbtree", "gblinear", "dart"]), + "lambda": trial.suggest_float("lambda", 1e-8, 1.0, log=True), + "alpha": trial.suggest_float("alpha", 1e-8, 1.0, log=True), + "subsample": trial.suggest_float("subsample", 0.2, 1.0), + "colsample_bytree": trial.suggest_float("colsample_bytree", 0.2, 1.0), + } + + booster = xgb.train(param, dtrain) + ... + return accuracy + +# 3. Create a study object and optimize the objective function. +study = optuna.create_study(direction='maximize') +study.optimize(objective, n_trials=100) +``` + +To run **distributed tuning** on Spark, we take the following steps: +1. Each worker receives a copy of the same dataset. +2. Each worker runs a subset of the trials in parallel. +3. Workers write trial results and receive new hyperparameters using a shared database. + +### Examples + +We provide **2 notebooks**, with differences in the backend/implementation. See [implementation notes](#implementation-notes) for more details. + +- `optuna-joblibspark.ipynb`: + - Uses the [Joblib Spark backend](https://github.com/joblib/joblib-spark) to distribute tasks on the Spark cluster. + - Implements *Worker-I/O*, where each worker reads the full dataset from a specified filepath (e.g., distributed file system). + - Builds on [this Databricks example](https://docs.databricks.com/en/machine-learning/automl-hyperparam-tuning/optuna.html). +- `optuna-dataframe.ipynb`: + - Uses Spark dataframes to distribute tasks on the cluster. + - Implements *Spark-I/O*, where Spark reads the dataset from a specified filepath, then duplicates and repartitions it so that each worker task is mapped onto a copy of the dataset. + - Dataframe operations are accelerated on GPU with the [Spark-RAPIDS Accelerator](https://nvidia.github.io/spark-rapids/). + +## Running Optuna on Spark Standalone + +### 1. Setup Database for Optuna + +Optuna offers an RDBStorage option which allows for the persistence of experiments across different machines and processes, thereby enabling Optuna tasks to be distributed. + +This section will walk you through setting up MySQL as the backend for RDBStorage in Optuna. + +We highly recommend installing MySQL on the driver node. This setup eliminates concerns regarding MySQL connectivity between worker nodes and the driver, simplifying the management of database connections. +(For Databricks, the installation is handled by the init script). + +1. Install MySql: + +``` shell +sudo apt install mysql-server +``` + +2. Configure MySQL bind address: + +in `/etc/mysql/mysql.conf.d/mysqld.cnf` + +``` shell +bind-address = YOUR_DRIVER_HOST_IP +mysqlx-bind-address = YOUR_DRIVER_HOST_IP +``` + +3. Restart MySQL: + +``` shell +sudo systemctl restart mysql.service +``` + +4. Setup user: + +```shell +sudo mysql +``` + +``` mysql +mysql> CREATE USER 'optuna_user'@'%' IDENTIFIED BY 'optuna_password'; +Query OK, 0 rows affected (0.01 sec) + +mysql> GRANT ALL PRIVILEGES ON *.* TO 'optuna_user'@'%' WITH GRANT OPTION; +Query OK, 0 rows affected (0.01 sec) + +mysql> FLUSH PRIVILEGES; +Query OK, 0 rows affected (0.01 sec) + +mysql> EXIT; +Bye +``` + +Create a database for Optuna: + +``` shell +mysql -u optuna_user -p -e "CREATE DATABASE IF NOT EXISTS optuna" +``` + +Troubleshooting: +> If you encounter +`"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"`, +try the command: +`ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock` + +### 2. Setup Optuna Python Environment + +Install the MySQL client and create a conda environment with the required libraries. +We use [RAPIDS](https://docs.rapids.ai/install/#get-rapids) for GPU-accelerated ETL. See the [docs](https://docs.rapids.ai/install/#get-rapids) for version selection. +``` shell +sudo apt install libmysqlclient-dev + +conda create -n rapids-24.10 -c rapidsai -c conda-forge -c nvidia \ + cudf=24.10 cuml=24.10 python=3.10 'cuda-version>=12.0,<=12.5' +conda activate optuna-spark +pip install mysqlclient +pip install optuna joblib joblibspark ipywidgets +``` + +### 3. Start Standalone Cluster and Run + +Configure your standalone cluster settings. +This example just creates local cluster with a single GPU worker: +```shell +export SPARK_HOME=/path/to/spark +export SPARK_WORKER_OPTS="-Dspark.worker.resource.gpu.amount=1 \ + -Dspark.worker.resource.gpu.discoveryScript=$SPARK_HOME/examples/src/main/scripts/getGpusResources.sh" +export MASTER=spark://$(hostname):7077; export SPARK_WORKER_INSTANCES=1; export CORES_PER_WORKER=8 + +${SPARK_HOME}/sbin/start-master.sh; ${SPARK_HOME}/sbin/start-worker.sh -c ${CORES_PER_WORKER} -m 16G ${MASTER} +``` + +You can now run the notebook using the `optuna-spark` Python kernel! +The notebook contains instructions to attach to the standalone cluster. + + +## Running Optuna on Databricks + +### 1. Upload Init Script and Notebook + +- Make sure your [Databricks CLI]((https://docs.databricks.com/en/dev-tools/cli/tutorial.html)) is configured for your Databricks workspace. +- Copy the desired notebook into your Databricks workspace. For example: + ```shell + databricks workspace import /Users/someone@example.com/optuna/optuna-joblibspark.ipynb --format JUPYTER --file optuna-joblibspark.ipynb + ``` +- Copy the init script ```databricks/init_optuna.sh```: + ```shell + databricks workspace import /Users/someone@example.com/optuna/init_optuna.sh --format AUTO --file databricks/init_optuna.sh + ``` + +### 2. Create Cluster + +*For Databricks Azure*: Use the cluster startup script, which is configured to create a 4 node GPU cluster: +```shell +export INIT_PATH=/Users/someone@example.com/optuna/init_optuna.sh +cd databricks +chmod +x start_cluster.sh +./start_cluster.sh +``` + +Or, create a cluster via the web UI: +- Go to `Compute > Create compute` and set the desired cluster settings. +- Under `Advanced Options > Init Scripts`, upload the init script from your workspace. +- Under `Advanced Options > Spark > Environment variables`, set `LIBCUDF_CUFILE_POLICY=OFF`. +- Make sure to use a GPU cluster and include task GPU resources. + +The init script will install the required libraries on all nodes, including RAPIDS and the Spark-RAPIDS plugin for GPU-accelerated ETL. On the driver, it will setup the MySQL server backend. + +### 3. Run Notebook + +Locate the notebook in your workspace and click on `Connect` to attach it to the cluster. The notebook is ready to run! + +## Benchmarks + +The graph below shows running times comparing distributed (8 GPUs) vs. single GPU hyperparameter tuning with 100 trials on synthetic regression datasets. + +![Databricks benchmarking results](images/runtimes.png) + +## How does it work? + +The Optuna tasks will be serialized into bytes and distributed to Spark workers to run. The Optuna task on the executor side that loads the Optuna study from RDBStorage, and then runs its set of trials. + +During tuning, the Optuna tasks send intermediate results back to RDBStorage to persist, and ask for the parameters from RDBStorage sampled by Optuna on the driver to run next. + +**Using JoblibSpark**: each Optuna task is a Spark application that has only 1 job, 1 stage, 1 task, and the Spark application will be submitted on the local threads. Here the parameter `n_jobs` configures the Spark backend to limit how many Spark applications are submitted at the same time. + +Thus Optuna with JoblibSpark uses Spark application level parallelism, rather than task-level parallelism. For larger datasets, ensure that a single XGBoost task can run on a single node without any CPU/GPU OOM. + +Application parallelism with JoblibSpark: + +![Optuna on JoblibSpark](images/optuna.svg) + +### Implementation Notes + +###### Data I/O: +Since each worker requires the full dataset to perform hyperparameter tuning, there are two strategies to get the data into worker memory: + - **Worker I/O**: *each worker reads the dataset* from the filepath once the task has begun. In practice, this requires the dataset to be written to a distributed file system accessible to all workers prior to tuning. The `optuna-joblibspark` notebook demonstrates this. + - **Spark I/O**: Spark reads the dataset and *creates a copy of the dataset for each worker*, then maps the tuning task onto each copy. In practice, this enables the code to be chained to other Dataframe operations (e.g. ETL stages) without the intermediate step of writing to DBFS, at the cost of some overhead during duplication. The `optuna-dataframe` notebook demonstrates this. + - To achieve this, we coalesce the input Dataframe to a single partition, and recursively self-union until we have the desired number of copies (number of workers). Thus each partition will contain a duplicate of the entire dataset, and the Optuna task can be mapped directly onto the partitions. + + +###### Misc: +- Please be aware that Optuna studies will continue where they left off from previous trials; delete and recreate the study if you would like to start anew. +- Optuna in distributed mode is **non-deterministic** (see [this link](https://optuna.readthedocs.io/en/stable/faq.html#how-can-i-obtain-reproducible-optimization-results)), as trials are executed asynchronously by executors. Deterministic behavior can be achieved using Spark barriers to coordinate reads/writes to the database. +- Reading data with GPU using cuDF requires disabling [GPUDirect Storage](https://docs.rapids.ai/api/cudf/nightly/user_guide/io/io/#magnum-io-gpudirect-storage-integration), i.e., setting the environment variable `LIBCUDF_CUFILE_POLICY=OFF`, to be compatible with the Databricks file system. Without GDS, cuDF will use a CPU bounce buffer when reading files, but all parsing and decoding will still be accelerated by the GPU. +- Note that the storage doesn’t store the state of the instance of samplers and pruners. To resume a study with a sampler whose seed argument is specified, [the sampler can be pickled](https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/001_rdb.html#resume-study) and returned to the driver alongside the results. diff --git a/examples/ML+DL-Examples/Optuna-Spark/images/optuna.svg b/examples/ML+DL-Examples/Optuna-Spark/images/optuna.svg new file mode 100644 index 00000000..17103908 --- /dev/null +++ b/examples/ML+DL-Examples/Optuna-Spark/images/optuna.svg @@ -0,0 +1,4 @@ + + + +
Optuna Application
ThreadPool
Driver
Spark Application
Spark Application
Spark Application
Spark Application
Optuna task
Optuna task
Optuna task
Optuna task
Workers
Optuna
RDBStorage
backended by
MySql
\ No newline at end of file diff --git a/examples/ML+DL-Examples/Optuna-Spark/images/runtimes.png b/examples/ML+DL-Examples/Optuna-Spark/images/runtimes.png new file mode 100644 index 0000000000000000000000000000000000000000..8195688920f36ff1097b1abd3609b6243a58cf24 GIT binary patch literal 567196 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Ë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 literal 0 HcmV?d00001 diff --git a/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/init_optuna.sh b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/init_optuna.sh new file mode 100644 index 00000000..820022af --- /dev/null +++ b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/init_optuna.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# Copyright (c) 2024, NVIDIA CORPORATION. + +set -x + +sudo rm -r /var/lib/apt/lists/* +sudo apt clean && sudo apt update --fix-missing -y + +if [[ $DB_IS_DRIVER = "TRUE" ]]; then + # setup database for optuna on driver + + # install mysql server + sudo apt install -y mysql-server + + if [[ ! -f "/etc/mysql/mysql.conf.d/mysqld.cnf" ]]; then + sudo apt remove --purge mysql\* + sudo apt clean && sudo apt update --fix-missing -y + sudo apt install -y mysql-server + fi + + if [[ ! -f "/etc/mysql/mysql.conf.d/mysqld.cnf" ]]; then + echo "ERROR: MYSQL installation failed" + exit 1 + fi + + # configure mysql + BIND_ADDRESS=$DB_DRIVER_IP + MYSQL_CONFIG_FILE="/etc/mysql/mysql.conf.d/mysqld.cnf" + sudo sed -i "s/^bind-address\s*=.*/bind-address = $BIND_ADDRESS/" "$MYSQL_CONFIG_FILE" + sudo sed -i "s/^mysqlx-bind-address\s*=.*/mysqlx-bind-address = $BIND_ADDRESS/" "$MYSQL_CONFIG_FILE" + sudo systemctl restart mysql.service + + # setup user + OPTUNA_USER="optuna_user" + OPTUNA_PASSWORD="optuna_password" + sudo mysql -u root -e " + CREATE USER IF NOT EXISTS '$OPTUNA_USER'@'%' IDENTIFIED BY '$OPTUNA_PASSWORD'; + GRANT ALL PRIVILEGES ON *.* TO '$OPTUNA_USER'@'%' WITH GRANT OPTION; + FLUSH PRIVILEGES;" +fi + + +# rapids import +SPARK_RAPIDS_VERSION=24.10.1 +curl -L https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/${SPARK_RAPIDS_VERSION}/rapids-4-spark_2.12-${SPARK_RAPIDS_VERSION}.jar -o \ + /databricks/jars/rapids-4-spark_2.12-${SPARK_RAPIDS_VERSION}.jar + +# setup cuda: install cudatoolkit 11.8 via runfile approach +wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run +sh cuda_11.8.0_520.61.05_linux.run --silent --toolkit +# reset symlink and update library loading paths +rm /usr/local/cuda +ln -s /usr/local/cuda-11.8 /usr/local/cuda + +sudo /databricks/python3/bin/pip3 install \ + --extra-index-url=https://pypi.nvidia.com \ + "cudf-cu11==24.10.*" "cuml-cu11==24.10.*" + +# setup python environment +sudo apt clean && sudo apt update --fix-missing -y +sudo apt install pkg-config +sudo apt install -y libmysqlclient-dev +sudo /databricks/python3/bin/pip3 install --upgrade pip +sudo /databricks/python3/bin/pip3 install mysqlclient xgboost +sudo /databricks/python3/bin/pip3 install optuna joblib joblibspark + +if [[ $DB_IS_DRIVER = "TRUE" ]]; then + # create optuna database and study + sudo mysql -u $OPTUNA_USER -p$OPTUNA_PASSWORD -e "CREATE DATABASE IF NOT EXISTS optuna;" +fi +set +x diff --git a/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/start_cluster.sh b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/start_cluster.sh new file mode 100755 index 00000000..998ad7e3 --- /dev/null +++ b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/databricks/start_cluster.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# Copyright (c) 2024, NVIDIA CORPORATION. + +if [[ -z ${INIT_PATH} ]]; then + echo "Please export INIT_PATH per README.md" + exit 1 +fi + +json_config=$(cat <\n", + "\n", + "# Distributed Hyperparameter Tuning: Optuna + Spark Dataframes\n", + "\n", + "\n", + "This demo demonstrates distributed hyperparameter tuning for XGBoost using Spark Dataframes. \n", + "We implement best practices to precompute data and maximize computations on the GPU. \n", + "\n", + "Reference: https://forecastegy.com/posts/xgboost-hyperparameter-tuning-with-optuna/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note:\n", + "Before running, please make sure you've followed the relevant [setup instructions](../README.md) for your environment (standalone or databricks).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Iterable, List, Dict, Optional, Union, Sequence, Any\n", + "import math\n", + "import os\n", + "import requests\n", + "import pandas as pd\n", + "import optuna\n", + "from optuna.samplers import TPESampler\n", + "import xgboost as xgb\n", + "from pyspark.sql import SparkSession, DataFrame\n", + "from pyspark import TaskContext, SparkConf\n", + "from pyspark.sql.types import StructType, StructField, DoubleType, IntegerType, StringType, BooleanType" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download the dataset\n", + "\n", + "We'll use the [red wine quality dataset](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv) to regress wine quality based on features such as acidity, sugar content, etc. \n", + "\n", + "**Note**: This example uses a small dataset for demonstration purposes. The performance advantages of distributed training are best realized with large datasets and computational workloads." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "cwd = os.getcwd()\n", + "os.mkdir(os.path.join(cwd, \"data\")) if not os.path.exists(os.path.join(cwd, \"data\")) else None\n", + "filepath = os.path.join(cwd, \"data\", \"winequality-red.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File downloaded and saved to /home/rishic/Code/myforks/spark-rapids-examples/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/data/winequality-red.csv\n" + ] + } + ], + "source": [ + "url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n", + "\n", + "response = requests.get(url)\n", + "if response.status_code == 200:\n", + " with open(filepath, \"wb\") as f:\n", + " f.write(response.content)\n", + " print(f\"File downloaded and saved to {filepath}\")\n", + "else:\n", + " print(f\"Failed to download the file. Status code: {response.status_code}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1. Running Optuna locally" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "from cuml.metrics.regression import mean_squared_error\n", + "from cuml.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholquality
07.40.700.001.90.07611.034.00.99783.510.569.45
17.80.880.002.60.09825.067.00.99683.200.689.85
27.80.760.042.30.09215.054.00.99703.260.659.85
311.20.280.561.90.07517.060.00.99803.160.589.86
47.40.700.001.90.07611.034.00.99783.510.569.45
\n", + "
" + ], + "text/plain": [ + " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", + "0 7.4 0.70 0.00 1.9 0.076 \n", + "1 7.8 0.88 0.00 2.6 0.098 \n", + "2 7.8 0.76 0.04 2.3 0.092 \n", + "3 11.2 0.28 0.56 1.9 0.075 \n", + "4 7.4 0.70 0.00 1.9 0.076 \n", + "\n", + " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", + "0 11.0 34.0 0.9978 3.51 0.56 \n", + "1 25.0 67.0 0.9968 3.20 0.68 \n", + "2 15.0 54.0 0.9970 3.26 0.65 \n", + "3 17.0 60.0 0.9980 3.16 0.58 \n", + "4 11.0 34.0 0.9978 3.51 0.56 \n", + "\n", + " alcohol quality \n", + "0 9.4 5 \n", + "1 9.8 5 \n", + "2 9.8 5 \n", + "3 9.8 6 \n", + "4 9.4 5 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = cudf.read_csv(filepath, delimiter=\";\")\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare the train/validation sets. Precompute the Quantile DMatrix, which is used by histogram-based tree methods to save memory." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "X = data.iloc[:, :-1].values\n", + "y = data[\"quality\"].values\n", + "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "Xy_train_qdm = xgb.QuantileDMatrix(X_train, y_train) # Precompute Quantile DMatrix to avoid repeated quantization every trial." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Objective function\n", + "\n", + "We define the objective and a hyperparameter search space to optimize via the `trial.suggest_` methods. \n", + "\n", + "In each trial, new hyperparameters will be suggested based on previous results. See [optuna.trial.Trial](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.trial.Trial.html) API for a full list of functions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def objective(trial):\n", + " params = {\n", + " \"objective\": \"reg:squarederror\",\n", + " \"verbosity\": 0,\n", + " \"learning_rate\": trial.suggest_float(\"learning_rate\", 1e-3, 0.1, log=True),\n", + " \"max_depth\": trial.suggest_int(\"max_depth\", 1, 10),\n", + " \"subsample\": trial.suggest_float(\"subsample\", 0.05, 1.0),\n", + " \"colsample_bytree\": trial.suggest_float(\"colsample_bytree\", 0.05, 1.0),\n", + " \"min_child_weight\": trial.suggest_int(\"min_child_weight\", 1, 20),\n", + " \"tree_method\": \"gpu_hist\",\n", + " \"device\": \"cuda\",\n", + " }\n", + "\n", + " booster = xgb.train(params=params, dtrain=Xy_train_qdm, num_boost_round=trial.suggest_int(\"num_boost_round\", 100, 500))\n", + " predictions = booster.inplace_predict(X_val)\n", + " rmse = mean_squared_error(y_val, predictions, squared=False).get()\n", + " \n", + " return rmse " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the study and optimize. By default, the study results will be stored in memory." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:47:48,356] A new study created in memory with name: optuna-xgboost-local\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:47:48,724] Trial 0 finished with value: 0.6377619522504244 and parameters: {'learning_rate': 0.005611516415334507, 'max_depth': 10, 'subsample': 0.7453942447208348, 'colsample_bytree': 0.6187255599871848, 'min_child_weight': 4, 'num_boost_round': 162}. Best is trial 0 with value: 0.6377619522504244.\n", + "[I 2024-12-11 23:47:49,676] Trial 1 finished with value: 0.6703788974319568 and parameters: {'learning_rate': 0.0013066739238053278, 'max_depth': 9, 'subsample': 0.6210592611560484, 'colsample_bytree': 0.7226689489062432, 'min_child_weight': 1, 'num_boost_round': 488}. Best is trial 0 with value: 0.6377619522504244.\n", + "[I 2024-12-11 23:47:49,819] Trial 2 finished with value: 0.6181751362616256 and parameters: {'learning_rate': 0.04622589001020832, 'max_depth': 3, 'subsample': 0.2227337188467456, 'colsample_bytree': 0.22423428436076215, 'min_child_weight': 7, 'num_boost_round': 310}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:47:49,942] Trial 3 finished with value: 0.6698576232920956 and parameters: {'learning_rate': 0.007309539835912915, 'max_depth': 3, 'subsample': 0.6312602499862605, 'colsample_bytree': 0.18251916761943976, 'min_child_weight': 6, 'num_boost_round': 246}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:47:50,060] Trial 4 finished with value: 0.6704590546150145 and parameters: {'learning_rate': 0.008168455894760165, 'max_depth': 8, 'subsample': 0.23969009305044175, 'colsample_bytree': 0.538522716492931, 'min_child_weight': 12, 'num_boost_round': 118}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:47:50,214] Trial 5 finished with value: 0.6088806682631155 and parameters: {'learning_rate': 0.016409286730647923, 'max_depth': 2, 'subsample': 0.11179901333601554, 'colsample_bytree': 0.9514412603906666, 'min_child_weight': 20, 'num_boost_round': 424}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:47:50,289] Trial 6 finished with value: 0.7103495949713845 and parameters: {'learning_rate': 0.0040665633135147945, 'max_depth': 1, 'subsample': 0.700021375186549, 'colsample_bytree': 0.4681448690526212, 'min_child_weight': 3, 'num_boost_round': 298}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:47:50,693] Trial 7 finished with value: 0.7255199474722185 and parameters: {'learning_rate': 0.001171593739230706, 'max_depth': 10, 'subsample': 0.29584098252001606, 'colsample_bytree': 0.6793961701362828, 'min_child_weight': 7, 'num_boost_round': 308}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:47:50,858] Trial 8 finished with value: 0.6060010014477214 and parameters: {'learning_rate': 0.0123999678368461, 'max_depth': 2, 'subsample': 0.9711053963763306, 'colsample_bytree': 0.7863761821930588, 'min_child_weight': 19, 'num_boost_round': 458}. Best is trial 8 with value: 0.6060010014477214.\n", + "[I 2024-12-11 23:47:51,199] Trial 9 finished with value: 0.6292433375858283 and parameters: {'learning_rate': 0.015696396388661146, 'max_depth': 10, 'subsample': 0.13406787694932354, 'colsample_bytree': 0.23618371929818793, 'min_child_weight': 1, 'num_boost_round': 230}. Best is trial 8 with value: 0.6060010014477214.\n" + ] + } + ], + "source": [ + "study = optuna.create_study(study_name=\"optuna-xgboost-local\", sampler=TPESampler(seed=42))\n", + "study.optimize(objective, n_trials=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best RMSE: 0.6060010014477214\n", + "Best hyperparameters: {'learning_rate': 0.0123999678368461, 'max_depth': 2, 'subsample': 0.9711053963763306, 'colsample_bytree': 0.7863761821930588, 'min_child_weight': 19, 'num_boost_round': 458}\n" + ] + } + ], + "source": [ + "trial = study.best_trial\n", + "print(\"Best RMSE: \", trial.value)\n", + "print(\"Best hyperparameters: \", trial.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2. Distributed Optuna on Spark " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PySpark\n", + "\n", + "For standalone users, we need to create the Spark session with the Spark-Rapids plugin. For Databricks users, the Spark session will be preconfigured and this cell can be skipped." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Plugin file already exists. Skipping download.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "24/12/11 23:47:51 WARN Utils: Your hostname, cb4ae00-lcedt resolves to a loopback address: 127.0.1.1; using 10.110.47.100 instead (on interface eno1)\n", + "24/12/11 23:47:51 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address\n", + "24/12/11 23:47:52 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n", + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n", + "24/12/11 23:47:52 WARN RapidsPluginUtils: RAPIDS Accelerator 24.10.1 using cudf 24.10.0, private revision bd4e99e18e20234ee0c54f95f4b0bfce18a6255e\n", + "24/12/11 23:47:52 WARN RapidsPluginUtils: RAPIDS Accelerator is enabled, to disable GPU support set `spark.rapids.sql.enabled` to false.\n" + ] + } + ], + "source": [ + "def get_rapids_jar():\n", + " SPARK_RAPIDS_VERSION = \"24.10.1\"\n", + " rapids_jar = f\"rapids-4-spark_2.12-{SPARK_RAPIDS_VERSION}.jar\"\n", + " if not os.path.exists(rapids_jar):\n", + " print(\"Downloading Spark Rapids jar\")\n", + " url = f\"https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/{SPARK_RAPIDS_VERSION}/{rapids_jar}\"\n", + " response = requests.get(url)\n", + " if response.status_code == 200:\n", + " with open(rapids_jar, \"wb\") as f:\n", + " f.write(response.content)\n", + " print(f\"File '{rapids_jar}' downloaded and saved successfully.\")\n", + " else:\n", + " print(f\"Failed to download the plugin. Status code: {response.status_code}\")\n", + " else:\n", + " print(\"Plugin file already exists. Skipping download.\")\n", + " return rapids_jar\n", + "\n", + "def initialize_spark(rapids_jar: str):\n", + " import socket\n", + " hostname = socket.gethostname()\n", + " conda_env = os.environ.get(\"CONDA_PREFIX\")\n", + "\n", + " conf = SparkConf()\n", + " conf.setMaster(f\"spark://{hostname}:7077\") # Assuming master is on host and default port. \n", + " conf.set(\"spark.task.maxFailures\", \"1\")\n", + " conf.set(\"spark.task.resource.gpu.amount\", f\"{1/4}\") # Setting to 1/4 for single-node demo. In practice, set to 1. \n", + " conf.set(\"spark.executor.resource.gpu.amount\", \"1\")\n", + " conf.set(\"spark.sql.execution.arrow.pyspark.enabled\", \"true\")\n", + " conf.set(\"spark.pyspark.python\", f\"{conda_env}/bin/python\")\n", + " conf.set(\"spark.pyspark.driver.python\", f\"{conda_env}/bin/python\")\n", + " conf.set(\"spark.jars\", rapids_jar)\n", + " conf.set(\"spark.executorEnv.PYTHONPATH\", rapids_jar)\n", + " conf.set(\"spark.rapids.memory.gpu.minAllocFraction\", \"0.0001\")\n", + " conf.set(\"spark.plugins\", \"com.nvidia.spark.SQLPlugin\")\n", + " conf.set(\"spark.locality.wait\", \"0s\")\n", + " conf.set(\"spark.sql.cache.serializer\", \"com.nvidia.spark.ParquetCachedBatchSerializer\")\n", + " conf.set(\"spark.rapids.memory.gpu.pooling.enabled\", \"false\")\n", + " conf.set(\"spark.sql.execution.sortBeforeRepartition\", \"false\")\n", + " conf.set(\"spark.rapids.sql.format.parquet.reader.type\", \"MULTITHREADED\")\n", + " conf.set(\"spark.rapids.sql.format.parquet.multiThreadedRead.maxNumFilesParallel\", \"20\")\n", + " conf.set(\"spark.rapids.sql.multiThreadedRead.numThreads\", \"20\")\n", + " conf.set(\"spark.rapids.sql.python.gpu.enabled\", \"true\")\n", + " conf.set(\"spark.rapids.memory.pinnedPool.size\", \"2G\")\n", + " conf.set(\"spark.python.daemon.module\", \"rapids.daemon\")\n", + " conf.set(\"spark.rapids.sql.batchSizeBytes\", \"512m\")\n", + " conf.set(\"spark.sql.adaptive.enabled\", \"false\")\n", + " conf.set(\"spark.sql.files.maxPartitionBytes\", \"512m\")\n", + " conf.set(\"spark.rapids.sql.concurrentGpuTasks\", \"2\")\n", + " conf.set(\"spark.rapids.sql.explain\", \"NONE\")\n", + " \n", + " spark = SparkSession.builder.appName(\"optuna-spark-xgboost\").config(conf=conf).getOrCreate()\n", + " return spark\n", + "\n", + "if 'spark' not in globals():\n", + " rapids_jar = get_rapids_jar()\n", + " spark = initialize_spark(rapids_jar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Helper Class\n", + "\n", + "First we'll define a helper class. This will store the hyperparameters we want optimized in each trial, and easily convert that into a schema for the output dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "class OptunaParams:\n", + " def __init__(self):\n", + " self.hyperparameters = {}\n", + "\n", + " def add_categorical_param(self, name: str, choices: Sequence[Union[None, bool, int, float, str]]):\n", + " \"\"\"\n", + " Adds a categorical hyperparameter to be tuned via Optuna's trial.suggest_categorical().\n", + " \"\"\"\n", + " self.hyperparameters[name] = { \"type\": \"categorical\", \"choices\": choices }\n", + " \n", + " def add_int_param(self, name: str, low: int, high: int, step: int = 1, log: bool = False):\n", + " \"\"\"\n", + " Adds an integer hyperparameter to be tuned via Optuna's trial.suggest_int().\n", + " \"\"\"\n", + " self.hyperparameters[name] = { \"type\": \"int\", \"low\": low, \"high\": high, \"step\": step, \"log\": log }\n", + " \n", + " def add_float_param(self, name: str, low: float, high: float, step: Optional[float] = None, log: bool = False):\n", + " \"\"\"\n", + " Adds a float hyperparameter to be tuned via Optuna's trial.suggest_float().\n", + " \"\"\"\n", + " self.hyperparameters[name] = { \"type\": \"float\", \"low\": low, \"high\": high, \"step\": step,\"log\": log }\n", + "\n", + " def suggest_params(self, trial) -> Dict[str, Union[int, float, str, bool]]:\n", + " \"\"\"\n", + " Converts the hyperparameter space into a dictionary of suggested values in Optuna format,\n", + " to be called within the objective function.\n", + " \"\"\"\n", + " suggested_params = {}\n", + " for name, config in self.hyperparameters.items():\n", + " if config[\"type\"] == \"categorical\":\n", + " suggested_params[name] = trial.suggest_categorical(name, config[\"choices\"])\n", + " elif config[\"type\"] == \"int\":\n", + " suggested_params[name] = trial.suggest_int(\n", + " name, config[\"low\"], config[\"high\"], step=config[\"step\"], log=config[\"log\"]\n", + " )\n", + " elif config[\"type\"] == \"float\":\n", + " suggested_params[name] = trial.suggest_float(\n", + " name, config[\"low\"], config[\"high\"], step=config.get(\"step\", None), log=config[\"log\"]\n", + " )\n", + " return suggested_params\n", + "\n", + " def to_schema(self) -> StructType:\n", + " \"\"\"\n", + " Converts the hyperparameter space into a Spark StructType output schema.\n", + " \"\"\"\n", + " fields = []\n", + " for name, config in self.hyperparameters.items():\n", + " if config[\"type\"] == \"float\":\n", + " fields.append(StructField(name, DoubleType(), False))\n", + " elif config[\"type\"] == \"int\":\n", + " fields.append(StructField(name, IntegerType(), False))\n", + " elif config[\"type\"] == \"categorical\":\n", + " if isinstance(config[\"choices\"][0], str):\n", + " fields.append(StructField(name, StringType(), False))\n", + " elif isinstance(config[\"choices\"][0], bool):\n", + " fields.append(StructField(name, BooleanType(), False))\n", + " elif isinstance(config[\"choices\"][0], (int, float)):\n", + " fields.append(StructField(name, DoubleType(), False))\n", + " else:\n", + " raise ValueError(f\"Unsupported categorical type for field {name}\")\n", + " \n", + " # Study will also return the best achieved loss:\n", + " fields.append(StructField(\"best_value\", DoubleType(), False)) \n", + " return StructType(fields)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optuna Task\n", + "\n", + "This implementation demonstrates **Spark I/O**.\n", + "\n", + "This means that Spark will read the dataset and create a duplicate of the dataset for each worker (1 partition = 1 duplicate), then map the tuning task onto each partition. \n", + "In practice, this enables the code to be chained to other Dataframe operations (e.g. ETL stages) without the intermediate step of writing to DBFS, at the cost of some overhead during duplication.\n", + "\n", + "For the alternative implementation using **Worker I/O**, see the [JoblibSpark notebook](optuna-joblibspark.ipynb). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the task, each worker will:\n", + "1. Concatenate the pandas partition batches to form the dataset\n", + "2. Load the study from the MySQL storage backend\n", + "3. Optimize over the objective for the assigned number of trials, sending results back to the database after each iteration" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def task_udf(pdf_iter: Iterable[pd.DataFrame],\n", + " xgb_params: Dict[str, Any],\n", + " optuna_params: OptunaParams,\n", + " trials_per_task: List[int], \n", + " driver_ip: str,\n", + " study_name: str,\n", + " seed: int) -> Iterable[pd.DataFrame]:\n", + "\n", + " import cudf\n", + " from cuml.metrics.regression import mean_squared_error\n", + " from cuml.model_selection import train_test_split\n", + " \n", + " tc = TaskContext.get()\n", + " assert \"gpu\" in tc.resources(), \"GPU resource not found.\"\n", + " num_trials = trials_per_task[tc.partitionId()]\n", + "\n", + " df_list = []\n", + " for pdf in pdf_iter:\n", + " df_list.append(cudf.DataFrame.from_pandas(pdf))\n", + " \n", + " data = cudf.concat(df_list)\n", + " X = data.iloc[:, :-1].values\n", + " y = data[\"quality\"].values\n", + " X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "\n", + " tuning_max_bin = \"max_bin\" in optuna_params.hyperparameters\n", + " if not tuning_max_bin:\n", + " max_bin = xgb_params.get(\"max_bin\", 256)\n", + " # Precompute Quantile DMatrix to avoid repeated quantization every trial.\n", + " Xy_train_qdm = xgb.QuantileDMatrix(X_train, y_train, max_bin=max_bin)\n", + "\n", + " def objective(trial):\n", + " tuning_params = optuna_params.suggest_params(trial)\n", + " xgb_params.update(tuning_params)\n", + "\n", + " if tuning_max_bin:\n", + " # If tuning the max_bin param, we must recompute the QDM every trial, since the quantiles change.\n", + " if \"n_estimators\" not in xgb_params:\n", + " xgb_params[\"n_estimators\"] = 100 # Default value if not tuning.\n", + "\n", + " model = xgb.XGBRegressor(**xgb_params)\n", + " model.fit(X_train, y_train)\n", + " booster = model.get_booster()\n", + " else:\n", + " # Train the model with xgb.train() API using the precomputed QDM.\n", + " num_boost_round = xgb_params.get(\"n_estimators\", 100)\n", + " booster = xgb.train(params=xgb_params, dtrain=Xy_train_qdm, num_boost_round=num_boost_round)\n", + " \n", + " predictions = booster.inplace_predict(X_val)\n", + " rmse = mean_squared_error(y_val, predictions, squared=False).get()\n", + " \n", + " return rmse\n", + "\n", + " study = optuna.load_study(\n", + " study_name=study_name,\n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\",\n", + " sampler=TPESampler(seed=seed),\n", + " )\n", + "\n", + " print(f\"Running {num_trials} trials on partition {tc.partitionId()}.\")\n", + " study.optimize(objective, n_trials=num_trials)\n", + "\n", + " result_dict = {f\"{key}\": [value] for key, value in study.best_params.items()}\n", + " result_dict['best_value'] = [study.best_value]\n", + " \n", + " yield pd.DataFrame(result_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup and run the Optuna study" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the driver IP for the MySQL database. \n", + "- For standalone users, make sure you've followed the [database setup instructions](../README.md#setup-database-for-optuna). The database should be on 'localhost'. \n", + "- For databricks users, the database should already be setup on the driver node by the init script." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# check if we're running on databricks\n", + "on_databricks = os.environ.get(\"DATABRICKS_RUNTIME_VERSION\", False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MySQL database is hosted on localhost\n" + ] + } + ], + "source": [ + "if on_databricks:\n", + " driver_ip = spark.conf.get(\"spark.driver.host\")\n", + "else:\n", + " driver_ip = \"localhost\"\n", + "\n", + "print(f\"MySQL database is hosted on {driver_ip}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a new study, referencing the MySQL database as the storage backend." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:47:53,347] A new study created in RDB with name: optuna-xgboost-dataframe\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "study_name = \"optuna-xgboost-dataframe\"\n", + "seed = 42\n", + "\n", + "try:\n", + " # Delete the study if it already exists\n", + " optuna.delete_study(\n", + " study_name=study_name, \n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\"\n", + " )\n", + "except:\n", + " pass\n", + "\n", + "optuna.create_study(\n", + " study_name=study_name,\n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\",\n", + " sampler=TPESampler(seed=seed)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define the number of tasks, number of trials, and trials per task. \n", + "\n", + "**NOTE**: for standalone users running on a single worker, the 4 tasks will all be assigned to the same worker and will time-share the GPU for demonstration. In practice, you should set `spark.task.resource.gpu.amount=1` and set num_tasks to the number of workers in the cluster so that each task gets full access to the GPU." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def partition_trials(total_trials: int, total_tasks: int) -> List[int]:\n", + " base_size = total_trials // total_tasks\n", + " extra = total_trials % total_tasks\n", + " partitions = [base_size] * total_tasks\n", + " for i in range(extra):\n", + " partitions[i] += 1\n", + " \n", + " return partitions" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Trials per task: [25, 25, 25, 25]\n" + ] + } + ], + "source": [ + "num_tasks = 4\n", + "num_trials = 100\n", + "trials_per_task = partition_trials(num_trials, num_tasks)\n", + "print(f\"Trials per task: {trials_per_task}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define params\n", + "Define the XGBoost model params and the hyperparams for Optuna to tune. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Keep these params consistent:\n", + "xgb_params = {\n", + " \"objective\": \"reg:squarederror\",\n", + " \"verbosity\": 0,\n", + " \"tree_method\": \"gpu_hist\",\n", + " \"device\": \"cuda\",\n", + " \"seed\": seed,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Tune these params:\n", + "hyperparams = OptunaParams()\n", + "hyperparams.add_int_param(\"n_estimators\", low=100, high=500)\n", + "hyperparams.add_float_param(\"learning_rate\", low=1e-3, high=0.1, log=True)\n", + "hyperparams.add_int_param(\"max_depth\", low=1, high=10)\n", + "hyperparams.add_float_param(\"subsample\", low=0.05, high=1.0)\n", + "hyperparams.add_float_param(\"colsample_bytree\", low=0.05, high=1.0)\n", + "hyperparams.add_int_param(\"min_child_weight\", low=1, high=20)\n", + "\n", + "out_schema = hyperparams.to_schema()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll also define the following helper function, which will create duplicates of the dataframe held in separate partitions." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def coalesce_tree_union(df: DataFrame, num_duplicates: int):\n", + " \"\"\"\n", + " Coalesce the DataFrame to a single partition and recursively self-union to create duplicates.\n", + " \"\"\"\n", + " input_df = df.coalesce(1).cache()\n", + " current_df = input_df\n", + " \n", + " if num_duplicates <= 1:\n", + " return current_df\n", + "\n", + " recursions = int(math.log(num_duplicates, 2))\n", + " remainder = num_duplicates - 2 ** recursions\n", + "\n", + " for _ in range(recursions):\n", + " current_df = current_df.union(current_df)\n", + "\n", + " for _ in range(remainder):\n", + " current_df = current_df.union(input_df)\n", + " \n", + " return current_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load dataset\n", + "\n", + "Read the data from the local directory with Spark and then duplicate it to prepare to run the task." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "if on_databricks:\n", + " # once the dataset is in dbfs, databricks appends \"dbfs:\" to the filepath automatically\n", + " filepath = '/FileStore/optuna-data/winequality-red.csv'\n", + "else:\n", + " cwd = os.getcwd()\n", + " filepath = os.path.join(cwd, \"data\", \"winequality-red.csv\")\n", + "\n", + "in_schema = StructType([\n", + " StructField(\"fixed acidity\", DoubleType(), True),\n", + " StructField(\"volatile acidity\", DoubleType(), True),\n", + " StructField(\"citric acid\", DoubleType(), True),\n", + " StructField(\"residual sugar\", DoubleType(), True),\n", + " StructField(\"chlorides\", DoubleType(), True),\n", + " StructField(\"free sulfur dioxide\", DoubleType(), True),\n", + " StructField(\"total sulfur dioxide\", DoubleType(), True),\n", + " StructField(\"density\", DoubleType(), True),\n", + " StructField(\"pH\", DoubleType(), True),\n", + " StructField(\"sulphates\", DoubleType(), True),\n", + " StructField(\"alcohol\", DoubleType(), True),\n", + " StructField(\"quality\", IntegerType(), True)\n", + "])\n", + "\n", + "data_df = spark.read.csv(filepath, header=True, schema=in_schema, sep=\";\")\n", + "data_df = coalesce_tree_union(data_df, num_duplicates=num_tasks) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the study\n", + "\n", + "Map the Optuna task onto the dataframe and collect the results (it might take a few minutes)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "result_df = data_df.mapInPandas(lambda pdf_iter: \n", + " task_udf(pdf_iter,\n", + " xgb_params=xgb_params,\n", + " optuna_params=hyperparams,\n", + " trials_per_task=trials_per_task,\n", + " driver_ip=driver_ip,\n", + " study_name=study_name,\n", + " seed=seed),\n", + " schema=out_schema).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best parameters: {'n_estimators': 419.0, 'learning_rate': 0.015039610889407229, 'max_depth': 10.0, 'subsample': 0.6630214978050138, 'colsample_bytree': 0.8524338650689898, 'min_child_weight': 2.0}\n", + "Best value: 0.533100375625104\n" + ] + } + ], + "source": [ + "results = result_df.iloc[0].to_dict()\n", + "best_value = results.pop(\"best_value\")\n", + "\n", + "print(f\"Best parameters: {results}\")\n", + "print(f\"Best value: {best_value}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "optuna-spark", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/optuna-joblibspark.ipynb b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/optuna-joblibspark.ipynb new file mode 100644 index 00000000..ffb468f5 --- /dev/null +++ b/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/optuna-joblibspark.ipynb @@ -0,0 +1,868 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# Copyright (c) 2024, NVIDIA CORPORATION.\n", + "#\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "#\n", + "# http://www.apache.org/licenses/LICENSE-2.0\n", + "#\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License.\n", + "#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# Distributed Hyperparameter Tuning: Optuna + JoblibSpark\n", + "\n", + "\n", + "This demo demonstrates distributed hyperparameter tuning for XGBoost using the [JoblibSpark backend](https://github.com/joblib/joblib-spark), building on this [example from Databricks](https://docs.databricks.com/en/machine-learning/automl-hyperparam-tuning/optuna.html). \n", + "We implement best practices to precompute data and maximize computations on the GPU. \n", + "\n", + "\n", + "\n", + "Reference: https://forecastegy.com/posts/xgboost-hyperparameter-tuning-with-optuna/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note:\n", + "Before running, please make sure you've followed the relevant [setup instructions](../README.md) for your environment (standalone or databricks).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List\n", + "import os\n", + "import requests\n", + "import joblib\n", + "from joblibspark import register_spark\n", + "import optuna\n", + "from optuna.samplers import TPESampler\n", + "import xgboost as xgb\n", + "from pyspark.sql import SparkSession\n", + "from pyspark import TaskContext, SparkConf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download the dataset\n", + "\n", + "We'll use the [red wine quality dataset](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv) to regress wine quality based on features such as acidity, sugar content, etc. \n", + "\n", + "**Note**: This example uses a small dataset for demonstration purposes. The performance advantages of distributed training are best realized with large datasets and computational workloads." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "cwd = os.getcwd()\n", + "os.mkdir(os.path.join(cwd, \"data\")) if not os.path.exists(os.path.join(cwd, \"data\")) else None\n", + "filepath = os.path.join(cwd, \"data\", \"winequality-red.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File downloaded and saved to /home/rishic/Code/myforks/spark-rapids-examples/examples/ML+DL-Examples/Optuna-Spark/optuna-examples/data/winequality-red.csv\n" + ] + } + ], + "source": [ + "url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n", + "\n", + "response = requests.get(url)\n", + "if response.status_code == 200:\n", + " with open(filepath, \"wb\") as f:\n", + " f.write(response.content)\n", + " print(f\"File downloaded and saved to {filepath}\")\n", + "else:\n", + " print(f\"Failed to download the file. Status code: {response.status_code}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1. Running Optuna locally" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "from cuml.metrics.regression import mean_squared_error\n", + "from cuml.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholquality
07.40.700.001.90.07611.034.00.99783.510.569.45
17.80.880.002.60.09825.067.00.99683.200.689.85
27.80.760.042.30.09215.054.00.99703.260.659.85
311.20.280.561.90.07517.060.00.99803.160.589.86
47.40.700.001.90.07611.034.00.99783.510.569.45
\n", + "
" + ], + "text/plain": [ + " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", + "0 7.4 0.70 0.00 1.9 0.076 \n", + "1 7.8 0.88 0.00 2.6 0.098 \n", + "2 7.8 0.76 0.04 2.3 0.092 \n", + "3 11.2 0.28 0.56 1.9 0.075 \n", + "4 7.4 0.70 0.00 1.9 0.076 \n", + "\n", + " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", + "0 11.0 34.0 0.9978 3.51 0.56 \n", + "1 25.0 67.0 0.9968 3.20 0.68 \n", + "2 15.0 54.0 0.9970 3.26 0.65 \n", + "3 17.0 60.0 0.9980 3.16 0.58 \n", + "4 11.0 34.0 0.9978 3.51 0.56 \n", + "\n", + " alcohol quality \n", + "0 9.4 5 \n", + "1 9.8 5 \n", + "2 9.8 5 \n", + "3 9.8 6 \n", + "4 9.4 5 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = cudf.read_csv(filepath, delimiter=\";\")\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare the train/validation sets. Precompute the Quantile DMatrix, which is used by histogram-based tree methods to save memory." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "X = data.iloc[:, :-1].values\n", + "y = data[\"quality\"].values\n", + "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "Xy_train_qdm = xgb.QuantileDMatrix(X_train, y_train) # Precompute Quantile DMatrix to avoid repeated quantization every trial." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Objective function\n", + "\n", + "We define the objective and a hyperparameter search space to optimize via the `trial.suggest_` methods. \n", + "\n", + "In each trial, new hyperparameters will be suggested based on previous results. See [optuna.trial.Trial](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.trial.Trial.html) API for a full list of functions." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def objective(trial):\n", + " params = {\n", + " \"objective\": \"reg:squarederror\",\n", + " \"verbosity\": 0,\n", + " \"learning_rate\": trial.suggest_float(\"learning_rate\", 1e-3, 0.1, log=True),\n", + " \"max_depth\": trial.suggest_int(\"max_depth\", 1, 10),\n", + " \"subsample\": trial.suggest_float(\"subsample\", 0.05, 1.0),\n", + " \"colsample_bytree\": trial.suggest_float(\"colsample_bytree\", 0.05, 1.0),\n", + " \"min_child_weight\": trial.suggest_int(\"min_child_weight\", 1, 20),\n", + " \"tree_method\": \"gpu_hist\",\n", + " \"device\": \"cuda\",\n", + " }\n", + "\n", + " booster = xgb.train(params=params, dtrain=Xy_train_qdm, num_boost_round=trial.suggest_int(\"num_boost_round\", 100, 500))\n", + " predictions = booster.inplace_predict(X_val)\n", + " rmse = mean_squared_error(y_val, predictions, squared=False).get()\n", + " \n", + " return rmse " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the study and optimize. By default, the study results will be stored in memory." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:42:09,341] A new study created in memory with name: optuna-xgboost-local\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:42:09,715] Trial 0 finished with value: 0.6377619522504244 and parameters: {'learning_rate': 0.005611516415334507, 'max_depth': 10, 'subsample': 0.7453942447208348, 'colsample_bytree': 0.6187255599871848, 'min_child_weight': 4, 'num_boost_round': 162}. Best is trial 0 with value: 0.6377619522504244.\n", + "[I 2024-12-11 23:42:10,666] Trial 1 finished with value: 0.6703788974319568 and parameters: {'learning_rate': 0.0013066739238053278, 'max_depth': 9, 'subsample': 0.6210592611560484, 'colsample_bytree': 0.7226689489062432, 'min_child_weight': 1, 'num_boost_round': 488}. Best is trial 0 with value: 0.6377619522504244.\n", + "[I 2024-12-11 23:42:10,806] Trial 2 finished with value: 0.6181751362616256 and parameters: {'learning_rate': 0.04622589001020832, 'max_depth': 3, 'subsample': 0.2227337188467456, 'colsample_bytree': 0.22423428436076215, 'min_child_weight': 7, 'num_boost_round': 310}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:42:10,922] Trial 3 finished with value: 0.6698576232920956 and parameters: {'learning_rate': 0.007309539835912915, 'max_depth': 3, 'subsample': 0.6312602499862605, 'colsample_bytree': 0.18251916761943976, 'min_child_weight': 6, 'num_boost_round': 246}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:42:11,039] Trial 4 finished with value: 0.6704590546150145 and parameters: {'learning_rate': 0.008168455894760165, 'max_depth': 8, 'subsample': 0.23969009305044175, 'colsample_bytree': 0.538522716492931, 'min_child_weight': 12, 'num_boost_round': 118}. Best is trial 2 with value: 0.6181751362616256.\n", + "[I 2024-12-11 23:42:11,191] Trial 5 finished with value: 0.6088806682631155 and parameters: {'learning_rate': 0.016409286730647923, 'max_depth': 2, 'subsample': 0.11179901333601554, 'colsample_bytree': 0.9514412603906666, 'min_child_weight': 20, 'num_boost_round': 424}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:42:11,266] Trial 6 finished with value: 0.7103495949713845 and parameters: {'learning_rate': 0.0040665633135147945, 'max_depth': 1, 'subsample': 0.700021375186549, 'colsample_bytree': 0.4681448690526212, 'min_child_weight': 3, 'num_boost_round': 298}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:42:11,666] Trial 7 finished with value: 0.7255199474722185 and parameters: {'learning_rate': 0.001171593739230706, 'max_depth': 10, 'subsample': 0.29584098252001606, 'colsample_bytree': 0.6793961701362828, 'min_child_weight': 7, 'num_boost_round': 308}. Best is trial 5 with value: 0.6088806682631155.\n", + "[I 2024-12-11 23:42:11,829] Trial 8 finished with value: 0.6060010014477214 and parameters: {'learning_rate': 0.0123999678368461, 'max_depth': 2, 'subsample': 0.9711053963763306, 'colsample_bytree': 0.7863761821930588, 'min_child_weight': 19, 'num_boost_round': 458}. Best is trial 8 with value: 0.6060010014477214.\n", + "[I 2024-12-11 23:42:12,168] Trial 9 finished with value: 0.6292433375858283 and parameters: {'learning_rate': 0.015696396388661146, 'max_depth': 10, 'subsample': 0.13406787694932354, 'colsample_bytree': 0.23618371929818793, 'min_child_weight': 1, 'num_boost_round': 230}. Best is trial 8 with value: 0.6060010014477214.\n" + ] + } + ], + "source": [ + "study = optuna.create_study(study_name=\"optuna-xgboost-local\", sampler=TPESampler(seed=42))\n", + "study.optimize(objective, n_trials=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best RMSE: 0.6060010014477214\n", + "Best hyperparameters: {'learning_rate': 0.0123999678368461, 'max_depth': 2, 'subsample': 0.9711053963763306, 'colsample_bytree': 0.7863761821930588, 'min_child_weight': 19, 'num_boost_round': 458}\n" + ] + } + ], + "source": [ + "trial = study.best_trial\n", + "print(\"Best RMSE: \", trial.value)\n", + "print(\"Best hyperparameters: \", trial.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2. Distributed Optuna on Spark " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PySpark\n", + "\n", + "For standalone users, we need to create the Spark session. For Databricks users, the Spark session will be preconfigured." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "24/12/11 23:42:12 WARN Utils: Your hostname, cb4ae00-lcedt resolves to a loopback address: 127.0.1.1; using 10.110.47.100 instead (on interface eno1)\n", + "24/12/11 23:42:12 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address\n", + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n", + "24/12/11 23:42:13 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + } + ], + "source": [ + "def initialize_spark():\n", + " import socket\n", + " hostname = socket.gethostname()\n", + " conda_env = os.environ.get(\"CONDA_PREFIX\")\n", + "\n", + " conf = SparkConf()\n", + " conf.setMaster(f\"spark://{hostname}:7077\") # Assuming master is on host and default port. \n", + " conf.set(\"spark.task.maxFailures\", \"1\")\n", + " conf.set(\"spark.task.resource.gpu.amount\", \"1\")\n", + " conf.set(\"spark.executor.resource.gpu.amount\", \"1\")\n", + " conf.set(\"spark.pyspark.python\", f\"{conda_env}/bin/python\")\n", + " conf.set(\"spark.pyspark.driver.python\", f\"{conda_env}/bin/python\")\n", + " \n", + " spark = SparkSession.builder.appName(\"optuna-joblibspark-xgboost\").config(conf=conf).getOrCreate()\n", + " return spark\n", + "\n", + "if 'spark' not in globals():\n", + " spark = initialize_spark()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optuna Task\n", + "\n", + "This implementation demonstrates **Worker I/O**. \n", + "\n", + "This means that each worker will read the full dataset from the filepath rather than passing the data in a dataframe. \n", + "In practice, this requires the dataset to be written to a distributed file system accessible to all workers prior to tuning. \n", + "\n", + "For the alternative implementation using **Spark I/O**, see the [Spark Dataframe notebook](optuna-dataframe.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the task, each worker will:\n", + "1. Read the dataset from the filepath\n", + "2. Load the study from the MySQL storage backend\n", + "3. Optimize over the objective for the assigned number of trials, sending results back to the database after each iteration\n", + "\n", + "Here we use Optuna's [Define-and-Run](https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/009_ask_and_tell.html#define-and-run) API, which allows us to predefine the hyperparameter space and pass it to the task." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def task(num_trials: int, xgb_params: dict, optuna_params: dict, driver_ip: str, study_name: str, seed: int, filepath: str):\n", + " import cudf\n", + " from cuml.metrics.regression import mean_squared_error\n", + " from cuml.model_selection import train_test_split\n", + "\n", + " tc = TaskContext.get()\n", + " assert \"gpu\" in tc.resources(), \"GPU resource not found.\"\n", + "\n", + " if filepath.startswith(\"/dbfs/\"):\n", + " # Check to ensure GPU direct storage is disabled for cuDF on databricks.\n", + " libcudf_policy = os.environ.get('LIBCUDF_CUFILE_POLICY')\n", + " if libcudf_policy != 'OFF':\n", + " raise RuntimeError(\"Set LIBCUDF_CUFILE_POLICY=OFF to read from DBFS with cuDF.\")\n", + " \n", + " data = cudf.read_csv(filepath, delimiter=\";\")\n", + " X = data.iloc[:, :-1].values\n", + " y = data[\"quality\"].values\n", + " X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=seed)\n", + "\n", + " tuning_max_bin = \"max_bin\" in optuna_params\n", + " if not tuning_max_bin:\n", + " max_bin = xgb_params.get(\"max_bin\", 256)\n", + " # Precompute Quantile DMatrix to avoid repeated quantization every trial.\n", + " Xy_train_qdm = xgb.QuantileDMatrix(X_train, y_train, max_bin=max_bin)\n", + "\n", + " study = optuna.load_study(\n", + " study_name=study_name,\n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\",\n", + " sampler=TPESampler(seed=seed),\n", + " )\n", + "\n", + " print(f\"Running {num_trials} trials on partition {tc.partitionId()}.\")\n", + "\n", + " ### Objective ###\n", + " for _ in range(num_trials):\n", + " trial = study.ask(optuna_params)\n", + " xgb_params.update(trial.params)\n", + "\n", + " if tuning_max_bin:\n", + " # If tuning the max_bin param, we must recompute the QDM every trial.\n", + " if \"n_estimators\" not in xgb_params:\n", + " xgb_params[\"n_estimators\"] = 100 # Default value if not tuning.\n", + "\n", + " model = xgb.XGBRegressor(**xgb_params)\n", + " model.fit(X_train, y_train)\n", + " booster = model.get_booster()\n", + " else:\n", + " # Train the model with xgb.train() API using the precomputed QDM.\n", + " num_boost_round = xgb_params.get(\"n_estimators\", 100)\n", + " booster = xgb.train(params=xgb_params, dtrain=Xy_train_qdm, num_boost_round=num_boost_round)\n", + " \n", + " # Perform in-place predictions on GPU using the booster.\n", + " predictions = booster.inplace_predict(X_val)\n", + " rmse = mean_squared_error(y_val, predictions, squared=False).get()\n", + " \n", + " study.tell(trial, rmse)\n", + "\n", + " return study.best_params, study.best_value" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# This will register the Spark Session with the Joblib Spark backend.\n", + "register_spark()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup and run the Optuna study" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the driver IP for the MySQL database. \n", + "- For standalone users, make sure you've followed the [database setup instructions](../README.md#setup-database-for-optuna). The database should be on 'localhost'. \n", + "- For databricks users, the database should already be setup on the driver node by the init script." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# check if we're running on databricks\n", + "on_databricks = os.environ.get(\"DATABRICKS_RUNTIME_VERSION\", False)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MySQL database is hosted on localhost\n" + ] + } + ], + "source": [ + "if on_databricks:\n", + " driver_ip = spark.conf.get(\"spark.driver.host\")\n", + "else:\n", + " driver_ip = \"localhost\"\n", + "\n", + "print(f\"MySQL database is hosted on {driver_ip}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a new study, referencing the MySQL database as the storage backend." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[I 2024-12-11 23:42:13,928] A new study created in RDB with name: optuna-xgboost-joblibspark\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "study_name = \"optuna-xgboost-joblibspark\"\n", + "seed = 42\n", + "\n", + "try:\n", + " # Delete the study if it already exists\n", + " optuna.delete_study(\n", + " study_name=study_name, \n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\"\n", + " )\n", + "except:\n", + " pass\n", + "\n", + "optuna.create_study(\n", + " study_name=study_name,\n", + " storage=f\"mysql://optuna_user:optuna_password@{driver_ip}/optuna\",\n", + " sampler=TPESampler(seed=seed)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define the number of tasks, number of trials, and trials per task. \n", + "\n", + "**NOTE**: for standalone users running on a single worker, the 4 tasks will all be assigned to the same worker and executed sequentially in this demonstration. This can easily be scaled up to run concurrently by adding more workers." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def partition_trials(total_trials: int, total_tasks: int) -> List[int]:\n", + " base_size = total_trials // total_tasks\n", + " extra = total_trials % total_tasks\n", + " partitions = [base_size] * total_tasks\n", + " for i in range(extra):\n", + " partitions[i] += 1\n", + " \n", + " return partitions" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Trials per task: [25, 25, 25, 25]\n" + ] + } + ], + "source": [ + "num_tasks = 4\n", + "num_trials = 100\n", + "trials_per_task = partition_trials(num_trials, num_tasks)\n", + "print(f\"Trials per task: {trials_per_task}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define params\n", + "Define the XGBoost model params and the hyperparams for Optuna to tune. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Keep these params consistent:\n", + "xgb_params = {\n", + " \"objective\": \"reg:squarederror\",\n", + " \"verbosity\": 0,\n", + " \"tree_method\": \"gpu_hist\",\n", + " \"device\": f\"cuda\",\n", + " \"seed\": seed,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Tune these params:\n", + "optuna_params = {\n", + " \"n_estimators\": optuna.distributions.IntDistribution(100, 500),\n", + " \"learning_rate\": optuna.distributions.FloatDistribution(1e-3, 0.1, log=True),\n", + " \"max_depth\": optuna.distributions.IntDistribution(1, 10),\n", + " \"subsample\": optuna.distributions.FloatDistribution(0.05, 1.0),\n", + " \"colsample_bytree\": optuna.distributions.FloatDistribution(0.05, 1.0),\n", + " \"min_child_weight\": optuna.distributions.IntDistribution(1, 20),\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**For Databricks**: we must download the dataset to DBFS so that all workers can access it." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "if on_databricks:\n", + " dbutils.fs.mkdirs(\"/FileStore/optuna-data\")\n", + " filepath = \"/dbfs/FileStore/optuna-data/winequality-red.csv\"\n", + " url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n", + "\n", + " response = requests.get(url)\n", + " if response.status_code == 200:\n", + " with open(filepath, \"wb\") as f:\n", + " f.write(response.content)\n", + " print(f\"File downloaded and saved to {filepath}\")\n", + " else:\n", + " print(f\"Failed to download the file. Status code: {response.status_code}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the study\n", + "\n", + "Run parallel threads to execute the Optuna task and collect the reuslts (it might take a few minutes)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/rishic/anaconda3/envs/optuna-spark/lib/python3.10/site-packages/joblibspark/backend.py:115: UserWarning: Spark version does not support stage-level scheduling.\n", + " warnings.warn(\"Spark version does not support stage-level scheduling.\")\n", + "/home/rishic/anaconda3/envs/optuna-spark/lib/python3.10/site-packages/joblibspark/backend.py:154: UserWarning: User-specified n_jobs (4) is greater than the max number of concurrent tasks (1) this cluster can run now.If dynamic allocation is enabled for the cluster, you might see more executors allocated.\n", + " warnings.warn(f\"User-specified n_jobs ({n_jobs}) is greater than the max number of \"\n", + " \r" + ] + } + ], + "source": [ + "with joblib.parallel_backend(\"spark\", n_jobs=num_tasks):\n", + " results = joblib.Parallel()(\n", + " joblib.delayed(task)(num_trials,\n", + " xgb_params,\n", + " optuna_params,\n", + " driver_ip,\n", + " study_name,\n", + " seed,\n", + " filepath) for num_trials in trials_per_task\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best parameters: {'n_estimators': 463, 'learning_rate': 0.05206124631137337, 'max_depth': 9, 'subsample': 0.7434942725744815, 'colsample_bytree': 0.877391644494205, 'min_child_weight': 4}\n", + "Best value: 0.5324732150787205\n" + ] + } + ], + "source": [ + "best_params = min(results, key=lambda x: x[1])[0]\n", + "best_value = min(results, key=lambda x: x[1])[1]\n", + "\n", + "print(f\"Best parameters: {best_params}\")\n", + "print(f\"Best value: {best_value}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "optuna-spark", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/ML+DL-Examples/Spark-Rapids-ML/pca/README.md b/examples/ML+DL-Examples/Spark-Rapids-ML/pca/README.md index 9de395c0..f66615b7 100644 --- a/examples/ML+DL-Examples/Spark-Rapids-ML/pca/README.md +++ b/examples/ML+DL-Examples/Spark-Rapids-ML/pca/README.md @@ -10,7 +10,7 @@ Please refer to the Spark-Rapids-ML [README](https://github.com/NVIDIA/spark-rap ## Download RAPIDS Jar from Maven Central Download the [Spark-Rapids plugin](https://nvidia.github.io/spark-rapids/docs/download.html#download-rapids-accelerator-for-apache-spark-v24081). -For Spark-RAPIDS-ML version 24.10, download the RAPIDS jar from Maven Central: [rapids-4-spark_2.12-24.10.0.jar](https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/24.10.0/rapids-4-spark_2.12-24.10.0.jar). +For Spark-RAPIDS-ML version 24.10.1, download the RAPIDS jar from Maven Central: [rapids-4-spark_2.12-24.10.1.jar](https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/24.10.1/rapids-4-spark_2.12-24.10.1.jar). ## Running the Notebooks diff --git a/examples/ML+DL-Examples/Spark-Rapids-ML/pca/notebooks/pca.ipynb b/examples/ML+DL-Examples/Spark-Rapids-ML/pca/notebooks/pca.ipynb index 9af1f9c3..55d34e7e 100644 --- a/examples/ML+DL-Examples/Spark-Rapids-ML/pca/notebooks/pca.ipynb +++ b/examples/ML+DL-Examples/Spark-Rapids-ML/pca/notebooks/pca.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -57,7 +57,7 @@ " import os\n", " import requests\n", "\n", - " SPARK_RAPIDS_VERSION = \"24.10.0\"\n", + " SPARK_RAPIDS_VERSION = \"24.10.1\"\n", " rapids_jar = f\"rapids-4-spark_2.12-{SPARK_RAPIDS_VERSION}.jar\"\n", " if not os.path.exists(rapids_jar):\n", " print(\"Downloading spark rapids jar\")\n",