Releases: google-parfait/tensorflow-federated
Releases · google-parfait/tensorflow-federated
TensorFlow Federated 0.28.0
Release 0.28.0
Major Features and Improvements
- Updated tutorials to use
tff.learning.algorithms
API. - Asynchronous TFF execution contexts no longer assume a single global
cardinality; they concurrently invoke any computation for which concurrency
is requested.
Breaking Changes
- Removed
tff.learning.build_federated_averaging_process
; users should
migrate totff.learning.algorithms.build_weighted_fed_avg
.
Bug Fixes
- Clarified semantics for TFF-C++ multimachine
Dispose
,DisposeExecutor
,
and executor keying, to avoid raising exceptions and spamming logs in the
course of normal operation. - Fixed unsigned integer overflow for TFF-C++
max_concurrent_computation_calls
. - Normalizes on call-dominant form before attempting to compile to
MergeableCompForm
, removing spurious failures on dependent-aggregation
checking.
Known Bugs
- Serialization / deserialization of tf.data.Datasets yielding non-dense
tensors for multimachine runtime may encounter issues:tff.framework.deserialize_value
may fail to deserialize
tf.data.Datasets yielding RaggedTensors or SparseTensors.tff.framework.serialize_value
may fail to serialize tf.data.Datasets
yielding SparseTensors.
TensorFlow Federated 0.27.0
Release 0.27.0
Major Features and Improvements
- New Colab notebook illustrating how to use
DataBackend
to load remote datasets. - Added a CreateDataDescriptor helper function.
- Added a worker binary serving the TFF-C++ executor service.
Bug Fixes
- Fixed bug with intermediate aggregation and controller failures, causing hangs.
TensorFlow Federated 0.26.0
Release 0.26.0
Major Features and Improvements
- Updated TensorFlow to
2.9.1
. - Update pybind11 to
2.9.2
. - Re-enable cpp_fast_protos.
- Introduces container class to run coroutines in a dedicated thread, allowing
TFF’s synchronous execution interfaces to be used in conjunction with other
asyncio code. - Use latest TFF version in Colab notebook links.
- Rename the helper functions that create test
MeasuredProcess
es. - Add a compiler transform checking Tensorflow computations against list of
allowed ops. - Explicitly specify return types in the
program
package. - Adds convenience function for setting a local async CPP execution context.
- Move jax components into a non-experimental namespace.
Breaking Changes
- Switch compilation flag
_GLIBCXX_USE_CXX11_ABI
to1
.
TensorFlow Federated 0.25.0
Release 0.25.0
Major Features and Improvements
- Adds error message logging to TFF C++ execution context.
- Adds test coverage for C++ runtime with aggregators.
- Redefines 'workers going down with fixed clients per round' test.
- Add complete examples of using
DataBackend
with TFF comps. - Updated the MapReduceForm documentation to include the two additional secure
sum intrinsics. - tff.learning
- Relax the type check on LearningProcess from strictly SequenceType to
also allow structures of SequenceType.
- Relax the type check on LearningProcess from strictly SequenceType to
Breaking Changes
- Remove usage of
tff.test.TestCase
,tff.test.main()
, and delete
test_case
module. - Update test utility docstrings to use consistent vocabulary.
- Update to TensorFlow 2.9.0
- Rename up
compiler/test_utils
tocompiler/building_block_test_utils
. - Remove some unnecessary usage of
pytype: skip-file
. - Specify the
None
return type ofReleaseManager.release
. - Remove usage of deprecated numpy types.
- Replace depreciated
random_integers
withrandint
.
Bug Fixes
- Fix numpy warning.
TensorFlow Federated 0.24.0
Release 0.24.0
Major Features and Improvements
- Added
asyncio.run
call to metrics manager release calls to ensure
compatibility with a98b5ed. - Added an example and documentation for the Federated Program API.
- Improved
model_update_aggregator
to support structures with mixed floating dtypes. - Create a mirror of
tff.simulation.compose_dataset_computation_with_iterative_process
fortff.learning.templates.LearningProcess
. - Added logging of expected sequential computations to local TFF-C++ runtime.
Breaking Changes
- Moved asserts from
tff.test.TestCase
totff.test.*
as functions. - Removed
assert_type_assignable_from
function. - Moved
assert_nested_struct_eq
to thetype_conversions_test
module. - Removed
client_train_process
and fedavg_ds_loop comparisons.
Bug Fixes
- Fixed comparisons to enums in the benchmarks package.
- Fixed
async_utils.SharedAwaitable
exception raiser. - Fixed various lint errors.
TensorFlow Federated 0.23.0
Release 0.23.0
Major Features and Improvements
- Deprecated
tff.learning.build_federated_averaging_process
. - Added an API to convert
tf.keras.metrics.Metric
to a set of pure
tf.functions
.
Breaking Changes
- Renamed
ProgramStateManager.version
toProgramStateManager.get_versions
.
Bug Fixes
- Fixed the "datasets/" path in the working with TFF's ClientData tutorial.
TensorFlow Federated 0.22.0
Release 0.22.0
Major Features and Improvements
- Updated .bazelversion to
5.1.1
. - Updated the
tff.program
API to useasyncio
. - Exposed new APIs in the
tff.framework
package:tff.framework.CardinalitiesType
.tff.framework.PlacementLiteral
.tff.framework.merge_cardinalities
.
tff.analytics
- Added new
analytic_gauss_stddev
API.
- Added new
Breaking Changes
- Renamed
ProgramStateManager.version
toProgramStateManager.get_versions
.
Bug Fixes
- Fixed some Python lint errors related to linting Python 3.9.
- Cleaned up stale TODOs throughout the codebase.
Known Bugs
- Version 0.21.0 currently fails to import in
colab if the version of Python is less
than Python 3.9. Please use a runtime with a version of Python greater than
Python 3.9 or use TFF version 0.20.0.
TensorFlow Federated 0.21.0
Release 0.21.0
Major Features and Improvements
tff.analytics
- Added new
tff.analytics.IbltFactory
aggregation factory. - Added new IBTL tensor encoder/decoder libraries and uses them in
tff.analytics.heavy_hitters.iblt.build_iblt_computation
.
- Added new
tff.aggregator
- Added
as_weighted_aggregator
to thetff.aggregator.Factory
API.
- Added
tff.learning
- Improved compilation and execution performance of
tff.learning.metrics.secure_sum_then_finalize
by grouping tensors by
DType. - Added
set_model_weights
method and default implementation to
tff.learning.templates.LearningProcess
. - Added a new
reset_metrics
attribute totff.learning.Model
. - Added
schedule_learning_rate
totff.learning.optimizers
. - Added new
tff.learning.ddp_secure_aggregator
for Distributed
Differential Privacy.
- Improved compilation and execution performance of
tff.simulation
- Added an option to distort train images in the CIFAR-100 baseline task.
- Changed the default sequence length for the Shakespeare baseline task to
a more reasonable value.
- Core
- Switched runtime to create new RemoteExecutors with different
cardinalities, rather than resetting the cardinality in the remote
service.
- Switched runtime to create new RemoteExecutors with different
Breaking Changes
- Removed support for Python 3.7 and 3.8, TFF supports 3.9 and later.
- Removed deprecated attributes
report_local_outputs
and
federated_output_computation
fromtff.learning.Model
- Removed the
ingest
method fromtff.Context
Bug Fixes
- Multiple typos in tests, code comments, and pydoc.
Known Bugs
- Sequences (datasets) of SparseTensors don't work on the C++ runtime.
- Computations when
CLIENTS
cardinality is zero doesn't work on the Python
runtime. - Assigning variables to a Keras model after construction inside a
model_fn
results in a non-deterministic graph.
TensorFlow Federated v0.20.0
Release 0.20.0
Major Features and Improvements
- Added
tff.program
API; this API is still in active development but can be
used to compose shared and platform specific: program logic, components, and
privacy concepts to create federated programs. - Added support for Python 3.9.
- Added CelebA and iNaturalist datasets to
tff.simulation.datasets
. - Added
tff.analytics
API for federated analytics, including private heavy
hitters algorithms. - Added
tff.learning.algorithms
API, including TFF implementations of
FedProx, FedAvg with learning rate scheduling, federated k-Means, and
MimeLite. - Added
tff.learning.metrics
API to support easy configuration of
cross-client metrics aggregation via the newmetrics_aggregator
argument. - Added
metrics_aggregator
argument to
tff.learning.build_federated_averaging_process
and
tff.learning.build_federated_evaluation
. - Added
report_local_unfinalized_metrics
andmetric_finalizers
methods to
tff.learning.Model
and deprecatedreport_local_outputs
and
federated_output_computation
. - Added
tff.learning.optimizers
API for building purely functional
optimizers and implementations of SGD, Adagrad, Rmsprop, Adam, Yogi, - Added
tff.learning.reconstruction
API for building partially local
federated learning algorithms, including Federated Reconstruction. - Added
tff.learning.templates
API to support building learning algorithms
in a modular fashion. - Added
tff.simulation.baselines
API to support evaluating learning
algorithms on a suite of representative tasks. - Added
tff.aggregators.DifferentiallyPrivateFactory.tree_aggregation
to
support the DP-FTRL algorithm. - Added
tff.aggrgators.SecureModularSumFactory
- Added
tff.aggregators.DiscreteFourierTransformFactory
and
tff.aggregators.HadamardTransformFactory
to support rotation-based
aggregators. - Added
tff.aggregators.concat_factory
for aggregating structures as a
single tensor. - Added
tff.backends.native.create_mergeable_comp_execution_context
,
tff.backends.native.set_mergeable_comp_execution_context
; these can be
used with a distributed runtime to scale to tens of thousands of clients. - Improved performance of many
tff.simulation.datasets.ClientData
subclasses. - Added
tff.simulation.datasets.ClientData.serializable_dataset_fn
attribute, enabling dataset creation within TF/TFF computations. - Added
debug_measurements
option to aggregators intff.learning
. - Added support for unambiguous zero-client aggregations.
- Added support for Python dataclasses as function parameters and return
values for TFF computations. - Added automatic insertion of
tff.federated_zip
to invocation of
user-defined TFF federated computations. - Added utilities to
tff.simulation.datasets
for saving federated datasets
to a SQL database compatible withtff.simulation.datasets.SqlClientData
. - Added
tff.learning.models.FunctionalModel
and
tff.learning.models.functional_model_from_keras
. - Increased max flow of tensors. Tensors now flow here, there, and everywhere.
- Updated the Python dependencies:
- Updated
absl-py
to version1.0.0
. - Updated
attrs
to version21.2.0
. - Added
farmhashpy
version0.4.0
. - Updated
jax
to version0.2.27
. - Updated
jaxlib
to version0.1.76
. - Updated
numpy
to version1.21.4
. - Removed
retrying
. - Updated
tensorflow-model-optimization
to version0.7.1
. - Updated
tensorflow-model-optimization
to version0.7.3
. - Updated
tensorflow
to version2.8.0
. - Added support for building many dependencies including
tensorflow
using
Bazel. - Updated the Bazel dependencies:
- Updated
rules_python
to version0.5.0
. - Updated
com_google_protobuf
to versionv3.18.0-rc1
. - Added
absl_py
version1.0.0
. - Added
com_google_googletest
versionrelease-1.11.0
. - Added
io_bazel_rules_go
versionv0.29.0
. - Added
bazel_skylib
version1.0.3
. - Added
pybind11_abseil
. - Added
pybind11_bazel
. - Added
pybind11_protobuf
. - Added
com_google_absl
version20211102.0
. - Added
tensorflow_org
versionv2.8.0
.
Breaking Changes
- Removed support for building source on MacOS.
- Removed support for Python 3.6.
- Removed symbol
tff.framework.type_contains
, usetff.types.contains
instead. - Removed many symbols from
tff.simulation
, these can be found in
tff.program
instead. - Removed support for converting non-OrderedDict mapping types to
tff.Value
s. - Removed
tff.simulation.datasets.ClientData.from_clients_and_fn
in favor of
tff.simulation.datasets.ClientData.from_clients_and_tf_fn
. - Restricted
tff.simulation.datasets.ClientData.preprocess
to only support
TF-serializable functions. - Removed
tff.backends.reference
, and the reference context it contained. - Removed
tff.learning.build_federated_sgd_process
in favor of
tff.learning.algorithms.build_fed_sgd
. - Removed
tff.simulation.run_simulation
in favor of
tff.simulation.run_training_process
. - Removed
tff.learning.framework.EnhancedModel
. - Removed
tff.learning.framework.build_stateless_mean
.
Bug Fixes
- Fixed broken links in documentation.
- Fixed many pytype errors.
- Fixed some inconsistencies in Bazel visibility.
- Fixed bug where
tff.simulation.datasets.gldv2.load_data()
would result in
an error.
TensorFlow Federated 0.19.0
Release 0.19.0
Major Features and Improvements
- Introduced new intrinsics:
federated_select
andfederated_secure_select
. - New
tff.structure_from_tensor_type_tree
to help manipulate structures of
tff.TensorType
into structures of values. - Many new
tff.aggregators
factory implementations. - Introduced
tf.data
concept for data URIs. - New
tff.type
package with utilities for working withtff.Type
values. - Initial experimental support for
tff.jax_computation
. - Extend
tff.tf_computation
support toSpareTensor
andRaggedTensor
.
Breaking Changes
- Update gRPC dependency to 1.34.
- Moved
ClientData
interface and implementations to
tff.simulation.datasets
. - Renamed
tff.utils.update_state
totff.structure.update_struct
. - Removed the
tff.utils
namespace, all symbols have migrated, many to
tff.aggregators
. - Moved infinite EMNIST dataset to federated research repository.
- Removes
rpc_mode
argument to remote executors, along with streaming mode. - Removes deprecated
tff.federated_apply
. - Removes
tff.federated_reduce
, all usages can use
tff.federated_aggregate
. - Removes
HDF5ClientData
andh5py
pip dependency. - Removes
setattr
functionality ontff.ValueImpl
.
Bug Fixes
- Improved
tf.GraphDef
comparisons. - Force close generators used for sending functions to computation wrappers,
avoiding race conditions in Colab. - Fix tracing libraries asyncio usage to be Python3.9 compatible.
- Fix issue with destruction of type intern pool destructing and
abc
. - Fix type interning for tensors with unknown dimensions.
- Fix
ClientData.create_dataset_from_all_clients
consuming unreasonable
amounts of memory/compute time.