@@ -107,6 +107,46 @@ Learning](https://arxiv.org/abs/2212.01197)," in Arxiv, 2022.
107107
108108---
109109
110+ ### pFedGraph
111+
112+ pFedGraph infers a collaboration graph on the server to compute personalized
113+ aggregation weights and then regularizes local training toward the aggregated
114+ model for each client.
115+
116+ ``` bash
117+ cd examples/personalized_fl
118+ uv run pfedgraph/pfedgraph.py -c configs/pfedgraph_CIFAR10_resnet18.toml
119+ ```
120+
121+ ** Reference:** Ye et al., "[ Personalized Federated Learning with Inferred
122+ Collaboration Graphs] ( https://proceedings.mlr.press/v202/ye23b.html ) ," in Proc.
123+ International Conference on Machine Learning (ICML), 2023.
124+
125+ !!! note "Alignment with the paper"
126+ The pFedGraph aggregation strategy
127+ (` plato/servers/strategies/aggregation/pfedgraph.py:13-324 ` ) builds the
128+ collaboration graph by computing cosine similarities over weight updates,
129+ then projects each row onto the simplex to match the graph inference step
130+ described in Section 3.2.
131+
132+ The server (`plato/servers/pfedgraph.py:17-71`) stores per-client aggregated
133+ weights and returns them via `customize_server_payload`, mirroring the
134+ client-specific aggregation in Algorithm 1.
135+
136+ The trainer wiring (`plato/trainers/pfedgraph.py:8-25`) combines
137+ `PFedGraphUpdateStrategy` and `PFedGraphLossStrategyFromConfig`
138+ (`plato/trainers/strategies/algorithms/pfedgraph_strategy.py:20-123`) to
139+ capture the reference vector at round start and add the cosine similarity
140+ regularizer from Equation 3.
141+
142+ This mirrors the official pFedGraph implementation's split between
143+ server-side graph inference and client-side regularized optimization, while
144+ Plato's defaults (cosine similarity + simplex-projected weights) provide a
145+ concrete instantiation of the paper's model-similarity + dataset-size
146+ formulation.
147+
148+ ---
149+
110150### LG-FedAvg
111151
112152With LG-FedAvg only the global layers of a model are sent to the server for aggregation, while each client keeps local layers to itself.
0 commit comments