TensorFlow Federated: 분산 데이터에 대한 머신 러닝
import tensorflow as tf import tensorflow_federated as tff # Load simulation data. source, _ = tff.simulation.datasets.emnist.load_data() def client_data(n): return source.create_tf_dataset_for_client(source.client_ids[n]).map( lambda e: (tf.reshape(e['pixels'], [-1]), e['label']) ).repeat(10).batch(20) # Pick a subset of client devices to participate in training. train_data = [client_data(n) for n in range(3)] # Wrap a Keras model for use with TFF. def model_fn(): model = tf.keras.models.Sequential([ tf.keras.layers.Dense(10, tf.nn.softmax, input_shape=(784,), kernel_initializer='zeros') ]) return tff.learning.from_keras_model( model, input_spec=train_data[0].element_spec, loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=[tf.keras.metrics.SparseCategoricalAccuracy()]) # Simulate a few rounds of training with the selected client devices. trainer = tff.learning.algorithms.build_weighted_fed_avg( model_fn, client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1)) state = trainer.initialize() for _ in range(5): result = trainer.next(state, train_data) state = result.state metrics = result.metrics print(metrics['train']['loss'])
-
TensorFlow Federated(TFF)는 분산 데이터에 대한 머신 러닝 및 기타 계산을 위한 오픈 소스 프레임워크입니다. TFF는 공유 글로벌 모델이 교육 데이터를 로컬로 유지하는 많은 참여 클라이언트 간에 교육되는 기계 학습에 대한 접근 방식인 FL(Federated Learning) 을 통한 공개 연구 및 실험을 용이하게 하기 위해 개발되었습니다. 예를 들어, FL은 민감한 타이핑 데이터를 서버에 업로드하지 않고 모바일 키보드용 예측 모델 을 훈련하는 데 사용되었습니다.
TFF를 통해 개발자는 모델 및 데이터에 포함된 연합 학습 알고리즘을 시뮬레이션하고 새로운 알고리즘을 실험할 수 있습니다. 연구원들은 다양한 종류의 연구에 대한 출발점과 완전한 예 를 찾을 것입니다. TFF에서 제공하는 빌딩 블록은 연합 분석 과 같은 비학습 계산을 구현하는 데에도 사용할 수 있습니다. TFF의 인터페이스는 두 가지 주요 계층으로 구성됩니다.
-
연합 학습(FL) API
이 계층은 개발자가 포함된 통합 교육 및 평가 구현을 기존 TensorFlow 모델에 적용할 수 있도록 하는 고급 인터페이스 세트를 제공합니다. -
연합 코어(FC) API
시스템의 핵심에는 강력한 형식의 기능적 프로그래밍 환경 내에서 TensorFlow를 분산 통신 연산자와 결합하여 새로운 연합 알고리즘을 간결하게 표현하기 위한 일련의 저수준 인터페이스가 있습니다. 이 계층은 또한 우리가 연합 학습을 구축한 토대 역할을 합니다. -
TFF를 통해 개발자는 연합 계산을 선언적으로 표현할 수 있으므로 다양한 런타임 환경에 배포할 수 있습니다. TFF에는 실험을 위한 고성능 다중 기계 시뮬레이션 런타임이 포함되어 있습니다. 튜토리얼 을 방문하여 직접 사용해 보십시오!
질문 및 지원이 필요한 경우 StackOverflow의 tensorflow-federated 태그 를 참조하세요.