Skip to content

Commit

Permalink
Add GPU support to NVFlare demo (#9552)
Browse files Browse the repository at this point in the history
  • Loading branch information
rongou authored Sep 6, 2023
1 parent 3b9e590 commit 0f35493
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 7 deletions.
6 changes: 3 additions & 3 deletions demo/nvflare/horizontal/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ shutdown server
## Training with GPUs

To demo with Federated Learning using GPUs, make sure your machine has at least 2 GPUs.
Build XGBoost with the federated learning plugin enabled along with CUDA, but with NCCL
turned off (see the [README](../../plugin/federated/README.md)).
Build XGBoost with the federated learning plugin enabled along with CUDA
(see the [README](../../plugin/federated/README.md)).

Modify `config/config_fed_client.json` and set `use_gpus` to `true`, then repeat the steps
Modify `../config/config_fed_client.json` and set `use_gpus` to `true`, then repeat the steps
above.
2 changes: 1 addition & 1 deletion demo/nvflare/horizontal/custom/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def _do_training(self, fl_ctx: FLContext):
dtest = xgb.DMatrix('agaricus.txt.test?format=libsvm')

# Specify parameters via map, definition are same as c++ version
param = {'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
param = {'tree_method': 'hist', 'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
if self._use_gpus:
self.log_info(fl_ctx, f'Training with GPU {rank}')
param['device'] = f"cuda:{rank}"
Expand Down
7 changes: 6 additions & 1 deletion demo/nvflare/vertical/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,9 @@ shutdown server

## Training with GPUs

Currently GPUs are not yet supported by vertical federated XGBoost.
To demo with Vertical Federated Learning using GPUs, make sure your machine has at least 2 GPUs.
Build XGBoost with the federated learning plugin enabled along with CUDA
(see the [README](../../plugin/federated/README.md)).

Modify `../config/config_fed_client.json` and set `use_gpus` to `true`, then repeat the steps
above.
6 changes: 4 additions & 2 deletions demo/nvflare/vertical/custom/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,15 @@ def _do_training(self, fl_ctx: FLContext):
'gamma': 1.0,
'max_depth': 8,
'min_child_weight': 100,
'tree_method': 'approx',
'tree_method': 'hist',
'grow_policy': 'depthwise',
'objective': 'binary:logistic',
'eval_metric': 'auc',
}
if self._use_gpus:
self.log_info(fl_ctx, 'GPUs are not currently supported by vertical federated XGBoost')
if self._use_gpus:
self.log_info(fl_ctx, f'Training with GPU {rank}')
param['device'] = f"cuda:{rank}"

# specify validations set to watch performance
watchlist = [(dtest, "eval"), (dtrain, "train")]
Expand Down

0 comments on commit 0f35493

Please sign in to comment.