プライバシー コンピューティング + AI エンジニアリング テクノロジ実践ガイド - 概要

プライバシー AI エンジニアリング技術実践ガイド – 全体紹介

トピックの紹介: 最近、TensorFlow に基づくプライバシー AI フレームワーク Rosetta がオープンソース化されました。AI 開発者は暗号化などのプライバシー保護テクノロジを理解する必要はなく、数行のコードを変更するだけでプログラムに機能を追加できます。データのプライバシーを保護するため。このコラムでは、Rosetta の全体的なフレームワーク設計、カスタマイズされた変換のための TensorFlow のベスト プラクティス、および暗号理論アルゴリズムの効率的なエンジニアリング実装について、複数の独占的な初公開技術記事を通じて詳細に開示します。この一連のトピックを通じて、より多くの開発者がプライバシー AI フレームワークの技術的課題を理解すると同時に、暗号プロトコル アルゴリズム エンジニアリングや AI フレームワークの詳細なカスタマイズなど、関連する方向で開発者に経験の参考となる経験を提供できることを願っています。

データが AI テクノロジーの「燃料」であることは業界のコンセンサスとなっており、多くの場合、データが多ければ多いほど、より正確なモデルをトレーニングできることを意味します。しかし、企業内や複数の企業間であっても、ユーザーデータに責任を持ち、法令を遵守するために、データを共有・利用する際には、元の平文データの保護に注意を払う必要があります。静的なデータ保護のための従来のセキュリティ手法では、データの動的な使用と共有におけるプライバシー漏洩の問題を解決できません。この実際的なニーズこそがプライバシー コンピューティング (AI の文脈ではプライバシー AI と呼ぶこともできます) を生み出しました。この新しいクロステクノロジはデータ利用プロセスに統合されており、計算プロセス自体 (広義には計算結果も含む) で元の平文データ自体に関する情報が漏洩しないことが保証されます。

プライベート コンピューティングを実現する現在の方法は、暗号化、フェデレーテッド ラーニング、ハードウェアの信頼できる実行環境 (TEE) など、いくつかのカテゴリに分類できます。その中でも、暗号理論に基づくMPC(Multi-Party Computation、安全なマルチパーティコンピューティング)は最も安全な技術ルートであり、その基本的な考え方は、人やハードウェアを信頼するのではなく、計算量理論とコードを信頼することです。 Federated Learning と TEE のセキュリティを明確に説明することは依然として困難であり、新たなセキュリティ脆弱性が頻繁に発見されています。さらに、フェデレーション ラーニングの中核部分では、多くの場合、強力なセキュリティを確保するために準同型暗号化などの暗号化手段の使用が必要になります。エンジニアリング テクノロジの観点から見ると、フェデレーテッド ラーニングは分散機械学習テクノロジの拡張です。主な課題は、トレーニング プロセス中に複数の異種端末を同期的に更新する方法です [1]。従来の分散システム開発経験の多くは依然として適用可能です。MPC に代表される暗号化アプローチは、いくつかの新しい課題をもたらしました。


MPC (インターネットからの画像)

主要な問題点は、暗号化がコンピュータ理論の分野に属していることです。多くの概念やアルゴリズム プロトコルを理解するには、専門知識の長期的な蓄積が必要です。コンピュータ ビジョン、テキスト マイニング、ユーザー行動モデルなど、ビジネス実装における典型的な AI の方向性は次のとおりです。など、より実際のシナリオに即したものとなっており、暗号に代表されるプライバシー保護技術とAI技術の壁をどう打ち破るのか?これは、開発者がユニバーサルで使いやすいプライバシー コンピューティング フレームワークを実際に構築する際に解決する必要がある中心的な問題です。具体的には、この中心的な問題を取り巻くのは、一連の具体的なエンジニアリングおよび技術的な課題です。

  • **システムの使いやすさを実現するにはどうすればよいですか? **AI 開発者は、データ プライバシー保護機能をビジネスに導入するために、さまざまな複雑で抽象的な暗号アルゴリズムを学習することに積極的ではなく、時間と労力を費やす必要はありません。優れたプライバシー AI フレームワークは、AI 開発者にとって使いやすく便利である必要があります。使い慣れた方法を使用して、データ プライバシーの問題を迅速に解決します。
  • **システムの効率的な実行を実現するにはどうすればよいですか? **これには、単一マシン レベルと複数マシン レベルの両方が含まれます。暗号化における計算のほとんどは、大きな乱数の暗号文に基づいて実行されるため、単一マシンの並列化を高速化するために、特別なハードウェア命令、SIMD (単一命令/複数データ) およびその他のテクノロジを使用する必要があることがよくあります。実装には、暗号化の基本ライブラリについての深い理解が必要であり、多くの場合、プロトコル アルゴリズムに基づいてさらなる並列最適化を実行する必要があります。マルチマシンレベルでは、多くのAIフレームワークの並列最適化技術とどのように互換性を持たせるかを検討する必要があります。
  • **MPC の複数の当事者間で効率的な通信を実現するにはどうすればよいですか? **MPC では、複数の当事者間で大量の同期通信が必要であり、チャネル上のコンテンツのほとんどは不規則で非圧縮の使い捨て乱数であるため、セキュリティを確保しながらセキュリティを確保する必要があります。エンジニアリングの最適化により、通信量と通信回数を削減します。
  • **プライバシー保護テクノロジーの拡張性を確保するにはどうすればよいですか? **MPC などのプライバシー コンピューティング テクノロジは現在も継続的に開発中であり、学術研究におけるホットな問題でもあります。そのため、優れたプライバシー AI フレームワークは、研究者が新しいアルゴリズム プロトコルを簡単かつ迅速に統合できるようにサポートできる必要があります。

業界ではこれらの問題に対処するための研究がいくつか行われてきましたが、プライバシー AI フレームワークの設計と実装におけるこれらの課題を克服する方法について、Rosetta を使用して具体的に説明しましょう。スペースの制限のため、この記事では主にマクロ設計全体を紹介し、後続の一連の記事でいくつかの技術的な詳細をさらに分析します。

他のプライバシー AI フレームワークと同様、Rosetta はまだ開発の初期段階にあり、いくつかの不完全な点があります。ここでは、この分野の詳細な課題のいくつかを明確にし、より多くの開発者が将来のプライバシー AI システムの設計に参加するよう促すために、例として Rosetta を使用します。

プライバシーAIフレームワークの全体設計思想

現在、大規模で成熟した完全なプライバシー AI フレームワークはありませんが、PySyft、TF Encrypted、CrypTen など、探索的なオープンソースのプライバシー AI フレームワークがすでにいくつか存在します。

ここに画像の説明を挿入します
全体として、これらのフレームワークはカプセル化され、TensorFlow または PyTorch のフロントエンド Python 層に統合されます。この利点は、これらの AI フレームワークの上位層インターフェイスを直接使用してプライベート コンピューティング アルゴリズムを実装でき、フレームワーク自体によってカプセル化されたいくつかの高レベル API 関数を自然に直接呼び出すことができることです。これは、それ自体が分散機械学習から生まれたテクノロジーであるフェデレーション ラーニングにより適していますが、暗号化 MPC にはいくつかの欠点があります。

  • まず、単体のマシンのパフォーマンスを完全に向上させることはできません。Python を使用してさまざまな複雑な暗号計算を実装し、複数の関係者間の通信を行うと、基礎となるオペレーティング システムとハードウェア層の並列最適化を十分に活用できなくなります。より現実的には、暗号化が有効な場合、ほとんどの高性能暗号ライブラリは C /C++ インターフェイスを提供します。 MPCなどの技術はAIフレームワークのフロントエンド上位層に実装されるため、業界が長期間にわたって蓄積した(そして現在も発展途上の)成果を再利用することは困難です。
  • 第二に、暗号プロトコルなどのプライバシー技術の実装が AI フレームワーク自体と深く結びついており、拡張につながりません。これらの AI フレームワークによって提供される外部 API インターフェイスは、もともと AI のニーズに合わせたものであるため、MPC などのより複雑な暗号プロトコルを実装する場合、これらのフレームワークの API の使用に習熟する必要があるだけでなく、多くの場合、複雑なコンピューティング ロジックを実装するために多数のライブラリが必要numpyになる一方で、これにより AI フレームワーク自体の使用における自己一貫性が破壊され、すべてのコンピューティング ロジックを AI フレームワークのロジック実行グラフ上で完全に実行できなくなります。 AI フレームワーク。その一方で、毎回新しいバックエンド暗号プロトコルを導入することも困難になります。どちらも AI フレームワークに基づいて再実装する必要があり、暗号プロトコル開発者にとっては非常にコストがかかります。

