Git Product home page Git Product logo

federated-compute's Introduction

Federated Compute Platform

This repository hosts code for executing federated programs and computations.

Definitions

A federated computation is a set of processing steps that run on a server and set of clients, where each step is either

  • local processing of values on the client or server or
  • transport which moves values via
    • broadcast (server-to-clients)
    • select (client-server response)
    • aggregate (clients-to-server). A federated computation invoked by a central coordinator returns one or more aggregates.

A federated program is a set of processing steps run by a central coordinator that include one or more invocations of federated computation, transformations of computation results, and releases of aggregate values to the engineer/analyst who invoked the program.

To learn more about these concepts, check out:

Infrastructure

At Google, federated programs and computations are authored in TensorFlow Federated, compiled to deployable artifacts, and run in a distributed system consisting of a central coordinator, and a set of devices such as phones. The TFF repository contains infrastructure for authoring and simulating federated programs and computations.

This repository hosts infrastructure for compiling and running federated programs and computations in the cross-device setting. We are actively working on open sourcing the core components of our production infrastructure, with a focus on privacy-sensitive code-paths such as the pipeline for compiling deployable artifacts from TFF computations, client-side processing, and server-side aggregation logic.

As of 12/7/2022, parts of the repository - in particular, code in the client/ directory, and the service & data format definitions in proto/ - are used in production in Google's federated learning infrastructure. Other parts - notably, production server side infrastructure - have not yet been open sourced due to its dependencies on proprietary infrastructure, and we instead provide a reference / example server implementation in demo/ for demonstration purposes.

The best way to get started is to run the end-to-end demo //fcp/demo:federated_program_test, which will spin up example services, clients, and run a federated program; this test will cover the majority of the code in this repository.

Remote attestation of server-side, TEE-hosted applications

As described in the Confidential Federated Computations paper, this repository hosts a client-side implementation of the ConfidentialAggregations protocol, which uses remotely attested server-side applications that run in a Trusted Execution Environment (TEE).

Clients using this library and which participate in this protocol will verify attestation evidence for the ledger application hosted in the Confidential Federated Compute repository. They will also verify the data access policy that the ledger will enforce, which will specify one or more allowed data transformation applications which are built from that same repository.

Please see fcp/client/attestation/README.md for more details on this process.

Getting Started

Please refer to the instructions in GETTING_STARTED.md.

Disclaimer

This is not an officially supported Google product.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.