PYGRID:プライベートデータサイエンスと連邦学習のためのp2pプラットフォーム

 

 

データを機密に保ちながら、デバイスに任せずに世界中のすべてのデータをトレーニングできるとしたらどうでしょう。

  PyGridは、プライベートデータサイエンスと共同学習のためのピアツーピアプラットフォームです。PyGridを使用すると、データ所有者は自分のプライベートデータクラスターへのアクセスを提供、監視、管理できます。データはデータ所有者のサーバーを離れません。

  次に、データサイエンティストは、PyGridを使用して、プライベートデータセットのプライベートな統計分析を行うことができます。さらに、複数の機関からのデータセット全体で共同学習を行うこともできます。

  このブログ投稿では、以下について説明します。

1. PyGridが必要とする基本的な概念を理解します。たとえば、連邦政府の学習や安全なマルチパーティコンピューティングのPySyftライブラリやPyGridプラットフォームなどです。

2.プライバシー保護分析にPyGridを使用するいくつかの実用的な例:これらの例は、PyGridのアーキテクチャを理解し、それを実際の問題に適用する方法を理解するのに役立ちます

3. OpenMinedの2020 PyGrid開発ロードマップ

 

共同学習

  私たちが理解する必要がある最初の概念は共同学習です。共同学習は、ユーザーがデータを放棄することなくAIモデルが学習できるようにするテクノロジーです。これはどのように機能しますか?最初のステップは、初期モデルを作成することです。次に、データサイエンティストはモデルをデータセットの所有者(この場合はJoeのデバイス)に送信します。

 

これで、ジョーは自分のデータセットでトレーニングすることにより、このモデルを更新できます。トレーニング後、更新されたモデルはAI企業に返却されます。

 

 

これで、AI Incorporatedは更新されたAIモデルを別のデバイス(この場合はJaneのデバイス)に送信します。Janeは、彼女のデータセットでトレーニングすることにより、このモデルを更新します。モデルがジェーンのデータをトレーニングした後、ジェーンは更新された重みをデータサイエンティストに送り返します。

 

 

  現在、モデルはジョーとジェーンのデータから何かを学びました。複数のノードでこのプロセスを繰り返すことができ、複数のノードで同時にモデルをトレーニングして平均化することもできるため、モデルをより高速に改善できます。

  連邦政府の学習の主な利点は次のとおりです。トレーニングデータはユーザーのデバイス(または病院のサーバー)に保持されますこれにより、機密データのプライバシーが向上しますモデル所有者(データサイエンティスト、企業)に対する法的責任が軽減されます大規模なデータセットのアップロードに関わるネットワークが削減されます帯域幅は、このテクノロジーの潜在的な使用例を考えるのは簡単です。たとえば、

 

 

Secure Multiparty Computing Secure Multiparty Computing(SMPC)は、データを暗号化して別のデバイスと共有するもう1つの方法です。従来の暗号化技術とは異なり、SMPCの主な利点は、暗号化されたデータを使用して論理演算および算術演算を実行できることです。数学演算にマルチパーティ計算を使用するにはどうすればよいですか?

これは(非常に)単純化された作業例です。

在此示例中,我们让安德鲁(Andrew)持有他的号码,在这种情况下,他是号码5的所有者,即他的个人数据。安德鲁可以将其数据匿名化,将其数字分解为2个(或更多)不同的数字。在这种情况下,他将数字5分解为2和3。这样,他就可以与朋友Marianne和Bob共享匿名数据。

在这里,没有人真正知道安德鲁数据的真正价值。他们只持有其中的一部分。它们中的任何一个都可以执行任何类型的操作,而无需所有人的同意。但是,尽管这些数字在它们之间进行了加密,但我们仍然可以执行计算。这样,我们可以使用加密的值来计算用户数据,而无需显示任何敏感信息。

 

 

 

これらの概念を理解したら、PySyftとPyGridについて説明します。

PySyftライブラリ

PySyft是用于安全和私有深度学习的Python库。 PySyft旨在在主要的深度学习框架(例如PyTorch和TensorFlow)中提供隐私保护工具。这样,数据科学家可以使用这些框架来应用隐私保护概念来管理任何类型的敏感数据,而不必成为隐私专家和他们自己。

PyGridプラットフォーム

 

PyGrid旨在成为一个使用PySyft框架进行联合学习和数据科学的点对点平台。

该体系结构由两个组件组成:网关和节点。网关组件像DNS一样工作,路由提供所需数据集的节点。

节点由数据所有者提供:它们是私有数据集群,将由其数据所有者管理和监视。数据不会离开数据所有者的服务器。

然后,数据科学家可以使用PyGrid对该数据集执行私有统计分析,甚至可以跨多个机构的数据集进行联合学习。

下面,我们说明如何完成每个用例。

 

ユースケース1:非公開の統計分析2つのワークフローを見てみましょう。

機密データをノードに公開したいデータ所有者。(この場合は、病院の小児病棟です)。

いくつかの統計分析を計算するためにグリッドネットワークを通じて特定のデータセットを見つけたいデータサイエンティスト。

 

データ所有者

ステップ1:PySyftと依存関係をデータ所有者としてインポートする最初のステップは、依存関係をインポートすることです。

この場合、syftをインポートし、syftフックを使用して標準のトーチモジュールを置き換えます。

 

ステップ2:ノードを接続する次のステップは、独自のノードを接続することです。ノードアプリケーションは特定の環境にデプロイされており、事前にそれらのアドレスを知っておく必要があることに注意してください。この場合、病院ノードを接続します。

步骤3:将数据准备为张量并添加简短描述
现在,我们需要准备要在医院节点上发布的数据集。为了清楚地了解我们要发布的数据,我们应该添加简要说明,以解释数据的含义和数据结构。在这种用例中,我们要发布医院的每月出生记录。

 

ステップ4:アクセスルールとアクセス許可を定義した後、データアクセスを制御するルールを定義する必要があります。この場合、特定のユーザー(Bob、Anna、Alice)がこのデータの実際の値に完全にアクセスできるようにします。

 

ステップ5:タグとラベルを追加して、データサイエンティストがデータセットを見つけやすくするクエリからデータにアクセスできるようにするために、タグを追加してそれらを識別し、タグ付けする必要があります。この例では、2つのタグを追加しました。#Februaryは月の識別に使用され、#birth-recordsはデータの意味の識別に使用されます

步骤6:发布!你完成了。
现在,可以准备发布数据了。请务必注意,需要允许您在此节点上发布私有数据集。在此示例中,我们使用Bob的凭据在节点上发布此数据。

 

データの所有者として、これですべてです。

 

データサイエンティスト

 

ステップ1:データサイエンティストとしてPySyftと依存関係をインポートするまた、syftライブラリをインポートして、トーチモジュールをsyftフックに置き換える必要があります。

 

ステップ2:グリッドプラットフォームへの接続はデータ所有者とは異なりますノードとデータセットの場所がわからないため、最初にグリッドネットワークに接続する必要があります。グリッドネットワークのアドレスは、ゲートウェイコンポーネントのアドレスになります

步骤3:您要寻找什么数据?搜索网络。
连接到网格网络后,我们可以搜索所需的数据集标签。也许您正在寻找肺炎的X光片或医院的出生记录。在此示例中,我们使用的是之前发布的标签。网格网络将返回一个字典,其中包含节点的ID作为键,而数据指针作为值。

步骤4:创建对该数据指针的引用
接下来,我们定义对医院数据指针的直接引用。

 

ステップ4:データの理解と探索データサイエンティストにとって、使用しているデータを理解することは非常に重要です。次に、データポインターを調べて、それらの意味とそれらがどのように構成されているかを理解します。

 

待機-データをコピーしようとするとどうなりますか?許可されずにデータポインターの実際の値を取得しようとすると、例外がスローされます。このようにして、PyGridはデータを所有者の手元に保存し、データサンプルへのアクセスを許可または拒否するコントロールコントロールを提供できます。

 

ステップ5:計算を実行するデータをコピーしなくても、データに対してリモート計算を実行できます。この例では、赤ちゃんの体重と身長の平均を計算します。このため、列の値をリモートで合計する必要があります。

 

 

これで、リモートで重量合計を計算できます。他のリモートテンソルを生成します。

 

高さ列を使用して同じ操作を実行できます。

 

次に、資格情報を使用して集計値を取得し、値を5で除算してデータセットのサイズを取得するだけです。

 

同じことを行って、平均の高さを取得できます。このようにして、機密データにアクセスしなくても、今月生まれた赤ちゃんの平均体重と身長を計算できます。

 

  完成しました!データセットをサーバーに移動しなくても、2月に生まれた赤ちゃんの平均の身長と体重がわかっているため、個々の赤ちゃんに関する個人情報を受け取る必要はありません。

 

我们如何管理数据访问?
在不久的将来,我们将提供一个简单的界面来验证和管理张量规则。作为您自己的网格节点的管理员,您将能够管理该节点的帐户。作为数据所有者,您可以标识和控制谁可以访问您的节点。

 

 

グリッドは、さまざまなテクノロジーを使用してリクエストを評価することにより、アクセスを許可または拒否する権利を持ちます。

 

用例2:跨Silo联合学习
我们如何使用PyGrid架构跨机构或设备执行联合学习?在这种使用情况下,我们将使用联合学习方法来训练MNIST模型。数据所有者使用数据集样本填充节点的过程与用例1相同,因此我们将直接跳到数据科学家的工作流程。

联邦学习-作为数据科学家

 

步骤1:导入PySyft和依赖项

步骤2:定义我们的模型架构
现在,我们需要定义模型架构以及在神经网络上执行ML流程所需的所有东西。

 

