Skip to content

Commit a9d7432

Browse files
committed
update proposal header
1 parent 3eb663b commit a9d7432

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

rfcs/20200427-tff-aggregators-placement.md

+7-16
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
# TF Federated Aggregators Placement
22

3-
| Status | (Proposed / Accepted / Implemented / Obsolete) |
3+
| Status | Proposed |
44
:-------------- |:---------------------------------------------------- |
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 |
66
| **Author(s)** | Jason Mancuso ([email protected]) |
77
| **Sponsor** | Michael Reneer ([email protected]) |
8-
| **Updated** | 2020-05-04 (TODO) |
8+
| **Updated** | 2020-05-04 |
99

1010
## Objective
1111

1212
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.
1616

1717
## Motivation
1818

19-
*Why this is a valuable problem to solve? What background information is needed
20-
to show how this design addresses the problem?*
21-
2219
When approaching federated learning with an eye for security or privacy, it is
2320
useful to divide federated computation into two categories: computations performing
2421
aggregations, and computations performing on-device computation. Security and
@@ -65,12 +62,6 @@ by working directly with federated values placed on `tff.AGGREGATORS`.
6562

6663
## Design Proposal
6764

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-
7465
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`.
7566

7667
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
109100
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.
110101

111102
### 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.
113104

114105
### Engineering Impact
115106
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

Comments
 (0)