View source on GitHub
|
A tff.program.ReleaseManager that filters values before releasing them.
Inherits From: ReleaseManager
tff.program.FilteringReleaseManager(
release_manager: ReleaseManager[ReleasableStructure, Key],
filter_fn: Callable[[tuple[Union[str, int], ...]], bool]
)
A tff.program.FilteringReleaseManager is a utility for filtering values
before releasing the values and is used to release values from platform
storage to customer storage in a federated program.
Values are filtered using a filter_fn and released to the release_manager.
The filter_fn is a Callable that has a single parameter path and returns
a bool, and is used to filter values before they are released. A path is a
tuple of indices and/or keys which uniquely identifies the position of the
corresponding item in the value; path matches the expectations of the
tree library.
The filter_fn is applied to the items in the structure but not the structure
itself. If all the items in a structure are filtered out, then the structure
will be filtered out as well.
For example:
filtering_manager = tff.program.FilteringReleaseManager(
release_manager=...,
filter_fn=...,
)
value = {
'loss': 1.0,
'accuracy': 0.5,
}
await filtering_manager.release(value, ...)
If filter_fn is:
lambda _: Truethen the entire structure is released.lambda _: Falsethen nothing is released.lambda path: path == ('loss',)then{'loss': 1.0}is released.
Args | |
|---|---|
release_manager
|
A tff.program.ReleaseManager used to release values to.
|
filter_fn
|
A Callable used to filter values before they are released,
this function has a single parameter path and returns a bool.
|
Methods
release
release(
value, key
) -> Optional[Union[ReleasableStructure, type(_FILTERED_SUBTREE)]]
Releases value from a federated program.
| Args | |
|---|---|
value
|
A tff.program.ReleasableStructure to release.
|
key
|
A value used to reference the released value.
|
| Raises | |
|---|---|
NotFilterableError
|
If the value cannot be filtered.
|
View source on GitHub