dmlc / dmlc/xgboost

[Breaking Change][jvm-package] Rewrite XGBoost JVM Package

Open
#10,415 1 comment 2 reactions 0 assignees View on GitHub
type: java-scala
Dominant language
C++
Stars
28.8k
Forks
8.9k
Avg merge
1d 12h
Merged PRs (30d)
54

Description

## Reason

The XGBoost JVM package is the Java language binding for the XGBoost library. It is supposed to be a lightweight, thin wrapper around XGBoost. However, the current XGBoost JVM implementation is quite heavy-weight. For example, it groups the dataset using RDD for ranking, implements ranking within the XGBoostRegressor, samples the dataset for training and testing, and zips the training and evaluation datasets, duplicates some code usage. All of these additional features make the XGBoost JVM codebase difficult to read and maintain. Additionally, it is missing support for the latest XGBoost parameters and does not properly handle dense/sparse data usage.

## Goal

- [x] Create a new XGBoostRanker for ranking problem.
- [x] Code reusing.
- [x] Support DART booster
- [x] Remove "grouping" for ranking problem.
- [x] Remove the trainTestRatio and its implementation
- [x] Remove "zip" train and eval dataset (add a new Boolean validation column to indicate if the instance is for training or for evaluating)
- [x] Catch up the latest parameters.
- [x] Add setter/getter for all parameters.
- [x] Support XGBoost style parameters when defining the parameters, (Like `final val baseScore = new DoubleParam(this, "base_score", "The initial `)
- [x] Support dense when the input is vector type
- [ ] Support sparse when the input is vector type
- [ ] Support array input for both CPU and GPU
- [ ] Support columnar input for CPU ???
- [x] Remove the way linking the xgboost4j/xgboost4j-spark to GPU
- [x] Use the existing fasterxml.jackson to handle the json.
- [x] Avoid repartition if the number of input partittions is equal to num_workers.
- [x] Fix surefire issue https://github.com/dmlc/xgboost/issues/10316
- [x] More scalastyle checking.
- [x] Remove xgboost4j-gpu, move the implemenation into xgboost4j-spark-gpu directly.
- [x] Remove the cudf dependency
- [x] Shade the xgboost4j/xgboost4j-spark into a single jar
- [ ] Shade the xgboost4j/xgboost4j-spark/xgboost4j-spark-gpu into a single jar
- [ ] https://github.com/dmlc/xgboost/issues/10387
- [x] Remove the RDD cache.
- [ ] Fix https://github.com/dmlc/xgboost/issues/10200
- [x] Fix https://github.com/dmlc/xgboost/issues/8294

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.