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

updater='grow_gpu_hist' produces unstable results on equivalent but not identical sparce matrices #3707

Closed
mxxun opened this issue Sep 17, 2018 · 8 comments

Comments

@mxxun
Copy link
Contributor

mxxun commented Sep 17, 2018

Here's a notebook with reproduction: xgboost-unstable-grow-gpu-hist-reproduction.zip

Here's the data: reproduction_data.zip

Does not reproduce on 0.72, but does reproduce on 0.80 and some pretty recent commit that I lost id of; I assume this reproduces on current master, but will edit after verifying.

@hcho3
Copy link
Collaborator

hcho3 commented Sep 17, 2018

Do you see the same problem with CPU hist?

@mxxun
Copy link
Contributor Author

mxxun commented Sep 18, 2018

No; grow_histmaker, grow_fast_histmaker, grow_local_histmaker, grow_colmaker and grow_gpu each give me identical results at those two datasets, and their 0th epoch merrors all match.
grow_skmaker is not stable even on the same dataset, although occasionally its 0th epoch matches with those above.
Incidentally, is there a complete list of updaters somewhere? Docs list some but not all cpu updaters and none of the gpu updaters.

@thvasilo
Copy link
Contributor

Incidentally, is there a complete list of updaters somewhere? Docs list some but not all cpu updaters and none of the gpu updaters.

Good point @mrgutkun, currently it's not clear what's the distinction between the updater and tree_method parameters.

@hcho3
Copy link
Collaborator

hcho3 commented Sep 28, 2018

@thvasilo The tree_method parameter is supposed to cover 90% of use cases. The updater parameter is an "expert" parameter that's less well documented. The documentations says

This is an advanced parameter that is usually set automatically, depending on some other parameters.

So usually it is sufficient to set tree_method.

@hcho3 hcho3 closed this as completed Sep 28, 2018
@hcho3 hcho3 reopened this Sep 28, 2018
@hcho3
Copy link
Collaborator

hcho3 commented Sep 28, 2018

Oops clicked wrong button.

@thvasilo
Copy link
Contributor

Thanks for the clarification @hcho3. Out of curiosity are there sanity checks in place that would stop/inform users of passing contradicting values to these parameters?

@hcho3
Copy link
Collaborator

hcho3 commented Nov 1, 2018

@thvasilo #3849 clarifies the behavior of tree_method and updater.

@trivialfis
Copy link
Member

Closing in favour of #5023

@lock lock bot locked as resolved and limited conversation to collaborators May 5, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants