연합 학습 연구에 TFF 사용

개요

TFF는 실제 프록시 데이터 세트에서 연합 계산을 시뮬레이션하여 연합 학습(FL) 연구를 수행하기 위한 확장 가능하고 강력한 프레임워크입니다. 이 페이지에서는 연구 시뮬레이션과 관련된 주요 개념과 구성 요소와 TFF에서 다양한 연구를 수행하기 위한 자세한 지침을 설명합니다.

TFF의 연구 코드의 일반적인 구조

TFF로 구현된 연구 FL 시뮬레이션은 일반적으로 세 가지 주요 유형의 로직으로 구성됩니다.

  1. 단일 위치(예: 클라이언트 또는 서버)에서 실행되는 논리를 캡슐화하는 TensorFlow 코드의 개별 조각(일반적으로 tf.function )입니다. 이 코드는 일반적으로 tff.* 참조 없이 작성 및 테스트되었으며 TFF 외부에서 재사용할 수 있습니다. 예를 들어 Federated Averaging의 클라이언트 교육 루프 는 이 수준에서 구현됩니다.

  2. TensorFlow Federated 오케스트레이션 로직은 1.부터 개별 tf.functiontff.tf_computation 으로 래핑한 다음 tff.federated_mean 내부의 tff.federated_broadcasttff.federated_computation 과 같은 추상화를 사용하여 오케스트레이션합니다. 예를 들어 연합 평균에 대한 이 오케스트레이션을 참조하십시오.

  3. 프로덕션 FL 시스템의 제어 논리를 시뮬레이션하고 데이터세트에서 시뮬레이션된 클라이언트를 선택한 다음 해당 클라이언트에서 2.에 정의된 연합 계산을 실행하는 외부 드라이버 스크립트. 예를 들어, 연합 EMNIST 실험 드라이버 .

연합 학습 데이터세트

TensorFlow 연합은 연합 학습으로 해결할 수 있는 실제 문제의 특성을 나타내는 여러 데이터 세트를 호스팅합니다 .

데이터 세트에는 다음이 포함됩니다.

  • 스택 오버플 로 . 언어 모델링 또는 지도 학습 작업을 위한 현실적인 텍스트 데이터세트로, 교육 세트에 135,818,730개의 예제(문장)가 있는 342,477명의 고유 사용자가 있습니다.

  • 연합 EMNIST . 각 클라이언트가 다른 작성자에 해당하는 EMNIST 문자 및 숫자 데이터 세트의 연합 전처리. 전체 기차 세트에는 62개 레이블의 671,585개 예제와 함께 3400명의 사용자가 포함되어 있습니다.

  • 셰익스피어 . William Shakespeare의 전체 작품을 기반으로 하는 더 작은 문자 수준 텍스트 데이터세트입니다. 데이터 세트는 715명의 사용자(셰익스피어 희곡의 등장인물)로 구성되며, 여기서 각 예는 주어진 연극에서 등장인물이 말한 연속적인 라인 세트에 해당합니다.

  • CIFAR-100 . 500개의 교육 클라이언트와 100개의 테스트 클라이언트에 대한 CIFAR-100 데이터 세트의 연합 분할. 각 클라이언트에는 100개의 고유한 예가 있습니다. 파티셔닝은 클라이언트 간에 보다 현실적인 이질성을 생성하는 방식으로 수행됩니다. 자세한 내용은 API 를 참조하십시오.

  • Google Landmark v2 데이터세트 데이터세트는 다양한 세계 랜드마크의 사진으로 구성되며, 데이터의 연합 분할을 달성하기 위해 사진사가 이미지를 그룹화합니다. 233개의 클라이언트와 23080개의 이미지가 있는 더 작은 데이터 세트와 1262개의 클라이언트와 164172개의 이미지가 있는 더 큰 데이터 세트의 두 가지 유형의 데이터 세트를 사용할 수 있습니다.

  • CelebA 유명인 얼굴의 예(이미지 및 얼굴 속성) 데이터세트입니다. 연합 데이터세트에는 각 유명인의 예가 함께 그룹화되어 클라이언트를 형성합니다. 9343개의 클라이언트가 있으며 각각 최소 5개의 예제가 있습니다. 데이터 세트는 클라이언트 또는 예제별로 훈련 및 테스트 그룹으로 분할할 수 있습니다.

  • iNaturalist 데이터 세트는 다양한 종의 사진으로 구성됩니다. 데이터 세트에는 1,203종에 대한 120,300개의 이미지가 포함되어 있습니다. 7가지 유형의 데이터 세트를 사용할 수 있습니다. 그 중 하나는 사진 작가에 의해 그룹화되며 9257명의 클라이언트로 구성됩니다. 나머지 데이터 세트는 사진을 찍은 지리적 위치별로 그룹화됩니다. 이 6가지 유형의 데이터 세트는 11 - 3,606개의 클라이언트로 구성됩니다.

