Metadata-Version: 2.1
Name: nvflare-light
Version: 2.5.0rc10
Summary: Federated Learning Application Runtime Environment
Home-page: https://github.com/NVIDIA/NVFlare
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.8
Description-Content-Type: text/markdown; charset=UTF-8
License-File: LICENSE
Requires-Dist: cryptography >=36.0.0
Requires-Dist: Flask ==3.0.2
Requires-Dist: Werkzeug ==3.0.3
Requires-Dist: Flask-JWT-Extended ==4.6.0
Requires-Dist: Flask-SQLAlchemy ==3.1.1
Requires-Dist: SQLAlchemy ==2.0.16
Requires-Dist: grpcio >=1.62.1
Requires-Dist: gunicorn >=22.0.0
Requires-Dist: numpy <=1.26.4
Requires-Dist: protobuf >=4.24.4
Requires-Dist: psutil >=5.9.1
Requires-Dist: PyYAML >=6.0
Requires-Dist: requests >=2.28.0
Requires-Dist: six >=1.15.0
Requires-Dist: msgpack >=1.0.3
Requires-Dist: docker >=6.0
Requires-Dist: websockets >=10.4
Requires-Dist: pyhocon
Provides-Extra: config
Requires-Dist: omegaconf ; extra == 'config'
Provides-Extra: he
Requires-Dist: tenseal ==0.3.12 ; extra == 'he'
Provides-Extra: psi
Requires-Dist: openmined.psi ==1.1.1 ; extra == 'psi'
Provides-Extra: pt
Requires-Dist: torch ; extra == 'pt'
Requires-Dist: torchvision ; extra == 'pt'
Provides-Extra: sklearn
Requires-Dist: scikit-learn ; extra == 'sklearn'
Requires-Dist: pandas >=1.5.1 ; extra == 'sklearn'
Provides-Extra: tracking
Requires-Dist: mlflow ; extra == 'tracking'
Requires-Dist: wandb ; extra == 'tracking'
Requires-Dist: tensorboard ; extra == 'tracking'
Provides-Extra: all
Requires-Dist: omegaconf ; extra == 'all'
Requires-Dist: tenseal ==0.3.12 ; extra == 'all'
Requires-Dist: openmined.psi ==1.1.1 ; extra == 'all'
Requires-Dist: torch ; extra == 'all'
Requires-Dist: torchvision ; extra == 'all'
Requires-Dist: scikit-learn ; extra == 'all'
Requires-Dist: pandas >=1.5.1 ; extra == 'all'
Requires-Dist: mlflow ; extra == 'all'
Requires-Dist: wandb ; extra == 'all'
Requires-Dist: tensorboard ; extra == 'all'
Requires-Dist: pytorch-lightning ; extra == 'all'
Requires-Dist: xgboost ; extra == 'all'
Provides-Extra: all_mac
Requires-Dist: omegaconf ; extra == 'all_mac'
Requires-Dist: torch ; extra == 'all_mac'
Requires-Dist: torchvision ; extra == 'all_mac'
Requires-Dist: scikit-learn ; extra == 'all_mac'
Requires-Dist: pandas >=1.5.1 ; extra == 'all_mac'
Requires-Dist: mlflow ; extra == 'all_mac'
Requires-Dist: wandb ; extra == 'all_mac'
Requires-Dist: tensorboard ; extra == 'all_mac'
Provides-Extra: app_opt
Requires-Dist: tenseal ==0.3.12 ; extra == 'app_opt'
Requires-Dist: openmined.psi ==1.1.1 ; extra == 'app_opt'
Requires-Dist: torch ; extra == 'app_opt'
Requires-Dist: torchvision ; extra == 'app_opt'
Requires-Dist: scikit-learn ; extra == 'app_opt'
Requires-Dist: pandas >=1.5.1 ; extra == 'app_opt'
Requires-Dist: mlflow ; extra == 'app_opt'
Requires-Dist: wandb ; extra == 'app_opt'
Requires-Dist: tensorboard ; extra == 'app_opt'
Requires-Dist: pytorch-lightning ; extra == 'app_opt'
Requires-Dist: xgboost ; extra == 'app_opt'
Provides-Extra: app_opt_mac
Requires-Dist: torch ; extra == 'app_opt_mac'
Requires-Dist: torchvision ; extra == 'app_opt_mac'
Requires-Dist: scikit-learn ; extra == 'app_opt_mac'
Requires-Dist: pandas >=1.5.1 ; extra == 'app_opt_mac'
Requires-Dist: mlflow ; extra == 'app_opt_mac'
Requires-Dist: wandb ; extra == 'app_opt_mac'
Requires-Dist: tensorboard ; extra == 'app_opt_mac'
Provides-Extra: core_opt
Requires-Dist: omegaconf ; extra == 'core_opt'
Provides-Extra: dev
Requires-Dist: sphinx >=4.1.1 ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
Requires-Dist: recommonmark ; extra == 'dev'
Requires-Dist: sphinx-copybutton ; extra == 'dev'
Requires-Dist: sphinxcontrib-jquery ; extra == 'dev'
Requires-Dist: omegaconf ; extra == 'dev'
Requires-Dist: tenseal ==0.3.12 ; extra == 'dev'
Requires-Dist: openmined.psi ==1.1.1 ; extra == 'dev'
Requires-Dist: torch ; extra == 'dev'
Requires-Dist: torchvision ; extra == 'dev'
Requires-Dist: scikit-learn ; extra == 'dev'
Requires-Dist: pandas >=1.5.1 ; extra == 'dev'
Requires-Dist: mlflow ; extra == 'dev'
Requires-Dist: wandb ; extra == 'dev'
Requires-Dist: tensorboard ; extra == 'dev'
Requires-Dist: pytorch-lightning ; extra == 'dev'
Requires-Dist: xgboost ; extra == 'dev'
Requires-Dist: isort ==5.10.1 ; extra == 'dev'
Requires-Dist: flake8 ==5.0.4 ; extra == 'dev'
Requires-Dist: black ==22.10.0 ; extra == 'dev'
Requires-Dist: click ==8.1.3 ; extra == 'dev'
Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'dev'
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'dev'
Provides-Extra: dev_mac
Requires-Dist: sphinx >=4.1.1 ; extra == 'dev_mac'
Requires-Dist: sphinx-rtd-theme ; extra == 'dev_mac'
Requires-Dist: recommonmark ; extra == 'dev_mac'
Requires-Dist: sphinx-copybutton ; extra == 'dev_mac'
Requires-Dist: sphinxcontrib-jquery ; extra == 'dev_mac'
Requires-Dist: omegaconf ; extra == 'dev_mac'
Requires-Dist: torch ; extra == 'dev_mac'
Requires-Dist: torchvision ; extra == 'dev_mac'
Requires-Dist: scikit-learn ; extra == 'dev_mac'
Requires-Dist: pandas >=1.5.1 ; extra == 'dev_mac'
Requires-Dist: mlflow ; extra == 'dev_mac'
Requires-Dist: wandb ; extra == 'dev_mac'
Requires-Dist: tensorboard ; extra == 'dev_mac'
Requires-Dist: isort ==5.10.1 ; extra == 'dev_mac'
Requires-Dist: flake8 ==5.0.4 ; extra == 'dev_mac'
Requires-Dist: black ==22.10.0 ; extra == 'dev_mac'
Requires-Dist: click ==8.1.3 ; extra == 'dev_mac'
Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'dev_mac'
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'dev_mac'
Provides-Extra: doc
Requires-Dist: sphinx >=4.1.1 ; extra == 'doc'
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
Requires-Dist: recommonmark ; extra == 'doc'
Requires-Dist: sphinx-copybutton ; extra == 'doc'
Requires-Dist: sphinxcontrib-jquery ; extra == 'doc'
Provides-Extra: test
Requires-Dist: omegaconf ; extra == 'test'
Requires-Dist: tenseal ==0.3.12 ; extra == 'test'
Requires-Dist: openmined.psi ==1.1.1 ; extra == 'test'
Requires-Dist: torch ; extra == 'test'
Requires-Dist: torchvision ; extra == 'test'
Requires-Dist: scikit-learn ; extra == 'test'
Requires-Dist: pandas >=1.5.1 ; extra == 'test'
Requires-Dist: mlflow ; extra == 'test'
Requires-Dist: wandb ; extra == 'test'
Requires-Dist: tensorboard ; extra == 'test'
Requires-Dist: pytorch-lightning ; extra == 'test'
Requires-Dist: xgboost ; extra == 'test'
Requires-Dist: isort ==5.10.1 ; extra == 'test'
Requires-Dist: flake8 ==5.0.4 ; extra == 'test'
Requires-Dist: black ==22.10.0 ; extra == 'test'
Requires-Dist: click ==8.1.3 ; extra == 'test'
Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'test'
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'test'
Provides-Extra: test_mac
Requires-Dist: omegaconf ; extra == 'test_mac'
Requires-Dist: torch ; extra == 'test_mac'
Requires-Dist: torchvision ; extra == 'test_mac'
Requires-Dist: scikit-learn ; extra == 'test_mac'
Requires-Dist: pandas >=1.5.1 ; extra == 'test_mac'
Requires-Dist: mlflow ; extra == 'test_mac'
Requires-Dist: wandb ; extra == 'test_mac'
Requires-Dist: tensorboard ; extra == 'test_mac'
Requires-Dist: isort ==5.10.1 ; extra == 'test_mac'
Requires-Dist: flake8 ==5.0.4 ; extra == 'test_mac'
Requires-Dist: black ==22.10.0 ; extra == 'test_mac'
Requires-Dist: click ==8.1.3 ; extra == 'test_mac'
Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'test_mac'
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'test_mac'
Provides-Extra: test_support
Requires-Dist: isort ==5.10.1 ; extra == 'test_support'
Requires-Dist: flake8 ==5.0.4 ; extra == 'test_support'
Requires-Dist: black ==22.10.0 ; extra == 'test_support'
Requires-Dist: click ==8.1.3 ; extra == 'test_support'
Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'test_support'
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'test_support'
Requires-Dist: pandas >=1.5.1 ; extra == 'test_support'

