Federated Learning and Analytics Protocols (FLAAP).
This repository contains an extension to TensorFlow Federated.
The extension allows the direction of communication to be reversed so that TFF workers(silos) can initiate RPCs to the coordinator as opposed to relying on coordinators issuing RPCs to the workers.
The work is based on two design documents although the implementation has diverged a bit
The solution consists of the following components:
taskstore.proto - Defines the protocol buffers and services
Data is exchanged between coordinator and workers using a CRUD API for Task resources
Task resources wrap the data exchanged in TFF's Executor Service
Taskstore server - A golang server providing a CRUD API for the Task resource
The current implementation serializes the tasks to a file on durable storage for fault tolerance
The current implementation is neither scalable nor highly performant
There is also a crude CLI for interacting with the taskstore
TaskStoreExecutor - A TFF Executor that completes operations by creating Task resources in the task store and waiting for them to be completed.
TaskHandler - Processes a Task by using the TFEagerExecutor
fed_average.py a simple example of a TFF program that uses the Taskstore.
e2e-test - A go binary providing an E2E test. It starts all the relevant processes as subprocesses.
The TFF Project doesn't generate GoLang versions of its client libraries so this project generates them.