|
1 | 1 | # TF Federated Aggregators Placement
|
2 | 2 |
|
3 |
| -| Status | (Proposed / Accepted / Implemented / Obsolete) | |
| 3 | +| Status | Proposed | |
4 | 4 | :-------------- |:---------------------------------------------------- |
|
5 |
| -| **RFC #** | [TF Federated Aggregators Placement](https://github.com/tensorflow/community/pull/NNN) (TODO update when you have community PR #)| |
| 5 | +| **RFC #** | https://github.com/tensorflow/community/pull/TODO | |
6 | 6 | | **Author(s) ** | Jason Mancuso ( [email protected]) |
|
7 | 7 | | **Sponsor ** | Michael Reneer ( [email protected]) |
|
8 |
| -| **Updated** | 2020-05-04 (TODO) | |
| 8 | +| **Updated** | 2020-05-04 | |
9 | 9 |
|
10 | 10 | ## Objective
|
11 | 11 |
|
12 | 12 | This document proposes adding an explicit `tff.AGGREGATORS` placement to the
|
13 |
| -Federated Core (FC) in TensorFlow Federated (TFF). This would allow users to express |
14 |
| -custom aggregation protocols directly in TFF without adding unnecessary |
15 |
| -assumptions about where aggregation functions must be placed and computed. |
| 13 | +Federated Core (FC) in TensorFlow Federated (TFF). This would lift the requirement |
| 14 | +that all aggregations be computed on `tff.SERVER`, while still allowing users to |
| 15 | +express custom aggregation logic using FC & TF. |
16 | 16 |
|
17 | 17 | ## Motivation
|
18 | 18 |
|
19 |
| -*Why this is a valuable problem to solve? What background information is needed |
20 |
| -to show how this design addresses the problem?* |
21 |
| - |
22 | 19 | When approaching federated learning with an eye for security or privacy, it is
|
23 | 20 | useful to divide federated computation into two categories: computations performing
|
24 | 21 | aggregations, and computations performing on-device computation. Security and
|
@@ -65,12 +62,6 @@ by working directly with federated values placed on `tff.AGGREGATORS`.
|
65 | 62 |
|
66 | 63 | ## Design Proposal
|
67 | 64 |
|
68 |
| -*This is the meat of the document, where you explain your proposal. If you have |
69 |
| -multiple alternatives, be sure to use sub-sections for better separation of the |
70 |
| -idea, and list pros/cons to each approach. If there are alternatives that you |
71 |
| -have eliminated, you should also list those here, and explain why you believe |
72 |
| -your chosen approach is superior. |
73 |
| - |
74 | 65 | Adding the `tff.AGGREGATORS` placement for federated types involves adding a new `Placement` and `PlacementLiteral`, and then extending the compiler to recognize federated values with this placement when computing intrinsics. The compiler generally recognizes separate intrinsics by placement; e.g., `tff.federated_value(value, placement)` is actually interpreted by the compiler as `federated_value_at_clients(value)` or `federated_value_at_server(value)`, depending on the provided `placement`. This means we we will want to add new intrinsics that correspond to `tff.AGGREGATORS`, e.g. `federated_value_at_aggregators`.
|
75 | 66 |
|
76 | 67 | Existing federated computation that will need modification fall into the two categories below:
|
@@ -109,7 +100,7 @@ We also briefly considered the name `tff.AGGREGATOR` instead of `tff.AGGREGATORS
|
109 | 100 | This is an additive improvement to the FC, so there should be no performance implications for existing functionality. TFF is designed to support this kind of addition with minimal overhead. New functionality could be less performant relative to current practices, but only from overhead inherent to adding a new node to a distributed computation.
|
110 | 101 |
|
111 | 102 | ### Dependencies
|
112 |
| -This change brings no new dependencies. Since this proposal adds a new federated type, any project that enforces limits based on the current federated types may have to be updated. We will work with the TFF team to identify any affected projects and limit any breaking changes. |
| 103 | +This change brings no new dependencies. Since this proposal adds a new federated type, any project that enforces limits based on the current federated types may need an update. We will work to identify any affected projects and limit breaking changes as much as possible. |
113 | 104 |
|
114 | 105 | ### Engineering Impact
|
115 | 106 | This code will likely bring marginal increases to build and test time, but changes to binary size should be negligible. Executor factories including a stack for the `tff.AGGREGATORS` placement will experience a nontrivial increase in startup time, but not all executor factories will need to include a stack for this placement.
|
|
0 commit comments