上記の理解に基づいて、この段階では、Rosetta はまず、人気のある AI フレームワークである TensorFlow を使用して、フロントエンドの Python 入口とバックエンドのカーネル実装を大幅に変換し、プラグ可能な MPC アルゴリズム プロトコルを「プライバシー保護エンジン」としてカプセル化します。計算全体を推進し、プロセス中のデータの安全なフローを確保します。

TensorFlow を選ぶ理由

TensorFlow と PyTorch は、現在業界で使用されている最も主流のオープンソース AI フレームワークです。多くの企業は、自社のニーズに応じて一部のコンポーネントを社内でカスタマイズおよび変更したり、使いやすさ、効率、完全性などのさまざまな次元でさらなるブレークスルーを実現するために独自の特性を備えた新しいフレームワークを立ち上げたりすることがありますが、全体として、これらのフレームワークの基本設計パラダイムはそれらのほとんどは、ユーザーが有向非巡回グラフ DAG の形式で上位レベルのコンピューティング ロジックを表現できるようにするための豊富なインターフェイス API を使用しており、実際にこれらのコンピューティング タスクをスケジュールして実行する際には、フレームワーク自体が一連のタスクを実行します。 。TensorFlow は、使いやすさの点で PyTorch よりわずかに劣っており、開発者からよく批判されていますが、スケーラビリティ、効率、分散展開などの点で、確かによりバランスが取れており、包括的です (もちろん、これは TensorFlow がより優れていることも意味します)複雑なため、その変換はより困難になります)。したがって、Rosetta は総合的な検討の結果、現バージョンの基本基盤キャリアとして TensorFlow を選択し、設計開発プロセスでは TensorFlow が持つ固有の計算グラフの並列実行最適化やその他の機能を最大限に活用して効率を向上させます。一方で、主にインターフェース特性の一部を深層学習フレームワークの一般的な目的として使用し、独自のコンポーネントの一部にあまり依存しないように自制しようとします。

Rosetta フレームワークのコア設計のアイデア

  • **Privacy Operator (SecureOp)** は、AI フレームワークとプライバシー コンピューティング テクノロジーを接続するためのコア抽象インターフェイスとして機能します。OperationTensorFlow は、さまざまなレベルでさまざまな拡張メソッドを提供します。Rosetta は、コア エントリ ポイントとしてバックエンド オペレータ ( ) 層を選択します。オペレータを実行するとき、TensorFlow は、オペレータを特定の MPC プロトコルの SecureOp 実装に動的にバインドします。このような抽象化により、暗号プロトコル開発者は AI フレームワークを理解する必要がなく、インターフェイス定義を満たすさまざまな関数を C++ を使用して実装するだけでよく、AI 開発者は実装の詳細を深く理解する必要がありません。既存の演算子に基づいて、必要な上位レベルの高度な機能をさらにカプセル化できます。

  • **最適化パス (パス)** に基づく段階的な変換。AI 開発者にできる限り使いやすいインターフェイスを提供し、オンライン AI プログラムにデータ プライバシー保護機能を与えるための変革コストを削減するために、Rosetta はプログラム コンパイラーの分野における中心的な概念を利用しています。全体的なデザイン。パスはコンパイラで一般的に使用されるテクノロジであり、主にソース コード ファイルを段階的にマシン コードに変換するプロセスにおいて、複数回の変換と最適化に使用されます。Rosetta では、ネイティブ TensorFlow インターフェースを使用してユーザーが記述した DAG (Directed Acyclic Graph) 論理計算グラフが段階的に変換され、マルチパーティのコラボレーションによって実行される MPC プログラムに置き換えられ、ユーザー API への変更を最小限に抑えることができます。層。具体的には、Rosetta にはパスの 2 段階があります。静的パスは、フロントエンド Python 層のグローバル DAG 構築プロセス中に有効になり、カスタム暗号文タイプをサポートするようにネイティブを変換し、入力出力をサポートする形式にネイティブをTensor変換RttTensorOperationますtf.stringRttOpそして最終的には、グラフの開始時にホストの実際の MPC 操作にさらに変換されますSecureOp

ここに画像の説明を挿入します

もう 1 つはSecurOp実際の実行時に実行される Dynamic Pass 処理で、現在のユーザーが選択したプロトコルに基づいて、対応する実際のオペレーター実装が動的に選択されて実行されます。同時に、実行コンテキストに基づいた最適化処理をここに組み込むことができます。時間。

