Path: blob/master/site/ko/federated/tutorials/loading_remote_data.ipynb
25118 views
Copyright 2022 The TensorFlow Authors.
TFF에서 원격 데이터 로드
참고: 이 Colab은 tensorflow_federated
pip 패키지의 최신 릴리즈 버전에서 동작하는 것으로 확인되었지만 Tensorflow Federated 프로젝트는 아직 시험판 개발 중이며 main
에서 동작하지 않을 수 있습니다.
페더레이션 학습의 실제 응용에서 원시 훈련 데이터는 일반적으로 많은 장치 또는 데이터 사일로에 분산되므로 사용하기 전에 특별한 사전 처리와 로드가 필요합니다.
이 튜토리얼에서는 TFF의 DataBackend
및 DataExecutor
인터페이스를 사용하여 원격 위치에 저장된 예제를 로드하고 페더레이션 학습을 사용하여 모델을 훈련하는 데 이를 사용하는 방법에 대해 설명합니다. 로컬에 저장된 훈련 데이터세트를 사용하여 데이터 로드 API의 사용을 시연하고 데이터세트가 개별 원격 클라이언트에 분할된 것처럼 예제 샘플링을 시뮬레이션합니다. 이 튜토리얼을 사용 사례에 맞게 조정할 때는 해당 데이터세트를 자신의 분산 데이터로 교체하기만 하면 됩니다.
페더레이션 학습 또는 TFF를 처음 접하는 경우, 입문서로 이미지 분류를 위한 페더레이션 학습을 읽어보세요.
시작하기 전에
시작하기 전에 다음을 실행하여 환경이 올바르게 설정되었는지 확인하세요. 자세한 내용은 설치 안내서를 참조하세요.
입력 데이터 준비하기
우선, 기본 제공 리포지토리에서 EMNIST 데이터세트의 TFF 페더레이션 버전을 로드하겠습니다.
그리고 EMNIST 데이터세트의 원시 예제를 변환하는 전처리 기능을 구성합니다.
이것이 작동하는지 확인해 보겠습니다.
다음으로, EMNIST 데이터세트의 클라이언트에서 로컬 예제를 로드하고 사전 처리하는 DataBackend
구현을 구성합니다. 이는 페더레이션 학습 중에 훈련 가능한 예제를 가져오는 데 중요합니다.
클라이언트 데이터를 가져오는 방법 정의하기
TFF 작업자에게 로컬 데이터를 로드하고 변환하는 방법을 알려주려면 DataBackend
의 인스턴스가 필요합니다.
TFF 작업자는 에지 머신에서 실행되고 단일 또는 다중 논리 클라이언트에 대한 작업을 수행하는 프로세스입니다. 이 예에서 훈련에 사용할 EMNIST 데이터세트는 이미 논리적 클라이언트에 의해 분할되었으며 모든 작업자는 동일한 로컬 환경에서 실행됩니다. 따라서 DataBackend
는 모든 클라이언트에 해당하는 데이터를 참조할 수 있습니다. 그러나 실험적이지 않은 환경에서는 TFF 작업자가 개별 원격 시스템에 분산되어 각각 고유한 클라이언트 집합에 매핑되며 DataBackend
가 로컬 컨텍스트에 따라 데이터 참조를 올바르게 확인할 수 있는지 확인해야 합니다.
런타임 환경 설정하기
TFF 계산은 ExecutionContext
에 의해 호출되며 TFF 계산에 정의된 데이터 URI가 런타임에 이해되도록 하려면 방금 만든 DataBackend
에 대한 포인터를 포함하는 사용자 정의 컨텍스트를 TFF 작업자에 대해 정의해야 URI가 제대로 해석될 수 있습니다.
모델 훈련하기
이제 페더레이션 학습을 사용하여 모델을 훈련할 준비가 되었습니다. Keras 모델을 정의하겠습니다.
다음과 같이 도우미 함수 tff.learning.algorithms.build_weighted_fed_avg
를 호출하여 모델의 TFF 래핑된 정의를 Federated Averaging 알고리즘에 전달할 수 있습니다.
initialize
계산은 Federated Averaging 프로세스의 초기 상태를 반환합니다.
훈련 라운드를 실행하려면 다음과 같이 URI 참조 샘플을 수집하여 데이터 샘플을 구성해야 합니다.
이제 한 라운드의 훈련을 할 수 있습니다.
여러 라운드에 걸쳐 훈련하기
클라이언트를 선택하고 로컬 데이터를 검색하기 위한 입력을 조합하기 위해 FederatedDataSource
컨테이너를 정의할 수 있습니다. 이를 통해 여러 훈련 라운드를 반복하기가 편리해지고 여러 훈련 작업에서 재사용할 수 있습니다.
이제 다음과 같이 페더레이션 학습 훈련 루프를 실행할 수 있습니다.
결론
이것으로 튜토리얼을 마칩니다. 제공되는 다른 튜토리얼을 살펴보고 TFF 프레임워크의 다른 많은 기능에 대해 알아보기 바랍니다.