Federated Learning was introduced to collaboratively learn a shared prediction model while keeping all the training data on the device. This enabled machine learning developers to build pipelines that wouldn’t require to store the data in the cloud. The main drivers behind FL are privacy and confidentiality concerns, regulatory compliance requirements, as well as the practicality of moving data to one central learning location.
Here are a few libraries (mostly by OpenMined) for developers that can help in building federated learning systems for the edge devices.
syft.js
syft.js library enables training and inference of an ML model inside a web browser. The developers can write the model and training plan in normal PyTorch and PySyft, and syft.js takes care of the rest.
THE BELAMY
Sign up for your weekly dose of what's up in emerging technology.
Using syft.js looks something like this:
import * as tf from '@tensorflow/tfjs-core';
Download our Mobile App
import { Syft } from '@openmined/syft.js';
const worker = new Syft({ gridUrl, authToken, verbose: true });
Threepio
Threepio makes it easy to translate commands between machine learning frameworks such as PyTorch, Tensorflow.js, and TensorFlow Python. It acts as a core component in PySyft and syft.js.
Using this library one can convert commands from one deep learning framework to another. Threepio does this by scraping documentation of frameworks like PyTorch &TensorFlow and then mapping commands that it identifies as equivalent in all other frameworks. Threepio is currently available as a library in both Python and Javascript.
SwiftSyft
SwiftSyft makes it easy to train and inference PySyft models on iOS devices. This allows you to utilise training data located directly on the device itself, bypassing the need to send a user’s data to a central server.
PySyft FL Worker
This is more of a worker within a library. The team at OpenMined added a federated learning worker class within PySyft to take its place.
KotlinSyft
KotlinSyft is a library for performing federated learning on Android devices. KotlinSyft enables training and inference PySyft models on Android devices. This allows one to utilise training data located directly on the device itself, bypassing the need to send a user’s data to a central server.
IBM Federated Learning
IBM federated learning is a Python framework for federated learning (FL) in an enterprise environment that provides a basic fabric for FL, to which advanced features can be added. It is not dependent on any specific machine learning framework and supports different learning topologies, e.g., a shared aggregator, and protocols.
The key design points of IBM federated learning are the ease of use for the machine learning professional, configurability to different computational environments – from data centers to edge devices – and extensibility. IBM federated learning comes with a large library of fusion algorithms for both DNNs and classic ML approaches, consisting of implementations of both common, published fusion algorithms as well as novel ones.
Federated CORE
Federated Core (FC) as an environment can be used to develop program logic that combines TensorFlow code with Federated Averaging – computing distributed sums, averages, and other types of distributed aggregations over a set of client devices.
TFF’s Federated Core provides researchers and practitioners with explicit control over the specific patterns of distributed communication while offering a flexible and extensible language for expressing distributed data flow algorithms, rather than a concrete set of implemented distributed training capabilities.
FATE-Board
FATE-Board offers a suite of visualisation tools for FL modeling designed to understand models effectively. FATE-Board provides a visual way to probe models from which you can reshape and improve models efficiently.
Kube FATE
FATE (Federated AI Technology Enabler) is an open-source project initiated by Webank’s AI Department to provide a secure computing framework to support the federated AI ecosystem.
KubeFATE enables federated learning jobs to run across public, private and hybrid cloud environments. KubeFATE supports the deployment of FATE via Docker Compose and Kubernetes.
FATE Cloud
FATE Cloud is an Infrastructure for Building and Managing Federated Data Collaboration Network. It enables FATE to be managed in multi-cloud, forming a secure federated data network, designed to provide secure and compliant data cooperation solutions across or within organisations, and build an industrial-grade federated learning cloud service.
FATE-Serving
FATE-Serving is a high-performance, industrialised serving system for federated learning models, designed for production environments.
FATE-Serving offers the following:
- High performance online Federated Learning algorithms
- Federated Learning online inference pipeline
- Dynamic loading federated learning models
- Can serve multiple models, or multiple versions of the same model
- Real-time inference using federated learning models
- Support pre-processing, post-processing and data-access adapters for the production deployment
Check the OpenMined for more info on FL packages.