[mt] Support the quantile loss.#11917
Conversation
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
ab2ac7a to
efb1ff0
Compare
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
- 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.
55531cf to
57dda3a
Compare
There was a problem hiding this comment.
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.
|
cc @rongou |
ref #9043 .
todos: