IBM federated learning is a Python framework for federated learning (FL) in an enterprise environment. FL is a distributed machine learning process, in which each participant node (or party) retains data locally and interacts with the other participants via a learning protocol. The main drivers behind FL are privacy and confidentiality concerns, regulatory compliance requirements, as well as the praciticality of moving data to one central learning location.
IBM federated learning 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. It supports Deep Neural Networks (DNNs) as well as classic machine learning techniques such as linear regression and k-means. This comprises supervised and unsupervised approaches as well as reinforcemnet learning. The figure below shows a typical configuration of an aggregator based federated learning setup supported by IBM federated learning.
A set of parties own data and each trains a local model. The parties exchange updates with an aggregrator using a FL protocol. The aggregator fuses (aggregates) the results from the different parties and ships the consolidated results back to the parties. This can go through multiple rounds until a termination criterion is reached. IBM federated learning supports the configuration of these training scenarios.
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. It can be extended to work with different machine learning (ML) libraries, learning protocols, and fusion algorithms. This provides a basic fabric on which FL projects can be run and research in FL learning can take place.
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 we have developed.
IBM federated learning supports the following machine learning model types:
- Neural networks (any neural network topology supported by Keras)
- Decision Tree ID3
- Linear classifiers/regressions (with regularizer): logistic regression, linear SVM, ridge regression, Kmeans and Naïve Bayes
- Deep Reinforcement Learning algorithms including DQN, DDPG, PPO and more
IBM federated learning supports multiple state-of-the-art fusion algorithms to combine model updates coming from multiple parties. Changes in this algorithm may speed up the convergence, reduce training time or improve model robustness. For a particular ML model, you can select multiple types of fusion algorithms:
Supported ML Models | Supported fusion algorithms |
---|---|
Neural Networks | Iterative Average |
FedAvg McMahan et al. | |
Gradient Average | |
PFNM Yurochkin et al. | |
Krum Blanchard et al. | |
Coordinated median Goel et al. | |
Zeno Xie et al. | |
SPAHM Yurochkin et al. | |
ID3 Decision Tree | ID3 fusion Quinlan |
Reinforcement Learning RLLib models | Iterative Average |
FedAvg McMahan et al. | |
Linear classifiers with SGD | Iterative Average |
K-means | SPAHM Yurochkin et al. |
Naïve Bayes | Naive Bayes fusion with differential privacy |
Clone the repository. The main framework runtime is packaged in a whl file.
Try the set-up guide for a single-node federated learning setup.
There are a number of examples with explanation for different federated learning tasks with different model types to get started with.
There is a docs folder with tutorials and API documentation to learn how to use and extend IBM federated learning.
- Aggregator and Party configuration tutorial
- API documentation
- List of our publications
- White paper
We appreciate feedback and questions. Please post issues when you encounter them.
We have set up a Slack channel for ongoing discussion. Join the IBM federated learning workspace: https://ibm-fl.slack.com/
This is an ongoing effort. We plan to update this repo as new functionality is added frequently.
IBM federated learning is distributed under this license for non-commercial and experimental use.