krum aggregation
**Krum** is a **Byzantine-robust aggregation rule for federated learning that selects the single client update closest to its nearest neighbors** — rather than averaging all updates, Krum picks the one that is most consistent with the majority of other updates.
**How Krum Works**
- **Distances**: For each client $i$, compute the sum of distances to its $n - f - 2$ closest neighbors.
- **Selection**: Choose the client $i^*$ with the smallest sum of neighbor distances — the "most central" update.
- **Update**: Use $g_{i^*}$ as the aggregated gradient (single-point selection, not an average).
- **Robustness**: Tolerates $f < (n-2)/2$ Byzantine clients.
**Why It Matters**
- **Geometric**: Krum uses the geometric structure of gradient space — selects the densest cluster.
- **One-Shot**: No iterative computation — just distance calculations and a minimum selection.
- **Limitation**: Single selection has high variance — Multi-Krum addresses this.
**Krum** is **pick the most agreeable update** — selecting the client whose gradient is most consistent with the majority for Byzantine-robust aggregation.