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

フェデレーション コンピューティング(FC)サーバーは、On-Device Personalization(ODP)が提供するフェデレーション ラーニングの一部です。このドキュメントでは、連携コンピューティング サーバー(FC サーバー)、そのコンポーネント、使用されるテクノロジーについて説明します。このドキュメントでは、アーキテクチャの概要を説明した後、各コンポーネントについて詳しく説明します。また、コンポーネントが連携してフェデレーション ラーニング環境を提供する仕組みと、ワークロードのスケーリングとシャーディングのための戦略について説明します。

トレーニング フロー

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

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

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

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

アーキテクチャの概要

FC サーバーは、Google Cloud に次のコンポーネントをデプロイします。

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

コンポーネントの詳細

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

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

タスク管理サービス

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

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

タスク管理

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

タスク スケジューラ

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

タスク データベース

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

タスク割り当てサービス

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

タスク割り当てサービスは、GKE でホストされるフロントエンド ウェブサービスです。FC クライアントからのリクエストを受け取り、必要に応じてトレーニング タスクを配布します。

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

情報集約サービス

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

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

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

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

サービスホスト

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

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

すべての機密データは、複数のパーティが所有する鍵サービスが管理する暗号鍵で暗号化されます。復号鍵にアクセスできるのは、正常な 機密コンピューティング対応バージョンの Confidential Space で実行され、ODP によって作成されたオープンソース コードのみです。

あるサービス ユニットで、コンピューティング リソースは次のようになります。

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

スケーラビリティ

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

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

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

  • タスク割り当てウェブサービス
  • タスク管理ウェブサービス
  • アグリゲータ インスタンス
  • Model Updater インスタンス

復元力

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

Spanner

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

どの Spanner インスタンスにも、元のデータまたは暗号化されたデータにかかわらず、ユーザーデータやその派生物は保存されません。Spanner が提供する障害復旧機能であれば、どの機能を使用してもかまいません。

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

Google Cloud Storage

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

設計上の 3 つの GCS インスタンス:

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

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

  • デベロッパー提供のデータ(トレーニング プランなど)
  • デバイスにアップロードされた勾配や集約された勾配などのユーザー シグナル(マルチ コーディネーターを基盤とする暗号化によって保護)から派生しているため、非公開の可能性があるデータ、または
  • 差分プライバシーの適用後にユーザー シグナルから得られた非機密データ(モデル重みなど)。

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

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

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