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

[RFC] Benchmark scripts to detect performance regression #5142

Closed
hcho3 opened this issue Dec 20, 2019 · 6 comments
Closed

[RFC] Benchmark scripts to detect performance regression #5142

hcho3 opened this issue Dec 20, 2019 · 6 comments

Comments

@hcho3
Copy link
Collaborator

hcho3 commented Dec 20, 2019

One of the pain points I've observed in developing XGBoost is judging performance implication of a given code change. I believe that we should have a set of scripts that developers can easily run in order to obtain performance measurements. This will help us avoid introducing performance regressions (*). For now, developers will be asked to manually run the scripts, but I hope to obtain funding to run the benchmark as part of the CI.

In addition, we should have a set of tabular datasets that we'd use as reference. They would be "blessed" in that any proposed pull request should not introduce regression when running these datasets.

The scripts should collect the following:

  • Model evaluation: accuracy, AUC, logloss etc
  • Speed (run-time): local and distributed training
  • Memory consumption

@dmlc/xgboost-committer Now the question: should the benchmark be hosted in this repository or a separate repository (https://github.com/dmlc/xgboost-bench/)? My opinion is that it should be hosted separately as the benchmark has no dependency on the internals of the XGBoost codebase. Also see @RAMitchell's comment in #5126 (comment).

(*) "Regression" here was used in the sense of "a trend or shift toward a lower or less perfect state" (Merriam-Webster).

@hcho3 hcho3 changed the title [RFC] Benchmark scripts: where to host? [RFC] Benchmark scripts to detect performance regression Dec 20, 2019
@hcho3
Copy link
Collaborator Author

hcho3 commented Dec 20, 2019

@hcho3 hcho3 pinned this issue Dec 20, 2019
@terrytangyuan
Copy link
Member

terrytangyuan commented Dec 20, 2019

I agree that it should be hosted separately since the dependencies might be really heavy as the test suite expands in the future and it requires a bit of setup to work with distributed environments.

Although we could probably also maintain a minimal set of benchmark script in this repo if they are small enough that can be executed for each new commit so we can catch potential issues earlier during code reviews.

@hcho3
Copy link
Collaborator Author

hcho3 commented Dec 20, 2019

@terrytangyuan I like your suggestion of having a small benchmark to run for every commit.

@RAMitchell
Copy link
Member

I vote separate repository.

@trivialfis
Copy link
Member

trivialfis commented Dec 21, 2019

@terrytangyuan 's comment makes sense to me. Let's host it in bench repo then.

@hcho3
Copy link
Collaborator Author

hcho3 commented Dec 31, 2019

Closing now. The benchmark script will be maintained in https://github.com/dmlc/xgboost-bench/

@hcho3 hcho3 closed this as completed Dec 31, 2019
@trivialfis trivialfis unpinned this issue Dec 31, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Apr 2, 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