Skip to content

[mt] Support the quantile loss.#11917

Merged
trivialfis merged 4 commits into
dmlc:masterfrom
trivialfis:mt-adaptive-tree
Jan 15, 2026
Merged

[mt] Support the quantile loss.#11917
trivialfis merged 4 commits into
dmlc:masterfrom
trivialfis:mt-adaptive-tree

Conversation

@trivialfis

@trivialfis trivialfis commented Jan 11, 2026

Copy link
Copy Markdown
Member

ref #9043 .

  • Support quantile regression with vector leaf.
  • Support mean absolute error.
  • Group intercept-related tests into a single module.
  • Support random forest for adaptive trees. Unify prediction cache update between CPU and GPU.

todos:

  • CPU implementation.
  • Refactor the tests.
  • Random forest.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements initial GPU support for quantile loss with multi-target trees (vector leaf). The changes enable the quantile regression objective to work with multi-output trees on GPU by refactoring the adaptive tree implementation and adding support for computing multiple quantiles per leaf node.

Changes:

  • Implements GPU support for quantile loss with vector leaf outputs by refactoring adaptive tree leaf update logic
  • Adds new segmented quantile computation functions that handle multiple quantiles per segment
  • Refactors namespace organization in adaptive objective files (cpu_impl and cuda_impl)

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
tests/cpp/tree/test_multi_target_tree_model.h New header declaring helper function for creating multi-target trees in tests
tests/cpp/tree/test_multi_target_tree_model.cc Refactored test tree creation to be reusable across test files
tests/cpp/objective/test_regression_obj.cc Updated test to use node indices instead of hardcoded values
tests/cpp/objective/test_quantile_obj_cpu.cc Added GPU test for quantile vector leaf functionality
tests/cpp/objective/test_quantile_obj.h Updated function signatures and added new test declaration
tests/cpp/objective/test_quantile_obj.cc Implemented new test for quantile vector leaf with multi-target trees
src/tree/updater_gpu_hist.cuh Modified to output node positions and added distributed/categorical checks
src/tree/updater_gpu_hist.cu Updated to pass position output parameter to multi-target tree updater
src/tree/multi_target_tree_model.cc Enhanced SetLeaves to support partial updates of existing trees
src/objective/quantile_obj.cu Added branching logic for multi-target vs single-target quantile updates
src/objective/adaptive.h Refactored into cpu_impl and cuda_impl namespaces, added vector alpha support
src/objective/adaptive.cu Implemented GPU support for computing multiple quantiles per leaf segment
src/objective/adaptive.cc Refactored into namespaces and added CPU checks for multi-target
src/gbm/gbtree.cc Relaxed multi-target check to allow GPU implementation
src/common/stats.cuh Added overloaded functions for computing multiple quantiles per segment
tests/python-gpu/test_gpu_multi_target.py Added test for quantile loss with GPU multi-target
python-package/xgboost/testing/updater.py Refactored imports to be more explicit
python-package/xgboost/testing/multi_target.py Implemented test for quantile regression with vector leaf

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/objective/adaptive.cu Outdated
Comment thread src/common/stats.cuh Outdated
Comment thread src/common/stats.cuh Outdated
Comment thread src/objective/adaptive.cc Outdated
Comment thread src/objective/adaptive.cc Outdated
Comment thread src/objective/adaptive.cu Outdated
Comment thread python-package/xgboost/testing/multi_target.py
Comment thread python-package/xgboost/testing/updater.py Outdated
Comment thread python-package/xgboost/testing/updater.py Outdated
@trivialfis trivialfis changed the title [wip][mt] Initial work on the quantile loss for GPU. [wip][mt] Initial work on the quantile loss. Jan 11, 2026
@trivialfis trivialfis closed this Jan 11, 2026
@trivialfis trivialfis reopened this Jan 11, 2026
@trivialfis
trivialfis requested a review from Copilot January 11, 2026 08:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/objective/adaptive.cu
@trivialfis trivialfis mentioned this pull request Jan 12, 2026
48 tasks
@trivialfis trivialfis changed the title [wip][mt] Initial work on the quantile loss. [mt] Initial work on the quantile loss. Jan 12, 2026
@trivialfis
trivialfis requested a review from Copilot January 12, 2026 10:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 34 out of 34 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread python-package/xgboost/testing/intercept.py Outdated
Comment thread python-package/xgboost/testing/intercept.py Outdated
Comment thread tests/cpp/objective/test_objective_helpers.h Outdated
Comment thread python-package/xgboost/testing/multi_target.py Outdated
Comment thread tests/cpp/objective/test_objective_helpers.h Outdated
@trivialfis trivialfis changed the title [mt] Initial work on the quantile loss. [wip][mt] Initial work on the quantile loss. Jan 13, 2026
@trivialfis
trivialfis requested a review from Copilot January 13, 2026 10:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 43 out of 43 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread include/xgboost/tree_updater.h Outdated
- Support quantile regression with vector leaf.
- Support mean absolute error.
- Group intercept-related tests into a single module.
- Support random forest for adaptive trees. Unify prediction cache update between CPU and GPU.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 44 out of 44 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread plugin/sycl/tree/updater_quantile_hist.h Outdated
Comment thread plugin/sycl/tree/updater_quantile_hist.cc Outdated
@trivialfis trivialfis changed the title [wip][mt] Initial work on the quantile loss. [mt] Support the quantile loss. Jan 13, 2026
@trivialfis

Copy link
Copy Markdown
Member Author

cc @rongou

@trivialfis
trivialfis merged commit 7fba1b6 into dmlc:master Jan 15, 2026
86 of 89 checks passed
@trivialfis
trivialfis deleted the mt-adaptive-tree branch January 15, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants