Skip to content

Releases: google-parfait/tensorflow-federated

TensorFlow Federated 0.28.0

28 Jun 16:54
Compare
Choose a tag to compare
Pre-release

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 to tff.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

09 Jun 20:19
Compare
Choose a tag to compare
Pre-release

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

02 Jun 16:00
Compare
Choose a tag to compare
Pre-release

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 MeasuredProcesses.
  • 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 to 1.

TensorFlow Federated 0.25.0

23 May 21:34
Compare
Choose a tag to compare
Pre-release

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.

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 to compiler/building_block_test_utils.
  • Remove some unnecessary usage of pytype: skip-file.
  • Specify the None return type of ReleaseManager.release.
  • Remove usage of deprecated numpy types.
  • Replace depreciated random_integers with randint.

Bug Fixes

  • Fix numpy warning.

TensorFlow Federated 0.24.0

16 May 22:29
Compare
Choose a tag to compare
Pre-release

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 for tff.learning.templates.LearningProcess.
  • Added logging of expected sequential computations to local TFF-C++ runtime.

Breaking Changes

  • Moved asserts from tff.test.TestCase to tff.test.* as functions.
  • Removed assert_type_assignable_from function.
  • Moved assert_nested_struct_eq to the type_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

04 May 17:16
Compare
Choose a tag to compare
Pre-release

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 to ProgramStateManager.get_versions.

Bug Fixes

  • Fixed the "datasets/" path in the working with TFF's ClientData tutorial.

TensorFlow Federated 0.22.0

26 Apr 18:03
Compare
Choose a tag to compare
Pre-release

Release 0.22.0

Major Features and Improvements

  • Updated .bazelversion to 5.1.1.
  • Updated the tff.program API to use asyncio.
  • 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.

Breaking Changes

  • Renamed ProgramStateManager.version to ProgramStateManager.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

20 Apr 21:26
Compare
Choose a tag to compare
Pre-release

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.
  • tff.aggregator
    • Added as_weighted_aggregator to the tff.aggregator.Factory API.
  • 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 to tff.learning.Model.
    • Added schedule_learning_rate to tff.learning.optimizers.
    • Added new tff.learning.ddp_secure_aggregator for Distributed
      Differential Privacy.
  • 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.

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 from tff.learning.Model
  • Removed the ingest method from tff.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

23 Feb 02:46
Compare
Choose a tag to compare
Pre-release

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 new metrics_aggregator argument.
  • Added metrics_aggregator argument to
    tff.learning.build_federated_averaging_process and
    tff.learning.build_federated_evaluation.
  • Added report_local_unfinalized_metrics and metric_finalizers methods to
    tff.learning.Model and deprecated report_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 in tff.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 with tff.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 version 1.0.0.
  • Updated attrs to version 21.2.0.
  • Added farmhashpy version 0.4.0.
  • Updated jax to version 0.2.27.
  • Updated jaxlib to version 0.1.76.
  • Updated numpy to version 1.21.4.
  • Removed retrying.
  • Updated tensorflow-model-optimization to version 0.7.1.
  • Updated tensorflow-model-optimization to version 0.7.3.
  • Updated tensorflow to version 2.8.0.
  • Added support for building many dependencies including tensorflow using
    Bazel.
  • Updated the Bazel dependencies:
  • Updated rules_python to version 0.5.0.
  • Updated com_google_protobuf to version v3.18.0-rc1.
  • Added absl_py version 1.0.0.
  • Added com_google_googletest version release-1.11.0.
  • Added io_bazel_rules_go version v0.29.0.
  • Added bazel_skylib version 1.0.3.
  • Added pybind11_abseil.
  • Added pybind11_bazel.
  • Added pybind11_protobuf.
  • Added com_google_absl version 20211102.0.
  • Added tensorflow_org version v2.8.0.

Breaking Changes

  • Removed support for building source on MacOS.
  • Removed support for Python 3.6.
  • Removed symbol tff.framework.type_contains, use tff.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.Values.
  • 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

17 May 23:30
Compare
Choose a tag to compare
Pre-release

Release 0.19.0

Major Features and Improvements

  • Introduced new intrinsics: federated_select and federated_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 with tff.Type values.
  • Initial experimental support for tff.jax_computation.
  • Extend tff.tf_computation support to SpareTensor and RaggedTensor.

Breaking Changes

  • Update gRPC dependency to 1.34.
  • Moved ClientData interface and implementations to
    tff.simulation.datasets.
  • Renamed tff.utils.update_state to tff.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 and h5py pip dependency.
  • Removes setattr functionality on tff.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.