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

[FL] Frameworks (Flower, TFF, NVFlare, FATE, PySyft)

· 수정 · 📖 약 4분 · 1,593자/단어 #ml #federated-learning #framework #tooling
FL Frameworks, Flower framework, Flower FL, TensorFlow Federated, TFF, NVFlare, NVIDIA FLARE, FATE framework, PySyft, OpenMined, FedML, 연합 학습 프레임워크

정의

연합 학습 프레임워크 는 서버-클라이언트 통신, 집계 알고리즘, 프라이버시 도구, 시뮬레이션 환경, 실 배포 인프라를 제공하는 라이브러리/플랫폼입니다. 알고리즘을 직접 구현하지 않고 자기 모델 학습 로직만 작성 하면 프레임워크가 나머지를 담당합니다.

주요 프레임워크 5개 (Flower, TFF, NVFlare, FATE, PySyft) 와 신진 (FedML, OpenFL) 을 비교합니다.

프레임워크 요약 비교

프레임워크개발/유지언어프레임워크 애그노스틱실 배포시뮬레이션프라이버시 도구
FlowerAdap (스타트업) + 커뮤니티Python✓ (PyTorch/TF/JAX/HF)강함SecAgg, DP 통합
TFFGooglePythonX (TF 위주)시뮬레이션 위주매우 강함강함 (Google TFF Analytics)
NVFlareNVIDIAPython강함 (Clara)HE, DP, PSI
FATEWeBankPython + Scala부분매우 강함 (프로덕션)HE, MPC 강함
PySyftOpenMinedPython✓ (PyTorch/TF)중간HE, MPC, DP 통합
FedMLFedML Inc.Python강함강함통합

Flower (권장 진입점)

특징

  • 가벼운 API, “가장 사용하기 쉬운 FL 프레임워크” 평판
  • 완전 프레임워크 애그노스틱: PyTorch, TensorFlow, JAX, scikit-learn, HuggingFace 다 붙음
  • 시뮬레이션과 실 배포가 같은 코드
  • 200+ 학술 논문에 채택, 산업 사례 증가

코드 뼈대

Client:

import flwr as fl

class MyClient(fl.client.NumPyClient):
    def get_parameters(self, config):
        return [p.detach().cpu().numpy() for p in model.parameters()]

    def set_parameters(self, parameters):
        for p, new in zip(model.parameters(), parameters):
            p.data = torch.tensor(new)

    def fit(self, parameters, config):
        self.set_parameters(parameters)
        train(model, train_loader, epochs=config["local_epochs"])
        return self.get_parameters({}), len(train_dataset), {}

    def evaluate(self, parameters, config):
        self.set_parameters(parameters)
        loss, acc = evaluate(model, val_loader)
        return float(loss), len(val_dataset), {"accuracy": acc}

fl.client.start_numpy_client(server_address="server:8080", client=MyClient())

Server:

strategy = fl.server.strategy.FedAvg(
    fraction_fit=0.1,
    min_fit_clients=10,
    min_available_clients=100,
    on_fit_config_fn=lambda rnd: {"local_epochs": 1},
)

fl.server.start_server(
    server_address="0.0.0.0:8080",
    config=fl.server.ServerConfig(num_rounds=200),
    strategy=strategy,
)

지원 전략

FedAvg, FedProx, FedYogi, FedAdam, FedAdagrad, SCAFFOLD, FedMedian, Krum, FaultTolerantFedAvg, custom strategy 상속.

시뮬레이션

flwr.simulation.start_simulation 으로 단일 프로세스에서 수백 클라이언트 병렬 시뮬레이션 (Ray backend). 대규모 시뮬레이션에도 강함.

강점

  • 진입 장벽 낮음
  • 프로덕션 배포 (mobile SDK, edge) 사례 다수
  • 활발한 커뮤니티, 문서 우수

약점

  • HE / MPC 는 자체 제공 X, 다른 라이브러리 (CrypTen, TenSEAL) 와 통합 필요
  • 시각화/모니터링 UI 는 별도 (외부 tool 필요)

TensorFlow Federated (TFF)

특징

  • Google 개발, 학술 연구 및 시뮬레이션의 사실상 표준
  • 두 계층 API: Federated Core (저수준) + Federated Learning API (고수준)
  • TF eager mode + XLA 컴파일, 매우 빠른 시뮬레이션
  • Federated Analytics (평균, 히스토그램 등 통계 연산도 연합) 강력

코드 예시

import tensorflow_federated as tff

def create_model():
    return tf.keras.Sequential([
        tf.keras.layers.Dense(128, activation="relu"),
        tf.keras.layers.Dense(10),
    ])

def model_fn():
    return tff.learning.models.from_keras_model(
        create_model(),
        input_spec=input_spec,
        loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
        metrics=[tf.keras.metrics.SparseCategoricalAccuracy()],
    )

trainer = tff.learning.algorithms.build_weighted_fed_avg(
    model_fn,
    client_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=0.02),
    server_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=1.0),
)

state = trainer.initialize()
for round_num in range(NUM_ROUNDS):
    result = trainer.next(state, sampled_client_data)
    state = result.state
    print(f"Round {round_num}: {result.metrics}")

강점

  • 시뮬레이션 성능 최상급
  • Google Analytics DP 도구 성숙
  • TFF Analytics 는 다른 프레임워크에 없는 강점

