AWS 기술 블로그
Amazon EKS와 NVIDIA FLARE로 구현하는 연합학습 (Federated Learning)
머신러닝의 학습 과정에서 고품질 모델을 훈련시키려면 대규모의 고품질 데이터가 필수적이며, 이를 준비하는 과정은 보통 여러 출처의 데이터를 한곳에 모으는 작업을 동반합니다. 이 방식은 효과적이지만 의료 기관, 금융 기관, 정부 기관과 같이 데이터 프라이버시, 규제 준수, 데이터 주권에 민감한 환경에서는 조직 밖으로 반출할 수 없는 소중한 데이터를 보유하고 있는 경우가 많습니다.
연합 학습(Federated Learning, FL)은 이에 대한 매력적인 대안을 제시합니다. 데이터를 모델로 이동시키는 대신, 모델을 데이터로 가져가는 방식입니다. 각 참여자는 자신의 비공개 데이터셋에서 로컬 모델을 훈련시키고, 원시 데이터가 아닌 모델 가중치만 중앙 서버와 공유합니다. 여러 노드와 환경에 걸쳐 모델을 학습한다는 점에서, 분산훈련과 비슷해 보이지만, 여전히 원본 데이터의 이동이 필요한 일반적인 분산 훈련과 달리, 연합학습은 각 참여자가 원본 데이터를 노출하지 않고도 협력하여 강력한 모델을 훈련할 수 있게 해줍니다.
이번 글에서는 크게 두 가지를 다룹니다. 첫째, 연합학습 플랫폼을 Amazon EKS(Elastic Kubernetes Service) 위에 배포하는 구조를 구체적으로 설명합니다. 둘째, 해당 클러스터에서 세 가지 데이터 시나리오를 실행하고 결과를 해석합니다. 세 가지 시나리오는 의도적으로 생성된 상황으로 연합학습이 잘 동작하는 경우, 비대칭적 데이터를 갖는 경우, 그리고 한 참여자의 데이터 품질이 떨어지는 경우로 설정됩니다. 사용하는 핵심 기술은 분산 연합학습 시스템을 구축하기 위한 SDK 인 NVIDIA FLARE 와, 이를 컨테이너 오케스트레이션 위에서 구동하기 위한 Amazon EKS입니다.
연합 학습의 기본 개념
연합 학습은 기존의 분산 훈련과 근본적으로 다릅니다. 분산 훈련에서는 데이터가 노드 전체에 분산되지만 공유되고 접근 가능한 환경에 존재하며 데이터가 이동합니다. 연합 학습에서는 데이터가 원본 사이트를 절대 벗어나지 않습니다. 네트워크를 통해 이동하는 것은 모델 가중치뿐이며, 추가적인 프라이버시 보장을 위해 암호화도 가능합니다.
Scatter and Gather 워크플로
가장 일반적인 연합학습 패턴은 Scatter and Gather 방식입니다. 이 워크플로는 연합학습을 통해 훈련되는 전역 모델을 관리하는 중앙 서버와 각 사이트에서 데이터셋을 이용해 훈련을 진행하는 여러 대의 클라이언트로 구성됩니다. 하나의 완전한 훈련 라운드는 아래와 같이 이루어집니다.
| 단계 | 그림 | 설명 |
|---|---|---|
| Scatter | ![]() |
서버가 모든 클라이언트에 동일한 전역 모델의 가중치를 전송합니다. |
| Train | ![]() |
각 클라이언트가 수령한 모델을 자신의 로컬 데이터셋으로 훈련합니다. 데이터는 클라이언트를 벗어나지 않으며, 각 클라이언트마다 로컬 모델을 생성합니다. |
| Gather | ![]() |
클라이언트가 업데이트된 로컬 모델들의 가중치를 서버로 전송합니다. |
| Aggregate | ![]() |
서버가 모든 클라이언트 가중치를 새로운 전역 모델로 집계합니다. (예: FedAvg) |
| Repeat | ![]() |
새로운 전역 모델이 다시 각 클라이언트로 배포되고 훈련 과정이 반복됩니다. |
교차 사이트 모델 평가 (CSE)
일반적인 중앙집중식 학습이라면 훈련에 사용되지 않는 테스트셋을 준비하고, 훈련이 끝난 모델을 준비된 테스트셋에 통과시켜 그 결과 지표로 품질을 판정합니다. 그러나 연합 환경에는 모두가 신뢰하는 단일 중앙 테스트셋이 존재하지 않습니다. 데이터가 각 사이트를 벗어나지 못하는 것이 애초의 전제이기 때문입니다. 또한 사이트마다 데이터 분포가 다르기 때문에 모델의 성능 지표는 사용되는 사이트의 데이터에 따라 달라지게 됩니다. 그래서 필요한 것이 교차 사이트 평가(Cross-Site Evaluation, CSE) 입니다. 교차 사이트 평가는 한 사이트에서만 좋아 보이는 모델과 모든 사이트에서 두루 잘하는 모델을 구분해 줍니다. 또한 전역 모델이 개별 로컬 모델보다 실제로 나은지를, 데이터를 한곳에 모으지 않고도 검증할 수 있게 해 줍니다.
교차 사이트 평가는 훈련이 끝난 뒤 별도의 워크플로우로 실행되며, 아래의 그림1처럼 서버가 오케스트레이션하는 세 단계로 진행됩니다.

