Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] xgb.cv() auc metric computation in v1.4.0 release with tree_method='gpu_hist' broken #6865

Closed
btong04 opened this issue Apr 15, 2021 · 3 comments · Fixed by #6866
Closed

Comments

@btong04
Copy link

btong04 commented Apr 15, 2021

Tested xgb.cv() method against various scoring metrics on both CPU and GPU for classification models. Using xgboost version 1.4.0 release from pip produced unexpected results with metric='auc'. Other metrics such as ['aucpr', 'logloss', 'map'] appears to be consistent.
xgb_1 4 0_release_auc_issues

Running the same code under xgboost version 1.3.3 produced consistent results for CPU/GPU scoring with metric='auc' as to be expected.
xgb_1 3 3_release_auc_okay

Attached is a notebook and sample data to reproduce the issue:
xgb_cv_v1.4.0_auc_metric_on_gpu_broken.zip

@trivialfis
Copy link
Member

trivialfis commented Apr 15, 2021

The cub::DeviceRadixSort is not stable nor reproducible.

@hcho3
Copy link
Collaborator

hcho3 commented Apr 15, 2021

@trivialfis According to https://groups.google.com/g/cub-users/c/1iXn3sVMEuA, the CUB's radix sort is stable.

@trivialfis
Copy link
Member

trivialfis commented Apr 15, 2021

For binary case (this issue), the result is different between runs, I narrowed it down to the Argsort. If radix sort is stable, then my guess is somewhere it uses floating point which generates instability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants