Path: blob/master/site/ja/federated/tutorials/federated_select.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
tff.federated_select を使用して特定のクライアントに異なるデータを送信する
このチュートリアルでは、TFF でさまざまなクライアントにさまざまなデータを送信する必要がある場合にカスタム連合アルゴリズムを実装する方法を実演します。サーバーに配置された単一の値をすべてのクライアントに送信する tff.federated_broadcast
については既にご存知かもしれません。このチュートリアルでは、サーバーベースの値のさまざまな部分がさまざまなクライアントに送信される場合について見ていきます。モデル全体が単一のクライアントに送信されないように、モデルの一部を異なるクライアントに分割する場合に役立ちます。
まず、tensorflow
と tensorflow_federated
をインポートします。
クライアントデータに基づいて異なる値を送信する
サーバーに配置されたリストがあり、そこからクライアントに配置されたデータに基づいて各クライアントにいくつかの要素を送信する場合を検討してみます。たとえば、サーバー上およびクライアント上の文字列のリスト、ダウンロードするインデックスのコンマ区切りのリストは、次のように実装できます。
次に、サーバーに配置された文字列のリストと各クライアントの文字列データを提供することで、計算をシミュレートできます。
ランダム化された要素を各クライアントに送信する
または、サーバーデータのランダムな要素を各クライアントに送信すると便利な場合があります。これを実装するには、最初に各クライアントでランダムキーを生成し、上記と同様の選択プロセスに従います。
broadcast_random_element
関数はクライアントに配置されたデータを取り込めないため、TFF シミュレーションランタイムで使用するクライアントのデフォルト数を構成する必要があります。
次に、選択をシミュレートします。上記の default_num_clients
と以下の文字列のリストを変更してさまざまな結果を生成します。または、計算を再実行してさまざまなランダム出力を生成します。