/federated

A framework for implementing federated learning

Primary LanguagePythonApache License 2.0Apache-2.0

TensorFlow Federated

TensorFlow Federated (TFF) is an open-source framework for machine learning and other computations on decentralized data. TFF has been developed to facilitate open research and experimentation with Federated Learning (FL), an approach to machine learning where a shared global model is trained across many participating clients that keep their training data locally. For example, FL has been used to train prediction models for mobile keyboards without uploading sensitive typing data to servers.

TFF enables developers to use the included federated learning algorithms with their models and data, as well as to experiment with novel algorithms. The building blocks provided by TFF can also be used to implement non-learning computations, such as aggregated analytics over decentralized data.

TFF's interfaces are organized in two layers:

  • Federated Learning (FL) API The tff.learning layer offers a set of high-level interfaces that allow developers to apply the included implementations of federated training and evaluation to their existing TensorFlow models.

  • Federated Core (FC) API At the core of the system is a set of lower-level interfaces for concisely expressing novel federated algorithms by combining TensorFlow with distributed communication operators within a strongly-typed functional programming environment. This layer also serves as the foundation upon which we've built tff.learning.

TFF enables developers to declaratively express federated computations, so they could be deployed to diverse runtime environments. Included with TFF is a single-machine simulation runtime for experiments. Please visit the tutorials and try it out yourself!

Installation

See the install documentation for instructions on how to install TensorFlow Federated as a package or build TensorFlow Federated from source.

Getting Started

See the get started documentation for instructions on how to use TensorFlow Federated.

The Code Style, Guidelines, and Best Practice for developers may also be useful to review.

Contributing

If you want to contribute to TensorFlow Federated, be sure to review the contribution guidelines.

Issues

Use GitHub issues for tracking requests and bugs.

Questions

Please direct questions to Stack Overflow using the tensorflow-federated tag.