|  View source on GitHub | 
Aggregates value from tff.CLIENTS to tff.SERVER.
tff.federated_aggregate(
    value, zero, accumulate, merge, report
) -> tff.Value
This generalized aggregation function admits multi-layered architectures that involve one or more intermediate stages to handle scalable aggregation across a very large number of participants.
The multi-stage aggregation process is defined as follows:
- Clients are organized into groups. Within each group, a set of all the member constituents of - valuecontributed by clients in the group are first reduced using reduction operator- accumulatewith- zeroas the zero in the algebra. If members of- valueare of type- T, and- zero(the result of reducing an empty set) is of type- U, the reduction operator- accumulateused at this stage should be of type- (<U,T> -> U). The result of this stage is a set of items of type- U, one item for each group of clients.
- Next, the - U-typed items generated by the preceding stage are merged using the binary commutative associative operator- mergeof type- (<U,U> -> U). The result of this stage is a single top-level- Uthat emerges at the root of the hierarchy at the- tff.SERVER. Actual implementations may structure this step as a cascade of multiple layers.
- Finally, the - U-typed result of the reduction performed in the preceding stage is projected into the result value using- reportas the mapping function (for example, if the structures being merged consist of counters, this final step might include computing their ratios).
| Args | |
|---|---|
| value | A value of a TFF federated type placed at tff.CLIENTSto aggregate. | 
| zero | The zero of type Uin the algebra of reduction operators, as
described above. | 
| accumulate | The reduction operator to use in the first stage of the process.
If valueis of type{T}@CLIENTS, andzerois of typeU, this
operator should be of type(<U,T> -> U). | 
| merge | The reduction operator to employ in the second stage of the process.
Must be of type (<U,U> -> U), whereUis as defined above. | 
| report | The projection operator to use at the final stage of the process to
compute the final result of aggregation. If the intended result to be
returned by tff.federated_aggregateis of typeR@SERVER, this operator
must be of type(U -> R). | 
| Returns | |
|---|---|
| A representation on the tff.SERVERof the result of aggregatingvalueusing the multi-stage process described above. | 
| Raises | |
|---|---|
| TypeError | If the arguments are not of the types specified above. |