본문으로 건너뛰기
김신건의 로그

[FL] Non-IID Data & Client Drift

· 수정 · 📖 약 5분 · 1,988자/단어 #ml #federated-learning #distributed #non-iid
FL Non-IID, Non-IID FL, client drift, statistical heterogeneity, FedProx, SCAFFOLD, FedNova, non-i.i.d. federated learning, 연합학습 non-iid

정의

Non-IID data 는 연합 학습에서 각 클라이언트의 데이터가 서로 다른 분포에서 추출되는 상황을 말합니다. FedAvg 를 비롯한 대부분 FL 알고리즘의 최대 난관이며, client drift (각 클라이언트가 자기 로컬 optimum 으로 이탈해 평균이 잘못된 방향으로 이동) 를 유발합니다.

Non-IID 의 유형

Kairouz et al. (2021) 서베이 분류:

1. Feature distribution skew (covariate shift)

, but 는 동일.

  • 예: 여러 병원의 X-ray 데이터. 라벨 (질병) 규칙은 같지만 촬영 장비/환자군이 달라 이미지 통계가 다름.

2. Label distribution skew (prior probability shift)

, but 는 동일.

  • 예: MNIST 를 100명에게 나눠주되 각자는 특정 숫자 3-4개만 받음. 클래스 사전 분포가 극단적으로 다름.
  • 실전에서 흔한 유형. 사용자별 관심사 편중.

3. Same label, different features (concept shift)

.

  • 예: 여러 나라의 “긴급 상황” 라벨 데이터. 라벨은 같지만 특성 분포가 다름.

4. Same features, different label (concept drift)

.

  • 예: 다국어 감정 분석. 같은 단어가 나라마다 다른 감정.

5. Quantity skew (unbalancedness)

가 클라이언트별로 크게 다름. 대형 클라이언트 몇 개가 지배.

실무에서는 이 유형들이 혼합 되어 나타납니다.

Non-IID 상황 시각화

flowchart TB
    subgraph IID["IID (이상적 분포)"]
        C1["클라이언트 A\n클래스 0~9 균등"]
        C2["클라이언트 B\n클래스 0~9 균등"]
        C3["클라이언트 C\n클래스 0~9 균등"]
    end
    subgraph NonIID["Non-IID (Label Skew)"]
        D1["클라이언트 A\n클래스 0,1,2 만"]
        D2["클라이언트 B\n클래스 5,6,7 만"]
        D3["클라이언트 C\n클래스 8,9 만"]
    end
    IID -->|"FedAvg 잘 수렴"| GoodGlobal["좋은 글로벌 모델"]
    NonIID -->|"client drift 발생"| BadGlobal["편향된 글로벌 모델"]

Client Drift 의 수학적 원인

로컬 objective 는 클라이언트 의 로컬 데이터에 대한 손실. 글로벌 objective 는:

로컬 SGD 를 epoch 돌리면 클라이언트 의 로컬 minimum 에 접근합니다.

Non-IID 상황에서 들은 서로 멀리 흩어져 있고, 그들의 평균은 글로벌 minimum 와 무관 할 수 있습니다.

이것이 client drift. E 가 클수록 더 심해집니다.

완화 전략

A. Reduce local computation

  • E 축소 (극단적으로는 E=1, 즉 FedSGD): drift 감소, 대신 통신 폭증
  • B 확대: 배치를 크게 (분산 감소, 하지만 GPU 메모리 요구 증가)

Trade-off: 통신 vs drift.

B. Proximal Regularization (FedProx)

Li et al. (2020) 의 FedProx 는 로컬 objective 에 proximal term 을 추가:

  • : 하이퍼파라미터 (0.001 ~ 1)
  • 로컬 update 가 글로벌 모델에서 멀리 벗어나지 못하도록 제약
  • Straggler (느린 클라이언트) 가 partial work 만 해도 안전

Pros: 구현 간단 (loss 에 term 하나 추가), FedAvg 대비 안정성 향상. Cons: 튜닝 필요, drift 를 완전히 없애진 못함.

C. Control Variate (SCAFFOLD)

Karimireddy et al. (2020) 의 SCAFFOLD 는 각 클라이언트의 drift 방향을 control variate 로 추적하고 로컬 gradient 에서 빼줍니다.

로컬 SGD update:

  • : 클라이언트 의 로컬 correction (drift 방향)
  • : 서버 correction (모든 클라이언트 평균)
  • : “이 클라이언트가 평균보다 얼마나 편향된가”

라운드 종료 시 를 업데이트하고 서버가 를 재집계.

Pros: 이론적으로 IID 급 수렴 rate 회복. Cons: 통신량 2배 (weight + control variate 모두 전송), 메모리 2배.

D. Objective Consistency (FedNova)

Wang et al. (2020) 의 FedNova 는 각 클라이언트의 로컬 step 수 가 다를 때 정규화. FedAvg 는 클라이언트별로 step 수가 달라도 그냥 평균하지만, 이는 objective inconsistency 를 야기.

FedNova 는 normalized gradient 를 집계:

  • : 클라이언트 의 delta
  • : 클라이언트 의 로컬 step 수
  • : 유효 step 수 (스케일 조정)

특히 system heterogeneity (느린/빠른 클라이언트 혼재) 상황에 강함.

E. Server-side adaptive optimizer

Reddi et al. (2020) 의 FedAdam, FedYogi, FedAdagrad. 서버에서 pseudo-gradient 를 Adam/Yogi/Adagrad 로 적용.

Non-IID 하에서 학습 안정성 향상.

F. Data augmentation / Mixup

클라이언트가 로컬에서 data augmentation 을 강하게 하면 로컬 분포가 완화되어 drift 감소. Mixup, CutMix, RandAugment 등이 흔히 결합.

G. Personalization (개인화)

Non-IID 를 없애려 하지 말고 각 클라이언트가 자기 분포에 맞게 개인화 모델을 갖도록 함. 자세한 것은 Personalized FL 참조.

벤치마크 데이터셋

Non-IID FL 연구에 자주 쓰이는:

  • Federated MNIST / FEMNIST: 필기 데이터를 작가별로 자연 분할
  • Federated CIFAR-10 (Dirichlet split): Dirichlet 파라미터 로 non-IID 정도 조절
  • Shakespeare: 극중 인물별 대사, 언어 모델링
  • StackOverflow: 사용자별 질문/답변
  • iNaturalist: 지역별 야생동물 이미지
  • Reddit: user별 댓글

Dirichlet split: 라벨 의 클라이언트 분포를 로 샘플. 가 작을수록 극단적 non-IID.

BatchNorm 특별 주의 (FedBN)

Non-IID 에서 Batch Normalization 은 특히 취약합니다. 각 클라이언트의 배치 통계 (mean, variance) 가 달라서 글로벌 집계 후 BN 레이어가 “틀린 통계” 로 추론합니다.

해결책:

  • FedBN (Li et al., 2021): BN 레이어는 집계하지 않고 각 클라이언트에서 로컬 통계를 유지
  • GroupNorm / LayerNorm 대체: 배치 통계에 의존하지 않아 Non-IID 에 강함
  • InstanceNorm: 각 샘플마다 정규화, 배치 크기에 무관

모델 설계 단계에서 FL 을 고려하면 처음부터 GroupNorm 을 쓰는 것이 좋습니다.

알고리즘 선택 가이드

flowchart TD
    Start["Non-IID 문제 진단"]
    Start --> Q1{"극심한 label skew?"}
    Q1 -->|"Yes"| Q2{"통신량 허용 2배?"}
    Q1 -->|"No"| Q3{"system heterogeneity?"}
    Q2 -->|"Yes"| SCAFFOLD["SCAFFOLD"]
    Q2 -->|"No"| FedProx["FedProx (mu=0.01~0.1)"]
    Q3 -->|"Yes"| FedNova["FedNova"]
    Q3 -->|"No"| Q4{"서버 optimizer 도입?"}
    Q4 -->|"Yes"| FedAdam["FedAdam / FedYogi"]
    Q4 -->|"No"| FedAvg["FedAvg (E 줄이기)"]
    FedProx --> Eval{"클라이언트별 accuracy 편차?"}
    FedAvg --> Eval
    Eval -->|"크다"| Personalized["Personalized FL 검토"]
    Eval -->|"OK"| Done["배포"]
