https://github.com/adap/flower
GitHub - adap/flower: Flower: A Friendly Federated AI Framework
Flower: A Friendly Federated AI Framework. Contribute to adap/flower development by creating an account on GitHub.
github.com
개발환경
IDE : colab
file : FL_test.ipynb
목표
- 30분 연방학습 튜토리얼
- 연방학습 알고리즘을 구현해보자.
- 실제로 서버와 클라이언트 간의 학습 과정을 시뮬레이션을 통해 구현해보자.
환경설정
python으로 진행하므로
conda, pyenv, colab 이든 모든 괜찮다.
나는 colab으로 간단하게 진행해보았다.
- 시뮬레이션 엔진과 간단한 데이터셋
!pip install -q "flwr[simulation]" flwr-datasets
- colab은 따로 ML framework를 설치할 필요가 없다.
시각화를 위한 matplolib 정도만?
!pip install matplotlib
Centralised training : MNIST datasets ML
dataset
허깅페이스 플랫폼에서 MNIST 데이터를 불러와서 실행하였다. 구글 코랩에는 자동으로 불러오게 되는데 파이썬을 통하면 허깅페이스 토큰이 필요하다.

CNN architecture
MNIST CNN 예제에서 했던 신경망을 그대로 쓰인다.

Training
일단 epoch를 3번만 진행해서 연방학습의 학습효과를 확인하려고 한다.


Federated AI
- Federated Learning is distributed -- the model is trained on-device by the participating clients.
- Data remains private and is owned by a specific client -- the data is never sent to the central server.
One Client, One Data Partition
테스트를 위해 전체 데이터셋을 100명의 클라이언트에게 분배해주었다.



ClientApp & ServerApp
- 서버 → 클라이언트
- 서버는 중앙 모델의 파라미터(가중치, 편향)를 parameters로 클라이언트에게 전달.
- 클라이언트는 set_params(self.model, parameters)를 호출하여 이를 자신의 로컬 모델에 적용.
- 클라이언트 → 서버
- 클라이언트는 fit()을 통해 로컬 데이터로 모델을 학습.
- 학습 후 get_params(self.model)을 호출하여 모델의 최신 파라미터를 추출.
- 이를 다시 서버로 반환하여 중앙 모델을 업데이트하는 데 사용.
Client - Process
- 서버에서 받은 글로벌 모델 파라미터로 학습,
- 클라이언트에서 로컬 데이터로 학습
- 클라이언트에서 학습된 모델 서버로 업로드
- 클라이언트에서 로컬 데이터로 평가 및 서버로 평가 결과 전송
Server
Round :
- 서버가 현재 Centralised training 된 글로벌 모델 파라미터 클라이언트들에게 전송
- 클라이언트에서 학습된 모델 parameter 받음
- 여러 클라이언트에서 받은 모델 파라미터를 평균(FedAVG) 내어 글로벌 모델 업데이트
- 글로벌 모델 평가
Simulation
- Round 10 진행
- 20가지의 client(device)에게서 학습시키고(클라이언트에서 학습된 파라미터 서버로 전송)
- 50가지의 client(device)에게 평가를 맡김(서버에서 클라이언트에 모델 파라미터 적용)

FedAvgCustom_strategy

Code
'AI' 카테고리의 다른 글
[DCASE] CNN.py 파헤치기 (0) | 2025.04.05 |
---|---|
[SED] DCASE 2023 Task 4 Baseline test (0) | 2025.03.14 |
[ML] 강화학습(RL)의 이해 (0) | 2025.02.02 |
[PyTorch] MNIST 문자 인식 모델 (2) | 2024.10.09 |
window에서 tensorflow-gpu 사용하기 (0) | 2024.05.29 |