This directory contains a demo of Federated Learning using NVFlare.
To run the demo, first build XGBoost with the federated learning plugin enabled (see the README).
Install NVFlare (note that currently NVFlare only supports Python 3.8; for NVFlare 2.1.2 we also need to pin the protobuf package to 3.20.x to avoid protoc errors):
pip install nvflare protobuf==3.20.1Prepare the data:
./prepare_data.shStart the NVFlare federated server:
./poc/server/startup/start.shIn another terminal, start the first worker:
./poc/site-1/startup/start.shAnd the second worker:
./poc/site-2/startup/start.shThen start the admin CLI, using admin/admin as username/password:
./poc/admin/startup/fl_admin.shIn the admin CLI, run the following command:
submit_job hello-xgboostOnce the training finishes, the model file should be written into
./poc/site-1/run_1/test.model.json and ./poc/site-2/run_1/test.model.json
respectively.
Finally, shutdown everything from the admin CLI:
shutdown client
shutdown serverTo 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).
Modify config/config_fed_client.json and set use_gpus to true, then repeat the steps
above.