-
Notifications
You must be signed in to change notification settings - Fork 907
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
New XGBoost strategy: cyclic training #2666
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be good to add some details about the difference between bagging and cyclic, and/or why a user would prefer to use one over the other. Otherwise it looks good!
@charlesbvll thanks for your suggestion and error-catch! I have offered an explanation of bagging and cyclic in readme in the later PR. The docstring has been updated. |
Issue
Description
The exiting bagging strategy for XGBoost cannot perform client-by-client (cyclic) training, although cyclic training is a popular FL fashion.
Proposal
This PR achieves cyclic training with two steps:
sample()
method ofclient_manager()
to fix the order of selected clientsfedxgb_cyclic
, and overrideconfigure_fit()
andconfigure_evaluate()
to do sequential client selection.This way, there is only one single client selected to participate in the training per round with the fashion of
client1-server-client2-server-clientN
.The trained local XGBoost trees will be passed to the next client as an initialised model for next round's boosting.