-
Notifications
You must be signed in to change notification settings - Fork 184
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* address vdr feedback * fix typos, rename * rewording, update diagram
- Loading branch information
Showing
14 changed files
with
181 additions
and
28 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,3 +1,6 @@ | ||
.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{display:block;background:#b1b1b1;padding:.4045em 7.3em} | ||
.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{display:block;background:#a9a9a9;padding:.4045em 8.8em} | ||
.wy-menu-vertical li.toctree-l5{font-size: .9em;} | ||
.wy-menu-vertical li.toctree-l5{font-size: .9em;} | ||
.wy-menu > .caption > span.caption-text { | ||
color: #76b900; | ||
} |
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
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
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 |
---|---|---|
@@ -0,0 +1,64 @@ | ||
.. _fl_introduction: | ||
|
||
########################### | ||
What is Federated Learning? | ||
########################### | ||
|
||
Federated Learning is a distributed learning paradigm where training occurs across multiple clients, each with their own local datasets. | ||
This enables the creation of common robust models without sharing sensitive local data, helping solve issues of data privacy and security. | ||
|
||
How does Federated Learning Work? | ||
================================= | ||
The federated learning (FL) server orchestrates the collaboration of multiple clients by first sending an initial model to the FL clients. | ||
The clients perform training on their local datasets, then send the model updates back to the FL server for aggregation to form a global model. | ||
This process forms a single round of federated learning and after a number of rounds, a robust global model can be developed. | ||
|
||
.. image:: resources/fl_diagram.png | ||
:height: 500px | ||
:align: center | ||
|
||
FL Terms and Definitions | ||
======================== | ||
|
||
- FL server: manages job lifecycle, orchestrates workflow, assigns tasks to clients, performs aggregation | ||
- FL client: executes tasks, performs local computation/learning with local dataset, submits result back to FL server | ||
- FL algorithms: FedAvg, FedOpt, FedProx etc. implemented as workflows | ||
|
||
.. note:: | ||
|
||
Here we describe the centralized version of FL, where the FL server has the role of the aggregrator node. However in a decentralized version such as | ||
swarm learning, FL clients can serve as the aggregator node instead. | ||
|
||
- Types of FL | ||
|
||
- horizontal FL: clients hold different data samples over the same features | ||
- vertical FL: clients hold different features over an overlapping set of data samples | ||
- swarm learning: a decentralized subset of FL where orchestration and aggregation is performed by the clients | ||
|
||
Main Benefits | ||
============= | ||
|
||
Enhanced Data Privacy and Security | ||
---------------------------------- | ||
Federated learning facilitates data privacy and data locality by ensuring that the data remains at each site. | ||
Additionally, privacy preserving techniques such as homomorphic encryption and differential privacy filters can also be leveraged to further protect the transferred data. | ||
|
||
Improved Accuracy and Diversity | ||
------------------------------- | ||
By training with a variety of data sources across different clients, a robust and generalizable global model can be developed to better represent heterogeneous datasets. | ||
|
||
Scalability and Network Efficiency | ||
---------------------------------- | ||
With the ability to perform training at the edge, federated learning can be highly scalable across the globe. | ||
Additionally only needing to transfer the model weights rather than entire datasets enables efficient use of network resources. | ||
|
||
Applications | ||
============ | ||
An important application of federated learning is in the healthcare sector, where data privacy regulations and patient record confidentiality make training models challenging. | ||
Federated learning can help break down these healthcare data silos to allow hospitals and medical institutions to collaborate and pool their medical knowledge without the need to share their data. | ||
Some common use cases involve classification and detection tasks, drug discovery with federated protein LLMs, and federated analytics on medical devices. | ||
|
||
Furthermore there are many other areas and industries such as financial fraud detection, autonomous vehicles, HPC, mobile applications, etc. | ||
where the ability to use distributed data silos while maintaining data privacy is essential for the development of better models. | ||
|
||
Read on to learn how FLARE is built as a flexible federated computing framework to enable federated learning from research to production. |
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
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
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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
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
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,24 +1,22 @@ | ||
# Step-by-Step Examples | ||
|
||
To run the notebooks in each example, please make sure you first set up a virtual environment and install "./requirements.txt" and JupyterLab following the [example root readme](../README.md). | ||
|
||
* [cifar10](cifar10) - Multi-class classification with image data using CIFAR10 dataset | ||
* [higgs](higgs) - Binary classification with tabular data using HIGGS dataset | ||
|
||
These step-by-step example series are aimed to help users quickly get started and learn about FLARE. | ||
For consistency, each example in the series uses the same dataset- CIFAR10 for image data and the HIGGS dataset for tabular data. | ||
The examples will build upon previous ones to showcase different features, workflows, or APIs, allowing users to gain a comprehensive understanding of FLARE functionalities. | ||
The examples will build upon previous ones to showcase different features, workflows, or APIs, allowing users to gain a comprehensive understanding of FLARE functionalities. See the README in each directory for more details about each series. | ||
|
||
## Common Questions | ||
|
||
Given a machine learning problem, here are some common questions we aim to cover when formulating a federated learning problem: | ||
Here are some common questions we aim to cover in these examples series when formulating a federated learning problem: | ||
|
||
* What does the data look like? | ||
* How do we compare global statistics with the site's local data statistics? | ||
* How to formulate the federated algorithms | ||
* https://developer.download.nvidia.com/healthcare/clara/docs/federated_traditional_machine_learning_algorithms.pdf | ||
* Given the formulation, how to convert the existing machine learning or deep learning code to Federated learning code. | ||
* [ML to FL examples](https://github.com/NVIDIA/NVFlare/blob/main/examples/hello-world/ml-to-fl/README.md) | ||
* For different types of federated learning workflows: Scatter and Gather, Cyclic Weight Transfer, Swarming learning, | ||
Vertical learning, ... what do we need to change ? | ||
* How can we capture the experiment log, so all sites' metrics and global metrics can be viewed in experiment tracking tools such as Weights & Biases, MLfLow, or Tensorboard | ||
|
||
In these "step-by-step" examples, we will dive into these questions in two series of examples (See the README in each directory for more details about each series): | ||
|
||
* [cifar10](cifar10) - Multi-class classification with image data using CIFAR10 dataset | ||
* [higgs](higgs) - Binary classification with tabular data using HIGGS dataset | ||
|
||
|
||
* How to formulate the [federated algorithms](https://developer.download.nvidia.com/healthcare/clara/docs/federated_traditional_machine_learning_algorithms.pdf)? | ||
* How do we convert the existing machine learning or deep learning code to federated learning code? [ML to FL examples](https://github.com/NVIDIA/NVFlare/blob/main/examples/hello-world/ml-to-fl/README.md) | ||
* How do we use different types of federated learning workflows (e.g. Scatter and Gather, Cyclic Weight Transfer, Swarming learning, | ||
Vertical learning) and what do we need to change? | ||
* How can we capture the experiment log, so all sites' metrics and global metrics can be viewed in experiment tracking tools such as Weights & Biases MLfLow, or Tensorboard |
Oops, something went wrong.