개요
TFF는 현실적인 프록시 데이터 세트에서 연합 계산을 시뮬레이션하여 연합 학습(FL) 연구를 수행하기 위한 확장 가능하고 강력한 프레임워크입니다. 이 페이지에서는 연구 시뮬레이션과 관련된 주요 개념과 구성 요소는 물론 TFF에서 다양한 종류의 연구를 수행하기 위한 자세한 지침을 설명합니다.
TFF의 연구 코드의 일반적인 구조
TFF에서 구현된 연구 FL 시뮬레이션은 일반적으로 세 가지 주요 로직 유형으로 구성됩니다.
단일 위치(예: 클라이언트 또는 서버)에서 실행되는 로직을 캡슐화하는 개별 TensorFlow 코드 조각(일반적으로
tf.function
)입니다. 이 코드는 일반적으로tff.*
참조 없이 작성 및 테스트되며 TFF 외부에서 재사용할 수 있습니다. 예를 들어, Federated Averaging의 클라이언트 훈련 루프는 이 수준에서 구현됩니다.TensorFlow Federated 오케스트레이션 논리는 1.의 개별
tf.function
을tff.tensorflow.computation
으로 래핑한 다음tff.federated_broadcast
및tff.federated_mean
과 같은 추상화를 사용하여tff.federated_computation
내부에서 오케스트레이션하여 함께 묶습니다. 예를 들어 Federated Averaging에 대한 이 오케스트레이션을 참조하세요.프로덕션 FL 시스템의 제어 논리를 시뮬레이션하고 데이터 세트에서 시뮬레이션된 클라이언트를 선택한 다음 해당 클라이언트에서 2.에 정의된 연합 계산을 실행하는 외부 드라이버 스크립트입니다. 예를 들어 Federated EMNIST 실험 드라이버입니다 .
연합 학습 데이터세트
TensorFlow 연합은 연합 학습으로 해결할 수 있는 실제 문제의 특성을 나타내는 여러 데이터세트를 호스팅합니다 .
데이터 세트에는 다음이 포함됩니다.
스택 오버플로 . 훈련 세트에 135,818,730개의 예(문장)가 있는 342,477명의 고유 사용자가 포함된 언어 모델링 또는 지도 학습 작업을 위한 현실적인 텍스트 데이터세트입니다.
연합 EMNIST . 각 클라이언트가 서로 다른 작성자에 해당하는 EMNIST 문자 및 숫자 데이터세트의 연합 전처리입니다. 전체 열차 세트에는 62개 라벨의 671,585개 예시와 함께 3,400명의 사용자가 포함되어 있습니다.
셰익스피어 . 윌리엄 셰익스피어의 전 작품을 기반으로 한 더 작은 문자 수준의 텍스트 데이터세트입니다. 데이터 세트는 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가지 유형의 데이터 세트를 사용할 수 있습니다. 그 중 1개는 사진작가별로 그룹화되어 있으며 9257명의 클라이언트로 구성되어 있습니다. 나머지 데이터 세트는 사진이 촬영된 지리적 위치별로 그룹화됩니다. 이러한 6가지 유형의 데이터 세트는 11~3,606개의 클라이언트로 구성됩니다.
고성능 시뮬레이션
FL 시뮬레이션 의 벽시계 시간은 알고리즘 평가와 관련된 측정 기준이 아니지만(시뮬레이션 하드웨어는 실제 FL 배포 환경을 대표하지 않기 때문에) FL 시뮬레이션을 빠르게 실행할 수 있는 능력은 연구 생산성에 매우 중요합니다. 따라서 TFF는 고성능 단일 및 다중 시스템 런타임을 제공하는 데 막대한 투자를 해왔습니다. 문서는 개발 중이지만 현재는 가속기를 사용한 TFF 시뮬레이션 에 대한 지침과 GCP에서 TFF를 사용한 시뮬레이션 설정 에 대한 지침을 참조하세요. 고성능 TFF 런타임은 기본적으로 활성화됩니다.
다양한 연구 분야를 위한 TFF
연합 최적화 알고리즘
연합 최적화 알고리즘에 대한 연구는 원하는 사용자 정의 수준에 따라 TFF에서 다양한 방식으로 수행될 수 있습니다.
연합 평균화 알고리즘의 최소 독립 실행형 구현이 여기에 제공됩니다. 코드에는 로컬 계산을 위한 TF 함수 , 오케스트레이션을 위한 TFF 계산 , EMNIST 데이터세트의 드라이버 스크립트 등이 포함되어 있습니다. 이러한 파일은 README 의 자세한 지침에 따라 사용자 정의된 응용 프로그램 및 알고리즘 변경에 쉽게 적용할 수 있습니다.
연합 평균화의 보다 일반적인 구현은 여기에서 찾을 수 있습니다. 이 구현을 통해 서버와 클라이언트 모두에서 서로 다른 최적화 프로그램을 사용하는 등 보다 정교한 최적화 기술이 가능해졌습니다. 연합 k-평균 클러스터링을 포함한 다른 연합 학습 알고리즘은 여기에서 찾을 수 있습니다.
모델 업데이트 압축
모델 업데이트의 손실 압축으로 인해 통신 비용이 절감되고 결과적으로 전체 교육 시간이 단축될 수 있습니다.
최근 논문을 재현하려면 이 연구 프로젝트를 참조하세요. 사용자 정의 압축 알고리즘을 구현하려면 기준선에 대한 프로젝트의 비교 방법을 참조하고, 아직 익숙하지 않은 경우 TFF Aggregators 튜토리얼을 참조하세요 .
차등 프라이버시
TFF는 TensorFlow Privacy 라이브러리와 상호 운용 가능하여 차등 개인 정보 보호를 갖춘 모델의 연합 교육을 위한 새로운 알고리즘에 대한 연구를 가능하게 합니다. 기본 DP-FedAvg 알고리즘 및 확장을 사용한 DP 교육의 예는 이 실험 드라이버를 참조하세요.
사용자 정의 DP 알고리즘을 구현하고 이를 연합 평균의 집계 업데이트에 적용하려면 tensorflow_privacy.DPQuery
의 하위 클래스로 새로운 DP 평균 알고리즘을 구현하고 쿼리 인스턴스를 사용하여 tff.aggregators.DifferentiallyPrivateFactory
를 생성할 수 있습니다. DP-FTRL 알고리즘 구현의 예는 여기에서 찾을 수 있습니다.
Federated GAN( 아래 설명)은 사용자 수준 차등 개인 정보 보호를 구현하는 TFF 프로젝트의 또 다른 예입니다(예: 여기 코드 ).
견고성과 공격
TFF는 또한 연합 학습 시스템에 대한 표적 공격과 Can You really Back door Federated Learning? 에서 고려된 차등 개인 정보 보호 기반 방어를 시뮬레이션하는 데 사용될 수도 있습니다. . 이는 잠재적으로 악의적인 클라이언트로 반복 프로세스를 구축하여 수행됩니다( 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_computation
의personalize_fn_dict
인수로 사용합니다.
또 다른 접근 방식은 모델의 일부를 완전히 로컬에서 훈련하여 완전히 전역적인 모델을 훈련하지 않는 것입니다. 이 접근 방식의 인스턴스화는 이 블로그 게시물 에 설명되어 있습니다. 이 접근 방식은 메타 학습과도 연결됩니다. 이 문서를 참조하세요. 부분적으로 로컬 연합 학습을 탐색하려면 다음을 수행할 수 있습니다.
tff.learning.reconstruction.build_training_process
사용하여 부분적으로 로컬인 훈련 프로세스를 생성하고,dataset_split_fn
수정하여 프로세스 동작을 사용자 정의합니다.