Lazy Async Aggregation
Issue
Aggregation of potentially async results.
Description
Flower server implementations may choose to aggregate results as soon as they are received.
The current aggregations block computation until the total number of clients necessary to compute the new parameters or the total number of samples has been reached.
Related issues/PRs
Proposal
A form of in-place aggregation that is mathematically equivalent but does not require pre-computing the total number of client samples within the round.
Explanation
The new aggregation method allows for no memory overhead over the memory requirements of a single client when using an amenable iterable implementation.
Similarly, it permits overlapping client training with aggregation time, thus potentially reducing the overhead of server aggregation to zero if the server is capable of aggregating clients as soon as they arrive.
Checklist
- [x] Implement proposed change
- [ ] Write tests
- [ ] Update documentation
- [ ] Update the changelog entry below
- [x] Make CI checks pass
- [ ] Ping maintainers on Slack (channel
#contributions)