forked from securefederatedai/openfl
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update README.md (securefederatedai#1225)
* Fix taskrunner links Signed-off-by: MasterSkepticista <[email protected]> * Tidy up readme Signed-off-by: MasterSkepticista <[email protected]> * Tiny changes Signed-off-by: MasterSkepticista <[email protected]> * More changes Signed-off-by: MasterSkepticista <[email protected]> --------- Signed-off-by: MasterSkepticista <[email protected]>
- Loading branch information
1 parent
269ae39
commit 0c4be45
Showing
2 changed files
with
48 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,83 @@ | ||
<div align="center"> | ||
<img src="https://github.com/securefederatedai/artwork/blob/main/PNG/OpenFL%20Logo%20-%20color.png?raw=true"> | ||
<img src="https://github.com/securefederatedai/artwork/blob/main/PNG/OpenFL%20Logo%20-%20color.png?raw=true" width="70%"> | ||
</div> | ||
|
||
|
||
[![PyPI - Python Version](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11-blue)](https://pypi.org/project/openfl/) | ||
[![PyPI version](https://img.shields.io/pypi/v/openfl)](https://pypi.org/project/openfl/) | ||
[![Downloads](https://pepy.tech/badge/openfl)](https://pepy.tech/project/openfl) | ||
[![DockerHub](https://img.shields.io/docker/pulls/intel/openfl.svg)](https://hub.docker.com/r/intel/openfl) | ||
[![Ubuntu CI status](https://github.com/securefederatedai/openfl/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/securefederatedai/openfl/actions/workflows/ubuntu.yml) | ||
[![Windows CI status](https://github.com/securefederatedai/openfl/actions/workflows/windows.yml/badge.svg)](https://github.com/securefederatedai/openfl/actions/workflows/windows.yml) | ||
[![Documentation Status](https://readthedocs.org/projects/openfl/badge/?version=latest)](https://openfl.readthedocs.io/en/latest/?badge=latest) | ||
[![Downloads](https://pepy.tech/badge/openfl)](https://pepy.tech/project/openfl) | ||
[![DockerHub](https://img.shields.io/docker/pulls/intel/openfl.svg)](https://hub.docker.com/r/intel/openfl) | ||
[![PyPI version](https://img.shields.io/pypi/v/openfl)](https://pypi.org/project/openfl/) | ||
[<img src="https://img.shields.io/badge/[email protected]?logo=slack">](https://join.slack.com/t/openfl/shared_invite/zt-ovzbohvn-T5fApk05~YS_iZhjJ5yaTw) | ||
[![License](https://img.shields.io/badge/License-Apache%202.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0) | ||
[![Citation](https://img.shields.io/badge/cite-citation-brightgreen)](https://arxiv.org/abs/2105.06413) | ||
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6599/badge)](https://bestpractices.coreinfrastructure.org/projects/6599) | ||
<a href="https://scan.coverity.com/projects/securefederatedai-openfl"> | ||
<img alt="Coverity Scan Build Status" | ||
src="https://scan.coverity.com/projects/29040/badge.svg"/> | ||
</a> | ||
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/openfl/blob/develop/openfl-tutorials/Federated_Pytorch_MNIST_Tutorial.ipynb) | ||
|
||
Open Federated Learning (OpenFL) is a Python 3 framework for Federated Learning. OpenFL is designed to be a _flexible_, _extensible_ and _easily learnable_ tool for data scientists. OpenFL is hosted by The Linux Foundation, aims to be community-driven, and welcomes contributions back to the project. | ||
|
||
Looking for the Open Flash Library project also referred to as OpenFL? Find it [here](https://github.com/openfl/openfl)! | ||
|
||
## Installation | ||
[**Overview**](#overview) | ||
| [**Features**](#features) | ||
| [**Installation**](#installation) | ||
| [**Changelog**](https://openfl.readthedocs.io/en/latest/releases.html) | ||
| [**Documentation**](https://openfl.readthedocs.io/en/latest/) | ||
|
||
You can simply install OpenFL from PyPI: | ||
OpenFL is a Python framework for Federated Learning. It enables organizations to train and validate machine learning models on sensitive data. It increases privacy by allowing collaborative model training or validation across local private datasets without ever sharing that data with a central server. OpenFL is hosted by The Linux Foundation. | ||
|
||
``` | ||
$ pip install openfl | ||
``` | ||
For more installation options check out the [online documentation](https://openfl.readthedocs.io/en/latest/get_started/installation.html). | ||
## Overview | ||
|
||
## Getting Started | ||
Federated Learning is a distributed machine learning approach that enables collaborative training and evaluation of models without sharing sensitive data such as, personal information, patient records, financial data, or classified information. The minimum data movement needed across a Federated Training experiment, is solely the model parameters and their updates. This is in contrast to a Centralized Learning regime, where all data needs to be moved to a central server or a datacenter for massively parallel training. | ||
|
||
OpenFL supports two APIs to set up a Federated Learning experiment: | ||
![Federated Learning](https://openfl.readthedocs.io/en/latest/_images/ct_vs_fl.png) | ||
|
||
- [Task Runner API](https://openfl.readthedocs.io/en/latest/about/features_index/taskrunner.html): | ||
Define an experiment and distribute it manually. All participants can verify model code and [FL plan](https://openfl.readthedocs.io/en/latest/about/features_index/taskrunner.html#federated-learning-plan-fl-plan-settings) prior to execution. The federation is terminated when the experiment is finished. This API is meant for enterprise-grade FL experiments, including support for mTLS-based communication channels and TEE-ready nodes (based on Intel® SGX). Follow the [Quick Start Guide](https://openfl.readthedocs.io/en/latest/get_started/quickstart.html#quick-start) for launching your first FL experiment locally. Then, refer to the [TaskRunner API Tutorial](https://github.com/securefederatedai/openfl/tree/develop/openfl-workspace/torch_cnn_mnist/README.md) for customizing the example workspace to your specific needs. <br/> | ||
OpenFL builds on a collaboration between Intel and the Bakas lab at the University of Pennsylvania (UPenn) to develop the [Federated Tumor Segmentation (FeTS)](https://www.fets.ai/) platform (grant award number: U01-CA242871). | ||
|
||
- [Workflow API](https://openfl.readthedocs.io/en/latest/about/features_index/workflowinterface.html) ([*experimental*](https://openfl.readthedocs.io/en/latest/developer_guide/experimental_features.html)): | ||
Create complex experiments that extend beyond traditional horizontal federated learning. This API enables an experiment to be simulated locally, then seamlessly scaled to a federated setting. See the [experimental tutorials](https://github.com/securefederatedai/openfl/blob/develop/openfl-tutorials/experimental/workflow/) to learn how to coordinate [aggregator validation after collaborator model training](https://github.com/securefederatedai/openfl/tree/develop/openfl-tutorials/experimental/workflow/102_Aggregator_Validation.ipynb), [perform global differentially private federated learning](https://github.com/psfoley/openfl/tree/experimental-workflow-interface/openfl-tutorials/experimental/workflow/Global_DP), measure the amount of private information embedded in a model after collaborator training with [privacy meter](https://github.com/securefederatedai/openfl/blob/develop/openfl-tutorials/experimental/workflow/Privacy_Meter/readme.md), or [add a watermark to a federated model](https://github.com/securefederatedai/openfl/blob/develop/openfl-tutorials/experimental/workflow/301_MNIST_Watermarking.ipynb). | ||
The grant for FeTS was awarded from the [Informatics Technology for Cancer Research (ITCR)](https://itcr.cancer.gov/) program of the National Cancer Institute (NCI) of the National Institutes of Health (NIH), to Dr. Spyridon Bakas (Principal Investigator) when he was affiliated with the [Center for Biomedical Image Computing and Analytics (CBICA)](https://www.cbica.upenn.edu/) at UPenn and now heading the [Division of Computational Pathology at Indiana University (IU)](https://medicine.iu.edu/pathology/research/computational-pathology). | ||
|
||
## Requirements | ||
FeTS is a real-world medical federated learning platform with international collaborators. The original OpenFederatedLearning project and OpenFL are designed to serve as the backend for the FeTS platform, and OpenFL developers and researchers continue to work very closely with IU on the FeTS project. An example is the [FeTS-AI/Front-End](https://github.com/FETS-AI/Front-End), which integrates the group’s medical AI expertise with OpenFL framework to create a federated learning solution for medical imaging. | ||
|
||
OpenFL supports popular NumPy-based ML frameworks like TensorFlow, PyTorch and Jax which should be installed separately.<br/> | ||
Users can extend the list of supported Machine Learning frameworks if needed. | ||
Although initially developed for use in medical imaging, OpenFL designed to be agnostic to the use-case, the industry, and the machine learning framework. | ||
|
||
## Project Overview | ||
### What is Federated Learning | ||
For more information, here is a list of relevant [publications](https://openfl.readthedocs.io/en/latest/about/blogs_publications.html). | ||
|
||
[Federated learning](https://en.wikipedia.org/wiki/Federated_learning) is a distributed machine learning approach that enables collaboration on machine learning projects without having to share sensitive data, such as, patient records, financial data, or classified information. The minimum data movement needed across the federation is solely the model parameters and their updates. | ||
## Installation | ||
|
||
![Federated Learning](https://raw.githubusercontent.com/intel/openfl/develop/docs/images/diagram_fl_new.png) | ||
Install via PyPI (latest stable release): | ||
|
||
``` | ||
pip install -U openfl | ||
``` | ||
For more installation options, checkout the [installation guide](https://openfl.readthedocs.io/en/latest/installation.html). | ||
|
||
### Background | ||
OpenFL builds on a collaboration between Intel and the Bakas lab at the University of Pennsylvania (UPenn) to develop the [Federated Tumor Segmentation (FeTS, www.fets.ai)](https://www.fets.ai/) platform (grant award number: U01-CA242871). | ||
## Features | ||
|
||
The grant for FeTS was awarded from the [Informatics Technology for Cancer Research (ITCR)](https://itcr.cancer.gov/) program of the National Cancer Institute (NCI) of the National Institutes of Health (NIH), to Dr Spyridon Bakas (Principal Investigator) when he was affiliated with the [Center for Biomedical Image Computing and Analytics (CBICA)](https://www.cbica.upenn.edu/) at UPenn and now heading up the [Division of Computational Pathology at Indiana University (IU)](https://medicine.iu.edu/pathology/research/computational-pathology). | ||
### Ways to set up an FL experiment | ||
OpenFL supports two ways to set up a Federated Learning experiment: | ||
|
||
FeTS is a real-world medical federated learning platform with international collaborators. The original OpenFederatedLearning project and OpenFL are designed to serve as the backend for the FeTS platform, and OpenFL developers and researchers continue to work very closely with IU on the FeTS project. An example is the [FeTS-AI/Front-End](https://github.com/FETS-AI/Front-End), which integrates the group’s medical AI expertise with OpenFL framework to create a federated learning solution for medical imaging. | ||
- [TaskRunner API](https://openfl.readthedocs.io/en/latest/about/features_index/taskrunner.html): This API uses short-lived components like the `Aggregator` and `Collaborator`, which terminate at the end of an FL experiment. TaskRunner supports mTLS-based secure communication channels, and TEE-based confidential computing environments. | ||
|
||
Although initially developed for use in medical imaging, OpenFL designed to be agnostic to the use-case, the industry, and the machine learning framework. | ||
- [Workflow API](https://openfl.readthedocs.io/en/latest/about/features_index/workflowinterface.html): This API allows for experiments beyond the traditional horizontal federated learning paradigm using a pythonic interface. It allows an experiment to be simulated locally, and then to be seamlessly scaled to a federated setting by switching from a local runtime to a distributed, federated runtime. | ||
> **Note:** This is experimental capability. | ||
|
||
You can find more details in the following articles: | ||
- [Pati S, et al., 2022](https://www.nature.com/articles/s41467-022-33407-5) | ||
- [Reina A, et al., 2021](https://arxiv.org/abs/2105.06413) | ||
- [Sheller MJ, et al., 2020](https://www.nature.com/articles/s41598-020-69250-1) | ||
- [Sheller MJ, et al., 2019](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6589345) | ||
- [Yang Y, et al., 2019](https://arxiv.org/abs/1902.04885) | ||
- [McMahan HB, et al., 2016](https://arxiv.org/abs/1602.05629) | ||
### Framework Compatibility | ||
|
||
OpenFL is backend-agnostic. It comes with support for popular NumPy-based ML frameworks like TensorFlow, PyTorch and Jax which should be installed separately. Users may extend the list of supported backends if needed. | ||
|
||
### Supported Aggregation Algorithms | ||
| Algorithm Name | Paper | PyTorch implementation | TensorFlow implementation | Other frameworks compatibility | | ||
### Aggregation Algorithms | ||
OpenFL supports popular aggregation algorithms out-of-the-box, with more algorithms coming soon. | ||
| | Reference | PyTorch backend | TensorFlow backend | NumPy backend | | ||
| -------------- | ----- | :--------------------: | :-----------------------: | :----------------------------: | | ||
| FedAvg | [McMahan et al., 2017](https://arxiv.org/pdf/1602.05629.pdf) | ✅ | ✅ | ✅ | | ||
| FedProx | [Li et al., 2020](https://arxiv.org/pdf/1812.06127.pdf) | ✅ | ✅ | ❌ | | ||
| FedOpt | [Reddi et al., 2020](https://arxiv.org/abs/2003.00295) | ✅ | ✅ | ✅ | | ||
| FedCurv | [Shoham et al., 2019](https://arxiv.org/pdf/1910.07796.pdf) | ✅ | ❌ | ❌ | | ||
|
||
## Support | ||
The OpenFL community is growing, and we invite you to be a part of it. Join the [Slack channel](https://join.slack.com/t/openfl/shared_invite/zt-ovzbohvn-T5fApk05~YS_iZhjJ5yaTw) to connect with fellow enthusiasts, share insights, and contribute to the future of federated learning. | ||
| FedAvg | [McMahan et al., 2017](https://arxiv.org/pdf/1602.05629.pdf) | yes | yes | yes | | ||
| FedOpt | [Reddi et al., 2020](https://arxiv.org/abs/2003.00295) | yes | yes | yes | | ||
| FedProx | [Li et al., 2020](https://arxiv.org/pdf/1812.06127.pdf) | yes | yes | - | | ||
| FedCurv | [Shoham et al., 2019](https://arxiv.org/pdf/1910.07796.pdf) | yes | - | - | | ||
|
||
Consider subscribing to the OpenFL mail list [email protected] | ||
## Contributing | ||
We welcome contributions! Please refer to the [contributing guidelines](https://openfl.readthedocs.io/en/latest/contributing.html). | ||
|
||
See you there! | ||
The OpenFL community is expanding, and we encourage you to join us. Connect with other enthusiasts, share knowledge, and contribute to the advancement of federated learning by joining our [Slack channel](https://join.slack.com/t/openfl/shared_invite/zt-ovzbohvn-T5fApk05~YS_iZhjJ5yaTw). | ||
|
||
We also always welcome questions, issue reports, and suggestions via: | ||
Stay updated by subscribing to the OpenFL mailing list: [[email protected]](mailto:[email protected]). | ||
|
||
* [GitHub Issues](https://github.com/securefederatedai/openfl/issues) | ||
* [GitHub Discussions](https://github.com/securefederatedai/openfl/discussions) | ||
|
||
## License | ||
This project is licensed under [Apache License Version 2.0](LICENSE). By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters