-
Notifications
You must be signed in to change notification settings - Fork 176
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
Add CollaborativeOptimizer #215
Conversation
[example usage]
|
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.
The rationale for all logger.debug replacements is that we don't want to pollute the output of training scripts unless asked by the user. An alternative solution is to control the verbosity by an argument
Co-authored-by: Max Ryabinin <[email protected]>
Co-authored-by: Max Ryabinin <[email protected]>
Co-authored-by: Max Ryabinin <[email protected]>
…laborative_averager
min_refresh_period, max_refresh_period, default_refresh_period | ||
self.expected_drift_peers, self.expected_drift_rate = expected_drift_peers, expected_drift_rate | ||
self.averaging_timeout, self.metadata_expiration = averaging_timeout, metadata_expiration | ||
self.averager = TrainingAverager( |
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.
Maybe we should accept averager class in constructor or give a possibility to override averager in subclass?
I don't see an easy way to change averaging logic (e.g. average opt stats) without copypasting the whole class. Correct me if I'm wrong
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.
Good point, that might prove useful in subsequent research for secure/robust averagers
/* Added averager_cls parameter that allows user to override the averager class */
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.
Conversation log with @nevec : we have instead opted for a _make_averager method for more versatility
This PR introduces necessary objects for collaborative training so that client code for participation is clean and concise (like default train loop).