고성능 시뮬레이션

FL 시뮬레이션 의 실제 시간은 알고리즘 평가를 위한 관련 측정항목이 아니지만(시뮬레이션 하드웨어가 실제 FL 배포 환경을 대표하지 않기 때문에) FL 시뮬레이션을 빠르게 실행할 수 있는 능력은 연구 생산성에 매우 중요합니다. 따라서 TFF는 고성능 단일 및 다중 시스템 런타임을 제공하는 데 많은 투자를 했습니다. 문서가 개발 중이지만 지금은 Kubernetes를 사용한 고성능 시뮬레이션 자습서, 가속기를 사용한 TFF 시뮬레이션 지침 및 GCP에서 TFF를 사용한 시뮬레이션 설정 지침을 참조하십시오. 고성능 TFF 런타임은 기본적으로 활성화되어 있습니다.

다양한 연구 분야에 대한 TFF

연합 최적화 알고리즘

연합 최적화 알고리즘에 대한 연구는 원하는 사용자 정의 수준에 따라 TFF에서 다양한 방식으로 수행될 수 있습니다.

Federated Averaging 알고리즘의 최소한의 독립 실행형 구현이 여기 에 제공됩니다. 코드에는 로컬 계산을 위한 TF 함수 , 오케스트레이션을 위한 TFF 계산 및 EMNIST 데이터 세트의 드라이버 스크립트 가 예로 포함됩니다. 이 파일은 README 의 자세한 지침에 따라 사용자 정의된 응용 프로그램 및 알고리즘 변경에 쉽게 적용할 수 있습니다.

연합 평균의 보다 일반적인 구현은 여기 에서 찾을 수 있습니다. 이 구현을 통해 서버와 클라이언트 모두에서 서로 다른 최적화 프로그램을 사용하는 것을 포함하여 보다 정교한 최적화 기술을 사용할 수 있습니다. 연합 k-평균 클러스터링을 포함한 다른 연합 학습 알고리즘은 여기 에서 찾을 수 있습니다.

모델 업데이트 압축

모델 업데이트의 손실 압축은 통신 비용을 줄여 전체 교육 시간을 단축할 수 있습니다.

최근 논문 을 재현하려면 이 연구 프로젝트 를 참조하십시오. 사용자 지정 압축 알고리즘을 구현하려면 기준선에 대한 프로젝트의 comparison_methods 를 예로 참조하고, 아직 익숙하지 않은 경우 TFF 집계자 자습서 를 참조하세요.

차등 프라이버시

TFF는 TensorFlow Privacy 라이브러리와 상호 운용이 가능하여 차등 개인 정보가 있는 모델의 연합 교육을 위한 새로운 알고리즘 연구를 가능하게 합니다. 기본 DP-FedAvg 알고리즘확장 을 사용하여 DP로 훈련하는 예는 이 실험 드라이버 를 참조하십시오.

