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)は、分散データに基づく機械学習やその他の計算のためのオープンソース フレームワークであり、フェデレーション ラーニング(FL)を使用したオープンな研究や実験を促進するために開発されました(FL は、トレーニング データをローカルに保持するクライアントが多数参加して共有グローバル モデルをトレーニングする、機械学習に対するアプローチです)。たとえば FL は、センシティブな入力データをサーバーにアップロードせずにモバイル キーボードの予測モデルをトレーニングするために使用されてきました。
TFF を使用すると、デベロッパーが所有するモデルやデータで付属のフェデレーション ラーニング アルゴリズムをシミュレートできるほか、新しいアルゴリズムを使って実験を行うこともできます。また、TFF から提供される構成要素を使用して、ラーニング計算以外(分散データの集約分析など)を実装することもできます。TFF のインターフェースは 2 つのレイヤで構成されています。
-
Federated Learning(FL)API
このレイヤは一連の高レベル インターフェースを提供します。デベロッパーはこのインターフェースを使用することで、フェデレーション トレーニングおよび評価の付属の実装を既存の TensorFlow モデルに適用できます。 -
Federated Core(FC)API
システムの中核となるのは、厳密に型指定された関数型プログラミング環境内で TensorFlow を分散型コミュニケーション オペレータと組み合わせることによって新しいフェデレーション アルゴリズムを簡潔に表現するための一連の低レベル インターフェースです。このレイヤは、フェデレーション ラーニングの基盤としての役割も果たしています。 -
デベロッパーは TFF を使用して、フェデレーション計算を宣言的に表現することができます。そのため、多様なランタイム環境にフェデレーション計算をデプロイできます。TFF には、テスト用の単一マシンのシミュレーション ランタイムが含まれています。チュートリアルにアクセスして、実際にお試しください。
ご質問やサポートについては、StackOverflow の tensorflow-federated タグをご利用ください。