TF 2.0 is out! Get hands-on practice at TF World, Oct 28-31. Use code TF20 for 20% off select passes. Register now

TensorFlow Federated: 分散データに基づく機械学習

from six.moves import range
import tensorflow as tf
import tensorflow_federated as tff
from tensorflow_federated.python.examples import mnist
tf.compat.v1.enable_v2_behavior()

# Load simulation data.
source, _ = tff.simulation.datasets.emnist.load_data()
def client_data(n):
  dataset = source.create_tf_dataset_for_client(source.client_ids[n])
  return mnist.keras_dataset_from_emnist(dataset).repeat(10).batch(20)

# Pick a subset of client devices to participate in training.
train_data = [client_data(n) for n in range(3)]

# Grab a single batch of data so that TFF knows what data looks like.
sample_batch = tf.nest.map_structure(
    lambda x: x.numpy(), iter(train_data[0]).next())

# Wrap a Keras model for use with TFF.
def model_fn():
  return tff.learning.from_compiled_keras_model(
      mnist.create_simple_keras_model(), sample_batch)

# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.build_federated_averaging_process(model_fn)
state = trainer.initialize()
for _ in range(5):
  state, metrics = trainer.next(state, train_data)
  print (metrics.loss)
  • TensorFlow Federated(TFF)は、分散データに基づく機械学習やその他の計算のためのオープンソース フレームワークであり、フェデレーション ラーニング(FL)を使用したオープンな研究や実験を促進するために開発されました(FL は、トレーニング データをローカルに保持するクライアントが多数参加して共有グローバル モデルをトレーニングする、機械学習に対するアプローチです)。たとえば FL は、センシティブな入力データをサーバーにアップロードせずにモバイル キーボードの予測モデルをトレーニングするために使用されてきました。

    TFF を使用すると、デベロッパーが所有するモデルやデータで付属のフェデレーション ラーニング アルゴリズムをシミュレートできるほか、新しいアルゴリズムを使って実験を行うこともできます。また、TFF から提供される構成要素を使用して、ラーニング計算以外(分散データの集約分析など)を実装することもできます。TFF のインターフェースは 2 つのレイヤで構成されています。

  • Federated Learning(FL)API

    このレイヤは一連の高レベル インターフェースを提供します。デベロッパーはこのインターフェースを使用することで、フェデレーション トレーニングおよび評価の付属の実装を既存の TensorFlow モデルに適用できます。
  • Federated Core(FC)API

    システムの中核となるのは、厳密に型指定された関数型プログラミング環境内で TensorFlow を分散型コミュニケーション オペレータと組み合わせることによって新しいフェデレーション アルゴリズムを簡潔に表現するための一連の低レベル インターフェースです。このレイヤは、フェデレーション ラーニングの基盤としての役割も果たしています。
  • デベロッパーは TFF を使用して、フェデレーション計算を宣言的に表現することができます。そのため、多様なランタイム環境にフェデレーション計算をデプロイできます。TFF には、テスト用の単一マシンのシミュレーション ランタイムが含まれています。チュートリアルにアクセスして、実際にお試しください。