xData FL ドキュメント
xData FL は xData が提供する連合学習プラットフォーム機能です。
連合学習について
連合学習(Federated learning)とは、データを中央管理せずに分散した状態で機械学習を行い、分散しているモデルを集約することで精度を高めていく手法です。
連合学習には、下記のようなメリットがあります。
- 組織間・デバイス間など共有したくないデータを保護
- 分散学習による処理性能の向上
連合学習は主にプライバシーに配慮しながら学習できる手法として、近年注目されています。
xData FL での連合学習
xData FL では、xData プラットフォーム上に連合学習機能を統合することによって、連合学習に求められるデータ保護機能を提供します。
- xData プラットフォームの Web API が備える API キー/Secret による認証機構により、利用者が準備する情報を他の利用者が利用できないようセキュリティ上の配慮がなされています
- xData プラットフォームの MMS Filter プラグイン機構により、利用者が準備する情報を加工して (例えば、入力画像データのぼかし処理等、匿名化処理を施して) データベースに格納できます。これにより、公開・配信前に利用者が情報を準備する段階で匿名化処理を施せます
また、xData プラットフォームの分散開発環境である xData Edge を連合学習に利用することで、効率的な分散学習を可能としています。
リファレンス
xData FL は、次のコンポーネントを組み合わせて連合学習プラットフォームを実現します。
- xData Aggregation FW: Python実行環境で動作する xData 用の連合学習フレームワークです。Federated Learning Web API をAggregatorとParty間のモデル共有空間として利用し、連合学習の定形処理と機械学習エンジニア、集約アルゴリズム開発者のコードを結びつけます。
- Federated Learning Web API: モデルストアの操作・問い合わせ、およびに、モデルのアップロード・ダウンロード等のモデル管理・転送機能を提供します。
本ページについてご理解いただいた後、詳細については以下のリファレンスを参照ください。
xData Aggregation FW
xData Aggregation FW は、連合学習を次のワークフローで実行・管理します。
図1. ワークフロー
Model Store
モデルの保存領域です。
- Remote Model Store: Federated Learning Web API で操作する Edge 上に存在する保存領域です。詳しくは Federated Learning Web API を参照ください。
- Local Model Store: 実行環境から見た時、ローカル上の保存領域です。フレームワークがモデルをダウンロードする時に使用する一時保存領域です。フレームワーク内部でキャッシュ等で利用され、ユーザーは特に意識する必要はありません。
Trainer と Party と Aggregator
xData における連合学習では、N台の Party(Trainer) と 1台の Aggregator により構成される分散学習を取り扱います。
Trainer と Party と Aggregator の役割は次の通りです。
- Trainer: 学習を実行し学習済みモデルを生成する、実行環境(ローカル環境やEdgeでのリモート学習)上に配置されるプログラムです
- Party: Trainer から学習済みモデルを受け取り Aggregator へ連携したり、Aggregator からモデルを受け取り Trainer に連携するなど、モデルの送受信を行います(Edgeが役割を果たします)。文脈により、Party は Trainer の意味を含むことがあります
- Aggregator: Party 群から連携された複数の学習済みモデルを集約し、1つの学習済みモデルを生成します(Aggregator 機能を有するEdgeが役割を果たします)
Round
図1. 中の数字は次の処理を行います。
- train: 任意の実行環境(ローカル環境やEdgeでのリモート学習)でモデルの学習を行います
- feedback: 1. で学習したモデル(ローカルパラメータ)を Aggregator へ連携します
- aggregate: Aggregator は、2. で連携されたモデル群を集約します
- transfer: Party は Aggregator へ、 3. で集約されたモデルを要求し、次のラウンドではそのモデル(グローバルパラメータ)を使用します
連合学習では上記のサイクルを1ラウンドとし、ラウンドを繰り返すことでモデルの精度を高めていきます。
Communication
モデルは Party と Aggregator 間で共有され、共有時にモデルステートと呼ばれるタグがモデルストア上にモデルとともに保存されます。
モデルステートは、問い合わせやイベントのトリガーなど、任意の Communication を実装するために使用できます。
詳しくは モデル転送APIとモデルステート を参照ください。
また、サーバーとクライアント間のモデル送受信はhttpリクエストにより行われ、現時点ではプル型(クライアントがサーバーに対して処理を要求する一般的なリクエスト)のみサポートしています。
モデル送受信時に利用するContent-Typeは次の通りです。
- クライアントからサーバーへモデルを送信する際は、
multipart/form-dataで送信します。 - クライアントがサーバーからモデルを受信する際は、
application/octet-streamで受信します。
serialize/deserialize
モデルストアに保存する際のデータフォーマット、あるいは、メモリに読み込む際の方法を定義します。
xData Aggregation FW や Federated Learning Web API を介してデータを転送する際、 データは単なるバイナリデータとして転送され、データフォーマットは規定されていません。
どのようなデータフォーマットで管理するかは、ユーザーの責務で serialize/deserialize に定義することになります。
train
学習を実施し、学習済みモデル(ローカルパラメータ)を生成します。
aggregate
学習済みのモデル群を任意の集約アルゴリズムで集約し、集約済みモデル(グローバルパラメータ)を生成します。
Execution Environment
Aggregator や Trainer が動作するPythonの実行環境です。
実行環境は、local上で処理をキックし、Edge上でAggregator や Trainer が動くこともあります(この場合、Remote Trainer や Remote Aggregator などと呼び区別します)
