Federated averaging (FedAvg) [1]} is the most widely used method for horizontal FedML. It is a decentralized version of stochastic gradient descent (or in general any method that relies on a gradient update scheme) where in one round of training, a subset of \(M\)  participating clients receive a copy of the latest global model and execute \(K\)  local epochs (a complete pass over data) of training, updating \(f(w_k)\)  locally on their own private datasets \(D_k\) . They then send the updated weights \(w_k\)  to the server which averages those weights:
\(w^{(i)} = \sum _{k=1}^{M} \frac{n_k}{n}w_k^{(i)}.\) 
