On-Device Personalization 連携コンピューティング サーバー

フェデレーション コンピューティング(FC)サーバーは、オンデバイス パーソナライズ(ODP)が提供するフェデレーション ラーニングの一部です。このドキュメントの目的は、Federated Compute Server(FC Server)、そのコンポーネント、使用されているテクノロジーを紹介することです。このドキュメントでは、アーキテクチャの概要を説明してから、各コンポーネントについて詳しく説明します。また、コンポーネントが連携してフェデレーション ラーニング環境を提供する仕組みについても説明し、ワークロードのスケーリングとシャーディングの戦略についても紹介します。

トレーニング フロー

トレーニングは、FC クライアントと FC サーバー間のデータフローで構成されます。FC クライアントは、デバイス上で ML モデルをトレーニングし、FC サーバーとやり取りするコア Android モジュールです。FC サーバーは、高信頼実行環境(TEE)で FC クライアントからの結果を安全に処理して集計します。

トレーニングは次の手順で構成されます。

Android 版プライバシー サンドボックスにおけるフェデレーション コンピューティング クライアントとサーバー間のトレーニング フローを示すフローチャート。
  1. デバイス上の FC クライアントが、鍵サービスから公開暗号鍵をダウンロードします。
  2. FC クライアントは FC サーバーにチェックインし、トレーニング タスクを取得します。
  3. FC クライアントは、トレーニング プランとモデルの最新バージョン(バージョン N)をダウンロードします。
  4. FC クライアントは、ローカルデータとプランを使用してトレーニングを行います。
  5. FC クライアントは、ステップ 0 で取得した公開鍵を使用してこのデバイスの貢献度を暗号化し、FC サーバーにアップロードします。
  6. FC クライアントは、トレーニングが完了したことを FC サーバーに通知します。
  7. FC サーバーは、十分な数のクライアントが貢献を送信するまで待機します。
  8. 集計ラウンドがトリガーされます。
  9. 暗号化された投稿は、アグリゲータによって高信頼実行環境(TEE)に読み込まれます。
  10. アグリゲータは、NIST の RFC 9334 Remote ATtestation procedureS(RATS)アーキテクチャに沿って、コーディネーターに対して自己証明を行います。構成証明に成功すると、Key Services は復号鍵を付与します。これらの鍵は、Shamir 秘密共有スキームで複数の鍵プロバイダに分割されることがあります。
  11. アグリゲータは、クロスデバイス集計を行い、適切な差分プライバシー(DP)メカニズムに従ってクリップとノイズを追加し、ノイズが追加された結果を出力します。
  12. アグリゲータモデル アップデータをトリガーします。
  13. モデル アップデータは、集計された貢献度を読み込み、モデル バージョン N に適用してモデル バージョン N + 1 を作成します。新しいモデルがモデル ストレージに push されます。

FC サーバーは、TEE と関連するセキュリティ機能をサポートする任意のクラウド サービスにデプロイできます。現在、パブリック クラウド プロバイダと基盤となるテクノロジーを評価していますが、ここでは Confidential Space を使用した Google Cloud の実装例を紹介します。

アーキテクチャの概要

FC サーバーには、Google Cloud に次のコンポーネントがデプロイされています。

Android 版プライバシー サンドボックスのフェデレーション コンピューティング サーバーのアーキテクチャを示す図。
コンポーネント 説明
タスク管理サービス トレーニング タスクを管理するためのウェブ サービス。パートナーは、タスク管理 API を使用して、トレーニング タスクの作成、既存のすべてのトレーニング タスクの一覧表示、タスクのキャンセル、すべてのトレーニング ステータスの取得を行う必要があります。
タスク割り当てサービス クライアント デバイスが定期的にチェックインしてトレーニング タスクを取得し、トレーニング ステータスをレポートする HTTPS ベースのウェブ サービス。
アグリゲータ Confidential Space で実行されているバックグラウンド サービス。ODP で作成されたワークロードを実行します。復号鍵へのアクセスをガードレールするコーディネーターに証明する必要があります。正常に証明されたアグリゲータのみが、クライアント デバイスから送信されたコントリビューションを復号し、クロスデバイス集計を実行できます。
モデル アップデータ 集計されたグラデーションをモデルに適用する Confidential Space で実行されるバックグラウンド サービス。

コンポーネントの詳細

以降のセクションでは、アーキテクチャの概要をさらに詳しく説明します。

Android 版プライバシー サンドボックスのフェデレーション コンピューティング サーバーのコンポーネントを示す図。

タスク管理サービス

Android 版プライバシー サンドボックスのタスク管理サービスのトポロジを示す図。

タスク管理サービスには、タスク管理ウェブサービスとタスク スケジューラ サービスの 2 つのサブコンポーネントが含まれています。どちらも GKE にデプロイされます。

タスク管理

これは、HTTPS リクエストを受け取り、タスク データベースからタスクを作成または取得する一連のフロントエンド ウェブサービスです。

タスク スケジューラ

タスク データベースを継続的にスキャンするバックグラウンド サービス。トレーニング フロー(新しいトレーニング ラウンドやイテレーションの作成など)を管理します。

タスク データベース

タスク、イテレーション、割り当て情報を保存する ANSI SQL 準拠のデータベース。この実装では、基盤となるデータベース サービスとして Google Cloud Spanner が使用されます。

タスク割り当てサービス