상황권장
Mild non-IID + IID 근접FedAvg (그대로)
표준 non-IID (label skew)FedProx ( = 0.01)
극심한 drift, 클라이언트 다수SCAFFOLD
System heterogeneity (다양한 로컬 step)FedNova
서버 최적화 여지FedAdam / FedYogi
BatchNorm 통계 문제FedBN or GroupNorm 대체
개인화가 목적Personalized FL

실험 체크리스트

Non-IID FL 논문/프로젝트에서 반드시 보고해야 하는 항목:

  1. Non-IID 정도 정량화: Dirichlet , 클라이언트당 클래스 수, Earth Mover’s Distance 등
  2. 클라이언트 참여율: 라운드당 샘플링 비율 (full participation vs partial participation)
  3. 로컬 epoch E: drift 의 직접 파라미터
  4. 글로벌 accuracy 뿐 아니라 per-client accuracy 분포: worst-10% 클라이언트 성능 필수
  5. 통신 라운드 수 vs 성능: 총 통신량 비교 (알고리즘마다 라운드당 비용 다름)
  6. SCAFFOLD 는 통신 2배 반영: 단순 accuracy 비교는 불공평

함정

WARNING

Non-IID 를 IID 처럼 다루면 수렴 실패. 처음부터 데이터 분포를 EDA 로 파악.

CAUTION

BN 은 non-IID 에서 특히 취약. 로컬 통계가 글로벌 분포를 대표하지 않아 성능 저하. GroupNorm 또는 FedBN 을 첫 손에 검토.

WARNING

극심한 non-IID + partial participation 은 이론적 수렴 보장이 약함. 실전에서 learning rate decay + warm-up 이 필수.

IMPORTANT

개인화 지표를 평가. 글로벌 모델의 accuracy 뿐 아니라 클라이언트별 accuracy 분포도 함께 리포트. 평균은 좋지만 최악의 클라이언트가 안 되면 UX 실패.

CAUTION

Fairness 함정. Non-IID FL 은 소수 그룹 (소량 데이터 클라이언트) 이 대형 클라이언트에 종속될 수 있음. 가중 평균 외에도 min-max fairness (q-FFL 등) 검토.

관련 위키

이 글의 용어 (6개)
[FL] FedAvg (Federated Averaging)ml
정의 FedAvg (Federated Averaging) 는 McMahan et al. (2017) 이 제안한 연합 학습의 기본 알고리즘 입니다. 원본 데이터를 중앙 서버로 보내…
[FL] Frameworks (Flower, TFF, NVFlare, FATE, PySyft)ml
정의 연합 학습 프레임워크 는 서버-클라이언트 통신, 집계 알고리즘, 프라이버시 도구, 시뮬레이션 환경, 실 배포 인프라를 제공하는 라이브러리/플랫폼입니다. 알고리즘을 직접 구현…
[FL] Personalized Federated Learningml
정의 Personalized FL 은 모든 클라이언트가 동일한 글로벌 모델을 쓰지 않고, 각 클라이언트가 자신의 데이터 분포에 맞춰 조정된 모델 을 학습하는 연합 학습 계열입니다…
[FL] Secure Aggregationml
정의 Secure Aggregation 은 연합 학습 서버가 개별 클라이언트 업데이트 를 보지 못하고 오직 합 (또는 평균) 만 볼 수 있도록 보장하는 암호학 프로토콜입니다. 서…
Differential Privacy: (ε, δ) 로 정량화하는 프라이버시 보장ml
정의 Differential Privacy (DP, 차분 프라이버시) 는 데이터셋에 대한 질의 (query) 결과에 calibrated noise 를 추가함으로써, 한 개인의 데…
Federated Learning: 분산 학습 without central dataml
정의 Federated Learning (FL) 은 데이터를 중앙에 모으지 않고 각 클라이언트 (edge device, 병원, 은행 등) 가 로컬 데이터로 모델을 학습한 뒤 모델…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기