Metadata-Version: 2.4
Name: decent-bench
Version: 0.1.0
Summary: A benchmarking framework for decentralized optimization
Project-URL: Homepage, https://github.com/team-decent/decent-bench
Project-URL: Issues, https://github.com/team-decent/decent-bench/issues
Project-URL: Documentation, https://decent-bench.readthedocs.io/en/latest/
Author-email: Elias Ram <eliasframe@gmail.com>, Nicola Bastianello <nicolba@kth.se>
License-Expression: AGPL-3.0-only
License-File: LICENSE
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.13
Requires-Dist: matplotlib
Requires-Dist: networkx
Requires-Dist: numpy
Requires-Dist: rich
Requires-Dist: scikit-learn
Requires-Dist: scipy
Requires-Dist: tabulate
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: scipy-stubs; extra == 'dev'
Requires-Dist: sphinx; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Requires-Dist: types-networkx; extra == 'dev'
Requires-Dist: types-tabulate; extra == 'dev'
Description-Content-Type: text/markdown

<img src="https://github.com/team-decent/decent-bench/blob/main/docs/source/_static/logo.png" alt="decent-bench logo" align="right" width="70" />

# Welcome to decent-bench
[**Docs**](https://decent-bench.readthedocs.io/en/latest/)
| [**Installation**](#Installation)
| [**Background**](#Background)

decent-bench allows you to benchmark decentralized optimization algorithms under various communication constraints,
providing realistic algorithm comparisons in a user-friendly and highly configurable manner.


## Installation
Requires [Python 3.13+](https://www.python.org/downloads/)
```
pip install decent-bench
```

## Background
Multiple paradigms exist in the field of mathematical optimization. One such paradigm is decentralized optimization. It
addresses several of the challenges posed by traditional, centralized optimization. In centralized
optimization, all training data is transferred to a central server that employs an optimization algorithm.
In addition to increased network and power consumption, transferring data may raise privacy concerns, especially in the
context of sensitive information such as medical data. There are also regulatory restrictions such as GDPR and the EU
AI Act that may impact the feasibility of centralized optimization.

The decentralized paradigm addresses these issues. A network of agents participate in the optimization
process by sending local variable updates to their neighbors, no training data is transmitted. There are two main
approaches in decentralized optimization, federated and distributed. In the federated approach, agents only communicate
with a coordinator. In each iteration, the coordinator retrieves local variable updates from the agents, updates the
global model, and then distributes it back to the agents for the next iteration. In contrast, distributed optimization
does not use a coordinator, agents communicate directly with their neighbors instead. Both approaches have their pros
and cons, with federated being faster and distributed more robust. Despite their differences, both approaches take
advantage of the Internet of Things and address the privacy concerns detailed earlier.

However, as decentralized optimization relies on network communication, factors such as noise, packet loss, compression,
network sparsity, and agent heterogeneity may all impact the optimization process. Therefore, these constraints must be
considered when evaluating an algorithm's performance. This is where decent-bench comes in. By
benchmarking algorithms in different settings with different communication constraints, decent-bench provides you with
realistic algorithm comparisons in a user-friendly and highly configurable manner.


## Author
decent-bench is developed by [Elias Ram](https://github.com/elramen/) under the supervision of 
[Dr. Nicola Bastianello](https://bastianello.me/).
