Releases: google-parfait/tensorflow-federated
Releases · google-parfait/tensorflow-federated
TensorFlow Federated 0.89.0
Release 0.89.0
Added
tff.StructType.items()
, this API makes it easier to iterate over
tff.StrucType
without having to deal with hard to discover and use
tff.structure.*
APIs.- The abstract class
DPTensorAggregator
and the childDPQuantileAggregator
(along with the factory class).DPQuantileAggregator
is currently a
skeleton; future CLs will implement the member functions. DPQuantileAggregator::AggregateTensors
performs either apush_back
or
reservoir sampling, depending on size of memberbuffer_
. The reservoir
sampling functionality is performed by::InsertWithReservoirSampling
.DPQuantileAggregator::MergeWith
copies as much data over from the other
aggregator'sbuffer_
until capacity is hit, then performs reservoir
sampling.tff.program.ComputationArg
, which is helpful when creating a federated
platform.
Removed
tff.types.tensorflow_to_type
, this function is no longer used.
TensorFlow Federated 0.88.0
Release 0.88.0
Added
tff.tensorflow.to_type
.- Added
pack_args_into_struct
andunpack_args_from_struct
to the public
API underframework
.
Deprecated
tff.types.tensorflow_to_type
, usetff.tensorflow.to_type
instead.
Changed
- Updated to use an environment-agnostic way to represent a sequence of data.
- Updated JAX computations and contexts to be able to handle sequence types.
- Moved
tff.types.structure_from_tensor_type_tree
and
tff.types.type_to_tf_tensor_specs
to thetff.tensorflow
package.
Removed
tff.framework.merge_cardinalities
tff.framework.CardinalityCarrying
tff.framework.CardinalityFreeDataDescriptor
tff.framework.CreateDataDescriptor
tff.framework.DataDescriptor
tff.framework.Ingestable
TensorFlow Federated 0.87.0
Release 0.87.0
Added
- Added an implementation of AdamW to
tff.learning.optimizers
.
Changed
- Support
None
gradients intff.learning.optimizers
. This mimics the
behavior oftf.keras.optimizers
- gradients that areNone
will be
skipped, and their corresponding optimizer output (e.g. momentum and
weights) will not be updated. - The behavior of
DPGroupingFederatedSum::Clamp
: it now sets negatives to 0.
Associated test code has been updated. Reason: sensitivity calculation for
DP noise was calibrated for non-negative values. - Change tutorials to use
tff.learning.optimizers
in conjunction with
tff.learning
computations. tff.simulation.datasets.TestClientData
only accepts dictionaries whose
leaf nodes are nottf.Tensor
s.
Fixed
- A bug where
tff.learning.optimizers.build_adafactor
would update its step
counter twice upon every invocation of.next()
. - A bug where tensor learning rates for
tff.learning.optimizers.build_sgdm
would fail with mixed dtype gradients. - A bug where different optimizers had different behavior on empty weights
structures. TFF optimizers now consistently accept and function as no-ops on
empty weight structures. - A bug where
tff.simulation.datasets.TestClientData.dataset_computation
yielded datasets of indeterminate shape.
Removed
tff.jax_computation
, usetff.jax.computation
instead.tff.profiler
, this API is not used.- Removed various stale tutorials.
- Removed
structure
fromtff.program.SavedModelFileReleaseManager
's
get_value
method parameters. - Removed support for
tf.keras.optimizers
intff.learning
.
TensorFlow Federated 0.86.0
Release 0.86.0
Added
tff.tensorflow.transform_args
andtff.tensorflow.transform_result
, these
functions are intended to be used when instantiating and execution context
in a TensorFlow environment.
Changed
- Replaced the
tensor
on theValue
protobuf with anarray
field and
updated the serialization logic to use this new field.
TensorFlow Federated 0.85.0
Release 0.85.0
Added
- The
dp_noise_mechanisms
header and source files: contains functions that
generatedifferential_privacy::LaplaceMechanism
or
differential_privacy::GaussianMechanism
, based upon privacy parameters and
norm bounds. Each of these functions return aDPHistogramBundle
struct,
which contains the mechanism, the threshold needed for DP open-domain
histograms, and a boolean indicating whether Laplace noise was used. - Added some TFF executor classes to the public API (CPPExecutorFactory,
ResourceManagingExecutorFactory, RemoteExecutor, RemoteExecutorGrpcStub). - Added support for
bfloat16
dtypes from theml_dtypes
package.
Fixed
- A bug where
tf.string
was mistakenly allowed as a dtype to
tff.types.TensorType
. This now must benp.str_
.
Changed
tff.Computation
andtff.framework.ConcreteComputation
to be able to
transform the arguments to the computation and result of the computation.DPClosedDomainHistogram::Report
andDPOpenDomainHistogram::Report
: they
both use theDPHistogramBundles
produced by theCreateDPHistogramBundle
function indp_noise_mechanisms
.DPGroupByFactory::CreateInternal
: whendelta
is not provided, check if
the right norm bounds are provided to compute L1 sensitivity (for the
Laplace mech).- CreateRemoteExecutorStack now allows the composing executor to be specified
and assigns client values to leaf executors such that all leaf executors
receive the same number of clients, except for potentially the last leaf
executor, which may receive fewer clients. - Allow
tff.learning.programs.train_model
to accept ashould_discard_round
function to decide whether a round should be discarded and retried.
Removed
tff.structure.to_container_recursive
, this should not be used externally.
TensorFlow Federated 0.84.0
Release 0.84.0
Added
- Added some TFF executor classes to the public API (
ComposingExecutor
,
ExecutorTestBase
,MockExecutor
,ThreadPool
). - Added some compiler transformation helper functions to the public API
(replace_intrinsics_with_bodies
,unique_name_generator
,
transform_preorder
,to_call_dominant
). - Added a method to get the number of checkpoints aggregated to the
CheckpointAggregator API. - The function
DPClosedDomainHistogram::IncrementDomainIndices
. It allows
calling code to iterate through the domain of composite keys (in a do-while
loop).
Changed
- Fixed a bug in
tff.jax.computation
that raised an error when the
computation had unused arguments. - Fixed a bug when using
tff.backends.xla
execution stack that raised errors
when single element structures were returned fromtff.jax.computation
wrapped methods. - Modified the model output release frequency to every 10 rounds and the final
round intff.learning.programs.train_model
. - Loosened the
kEpsilonThreshold
constant and updated the tests of
DPOpenDomainHistogram
accordingly. - The behavior of
DPClosedDomainHistogram::Report()
: it now produces an
aggregate for each possible combinations of keys. Those composite keys that
GroupByAggregator
did not already assign an aggregate to are assigned 0.
Future CL will add noise. - Modified
tff.learning.algorithms.build_weighted_fed_avg
to generate
different training graphs whenuse_experimental_simulation_loop=True
and
model_fn
is of typetff.learning.models.FunctionalModel
.
TensorFlow Federated 0.83.0
Release 0.83.0
Changed
- The
tff.learning.programs.train_model
program logic to save a deep copy of
the data source iterator within the program state. - The file-backed native program components to not flatten and unflatten
values.
Removed
- Unused functions from
tensorflow_utils
. - Serializing raw
tf.Tensor
values to theValue
protobuf. - Partial support for
dataclasses
.
TensorFlow Federated 0.82.0
Release 0.82.0
Added
- Add a serialized raw array content field to the Array proto.
- A function to
DPCompositeKeyCombiner
that allows retrieval of an ordinal.
Intended for use by the closed-domain DP histogram aggregation core. - Constants for invalid ordinals and default
l0_bound_
.
Changed
- How
DPCompositeKeyCombiner
handles invalidl0_bound_
values. - The default
l0_bound_
value inDPCompositeKeyCombiner
to new constant. - Organization of DP histogram code. Previously, open-domain histogram class +
factory class lived side-by-side indp_group_by_aggregator.h/cc
. Now split
intodp_open_domain_histogram.h/cc
anddp_group_by_factory.h/cc
, which
will ease future addition of code for closed-domain histogram. - Moved
tff.federated_secure_modular_sum
to the mapreduce backend, use
tff.backends.mapreduce.federated_secure_modular_sum
instead.
TensorFlow Federated 0.81.0
Release 0.81.0
Added
- A helper function to get a vector of strings for the elements of a tensor in
order to aid in formatting. - A field
string_val
to thetensor
proto to allow representing string
values explicitly.
Changed
- The format of the release notes (i.e.,
RELEASE.md
) to be based on
https://keepachangelog.com/en/1.1.0/. - Moved constraint on
linfinity_bound
fromDPGroupingFederatedSumFactory
toDPGroupByFactory
, because closed-domain histogram algorithm will use
DPGroupingFederatedSum
but not demand a positivelinfinity_bound
.
Removed
- The dependency on
semantic-version
. - The
tff.async_utils
package, useasyncio
instead.
TensorFlow Federated 0.80.0
Release 0.80.0
Breaking Changes
- Move the tools package to the root of the repository.
- Updated bazel to version 6.5.0.
- Updated rules_python to version 0.31.0.
- Deleted deprecated tff.learning.build_federated_evaluation, which was superseded by tff.learning.algorithms.build_fed_eval.