TFFを使用した連合学習の研究

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

概要

TFFは、現実的なプロキシデータセットで連合計算をシミュレートすることにより、連合学習(FL)研究を行うための拡張可能な強力なフレームワークです。 このページでは、研究シミュレーションに関連する主な概念とコンポーネント、およびTFFでさまざまな種類の研究を実施するための詳細なガイダンスについて説明します。

TFF の研究コードの典型的な構造

TFFに実装された研究用の連合学習のシミュレーションは、通常、3つの主要なタイプのロジックで構成されます。

  1. TensorFlow コードの個々の部分、通常はtf.functionで、単一の場所(たとえば、クライアント上またはサーバー上)で実行されるロジックをカプセル化します。 このコードは通常、tff.*参照なしで作成およびテストされており、TFF の外部で再利用できます。たとえば、連合平均化のクライアントトレーニングループは、このレベルで実装されます。

  2. TensorFlow Federated のオーケストレーションロジックは、1からの個々のtf.functiontff.tf_computationとしてラップし、バインドします。次に、tff.federated_computation内のtff.federated_broadcasttff.federated_meanなどの抽象化を使用してそれらをオーケストレーションします。例として、この Federated Averaging のオーケストレーションをご覧ください。

  3. 本番環境の連合学習システムの制御ロジックをシミュレートする外部ドライバースクリプトは、データセットからシミュレートされたクライアントを選択し、それらのクライアントで2.で定義された連合計算を実行します。(例:a Federated EMNIST experiment driver

連合学習データセット

TensorFlow の連合学習データセットは、連合学習で解決できる実際の問題の特徴を表す複数のデータセットをホストします。

注意: これらのデータセットは、ClientData API に記載されているように、Numpy 配列として Python ベースの機械学習フレームワークでも使用できます。

データセットには以下が含まれています。

  • StackOverflow言語モデリングや教師あり学習タスク用の現実的なテキストデータセット。342,477人のユニークユーザーがトレーニングセットで135,818,730例(センテンス)を使用します。

  • Federated EMNIST各クライアントが異なるライターに対応する、EMNIST文字と数字のデータセットの連合前処理。完全なトレインセットには、62のラベルからの671,585の例を持つ3400人のユーザーが含まれています。

  • Shakespeareウィリアムシェイクスピアの全作品に基づいた、文字レベルの小さなテキストデータセット。 データセットは715人のユーザー(シェイクスピア劇のキャラクター)で構成されます。各例は、特定の劇のキャラクターが話す連続した一連の行に対応しています。

  • CIFAR-100500のトレーニングクライアントと100のテストクライアントにわたるCIFAR-100データセットの連合パーティション。各クライアントには100のユニークな例があります。 パーティションは、クライアント間でより現実的な異質性を作成する方法で行われます。 詳細については、APIをご覧ください。

  • Google Landmark v2 データセット。 データセットにはさまざまな世界的名所の写真で構成されており、データの連合パーティションを得られるよう、画像は写真家ごとにグループ化されています。データベースには、233 件のクライアントと 23080 枚の画像が含まれる小さいデータセットと、1262 件のクライアントと 164172 枚の画像が含まれる大きなデータセットの 2 種類があります。

  • CelebA 有名人の顔のサンプル(画像と顔の特徴)を集めたデータセットです。連合データセットには各有名人のサンプルがクライアントを形成するようにグループ化されています。クライアントは 9343 件あり、それぞれに少なくとも 5 個のサンプルがあります。データセットは、クライアント別またはサンプル別に、トレーニンググループとテストグループに分割できます。

  • iNaturalist さまざまな種の写真で構成されるデータセット。データセットには、1,203 種の 120,300 枚の画像が含まれます。データセットには 7 つの種類があります。1 つは写真家別にグループ化されており、9257 件のクライアントが含まれます。残りのデータセットは、写真が撮影された場所の位置情報でグループ化されています。これらの 6 つのデータセットは、11~3,606 件のクライアントで構成されています。

高性能シミュレーション

FL シミュレーションの実時間は、アルゴリズムを評価するための適切な指標ではありませんが(シミュレーションハードウェアは実際のフェデレーテッドラーニングデプロイメント環境を表していないため)、フェデレーテッドラーニングシミュレーションをすばやく実行できることは、研究の生産性にとって重要です。そのため、TFF は単一および複数のマシンで高性能なランタイムを提供するために多額の投資を行ってきました。現在、ドキュメントは開発中ですが、「TFF を使用した高性能シミュレーション」チュートリアルと GCP で TFF を使用したシミュレーションを設定する手順をご覧ください。高性能 TFF ランタイムはデフォルトで有効になっています。

さまざまな研究分野の TFF

連合最適化アルゴリズム

TFF を利用すると指定するカスタマイズレベルに応じて連合最適化アルゴリズムの研究をさまざまな方法で行うことができます。

Federated Averaging アルゴリズムの最小限のスタンドアロン実装は、こちらに提供されています。コードには、例として、ローカル計算用のTF関数、オーケストレーション用のTFF計算、およびEMNISTデータセットのドライバースクリプトが含まれています。これらのファイルは、 README の詳細な指示に従って、カスタマイズされたアプリケーションやアルゴリズムの変更に簡単に適合させることができます。

Federated Averaging のより一般的な実装は、こちらにあります。この実装により、サーバーとクライアントの両方でさまざまなオプティマイザを使用するなど、より高度な最適化手法を適用することができます。連合 k-平均クラスタリングなどの他の連合学習アルゴリズムはこちらをご覧ください。

モデルと圧縮の更新

TFF は tensor_encoding API を使用して非可逆圧縮アルゴリズムを有効にし、サーバーとクライアント間の通信コストを削減します。サーバーからクライアントおよびクライアントからサーバーへの Federated Averaging アルゴリズムを使用した圧縮のトレーニング例については、この実験をご覧ください。

カスタム圧縮アルゴリズムを実装してトレーニングループに適用するには、次の手順に従います。

  1. 新しい圧縮アルゴリズムを EncodingStageInterface のサブクラスとして実装します。または、この例のようにより一般的なバリアントAdaptiveEncodingStageInterfaceとして実装します。
  2. 新しい Encoder を作成し、モデルブロードキャストまたはモデル更新の平均化に特化します。
  3. これらのオブジェクトを使用して、トレーニング計算全体を構築します。

差別的なプライバシー

TFF は TensorFlow Privacy ライブラリと相互運用可能であり、差別化されたプライバシーを持つモデルの連合トレーニングの新しいアルゴリズムの研究を可能にします。基本的な DP-FedAvg アルゴリズム拡張機能を使用して DP でトレーニングする例については、この実験ドライバーをご覧ください。

カスタム DP アルゴリズムを実装し、それを Federated Averaging の集計更新に適用する場合、新しい DP 平均アルゴリズムを tensorflow_privacy.DPQuery のサブクラスとして実装し、クエリのインスタンスで tff.aggregators.DifferentiallyPrivateFactory を作成することができます。DP-FTRL アルゴリズムの実装例はこちらにあります。

以下で説明されている Federated GAN は、ユーザーレベルの差分プライバシーを実装する TFF プロジェクトの別の例です(例としてこのコードを参照してください)。

堅牢性と攻撃

TFF は、「連合学習にバックドアを組み込むことは可能か?」で取り上げられているように、連合学習システムへの標的型攻撃とプライバシーに基づく差別化された防御のシミュレーションにも使用できます。これは、潜在的に悪意のあるクライアントとのイテレーションプロセスを構築することにより実行されます。(build_federated_averaging_process_attackedを参照してください。) 詳細は targeted_attack ディレクトリをご覧ください。

  • 新しい攻撃アルゴリズムは、Tensorflow関数であるクライアント更新関数を記述することにより、実装できます。
  • 新しい防御策は、クライアントの出力を集約してグローバル更新を取得する

シミュレーションのサンプルスクリプトについては、emnist_with_targeted_attack.pyをご覧ください。

生成的敵対的ネットワーク

GAN は、標準の Federated Averaging とは少し異なる興味深い連合オーケストレーションパターンを作り出します。これには、それぞれ独自の最適化ステップでトレーニングされた 2 つの異なるネットワーク(ジェネレーターとディスクリミネーター)が含まれます。

TFF は、GAN の連合学習の研究に使用できます。たとえば、最近の研究で示されている DP-FedAvg-GAN アルゴリズムは TFFで実装されています。この研究は、連合学習、生成モデル、差分プライバシーを組み合わせることの有効性を示しています。

パーソナライゼーション

連合学習の設定におけるパーソナライゼーションは、活発な研究分野です。パーソナライゼーションの目標は、さまざまな推論モデルをさまざまなユーザーに提供することです。この問題に対しては様々なアプローチがあります。

1つのアプローチは、各クライアントがローカルデータを使用して(フェデレーテッドラーニングを使用してトレーニングされた)単一のグローバルモデルを微調整できるようにすることです。このアプローチはメタ学習に関連しています(こちらの論文を参照してください)。このアプローチの例は、emnist_p13n_main.pyにあります。 さまざまなパーソナライズ戦略を探索して比較するには、次の方法があります。

  • 初期モデルから開始し、各クライアントのローカルデータセットを使用してパーソナライズモデルをトレーニングおよび評価するtf.functionを定義します。 例は、build_personalize_fnをご覧ください。

  • 戦略名を対応するパーソナライズ戦略にマップするOrderedDictを定義し、それを tff.learning.build_personalization_evalpersonalize_fn_dict 引数として使用します。

もう 1 つのアプローチは、モデルの一部を完全にローカルでトレーニングすることで、完全にグローバルなモデルをトレーニングしないようにすることです。こちらのブログ記事には、このアプローチの一種が説明されています。このアプローチはメタ学習にも関連しています。こちらの論文をご覧ください。部分的なローカルな連合学習を探索するには、次の方法があります。