[![Blossom-CI](https://github.com/NVIDIA/nvflare/workflows/Blossom-CI/badge.svg?branch=main)](https://github.com/NVIDIA/nvflare/actions)
[![documentation](https://readthedocs.org/projects/nvflare/badge/?version=main)](https://nvflare.readthedocs.io/en/main/?badge=main)
[![license](https://img.shields.io/badge/License-Apache%202.0-brightgreen.svg)](./LICENSE)
[![pypi](https://badge.fury.io/py/nvflare.svg)](https://badge.fury.io/py/nvflare)
[![pyversion](https://img.shields.io/pypi/pyversions/nvflare.svg)](https://badge.fury.io/py/nvflare)
[![downloads](https://static.pepy.tech/badge/nvflare)](https://pepy.tech/project/nvflare)

# NVIDIA FLARE

[NVIDIA FLARE](https://nvidia.github.io/NVFlare/) (**NV**IDIA **F**ederated **L**earning **A**pplication **R**untime **E**nvironment)
is a domain-agnostic, open-source, extensible SDK that allows researchers and data scientists to adapt existing ML/DL workflows to a federated paradigm.
It enables platform developers to build a secure, privacy-preserving offering for a distributed multi-party collaboration.

## Features
FLARE is built on a componentized architecture that allows you to take federated learning workloads
from research and simulation to real-world production deployment.

Application Features
* Support both deep learning and traditional machine learning algorithms (eg. PyTorch, TensorFlow, Scikit-learn, XGBoost etc.)
* Support horizontal and vertical federated learning
* Built-in Federated Learning algorithms (e.g., FedAvg, FedProx, FedOpt, Scaffold, Ditto, etc.)
* Support multiple server and client-controlled training workflows (e.g., scatter & gather, cyclic) and validation workflows (global model evaluation, cross-site validation)
* Support both data analytics (federated statistics) and machine learning lifecycle management
* Privacy preservation with differential privacy, homomorphic encryption, private set intersection (PSI)

From Simulation to Real-World
* FLARE Client API to transition seamlessly from ML/DL to FL with minimal code changes
* Simulator and POC mode for rapid development and prototyping
* Fully customizable and extensible components with modular design
* Deployment on cloud and on-premise
* Dashboard for project management and deployment
* Security enforcement through federated authorization and privacy policy
* Built-in support for system resiliency and fault tolerance

> _Take a look at [NVIDIA FLARE Overview](https://nvflare.readthedocs.io/en/main/flare_overview.html) for a complete overview, and [What's New](https://nvflare.readthedocs.io/en/main/whats_new.html) for the lastest changes._

## Installation
To install the [current release](https://pypi.org/project/nvflare/):
```
$ python3 -m pip install nvflare
```
## Getting Started

You can quickly get started using the [FL simulator](https://nvflare.readthedocs.io/en/main/getting_started.html#the-fl-simulator).
A detailed [getting started](https://nvflare.readthedocs.io/en/main/getting_started.html) guide is available in the [documentation](https://nvflare.readthedocs.io/en/main/index.html).
 
Examples and notebook tutorials are located at [NVFlare/examples](./examples).

## Community

We welcome community contributions! Please refer to the [contributing guidelines](https://github.com/NVIDIA/NVFlare/blob/main/CONTRIBUTING.md) for more details.

Ask and answer questions, share ideas, and engage with other community members at [NVFlare Discussions](https://github.com/NVIDIA/NVFlare/discussions).

## Related Talks and Publications

Take a look at our growing list of [talks, blogs, and publications](https://nvflare.readthedocs.io/en/main/publications_and_talks.html) related to NVIDIA FLARE.

## License

NVIDIA FLARE is released under an [Apache 2.0 license](https://github.com/NVIDIA/NVFlare/blob/main/LICENSE).
