krum 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- krum/__init__.py +22 -0
- krum/orchestration/__init__.py +684 -0
- krum/orchestration/execution.py +274 -0
- krum/orchestration/hashing.py +572 -0
- krum/orchestration/metrics.py +498 -0
- krum/orchestration/storage.py +670 -0
- krum/orchestration/tracing.py +177 -0
- krum/primitives/__init__.py +6 -0
- krum/primitives/aggregators/__init__.py +57 -0
- krum/primitives/aggregators/aksel.py +74 -0
- krum/primitives/aggregators/average.py +48 -0
- krum/primitives/aggregators/brute.py +87 -0
- krum/primitives/aggregators/bulyan.py +117 -0
- krum/primitives/aggregators/geometric_median.py +99 -0
- krum/primitives/aggregators/krum.py +57 -0
- krum/primitives/aggregators/median.py +54 -0
- krum/primitives/aggregators/medoid.py +80 -0
- krum/primitives/aggregators/multikrum.py +137 -0
- krum/primitives/aggregators/nearest_neighbor_average.py +70 -0
- krum/primitives/aggregators/trimmed_mean.py +64 -0
- krum/primitives/attacks/__init__.py +59 -0
- krum/primitives/attacks/alie.py +157 -0
- krum/primitives/attacks/full_gradient_negation.py +86 -0
- krum/primitives/attacks/gaussian.py +71 -0
- krum/primitives/attacks/sign_flip.py +75 -0
- krum/primitives/attacks/small_perturbation.py +400 -0
- krum/primitives/data_partitioners/__init__.py +86 -0
- krum/primitives/data_partitioners/dirichlet.py +128 -0
- krum/primitives/data_partitioners/iid.py +57 -0
- krum/primitives/data_partitioners/mixing.py +94 -0
- krum/primitives/data_partitioners/per_labels.py +128 -0
- krum/primitives/models/__init__.py +299 -0
- krum/primitives/models/cnn.py +188 -0
- krum/primitives/models/mlp.py +122 -0
- krum/simulations/__init__.py +12 -0
- krum/simulations/centralised/__init__.py +495 -0
- krum/simulations/centralised/hidden_vulnerability_icml_2018.py +102 -0
- krum/simulations/centralised/krum_nips_2017.py +72 -0
- krum/simulations/decentralised/__init__.py +475 -0
- krum/simulations/decentralised/monna_icml_2023.py +358 -0
- krum-0.9.0.dist-info/METADATA +188 -0
- krum-0.9.0.dist-info/RECORD +45 -0
- krum-0.9.0.dist-info/WHEEL +5 -0
- krum-0.9.0.dist-info/licenses/LICENSE +21 -0
- krum-0.9.0.dist-info/top_level.txt +1 -0
krum/__init__.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Krum — Byzantine-resilient aggregation rules for distributed machine learning.
|
|
2
|
+
|
|
3
|
+
The package is organized in two layers:
|
|
4
|
+
|
|
5
|
+
* :mod:`krum.primitives.aggregators` exposes stateless, classmethod-based
|
|
6
|
+
Gradient Aggregation Rules (GARs).
|
|
7
|
+
* :mod:`krum.primitives.attacks` exposes gradient attacks that simulate Byzantine
|
|
8
|
+
workers when evaluating the robustness of an aggregator.
|
|
9
|
+
* :mod:`krum.primitives.models` provides a :class:`~krum.primitives.models.Model`
|
|
10
|
+
wrapper that exposes a ``torch.nn.Module``'s parameters and gradients as
|
|
11
|
+
zero-copy flat tensors, which is the data layout the aggregators consume.
|
|
12
|
+
|
|
13
|
+
The :mod:`krum.simulations` package ships the original training simulations
|
|
14
|
+
from the papers that introduced each rule.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
18
|
+
|
|
19
|
+
try:
|
|
20
|
+
__version__ = version("krum")
|
|
21
|
+
except PackageNotFoundError:
|
|
22
|
+
__version__ = "0.0.0" # Running from source without installation
|