ステップ3:グリッドプラットフォームに接続する以前と同様に、ノードでクエリを実行するにはグリッドネットワークに接続する必要があります。

 

ステップ4:必要なデータセットを検索するこの例では、MNISTデータセットとそのラベルを検索しています。

 

ここで見たように、メッシュネットワークには、MNISTデータセットをホストするいくつかのノードがあります。

步骤5:创建对该数据指针的引用
现在,我们只需要获取直接引用即可处理这些指针。

 

この機能は、連邦学習アルゴリズムがどのように機能するかを理解するのに役立ちます。

步骤6:训练模型!
在此训练功能中,我们将遍历数据指针以找到相应的工作人员并远程训练模型。这里我们有一些说明:

第一个是model.send(worker):此函数会将我们的全局模型的副本发送给当前工人,以使用该工人的数据进行培训。
第二个模型是model.get():训练完本地数据后,我们需要检索本地模型以更新全局模型。
这样,联合学习过程将遍历承载MNIST数据集的所有节点。

用例3:加密的MLaaS
我们如何以安全和私有的方式托管模型并执行推理?

针对此问题的PyGrid解决方案是使用名为plan和Multi-Party Computation(MPC)协议的数据结构。计划是一种数据结构,用于定义和序列化将远程执行的一组指令。使用计划,我们可以定义将在远程设备中执行的模型结构。这样,使用分布在不同计算机上的远程MPC指针的计划可以以安全的方式执行模型推断。

步骤1:导入PySyft和依赖项
如前所述,第一步是导入我们的依赖项。请务必注意,我们需要将hook.local_worker.is_client_worker设置为False。这将使syft库在其结构上存储计划的元数据。

步骤2:连接到网格平台
现在,如前所述,我们需要连接到grid。

 

ステップ3:モデルを定義するここでは、モデルを定義しています。モデルの定義でプランを拡張する必要があることに注意することが重要です。説明を簡単にするために、事前に設定された重みとバイアス値を持つ1つのレイヤーのみの線形モデルを使用します。このようにして、結果を予測して理解することができます。

 

ステップ4:入力データを定義する入力データはこの1次元テンソルになります。したがって、最終結果を視覚化することができました。

 

ステップ5:モデルを初期化するここで、モデルを初期化する必要があります。比較のために、復号化モデルも初期化します

 

ステップ6:モデルをグリッドネットワークに配置する最後に、このモデルをグリッドネットワークで使用できます。MPCロゴに注意してください。このフラグにより​​、syftライブラリはMPCプロトコルを使用して、ネットワーク経由でプランパラメーターを異なるデバイスに分割できます。

 

ここでは、プランとそのパラメータースライスの場所を確認できます。会社のデータクラスターはプラン構造をホストし、病院のデータクラスターとパブリックデータクラスターはMPCパラメーター値をホストします。最後に、University Data Clusterは、MPC乗算を実行できる暗号化プロバイダーです。

 

ステップ7:結果を返す

 

ここでは、多くのことが同時に起こっています。したがって、以下を詳しく見てみましょう。

1-この関数は、会社のデータクラスターからプラン構造をダウンロードし、そのリモートポインターを取得します。

2- 2番目のステップでは、input_valuesをMPC値に分割し、計画されたMPCポインターを運ぶ同じデバイスと共有します。

3-すべてのMPCポインターがデバイスに配布されているため、プランを実行できます。

4-最後に、実際の結果を返すMPC結果を要約できます。

 

復号化モデルとの比較比較のために、復号化されたモデルを実行すると、同じ結果が得られます。

 

OpenMinedの2020 PyGridロードマップ2020年、PyGridチームには4つの主要な目標があります。

異種ネットワーク(syft.js、swift.js、モバイルワーカー)まず、さまざまなプラットフォームからメッセージを送受信するための標準メソッドを作成します。現在、PyGridプラットフォームはサーバーベースのプラットフォームです。つまり、ノードをセットアップし、ノードにインフラストラクチャを提供する必要があります。PyGrid機能をモバイルデバイスに拡張する予定です。

プライバシーバジェットデータの匿名化のレベルを評価および制御するためのプライバシーバジェットを確立します。

自動差分プライバシー追跡これにより、データセット内のエンティティのプライバシーバジェットを時間の経過とともに自動的に追跡できます。

このようにして、プライベートモデル(AIモデルなど)をリリースするときに漏洩する情報の量を正式に保証できます。このインフラストラクチャを可能な限り自動化するのが最善ですが、人間がデジタル情報を確認して個人情報を確認できるアプリケーション(UI)も使用できます(これは早期導入者に必要な場合があります)。

データ要求キューデータ所有者がデータアクセスを制御するデータ要求を評価できるようにするデータ要求キューを作成します。

 

元の記事を30件公開 賞賛された74件 230,000回の閲覧+

おすすめ

転載: blog.csdn.net/ruiyiin/article/details/105589898