ここに画像の説明を挿入します

MPC テクノロジーを統合した分散型プライバシー AI アーキテクチャ

全体的な分散構造を理解することは、システムのアーキテクチャを理解する上で非常に役立ちます。プライバシー AI システム全体の外部インターフェイスには 3 つの側面が含まれます。物理的な展開時にネットワーク トポロジをどのように指定するか? コンピューティング プロセス全体を通じて、データはどのようにして安全に入力、送信、出力されるのでしょうか? プライバシー コンピューティング ロジックをどのように表現するか? Rosetta の全体的な論理構造を次の図に示します。

ここに画像の説明を挿入します
Rosetta マルチパーティ ネットワーク構造図

多者間ネットワークの確立

MPC テクノロジー自体は複数のパーティの参加を必要とし、それらは一般にプレーヤーと呼ばれます。MPC アルゴリズム プロトコルが異なれば、参加者の数も異なります。Rosetta に実装されている現在の 3 者構成プロトコル SecureNN[2] を例にとると、システムには 3 つの論理パーティがあります、P0、P1、P2 にあります。

バージョン v0.2.1 では、ユーザー インターフェイス レベルでの外部の柔軟性を確保するために、ユーザーは現在、構成ファイルを通じて複数のマシン間のネットワーク関係を一度に指定することがサポートされており、また、通話インターフェイスの動的なアクティブ化もサポートされています。複数のパーティ間のネットワーク トポロジを解明します。

# 调用activate接口会根据配置参数或配置文件建立起网络
rtt.activate(protocol_name="SecureNN", protocol_config_str=None)

# 调用deactivate接口会释放网络链接等资源
rtt.deactivate()

内部実装では、各参加者はローカル サーバー ポートをリッスンし、同時に他の 2 者間でクライアント ネットワーク リンクを確立します。この利点は、相互間のネットワーク リンク関係がシンプルかつ明確であることです。もちろん、同時実行および同期実行中に結果として生じる一貫性の問題も解決する必要がありますSecureOp。これについては、次の記事で説明します。

いくつかの注意点

  • TensorFlow に詳しい読者は混乱するかもしれませんが、複数の当事者が異なるデータに基づいて同じプログラムを実行するこのモデルは、TensorFlow 分散実行でのデータ並列処理をサポートするグラフ内レプリケーションとグラフ間レプリケーションではないでしょうか。これは当てはまりません。実際には、これらは異なるレベルの構造です。ここで話しているのは、上位レベルの論理的観点から見た MPC 参加者です。実際には、各当事者によって内部的に実行されるタスクをさらに実装することもできます。 TensorFlow の分散仕様に準拠し、クラスタのデプロイメントを実行し、クラスタ内の「サーバー」を統一された外部代表として使用します。

  • 上記は「論理的な」3 者についての話でしたが、実際のビジネス シナリオでは、2 社、4 社、またはそれ以上の企業間でのデータ連携が考えられますが、これらのアーキテクチャは使用できないでしょうか。実際には、そうでない場合、上位層でマッピング層を実行し、Privacy-as-a-Service の形式で上位層にサービスを提供することもできます。この点については、後続の記事でさらに紹介します。

プライベートデータの流れ

各論理参加者は、独自のプライベート平文入力データを持つことができ、前のタスクによって出力された暗号文結果の処理を続行することもできます。プログラムの実行プロセス全体を通じて、データは最初と最後にのみプレーン テキストで存在します。プライベート データは最初に導入され、最後に結果をプレーン テキストで復元して出力するかどうかを構成できます。中間の各演算子の計算プロセス中、データは常にローカルの論理コンテキスト内で、暗号文の形式で複数の当事者間でやり取りされます。

外部インターフェースの観点から言えば、実際のビジネスにおいては、複数の関係者からのデータを関連付けて整列させる必要がありますが、現在、Rosetta では、データセット全体を関係者間で「水平分割」する 2 つの一般的なデータセット処理方法が提供されています。このシナリオでは、すべての関係者が異なるサンプル ID を持つすべての特徴属性値を持っています。もう 1 つのシナリオは、関係者間で「垂直に分割」されているデータセット全体に対応します。つまり、関係者は、異なるサンプル ID を持ついくつかの特徴属性値を持っています。同じサンプルIDです。PrivateDatasetこれらは、クラスのload_dataインターフェイスを呼び出すことで簡単に処理できます。出力段には次の 2 つのインターフェイスが提供されます。