사용자 지정 DP 알고리즘을 구현하고 연합 평균의 집계 업데이트에 적용하려면 tff.aggregators.DifferentiallyPrivateFactory tensorflow_privacy.DPQuery 만들 수 있습니다. DP-FTRL 알고리즘 을 구현하는 예는 여기 에서 찾을 수 있습니다.

연합 GAN( 아래 설명)은 사용자 수준의 차등 개인 정보 보호를 구현하는 TFF 프로젝트의 또 다른 예입니다(예: 여기 코드 ).

견고성과 공격

TFF는 연합 학습 시스템에 대한 표적 공격과 연합 학습을 백도어 백도어에서 고려한 차등 개인 정보 기반 방어를 시뮬레이션하는 데 사용할 수도 있습니다. . 이것은 잠재적으로 악의적인 클라이언트로 반복적인 프로세스를 구축하여 수행됩니다( build_federated_averaging_process_attacked 참조). target_attack 디렉토리에 자세한 내용이 포함되어 있습니다.

  • Tensorflow 함수인 클라이언트 업데이트 함수를 작성하여 새로운 공격 알고리즘을 구현할 수 있습니다. 예는 ClientProjectBoost 를 참조하세요.
  • 클라이언트 출력을 집계하여 전역 업데이트를 가져오는 'tff.utils.StatefulAggregateFn' 을 사용자 지정하여 새로운 방어를 구현할 수 있습니다.

시뮬레이션을 위한 예제 스크립트는 emnist_with_targeted_attack.py 를 참조하십시오.

생성적 적대 네트워크

GAN은 표준 연합 평균과 약간 다르게 보이는 흥미로운 연합 오케스트레이션 패턴 을 만듭니다. 여기에는 각각 고유한 최적화 단계로 훈련된 두 개의 개별 네트워크(생성기 및 판별기)가 포함됩니다.

TFF는 GAN의 연합 훈련에 대한 연구에 사용할 수 있습니다. 예를 들어, 최근 작업 에서 제시된 DP-FedAvg-GAN 알고리즘은 TFF에서 구현됩니다 . 이 작업은 연합 학습, 생성 모델 및 차등 개인 정보 보호 를 결합하는 효과를 보여줍니다.

개인화

연합 학습 환경에서의 개인화는 활발한 연구 분야입니다. 개인화의 목표는 다양한 사용자에게 다양한 추론 모델을 제공하는 것입니다. 이 문제에 대한 잠재적으로 다른 접근 방식이 있습니다.

한 가지 접근 방식은 각 클라이언트가 로컬 데이터로 단일 글로벌 모델(연합 ​​학습을 사용하여 학습)을 미세 조정하도록 하는 것입니다. 이 접근 방식은 메타 학습과 관련이 있습니다(예: 이 백서 참조). 이 접근 방식의 예는 emnist_p13n_main.py 에 나와 있습니다. 다양한 개인화 전략을 탐색하고 비교하기 위해 다음을 수행할 수 있습니다.

  • 초기 모델에서 시작하여 각 클라이언트의 로컬 데이터 세트를 사용하여 개인화된 모델을 학습 및 평가하는 tf.function 을 구현하여 개인화 전략을 정의합니다. 예제는 build_personalize_fn 에 의해 제공됩니다.

  • 전략 이름을 해당 개인화 전략에 매핑하는 OrderedDict 를 정의하고 이를 tff.learning.build_personalization_eval 에서 personalize_fn_dict 인수로 사용합니다.

또 다른 접근 방식은 모델의 일부를 완전히 로컬로 훈련하여 완전한 전역 모델을 훈련하는 것을 피하는 것입니다. 이 접근 방식의 인스턴스화는 이 블로그 게시물 에 설명되어 있습니다. 이 접근 방식은 메타 학습과도 관련이 있습니다. 이 백서 를 참조하십시오. 부분적으로 로컬 연합 학습을 탐색하려면 다음을 수행할 수 있습니다.