- 모델 수집: 서버가 각 클라이언트에 모델을 서버로 제출하라는 명령을 보내고, 클라이언트는 자신의 최종 로컬 모델을 서버로 올립니다. 서버는 여기에 자신이 집계한 전역 모델을 더해, 평가 대상 모델 묶음을 완성합니다.
- 교차 검증: 서버가 수집된 각 모델을 모든 사이트에 재배포하고, 각 사이트는 받은 모델을 로컬 테스트셋으로 평가한 뒤 그 결과를 서버로 돌려보냅니다. 이때도 모델 가중치만 오갈 뿐 테스트 데이터는 사이트를 벗어나지 않습니다.
- 결과 집계 및 해석: 테스트셋에 대한 성능 지표로 구성되는 일반적인 평가 결과와 달리, 교차 사이트 평가에서의 결과는 모델과 평가 데이터셋의 쌍을 성능 점수에 매핑하는 행렬의 형태가 됩니다. 예를 들어, 행렬의 각 원소는 “클라이언트 1이 제출한 모델이 클라이언트 2의 테스트셋에서 정확도 X를 기록했다”와 같은 지표들로 구성됩니다. 이 행렬은 이질적인 데이터 분포 전반에 걸친 모델 품질과 일반화를 다차원적으로 보여줍니다. 뒤에서 세 시나리오의 결과들 또한 바로 이 CSE 행렬(히트맵)로 읽어 나갈 것입니다.
NVIDIA FLARE 간단히 살펴보기
NVIDIA FLARE는 Python SDK로 배포되는 오픈소스 연합 학습 프레임워크입니다.

그림 2는 NVIDIA FLARE가 한 번의 태스크를 처리하는 방식을 요약합니다. 작업이 서버로 제출되면, 서버의 컨트롤러가 무엇을 언제 시킬지 결정하는 오케스트레이터 역할을 합니다. 컨트롤러는 각 클라이언트의 실행자에게 태스크를 할당하면서 현재 전역 모델과 학습 파라미터(모델, 에폭 등)를 함께 실어 보냅니다. 각 클라이언트는 받은 태스크를 실행하고, 그 결과인 가중치 업데이트를 작업 결과로 서버에 제출합니다. 컨트롤러는 모든 클라이언트의 결과를 모아 집계하여 새로운 전역 모델을 만듭니다. 앞서 본 Scatter and Gather 라운드와 교차 사이트 평가 모두 “컨트롤러가 작업을 할당하고 클라이언트 실행 후 결과를 반환한다”는 동일한 작업 기반 패턴 위에서 동작합니다.
Amazon EKS 위에 배포하는 아키텍처

Amazon EKS 의 클러스터 위에 1 대의 FLARE Server와 3대의 FLARE Client를 배포합니다. 각 클라이언트가 서로 다른 특성을 가진 데이터셋을 제공하는 연합학습의 참여자 역할을 합니다. FLARE 에서 권장하는 K8S 클러스터 환경에서의 배포 방식은 상시 구동되는 부모 Pod와 필요할 때 동적으로 생성되는 작업 Pod로 이루어진 구조입니다.
- 부모 Pod: 서버와 각 클라이언트는 각자 상시 실행되는 컨트롤 플레인 Pod 로 구동됩니다. 이들은 제출되는 연합학습 작업을 받아들이고 오케스트레이션하는 역할만 합니다.
- 작업 Pod: 실제로 작업이 제출되면, 각 부모 Pod가 그 작업 전용의 Pod를 동적으로 생성합니다. 그래서 부모 Pod의 ServiceAccount에는 파드를 생성/삭제할 수 있는 RBAC 권한이 필요합니다.
이 2계층 구조는 실제 클러스터에서 눈으로 확인할 수 있습니다. 서버 Pod의 API를 통해 작업을 제출하면, 상시 떠 있던 부모 Pod 4개(서버 1대와 클라이언트 3대) 옆에 작업 전용 작업 Pod 4개가 새로 생성되어 함께 Running 상태가 되는 것을 볼 수 있습니다.
그림 4. Kubernetes 위에 구동되는 동적 할당 리소스
<실험 워크로드: MNIST FedAvg>
시나리오 1 : IID 분포의 균형 잡힌 데이터 분배
첫 번째 시나리오는 세 사이트 모두 0~9의 데이터가 고루 분포된 상황을 가정합니다. 모든 사이트가 전체 라벨을 들고 있으면, 데이터의 양도 균등합니다.

연합 학습 작업을 제출하면 다음과 같은 훈련 그래프를 관찰할 수 있습니다.

각각의 사이트에서 균등하게 손실이 줄어드는 것을 확인할 수 있습니다. 각 훈련 라운드가 끝나면 연합 학습 서버는 각 사이트에서 훈련한 로컬 모델을 수집하여 전역 모델을 갱신한 후 다음 라운드를 시작합니다. 이 시나리오에서는 데이터의 분포가 균일하기 때문에, 라운드가 진행되어도 손실이 안정적으로 수렴하는 것을 관찰할 수 있습니다.

교차 사이트 평가를 진행해 보면, 각 사이트에서 훈련된 모델과 전역 모델의 성능을 비교할 수 있습니다. 세 개의 사이트에서 만들어진 모델들과 완성된 전역 모델이 각 사이트의 테스트셋에서 균일하게 좋은 성능을 보여줍니다. 또한 각 사이트의 데이터 품질이 비슷하기 때문에, 전역 모델과 각 로컬 모델의 성능이 비슷합니다. 이런 경우, 연합 학습을 하지 않고 각 사이트에서 개별적으로 훈련을 진행했어도 비슷한 성능을 기대할 수 있습니다.
시나리오 2: 비대칭적 데이터 분포
이제, 연합 학습의 효과를 보다 극명하게 보여줄 수 있는 시나리오를 구성해 보겠습니다.

조금은 극단적이지만, 효과를 극대화하기 위해서 각 사이트에서 라벨을 3개씩 의도적으로 제외했습니다. 예를 들어, site-1에서는 숫자 0, 3, 그리고 6이 데이터에 포함되어 있지 않기 때문에, 독자적으로 모델을 훈련할 경우 이 라벨들에 대한 성능이 매우 낮을 것입니다.

연합 학습을 실행한 결과, 시나리오 1과는 다른 형태를 관측할 수 있습니다. 각 라운드가 시작할 때에 손실이 급등하는 구간을 관찰할 수 있습니다. 각 사이트의 데이터 분포가 균일했던 시나리오 1에 비해 시나리오 2에서는 각 사이트의 데이터가 다르기 때문에 한 라운드 동안 각 로컬 모델이 수렴한 가중치 역시 사이트마다 차이가 클 것입니다. 그렇기 때문에 라운드가 끝나고 갱신된 전역 모델의 가중치를 받아오면 기존에 수렴한 가중치로부터 크게 달라지며 순간적으로 이전보다 큰 손실을 기록하게 됩니다. 하지만 라운드가 진행되면서 점점 이 현상도 안정화되는 것을 볼 수 있습니다.

교차 사이트 평가의 결과를 보면 확실한 연합 학습의 결과를 확인할 수 있습니다. 각 사이트의 로컬 모델은 출신 사이트의 테스트셋에서는 좋은 결과를 보이지만, 다른 사이트의 테스트셋에서는 저조한 성능을 보입니다. 그러나 전역 모델은 각 사이트의 데이터셋에서 학습된 내용이 모두 포함되어 있기 때문에 모든 사이트의 테스트셋에서 안정적인 성능을 보이는 것을 확인할 수 있습니다. 이러한 결과는 연합 학습이 힘을 발휘하는 순간을 명확히 보여줍니다. 만약 각 사이트에서 독자적으로 모델을 훈련했다면 전역 모델 수준의 성능을 달성할 수 없었을 것입니다.
시나리오 3: 한 참여자의 데이터 품질이 떨어지는 경우
연합 학습이 이상적으로 진행되는 경우 시나리오 2와 같이 좋은 결과를 얻을 수 있지만, 이러한 결과는 각 참여자가 의미있는 품질의 데이터셋을 제공한다는 것을 전제로 하고 있습니다. 만약 특정 참여자가 제공하는 데이터셋의 품질이 다른 데이터셋보다 떨어진다면 학습에 부정적인 영향을 미칠 수 있으며, 그 참여자는 학습에 기여하는 것 없이 좋은 성능의 모델만 가져가는 임포스터(imposter) 문제가 발생할 수 있습니다.

이러한 현상을 실험하기 위해, 시나리오3에서는 site-3의 데이터셋이 단 하나의 라벨에 대한 데이터만 갖도록 설정했습니다.
그림 11. 시나리오 3에서의 훈련 그래프
연합 학습을 실행한 결과, site-3에서만 손실이 극단적으로 줄어드는 것을 관찰할 수 있습니다. site-3에서는 하나의 라벨에 대해서만 학습이 진행되기 때문에 라운드동안 로컬 모델이 과적합이 되는 것입니다.
그림 12. 시나리오 3의 교차 사이트 평가 결과
교차 사이트 평가 결과를 보면 site-3의 경우 자신의 테스트셋에 대해서는 정확도 1을 기록하지만, 다른 사이트의 테스트셋에 대해서는 성능이 저조합니다. 반면 전역 모델의 경우에는 모든 사이트의 테스트셋에 대해 안정적인 성능을 보여줍니다. 즉, 과적합을 유발하는 데이터셋이 포함되어 있음에도 연합 학습을 통해 전역 모델의 성능이 방어된 것입니다. 아울러 연합 학습 운영자는 이러한 결과 지표를 통해 임포스터(imposter) 참여자를 식별할 수 있습니다.
결론
이 포스트에서는 이미 배포된 NVIDIA FLARE on Amazon EKS 클러스터 위에서 연합 학습을 직접 돌려보고 그 결과를 해석했습니다. 그 과정에서 FLARE가 EKS 위에서 어떻게 동작하는지도 함께 확인하였습니다. 연합학습의 효과를 확인하기 위해 이 클러스터 위에서 성격이 다른 세 시나리오를 직접 돌려 결과를 해석했습니다.
데이터가 균일하게 분포된 경우, 연합 학습은 이상적으로 동작해 전역 모델이 97% 정확도에 도달하였습니다. 비대칭적으로 데이터가 분포된 경우, 각 사이트의 로컬 모델은 70% 정도에 머물렀지만, 전역 모델은 서로의 사각지대를 메워 96% 정확도까지 회복했습니다. 연합 학습의 핵심 가치가 드러나는 지점입니다. 임포스터 데이터셋이 있는 시나리오에서 해당 참여자의 모델의 정확도는 붕괴했지만, 연합 학습의 샘플 수 가중 덕분에 전역 모델은 98%로 거의 흔들리지 않았습니다. 저품질 데이터 참여자에는 견고하지만, 그것이 곧 의도적 공격에 대한 방어를 뜻하지는 않는다는 통찰을 얻을 수 있었습니다.
데이터 프라이버시 규정이 강화되고 데이터 주권에 민감한 조직에서, 연합 학습은 머신 러닝 실무자의 도구 상자에서 점점 더 중요해질 것입니다. NVIDIA FLARE와 Amazon EKS는 이러한 시스템을 프로덕션 환경에서 구축하기 위한 성숙하고 확장 가능한 기반을 함께 제공합니다.