약점

  • 실 배포 지원 약함. 시뮬레이션 편중.
  • TF-heavy: PyTorch 사용자에겐 접근성 낮음
  • API 학습 곡선 있음 (federated computation, TFF type system)

결론: Google 스타일 연구용. 배포는 다른 프레임워크 병행.

NVIDIA FLARE (NVFlare)

특징

  • Cross-silo 프로덕션 지향. NVIDIA Clara (의료) 에서 검증
  • 워크플로 지향: SAG (Scatter and Gather), CyclicController 등 orchestration
  • 강한 프라이버시 툴: HE (TenSEAL), DP, PSI (Private Set Intersection)
  • 모니터링 (TensorBoard, MLflow) 통합
  • Multi-org deployment (여러 회사가 협력)

강점

  • 의료/금융 실 배포 사례 (병원간, 은행간)
  • 프라이버시 도구 통합 최상급
  • Job / workflow 관리 성숙

약점

  • Cross-device (수백만 모바일) 시나리오는 아님
  • 진입 장벽 (연구자에게는 복잡)

대표 사용처: 다기관 의료 학습, 금융 컨소시엄.

FATE (Federated AI Technology Enabler)

특징

  • WeBank (중국) 주도, cross-silo 산업 배포에서 압도적
  • Multi-Party Computation (MPC), Homomorphic Encryption 이 first-class
  • FederatedML: FL 알고리즘 대규모 라이브러리
  • FATEFlow: workflow, FATEBoard: 시각화, FATE-Serving: 배포
  • 스칼라 + 파이썬 + Spark 백엔드로 대규모 데이터에 강함

강점

  • MPC/HE 통합이 가장 완성도 높음
  • 대규모 데이터 (수백 GB+) 처리
  • 배포 도구 (dashboard, monitoring) 완비

약점

  • 학습 곡선 가파름
  • 문서 대부분 중국어 (영어 자료 상대적으로 부족)
  • 스타트업 규모에는 무거움

대표 사용처: 금융 컨소시엄, 대형 헬스케어.

PySyft (OpenMined)

특징

  • 오픈소스 커뮤니티 (OpenMined) 주도
  • 프라이버시 우선: HE, MPC, DP 통합
  • PySyft + PyGrid 구조: SDK + 서버
  • PyTorch, TensorFlow 지원

강점

  • 프라이버시 도구 종합
  • 활발한 오픈소스 커뮤니티
  • 교육 리소스 풍부 (강좌, 튜토리얼)

약점

  • 아키텍처 변경이 잦아 프로덕션 사용에는 신중 필요
  • 성능 최적화가 후순위 (연구/교육 편중)

대표 사용처: 프라이버시 연구, 교육.

FedML

특징

  • FedML Inc. 학술 + 산업 겸용
  • FedML-Nexus AI: 학술 실험 + 산업 배포 통합 플랫폼
  • 다양한 topology (star, ring, hierarchical) 지원
  • Cross-silo + cross-device + IoT 모두

강점

  • 다양한 시나리오 커버
  • LLM/멀티모달 FL 초기 지원

약점

  • 상대적으로 신생 (2021~), 성숙도 아직

프레임워크 선택 가이드

상황권장
학습/연구, 빠른 프로토타입Flower or TFF
PyTorch 워크로드, 실 배포 계획Flower
Google 스타일 연구, 시뮬레이션 극대화TFF
다기관 의료/금융, 프라이버시 필수NVFlare or FATE
프라이버시 도구 강력PySyft or FATE
모바일 SDK, edgeFlower
대규모 산업 배포 (수 GB+ 데이터)FATE

Aggregation 알고리즘 지원 (공통)

대부분 프레임워크가 FedAvg, FedProx, FedYogi/Adam, SCAFFOLD, robust aggregation (Median, Trimmed Mean, Krum) 은 built-in. Personalized FL (pFedMe, Ditto) 은 프레임워크별 지원 편차. Custom strategy 상속으로 대체 가능.

함정

WARNING

시뮬레이션과 실 배포는 다릅니다. 시뮬레이션에서 좋은 알고리즘이 실 환경 (네트워크 불안정, 클라이언트 dropout) 에서는 실패할 수 있음. 반드시 실 배포 시나리오 테스트.

CAUTION

프라이버시 툴은 사용법을 잘못 쓰면 프라이버시가 없습니다. DP epsilon, HE parameter 를 이해하지 않고 default 만 쓰면 정량 보장 없음.

WARNING

성능 튜닝. 프레임워크마다 통신 프로토콜, 직렬화, 배치 처리가 다름. 실 부하 벤치마크 필수.

IMPORTANT

버전 호환성. Flower 는 stable API 이지만 TFF/PySyft 는 breaking change 잦음. 프로덕션은 pin 필수.

관련 위키

이 글의 용어 (6개)
[FL] FedAvg (Federated Averaging)ml
정의 FedAvg (Federated Averaging) 는 McMahan et al. (2017) 이 제안한 연합 학습의 기본 알고리즘 입니다. 원본 데이터를 중앙 서버로 보내…
[FL] Non-IID Data & Client Driftml
정의 Non-IID data 는 연합 학습에서 각 클라이언트의 데이터가 서로 다른 분포에서 추출되는 상황을 말합니다. FedAvg 를 비롯한 대부분 FL 알고리즘의 최대 난관이며…
[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 = 닫기