# 将一个密文形式的cipher_tensor恢复为明文, receive_party参数指定3方中哪几方可以获得明文结果
rtt.SecureReveal(cipher_tensor, receive_party=0b111)

# 与原生TensorFlow中模型保存接口SaveV2具有一样的函数原型,可通过配置文件指定哪几方可以获得明文模型文件
rtt.SecureSaveV2(prefix, tensor_names, shape_and_slices, tensors, name=None)

プライベート セット インターセクション (PSI) テクノロジー

実際のシナリオでは、当事者 A のサンプル ID が指すサンプルと当事者 B のサンプル ID に対応する属性情報を照合するなど、複数の当事者間のサンプルの調整という非常に現実的な問題が依然として存在します。PSI テクノロジーは、上記の問題を安全に解決できます。現在、この機能はさまざまなオープンソース フレームワークに十分に統合されていません。現在、Rosetta はこの機能を統合しており、最新バージョンでリリースされる予定です。

内部実装では、暗号化の多くの操作は、大きな空間を持つリング、フィールド、格子などの抽象的な代数構造に対する操作であり、コード内の特定の操作は、整数や多項式などの大規模なデータ構造の処理のために実装されているため、フレームワークの設計では、次の 3 つの側面のバランスを達成する必要があります。

  1. 内部暗号文データ構造をユーザーに対して可能な限り透過的にします。
  2. DAG グラフの構築や自動導出などの TensorFlow のコア機能には依然としてシームレスなサポートが必要です。
  3. 拡張を容易にするカスタム固有のデータ構造オブジェクトを使用して、さまざまな MPC プロトコルをサポートします。

これらの目標を同時に達成するために、Rosetta はtf.stringこの TensorFlow ネイティブ データ構造を使用して各プロトコルのカスタマイズされた暗号文データを伝送し、TensorFlow ソース コードで詳細なフック変換を実行して、DAG グラフ構築や自動導出は引き続き利用できます。

DAGの実行

上のネットワーク構造図に示すように、各プレーヤーは、単純なニューラル ネットワーク モデルをトレーニングするためのプログラムなど、TensorFlow に基づいて記述された同じ AI バイナリ コードを実行します。SecureOpユーザーは、TensorFlow のネイティブ オペレーター API を直接使用して、論理コンピューティング グラフ DAG を構築します。グラフの実行開始時に、Rosetta は内部でプライバシー オペレーターへの変換を完了します。他のプライバシー コンピューティング フレームワークと比較して、そのような切り替えコストは最小限です。

実行プロセス中、各プレーヤーはこの DAG グラフに従って実行されますが、特徴的な点は、各オペレーターの内部実行プロセス中に、各プレーヤーが属するロールに応じて MPC プロトコルに従って異なる操作を実行することです。これには、暗号文のローカル処理、複数の当事者間の強力に同期された通信対話、および乱数の形式での大量の暗号文の送信が含まれます。

ここに画像の説明を挿入します
Rosetta マルチパーティ ネットワーク構造図

まとめ

この記事では、Rosetta フレームワークと組み合わせて、プライバシー AI フレームワークがプロジェクトの実装時に直面する必要がある課題と、Rosetta などのフレームワークのいくつかの設計ソリューションを包括的に紹介します。後続の記事では、コア主要モジュールをさらに紹介します。Rosetta フレームワークは Github (https://github.com/LatticeX-Foundation/Rosetta) でオープンソース化されています。

参考文献

  1. Bonawitz, K.、Eichner, H.、Grieskamp, W.、Huba, D.、Ingerman, A.、Ivanov, V.、… & Van Overveldt, T. (2019)。大規模なフェデレーション ラーニングに向けて: システム設計。arXiv プレプリント arXiv:1902.01046

  2. Wagh, S.、Gupta, D.、Chandran, N. (2018)。SecureNN: 効率的でプライベートなニューラル ネットワーク トレーニング。IACR クリプトル。eプリントアーチ。2018、442

、D.、およびチャンドラン、N. (2018)。SecureNN: 効率的でプライベートなニューラル ネットワーク トレーニング。IACR クリプトル。eプリントアーチ。2018、442

おすすめ

転載: blog.csdn.net/Matrix_element/article/details/108748065