/ notes / federated-learning.md
federated-learning.md
 1  ---
 2  tags:
 3    - federated-learning
 4    - distributed-training
 5    - privacy
 6  type: model-family
 7  color: blue
 8  ---
 9  
10  # Federated Learning
11  
12  Federated learning это способ обучать одну общую модель на данных многих пользователей, не собирая эти данные в одно центральное хранилище.
13  
14  ## Core idea
15  
16  Сервер рассылает стартовую модель на клиентские устройства. Каждое устройство дообучает копию на своих локальных данных. Затем сервер собирает обновления модели, агрегирует их и рассылает новую global model обратно.
17  
18  ## Principle workflow
19  
20  ```text
21  Server
22    -> dispatch base model to selected clients
23    -> each client trains locally on private data
24    -> clients return local updates
25    -> server aggregates updates into global model
26    -> server dispatches synchronized model back
27    -> next communication round starts
28  ```
29  
30  ## Main nodes from the screenshot
31  
32  1. `Step 1`: `Server` -> `Hosts` -> `Base model` -> `Dispath Model` -> `Mobile` -> `User`
33  2. `Step 2`: `Mobile` -> `Private Data` -> `Train` -> `Base model` -> `Trained Model A/B/C`
34  3. `Step 3`: `Trained Model A/B/C` -> `Server` -> `Centralized Model`
35  4. `Step 4`: `Server` -> `Hosts` -> `Centralized Model` -> `Dispatch back to device` -> `Mobile` -> `User`
36  
37  ## Level 1: what the family does
38  
39  Federated learning позволяет учить модель на данных пользователей так, чтобы сырые данные обычно оставались на их устройствах.
40  
41  Это полезно, когда данные чувствительны, распределены по множеству клиентов или слишком дороги для централизованной передачи.
42  
43  ## Level 2: main mechanisms
44  
45  - сервер выбирает набор клиентов для очередного раунда
46  - сервер рассылает текущую [global model](concepts/global-model.md)
47  - клиенты обучают локальные копии на [private data](concepts/private-data.md)
48  - клиенты отправляют [local update](concepts/local-update.md)
49  - сервер использует агрегирование, часто [FedAvg](concepts/fedavg.md)
50  - новый раунд повторяет процесс как [communication round](concepts/communication-round.md)
51  
52  ## Level 3: why it matters
53  
54  - уменьшается необходимость перемещать пользовательские данные в центр
55  - можно использовать данные, которые иначе недоступны из-за privacy или regulation
56  - система лучше отражает реальные распределенные источники данных
57  
58  Но вместе с этим появляются новые проблемы: нестабильные клиенты, дорогая коммуникация, смещенные локальные распределения и необходимость защищать обновления, а не только сырые данные.
59  
60  ## Strengths or typical use cases
61  
62  - клавиатурные подсказки и next-word prediction на телефонах
63  - персонализированные модели на edge devices
64  - медицинские или финансовые сценарии, где нельзя свободно объединять данные
65  - large-scale user devices, где данных много, но они распределены
66  
67  ## Limits or tradeoffs
68  
69  - privacy лучше, но не бесплатна и не абсолютна
70  - local data часто [non-IID](concepts/non-iid-data.md), поэтому обучение может сходиться хуже
71  - сеть и battery становятся частью стоимости обучения
72  - orchestration сложнее, чем в centralized training
73  
74  ## Open and free materials
75  
76  - [Communication-Efficient Learning of Deep Networks from Decentralized Data](https://proceedings.mlr.press/v54/mcmahan17a.html) - базовая статья про FedAvg и сам цикл federated learning.
77  - [TensorFlow Federated](https://www.tensorflow.org/federated) - официальный фреймворк с терминологией и примерами раундов обучения.
78  - [TensorFlow Federated Tutorials](https://www.tensorflow.org/federated/tutorials/tutorials_overview) - бесплатные туториалы, где видно pipeline на практике.
79  - [Flower Documentation](https://flower.ai/docs/) - хороший практический вход в orchestration и федеративные стратегии.
80  - [Federated Optimization in Heterogeneous Networks](https://arxiv.org/abs/1812.06127) - полезно, чтобы понять проблемы неоднородных клиентов.
81  
82  ## Related notes
83  
84  - [01-taxonomy](01-taxonomy.md)
85  - [model-dispatch](model-dispatch.md)
86  - [on-device-training](on-device-training.md)
87  - [update-aggregation](update-aggregation.md)
88  - [model-synchronization](model-synchronization.md)
89  - [centralized training](concepts/centralized-training.md)
90  - [global model](concepts/global-model.md)
91  - [FedAvg](concepts/fedavg.md)