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

[train] Simplify ray.train.xgboost/lightgbm (3/n): Re-implement LightGBMTrainer as a lightweight DataParallelTrainer #43244

Merged
merged 24 commits into from Feb 23, 2024

Conversation

justinvyu
Copy link
Contributor

@justinvyu justinvyu commented Feb 17, 2024

Why are these changes needed?

This PR re-implements LightGBMTrainer as a DataParallelTrainer that does not use lightgbm_ray under the hood, in an effort to unify the trainer implementations and remove that external dependency.

This PR is the lightgbm counterpart to #42767. See that PR's description for details.

Related issue number

Checks

  • I've signed off every commit(by using the -s flag, i.e., git commit -s) in this PR.
  • I've run scripts/format.sh to lint the changes in this PR.
  • I've included any doc changes needed for https://docs.ray.io/en/master/.
    • I've added any new APIs to the API Reference. For example, if I added a
      method in Tune, I've added it in doc/source/tune/api/ under the
      corresponding .rst file.
  • I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
  • Testing Strategy
    • Unit tests
    • Release tests
    • This PR is not tested :(

Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Copy link
Contributor

@matthewdeng matthewdeng left a comment

Choose a reason for hiding this comment

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

Neato!

python/ray/train/_internal/data_config.py Outdated Show resolved Hide resolved
python/ray/train/lightgbm/config.py Outdated Show resolved Hide resolved
python/ray/train/lightgbm/lightgbm_trainer.py Show resolved Hide resolved
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Copy link
Member

@woshiyyya woshiyyya left a comment

Choose a reason for hiding this comment

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

LGTM : )

from ray.train.lightgbm.lightgbm_checkpoint import LightGBMCheckpoint
from ray.train.lightgbm.lightgbm_predictor import LightGBMPredictor
from ray.train.lightgbm.lightgbm_trainer import LightGBMTrainer

__all__ = [
"RayTrainReportCallback",
"LightGBMCheckpoint",
"LightGBMConfig",
Copy link
Member

Choose a reason for hiding this comment

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

nit: Are we exposing this LightGBMConfig as a public API? Seems no special logics in this config, but it's still an argument in the LightGBMTrainer.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, yeah there's not really a reason for a user to know about LightGBMConfig.

I was trying to keep the API consistent for LightGBMTrainer with all the other DataParallelTrainers that take in a backend config. So, LightGBMConfig would need to be public for it to be a constructor argument of v2.LightGBMTrainer.

Let me remove it from the public ray.train.lightgbm namespace for now while v2.LightGBMTrainer is still private.

Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Signed-off-by: Justin Yu <justinvyu@anyscale.com>
Copy link
Contributor

@matthewdeng matthewdeng left a comment

Choose a reason for hiding this comment

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


@justinvyu justinvyu merged commit 51275dc into ray-project:master Feb 23, 2024
8 of 9 checks passed
@justinvyu justinvyu deleted the simplify_lgbm branch February 23, 2024 18:49
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.

None yet

3 participants