GateAIには主要な4つのマイクロサービスがあり、
それぞれDockerコンテナとして簡単にデプロイすることができます。
4つのサービスは以下の通りです。
- input-client 鍵の生成、推論時の入力の暗号化などを行います
- model-client 入力平文モデルの秘密計算用コンパイルを行います
- calculation 暗号状態で演算を行います
- calculation-with-key 一時復号下で演算を行います
最も使われるシステム構成は、
ローカル環境にinput-client, model-client, calculation-with-key
を配置し、
クラウド環境にcalculation
を配置する構成ですが、
全てのサービスをクラウド環境に配置したりなど、柔軟に対応することも可能です。
鍵の生成はinput-clientにて実行されます。
4つのマイクロサービスに必要な鍵を、以下の手順で配布します。
- ユーザはinput-clientに鍵生成の指令を送ります
- input-client が鍵ペアの生成を行います
- model-client に公開鍵を配布します
- calculation に公開鍵を配布します
- calculation-with-key に公開鍵と秘密鍵を配布します
モデル所有者はmodel-clientに対して
Kerasで学習されたh5ファイル、Scikitlearnの学習モデルのpklファイル
もしくはそれらのバイナリを指定したフォーマットで送信します。
model-clientは以下の手順で秘密計算モデルを準備します。
- モデル所有者はmodel-clientにモデルを送信します
- 入力モデルに対してGateAI独自オブジェクトに変換します
- モデル内の学習パラメータを暗号化します
- calculation で実行される層を配布します
- calculation-with-key で実行される層を配布します
入力データ所有者はinput-clientに対して
推論を実行したい入力データを送信します
秘密計算を用いた推論はcalculation, calcualtion-with-key間で以下のように実行されます
- データ所有者がinput-clientへとデータを送信します
- input-client が入力データを暗号化します
- input-client が暗号化されたデータをcalculation-with-keyに送信します
- calculation-with-keyとcalculationは通信を行いながら秘密計算を実行します
- 結果がinput-clientに戻り、input-client上で復号されます
- データ所有者がinput-clientで結果を復号し結果を確認します