개요
TFF는 현실적인 프록시 데이터 세트에서 연합 계산을 시뮬레이션하여 연합 학습(FL) 연구를 수행하기 위한 확장 가능하고 강력한 프레임워크입니다. 이 페이지에서는 연구 시뮬레이션과 관련된 주요 개념 및 구성 요소와 TFF에서 다양한 종류의 연구를 수행하기 위한 자세한 지침을 설명합니다.
TFF의 일반적인 연구 코드 구조
TFF에서 구현되는 연구 FL 시뮬레이션은 일반적으로 세 가지 주요 로직 유형으로 구성됩니다.
단일 위치(예: 클라이언트 또는 서버)에서 실행되는 논리를 캡슐화하는 TensorFlow 코드의 개별 조각, 일반적으로
tf.function
입니다. 이 코드는 일반적으로tff.*
참조 없이 작성 및 테스트되며 TFF 외부에서 재사용할 수 있습니다. 예를 들어 Federated Averaging의 클라이언트 교육 루프 는 이 수준에서 구현됩니다.TensorFlow Federated 오케스트레이션 로직은 1. 의 개별
tf.function
을 tff.tf_computation 으로 래핑한 다음tff.tf_computation
및tff.federated_broadcast
과 같은 추상화를 사용하여tff.federated_mean
내부에서tff.federated_computation
합니다. 예를 들어 Federated Averaging에 대한 이 오케스트레이션을 참조하십시오.프로덕션 FL 시스템의 제어 논리를 시뮬레이션하는 외부 드라이버 스크립트, 데이터 세트에서 시뮬레이션된 클라이언트를 선택한 다음 해당 클라이언트에서 2.에 정의된 연합 계산을 실행합니다. 예를 들어 Federated EMNIST 실험 드라이버 입니다.
제휴 학습 데이터 세트
TensorFlow federated는 연합 학습으로 해결할 수 있는 실제 문제의 특성을 나타내는 여러 데이터 세트를 호스팅합니다 .
데이터세트에는 다음이 포함됩니다.
스택오버플 로 . 훈련 세트에 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는 고성능 단일 및 다중 시스템 런타임을 제공하는 데 막대한 투자를 했습니다. 문서가 개발 중이지만 지금은 가속기를 사용하는 TFF 시뮬레이션 에 대한 지침 과 GCP에서 TFF를 사용하여 시뮬레이션을 설정하는 방법에 대한 지침을 참조하세요. 고성능 TFF 런타임은 기본적으로 활성화되어 있습니다.
다양한 연구 분야를 위한 TFF
연합 최적화 알고리즘
연합 최적화 알고리즘에 대한 연구는 원하는 사용자 정의 수준에 따라 TFF에서 다양한 방식으로 수행될 수 있습니다.
Federated Averaging 알고리즘의 최소 독립 실행형 구현이 여기에서 제공됩니다. 코드에는 로컬 계산을 위한 TF 함수 , 오케스트레이션을 위한 TFF 계산 및 EMNIST 데이터 세트의 드라이버 스크립트 가 예로 들어 있습니다. 이러한 파일은 README 의 자세한 지침에 따라 사용자 지정 응용 프로그램 및 알고리즘 변경에 맞게 쉽게 조정할 수 있습니다.
Federated Averaging의 보다 일반적인 구현은 여기 에서 찾을 수 있습니다. 이 구현은 서버와 클라이언트 모두에서 서로 다른 옵티마이저를 사용하는 것을 포함하여 보다 정교한 최적화 기술을 허용합니다. 연합 k-평균 클러스터링을 포함한 다른 연합 학습 알고리즘은 여기 에서 찾을 수 있습니다.
모델 업데이트 압축
모델 업데이트의 손실 압축은 통신 비용 감소로 이어져 전체 교육 시간을 단축할 수 있습니다.
최근 논문 을 재현하려면 이 연구 프로젝트 를 참조하십시오. 사용자 지정 압축 알고리즘을 구현하려면 기준선에 대한 프로젝트의 comparison_methods 를 예로 참조하고 아직 익숙하지 않은 경우 TFF Aggregators 자습서 를 참조하세요.
차등 프라이버시
TFF는 TensorFlow 개인정보 보호 라이브러리와 상호 운용 가능하여 차등 개인정보 보호를 사용하는 모델의 연합 교육을 위한 새로운 알고리즘을 연구할 수 있습니다. 기본 DP-FedAvg 알고리즘 및 확장 을 사용하는 DP 교육의 예는 이 실험 드라이버 를 참조하세요.
사용자 정의 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은 표준 Federated Averaging과 약간 다른 흥미로운 연합 오케스트레이션 패턴 을 만듭니다. 여기에는 각각 고유한 최적화 단계로 훈련된 두 개의 고유한 네트워크(생성기 및 판별기)가 포함됩니다.
TFF는 GAN의 연합 훈련 연구에 사용할 수 있습니다. 예를 들어, 최근 연구 에서 제시한 DP-FedAvg-GAN 알고리즘은 TFF로 구현된다 . 이 작업은 연합 학습, 생성 모델 및 차등 프라이버시 를 결합하는 효과를 보여줍니다.
개인화
연합 학습 환경에서 개인화는 활발한 연구 분야입니다. 개인화의 목표는 다양한 사용자에게 다양한 추론 모델을 제공하는 것입니다. 이 문제에 대해 잠재적으로 다른 접근 방식이 있습니다.
한 가지 접근 방식은 각 클라이언트가 로컬 데이터로 단일 글로벌 모델(연합 학습을 사용하여 교육)을 미세 조정하도록 하는 것입니다. 이 접근 방식은 메타 학습과 관련이 있습니다. 예를 들어 이 문서 를 참조하십시오. 이 접근 방식의 예는 emnist_p13n_main.py
에 나와 있습니다. 다양한 개인화 전략을 탐색하고 비교하기 위해 다음을 수행할 수 있습니다.
초기 모델에서 시작하여 각 클라이언트의 로컬 데이터 세트를 사용하여 개인화된 모델을 학습 및 평가하는
tf.function
을 구현하여 개인화 전략을 정의합니다.build_personalize_fn
에 의해 예가 제공됩니다.전략 이름을 해당 개인화 전략에 매핑하는
OrderedDict
를 정의하고tff.learning.build_personalization_eval
에서personalize_fn_dict
인수로 사용합니다.
또 다른 접근 방식은 모델의 일부를 완전히 로컬에서 교육하여 전체 글로벌 모델을 교육하지 않는 것입니다. 이 접근 방식의 인스턴스화는 이 블로그 게시물 에 설명되어 있습니다. 이 접근 방식은 메타 학습과도 연결되어 있습니다. 이 문서 를 참조하십시오. 부분 로컬 연합 학습을 탐색하려면 다음을 수행할 수 있습니다.
Federated Reconstruction 및 후속 연습을 적용하는 전체 코드 예제에 대한 자습서 를 확인하십시오.
tff.learning.reconstruction.build_training_process 를 사용하여 부분적으로 로컬 교육 프로세스를 생성
dataset_split_fn
tff.learning.reconstruction.build_training_process
을 수정하여 프로세스 동작을 사용자 지정합니다.