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.build_federated_averaging_process(
  model_fn,
  client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1))
state = trainer.initialize()
for _ in range(5):
  state, metrics = trainer.next(state, train_data)
  print(metrics['train']['loss'])
  • TensorFlow Federated(TFF)는 분산 데이터를 사용해 머신러닝 및 기타 계산을 수행할 수 있는 오픈소스 프레임워크입니다. TFF는 FL(제휴 학습)을 사용해 개방형 연구 및 실험을 증진하기 위해 개발되었습니다. 제휴 학습은 머신러닝에 대한 접근방식으로, 참여하는 여러 클라이언트가 공유 전역 모델을 학습시키며 각자의 학습 데이터를 로컬에 보관하게 됩니다. 예를 들어 FL은 민감한 입력 데이터를 서버에 업로드하지 않고도 모바일 키보드 예측 모델을 학습시키는 데 사용되어 왔습니다.

    개발자는 TFF를 사용해 포함된 제휴 학습 알고리즘을 모델 및 데이터에 시뮬레이션하거나 새로운 알고리즘을 실험하는 데 사용할 수 있습니다. TFF에서 제공하는 구성요소를 사용하면 분산 데이터에 대한 집계 분석과 같은 비학습 데이터 계산을 구현할 수도 있습니다. TFF의 인터페이스는 다음과 같은 두 레이어로 구성됩니다.

  • 이 레이어는 개발자가 여기에 구현되어 있는 제휴 학습 및 평가를 기존 TensorFlow 모델에 적용할 수 있는 상위 수준 인터페이스를 제공합니다.
  • 이 시스템의 핵심에는 강력한 유형의 함수 프로그래밍 환경에서 TensorFlow와 분산 통신 연산자를 결합하여 새로운 제휴 알고리즘을 간결하게 표현하기 위한 일련의 하위 수준 인터페이스가 있습니다. 이 레이어는 제휴 학습이 구축된 토대이기도 합니다.
  • 개발자는 TFF를 사용하여 제휴 계산을 선언적으로 표현하고 다양한 런타임 환경에 배포할 수 있습니다. TFF에는 실험용으로 사용할 수 있는 단일 머신 시뮬레이션 런타임이 포함되어 있습니다. 가이드를 방문해 직접 사용해 보세요.

    궁금한 점이 있거나 지원이 필요한 경우 StackOverflow에서 tensorflow-federated 태그를 찾으세요.