Android 版プライバシー サンドボックスのタスク割り当てサービスのトポロジを示す図。

タスク割り当てサービスは、GKE でホストされるフロントエンド ウェブサービスです。FC クライアントからのリクエストを受け取り、該当する場合はトレーニング タスクを分散します。

ここでのタスク データベースは、タスク管理サービスのタスク データベースと同じデータベース インスタンスです。

アグリゲータ サービス

Android 版プライバシー サンドボックスのアグリゲータ サービスのトポロジを示す図。
アグリゲータとモデル アップデータ

アグリゲータとモデル アップデータは似ています。これらは、Confidential Space でデータを安全に処理するバックグラウンド サービスです。オフライン ジョブ間の通信は PubSub を介して行われます。

勾配、集約された勾配、モデル、プラン
  • クライアント デバイスでアップロードされた(暗号化された)グラデーションのグラデーション ストレージ。
  • 集約、クリップ、ノイズが追加されたグラデーションの集約グラデーション ストレージ。
  • トレーニング プラン、モデル、重みのモデルとプランのストレージ。
コレクタ

コレクタは、トレーニング ラウンド中にクライアント デバイスの送信を定期的にカウントするバックグラウンド サービスです。十分な数の送信が利用可能になると、集計を開始するようアグリゲータに通知します。

サービスホスト

機密情報にアクセスできないすべてのサービスは GKE でホストされます。

機密情報にアクセスする可能性のあるすべてのサービスは、Confidential Space でホストされます。

すべての機密データは、複数のサードパーティが所有する Key Service によって管理される暗号鍵で暗号化されます。復号鍵にアクセスできるのは、正当な Confidential Computing 対応バージョンの Confidential Space で実行されている、ODP 作成のオープンソース コードのうち、正常に証明されたものだけです。

1 つのサービス単位では、コンピューティング リソースは次のようになります。

Android 版プライバシー サンドボックスのサービス単位トポロジを示す図。

スケーラビリティ

前述のインフラストラクチャは、1 つのサービス単位に焦点を当てています。

1 つのサービス単位は 1 つの Cloud Spanner を使用します。主な制限事項については、Spanner の割り当てと上限をご覧ください。

このアーキテクチャの各コンポーネントは個別にスケーリングできます。これは、標準のスケーリング メカニズムを使用して、Confidential Space 内または GKE クラスタ内の容量をスケーリングすることで行われます。実際には、次のインスタンスを追加することで処理容量を増やすことができます。

  • タスク割り当てウェブサービス
  • タスク管理ウェブサービス
  • アグリゲータ インスタンス
  • モデル更新ツール インスタンス

復元力

FC サーバーの復元性は、レプリケートされたストレージを使用した障害復旧によって処理されます。障害復旧に関心がある場合は、クロスリージョン データ レプリケーションを有効にする必要があります。これにより、災害(データセンターを中断させる気象イベントなど)が発生した場合でも、サービスは最後のトレーニング ラウンドから再開されます。

Spanner

FC Server のデフォルトの実装では、トレーニング フローの制御に使用されるタスク ステータスを保存するデータベースとして Google Cloud Spanner が使用されます。マルチリージョン構成を選択する前に、ビジネスニーズに応じて整合性と可用性のトレードオフを評価する必要があります。

Spanner インスタンスには、ユーザーデータまたはその派生データ(未加工または暗号化)は保存されません。Spanner が提供する障害復旧機能は、どれでも自由に使用できます。

Spanner は変更履歴を記録します。アグリゲータとモデル アップデータはトレーニング ラウンドごとにデータを保存し、各ラウンドの結果は互いに上書きされることなく個別に保存されます。このため、障害が発生した場合でも、サービスは最後のトレーニング ラウンドから再開できます。

Google Cloud Storage

FC サーバーのデフォルトの実装では、Google Cloud Storage を使用して、モデル、トレーニング プラン、暗号化されたデバイスの貢献度などの BLOB データを保存します。

設計には 3 つの GCS インスタンスがあります。

  • デバイスの投稿: デバイスからアップロードされた暗号化されたデバイスの投稿。
  • モデル: トレーニング プラン、モデルとその重み。
  • 集約された勾配: アグリゲータによって生成された集約された勾配。

GCS に保存されるデータは次のいずれかです。

  • デベロッパーが提供したデータ(トレーニング プランなど)
  • デバイスからアップロードされたグラデーションや集計されたグラデーションなどのユーザー シグナル(複数のコーディネーターによるバックアップ暗号化で保護)から派生したデータであるため、プライベートなデータである可能性がある。
  • ユーザー シグナルから派生した非プライベート データ(モデルの重みなど)。ただし、差分プライバシーの適用後に限ります。

整合性と可用性のトレードオフを評価し、適切な GCS データの可用性と耐久性の機能を選択する必要があります。独自のデータ保持ポリシーを指定する必要があります。

レプリケーションとバックアップ

Google Cloud が提供するデータ レプリケーション メカニズムとは別に、Spanner と GCS のデータを定期的にバックアップすることもできます。たとえば、クロス クラウド レプリケーション サービスとオファリングを使用できます。これらの構成はビジネスニーズに大きく依存するため、ODP にはサンプルが用意されていません。現在の設計では、デベロッパーがこのようなレプリケーションとバックアップを必要とする可能性を考慮しています。そのため、サードパーティが提供するレプリケーション サービスやバックアップ サービス、プロダクトと互換性があります。