(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-24
(45)【発行日】2023-08-01
(54)【発明の名称】機械学習プログラムのための効率的かつ拡張可能なエンクレーブ保護
(51)【国際特許分類】
G06N 3/063 20230101AFI20230725BHJP
【FI】
G06N3/063
(21)【出願番号】P 2022505542
(86)(22)【出願日】2020-03-13
(86)【国際出願番号】 US2020022541
(87)【国際公開番号】W WO2021055007
(87)【国際公開日】2021-03-25
【審査請求日】2022-01-27
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504080663
【氏名又は名称】エヌイーシー ラボラトリーズ アメリカ インク
【氏名又は名称原語表記】NEC Laboratories America, Inc.
(74)【代理人】
【識別番号】100123788
【氏名又は名称】宮崎 昭夫
(74)【代理人】
【識別番号】100127454
【氏名又は名称】緒方 雅昭
(72)【発明者】
【氏名】キム、 チャン、 ファン
(72)【発明者】
【氏名】リー、 ジュンワン
(72)【発明者】
【氏名】ユ、 シャオ
(72)【発明者】
【氏名】タン、 ルーアン
(72)【発明者】
【氏名】チェン、 ハイフォン
(72)【発明者】
【氏名】キム、 キョンテ
【審査官】山本 俊介
(56)【参考文献】
【文献】米国特許出願公開第2019/0245882(US,A1)
【文献】米国特許出願公開第2019/0147188(US,A1)
【文献】米国特許出願公開第2019/0114529(US,A1)
【文献】Karan Grover et al.,Privado: Practical and Secure DNN Inference with Enclaves,arXiv [online],2019年09月05日,https://arxiv.org/abs/1810.00602
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
機械学習(ML)プログラムのための効率的かつ拡張可能なエンクレーブ保護のためのコンピュータ実装された方法であって、
少なくとも1つのエンクレーブ内で実行するための少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整することを含み、該調整することは、
ニューラルネットワークの複数の層を計算するための、前記複数の層の計算中にメモリの総使用量を低減する共有メモリを割り当てることと、
前記複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで前記共有メモリ上にロードすることと、
層間依存性解決を使用して、前記層のメモリ使用量依存性を対処することと、
層内計算分割を使用して、閾値メモリ使用量よりも高いメモリ使用量を有する層を含む任意の高メモリ使用量層の計算を複数のセッションに分割することと、を含み、
前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行することをさらに含む、方法。
【請求項2】
前記少なくとも1つのMLプログラムを調整するためのメモリプロファイルの結果を生成するメモリ使用量をプロファイリングすることをさらに含み、
前記少なくとも1つのMLプログラムがどのようにI/Oメモリバッファを使用するかを分析することによってI/Oメモリをプロファイリングすることと、
前記少なくとも1つのMLプログラムがどのように重みメモリバッファを使用するかを分析することによって重みメモリをプロファイリングすることとを含む、請求項1に記載の方法。
【請求項3】
前記モデルパラメータデータは、前記少なくとも1つのMLプログラムと関連付けられた少なくとも1つのモデルファイルからロードされる、請求項1に記載の方法。
【請求項4】
前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行することは、さらに、
オンデマンドで実行される層それぞれの重みをロードすることを含む、前記共有メモリを使用して前記複数の層をシーケンシャルに計算することと、
追加の依存性のために余分の共有メモリの割り当てを調整することと、
前記計算、調整、および任意の分割された計算に基づいて、前記共有メモリを使用して、前記少なくとも1つの調整されたMLプログラムを実行することとをさらに含む、請求項1に記載の方法。
【請求項5】
メモリ使用量がメモリバジェットを超えないように、前記少なくとも1つのエンクレーブを少なくとも1つのプロセッサにスケジューリングすることをさらに含む、請求項4に記載の方法。
【請求項6】
前記少なくとも1つのエンクレーブをスケジューリングすることは、さらに、
新しいMLプログラム実行要求を受信することと、
前記少なくとも1つのエンクレーブを起動することが、事前に計算されたメモリ要求を使用してページスワッピングを引き起こすと判断することと、
前記少なくとも1つのエンクレーブに対して十分なメモリ空間が利用可能になるまで待つことによって、前記少なくとも1つのエンクレーブを前記少なくとも1つのプロセッサにスケジューリングすることとを含む、請求項5に記載の方法。
【請求項7】
前記少なくとも1つのエンクレーブを終了させることをさらに含む、請求項1に記載の方法。
【請求項8】
コンピュータに機械学習(ML)プログラムのための効率的かつ拡張可能なエンクレーブ保護のための方法を実行させるために前記コンピュータによって実行可能なプログラム命令を有す
るコンピュータプログラムであって、前記方法は、
少なくとも1つのエンクレーブ内で実行するための少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整することを含み、該調整することは、
ニューラルネットワークの複数の層を計算するための、前記複数の層の計算中にメモリの総使用量を低減する共有メモリを割り当てることと、
前記複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで前記共有メモリ上にロードすることと、
層間依存性解決を使用して、前記層のメモリ使用量依存性を対処することと、
層内計算分割を使用して、閾値メモリ使用量よりも高いメモリ使用量を有する層を含む任意の高メモリ使用量層の計算を複数のセッションに分割することと、を含み、
前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行することをさらに含む、
コンピュータプログラム。
【請求項9】
前記方法は、前記少なくとも1つのMLプログラムを調整するためのメモリプロファイルの結果を生成するメモリ使用量をプロファイリングすることをさらに含み、
前記少なくとも1つのMLプログラムがどのようにI/Oメモリバッファを使用するかを分析することによってI/Oメモリをプロファイリングすることと、
前記少なくとも1つのMLプログラムがどのように重みメモリバッファを使用するかを分析することによって重みメモリをプロファイリングすることとを含む、請求項8に記載の
コンピュータプログラム。
【請求項10】
前記モデルパラメータデータは、前記少なくとも1つのMLプログラムと関連付けられた少なくとも1つのモデルファイルからロードされる、請求項8に記載の
コンピュータプログラム。
【請求項11】
前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行することは、さらに、
オンデマンドで実行される層それぞれの重みをロードすることを含む、前記共有メモリを使用して前記複数の層をシーケンシャルに計算することと、
追加の依存性のために余分の共有メモリの割り当てを調整することと、
前記計算、調整、および任意の分割された計算に基づいて、前記共有メモリを使用して、前記少なくとも1つの調整されたMLプログラムを実行することとをさらに含む、請求項8に記載の
コンピュータプログラム。
【請求項12】
前記方法は、メモリ使用量がメモリバジェットを超えないように、前記少なくとも1つのエンクレーブを少なくとも1つのプロセッサにスケジューリングすることをさらに含む、請求項11に記載の
コンピュータプログラム。
【請求項13】
前記少なくとも1つのエンクレーブをスケジューリングすることは、さらに、
新しいMLプログラム実行要求を受信することと、
前記少なくとも1つのエンクレーブを起動することが、事前に計算されたメモリ要求を使用してページスワッピングを引き起こすと判断することと、
前記少なくとも1つのエンクレーブに対して十分なメモリ空間が利用可能になるまで待つことによって、前記少なくとも1つのエンクレーブを前記少なくとも1つのプロセッサにスケジューリングすることとを含む、請求項12に記載の
コンピュータプログラム。
【請求項14】
前記方法は、前記少なくとも1つのエンクレーブを終了させることをさらに含む、請求項8に記載の
コンピュータプログラム。
【請求項15】
機械学習(ML)プログラムのための効率的かつ拡張可能なエンクレーブ保護のためのシステムであって、
プログラムコードを記憶するためのメモリ装置と、
メモリ装置と動作可能に結合され、前記メモリ装置に記憶されたプログラムコードを実行するように構成された少なくとも1つのプロセッサ装置とを備え、前記プロセッサは、
少なくとも1つのエンクレーブ内で実行するための少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整し、該調整することは、
ニューラルネットワークの複数の層を計算するための、前記複数の層の計算中にメモリの総使用量を低減する共有メモリを割り当てることと、
前記複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで前記共有メモリ上にロードすることと、
層間依存性解決を使用して、前記層のメモリ使用量依存性を対処することと、
層内計算分割を使用して、閾値メモリ使用量よりも高いメモリ使用量を有する層を含む任意の高メモリ使用量層の計算を複数のセッションに分割することとによって行われ、
前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行する、システム。
【請求項16】
前記少なくとも1つのプロセッサ装置は、さらに、前記少なくとも1つのMLプログラムを調整するためのメモリプロファイルの結果を生成するメモリ使用量をプロファイリングするために前記メモリ装置に記憶されたプログラムコードを実行するように構成され、該プロファイリングすることは、
前記少なくとも1つのMLプログラムがどのようにI/Oメモリバッファを使用するかを分析することによってI/Oメモリをプロファイリングすることと、
前記少なくとも1つのMLプログラムがどのように重みメモリバッファを使用するかを分析することによって重みメモリをプロファイリングすることとによって行われる、請求項15に記載のシステム。
【請求項17】
前記モデルパラメータデータは、前記少なくとも1つのMLプログラムと関連付けられた少なくとも1つのモデルファイルからロードされる、請求項15に記載のシステム。
【請求項18】
前記少なくとも1つのプロセッサ装置は、さらに、前記少なくとも1つのエンクレーブ内で前記少なくとも1つの調整されたMLプログラムを実行するように構成され、該実行することは、
オンデマンドで実行される層それぞれの重みをロードすることを含む、前記共有メモリを使用して前記複数の層をシーケンシャルに計算することと、
追加の依存性のために余分の共有メモリの割り当てを調整することと、
前記計算、調整、および任意の分割された計算に基づいて、前記共有メモリを使用して、前記少なくとも1つの調整されたMLプログラムを実行することによって行われる、請求項15に記載のシステム。
【請求項19】
前記少なくとも1つのプロセッサ装置は、さらに、メモリ使用量がメモリバジェットを超えないように前記少なくとも1つのエンクレーブを少なくとも1つのプロセッサにスケジュールするために、前記メモリ装置に記憶されたプログラムコードを実行するように構成され、該実行することは、
新しいMLプログラム実行要求を受信することと、
前記少なくとも1つのエンクレーブを起動することが、事前に計算されたメモリ要求を使用してページスワッピングを引き起こすと判断することと、
前記少なくとも1つのエンクレーブに対して十分なメモリ空間が利用可能になるまで待つことによって、前記少なくとも1つのエンクレーブを前記少なくとも1つのプロセッサにスケジューリングすることとによって行われる、請求項18に記載のシステム。
【請求項20】
前記少なくとも1つのプロセッサデバイスは、前記少なくとも1つのエンクレーブを終了するために、前記メモリ装置に記憶されたプログラムコードを実行するようにさらに構成される、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願情報
本出願は、2019年9月16日に出願された仮出願シリアル数62/900,686、2019年10月30日に出願された仮出願シリアル数62/927,724、および2020年3月12日に出願された米国実用特許出願シリアル数16/816,715の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
本発明は、機械学習およびコンピュータセキュリティに関し、より詳細には、機械学習プログラムのための効率的かつ拡張可能なエンクレーブ保護に関する。
関連技術の説明
【0003】
機械学習(ML)モデル(例えば、深層学習(DL)モデル)に基づく人工知能(AI)システムは、例えば、顔認識、知的個人アシスタント、および物体検出のような多くの応用において広く使用されている。これらのシステムの多くは、コスト削減および拡張性のために、共有コンピューティング環境(例えば、クラウドインフラストラクチャ)で実行される。利点にもかかわらず、クラウドにおける精巧なデータ侵害の頻度の増加、およびマシン学習データを盗むための新しい攻撃の出現は、信頼できないコンピューティング環境内でプライバシーに敏感なAIシステムを実行することに関する懸念につながった。暗号化はディスクやネットワーク内のこのデータを保護できるが、計算中に使用されているこのデータを保護することは困難な場合がある。
【発明の概要】
【0004】
本原理の一態様によれば、機械学習(ML)プログラムのための効率的で拡張可能なエンクレーブ保護のためのコンピュータ実装された方法が提供される。この方法は、少なくとも1つのエンクレーブ内で実行するための少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整し少なくとも1つのエンクレーブ内で少なくとも1つの調整されたMLプログラムを実行することを含む。少なくとも1つのMLプログラムを調整することは、ニューラルネットワークの複数の層を計算するための、前記複数の層の計算中にメモリの総使用量を低減する共有メモリを割り当てることと、前記複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで前記共有メモリ上にロードすることと、層間依存性解決を使用して、前記層のメモリ使用量依存性を対処することと、閾値メモリ使用量よりも高いメモリ使用量を有する層を含む任意の高メモリ使用量層の計算を複数のセッションに分割することとを含む。
【0005】
本原理の別の態様によれば、機械学習(ML)プログラムのための効率的で拡張可能なエンクレーブ保護のためのシステムが提供される。システムは、記憶されたプログラムコードを有するメモリ装置と、メモリ装置に動作可能に結合された少なくとも1つのプロセッサ装置とを含む。少なくとも1つのプロセッサ装置は、メモリ装置に記憶されたプログラムコードを実行して、少なくとも1つのエンクレーブ内で実行するための少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整し、少なくとも1つのエンクレーブ内で少なくとも1つの調整されたMLプログラムを実行するように構成される。少なくとも1つのプロセッサ装置は、ニューラルネットワークの複数の層を計算するための、前記複数の層の計算中にメモリの総使用量を低減する共有メモリを割り当て、前記複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで前記共有メモリ上にロードし、層間依存性解決を使用して、前記層のメモリ使用量依存性を対処し、閾値メモリ使用量よりも高いメモリ使用量を有する層を含む任意の高メモリ使用量層の計算を複数のセッションに分割することとによって行われ、少なくとも1つのMLプログラムを調整するように構成される。
【0006】
これらおよび他の特徴および利点は、添付の図面に関連して読まれるべき、その例示的な実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0007】
本開示は、以下の図面を参照して、好ましい実施形態の以下の説明において詳細を提供する。
【0008】
【
図1】本発明の一実施形態による、機械学習(ML)プログラムフレームワークの図である。
【0009】
【
図2】本発明の一実施形態による、効率的で拡張可能なエンクレーブ保護のためのシステムの概要を示す図である。
【0010】
【
図3】本発明の一実施形態による、機械学習(ML)プログラムのための効率的で拡張可能なエンクレーブ保護のための高レベルシステム/方法のブロック/フロー図である。
【0011】
【
図4】本発明の実施形態による、
図3のシステム/方法内にメモリ使用プロファイリング構成要素を実装するためのシステム/方法のブロック/フロー図である。
【0012】
【
図5】本発明の一実施形態による、
図3のシステム/方法内のメモリ使用量最小化構成要素を実装するためのシステム/方法のブロック/フロー図である。
【0013】
【
図6】本発明の一実施形態による、
図3のシステム/方法内のエンクレーブ実行構成要素を実装するためのシステム/方法のブロック/フロー図である。
【0014】
【
図7】本発明の一実施形態による、共有メモリアーキテクチャを含む調整されたMLプログラムフレームワークの図である。
【0015】
【
図8】本発明の一実施形態による、オンデマンドローディングを含む調整されたMLプログラムフレームワークの図である。
【0016】
【
図9】本発明の一実施形態による、層間依存性解決を含む調整されたMLプログラムフレームワークの図である。
【0017】
【
図10】本発明の一実施形態による、層内計算分割を含む、調整されたMLプログラムフレームワークの図である。
【0018】
【
図11】本発明の一実施形態による、MLプログラムのための効率的で拡張可能なエンクレーブ保護を実施するためのシステム/方法のブロック/フロー図である。
【0019】
【
図12】本発明の一実施形態によるコンピュータシステムのブロック/フロー図である。
【0020】
【
図13】本発明の一実施形態による、共有メモリ領域のサイズを推定するための方法の図である。
【発明を実施するための形態】
【0021】
使用中にプログラムの機密データの機密性および完全性を保護するために、本明細書で説明する実施形態は、メモリ上で暗号化されたデータ上で暗号解読なしに計算を実行して、特権プログラムおよび/または非特権プログラムを含むことができる信頼できないエンティティから機密コードおよびデータを保護するために、エンクレーブと呼ばれるハードウェア保護されたメモリ領域の形態でセキュアコンテナを動作させるための信頼できる実行環境を利用する。すなわち、本明細書で説明するエンクレーブは、保護されており、より高い特権レベルで実行されるプロセスを含む、エンクレーブ自体の外部の任意のプロセスによって読み取りまたは保存することができないコンテンツを有するプライベート実行メモリ領域である。エンクレーブは、ユーザレベルおよび/またはオペレーティングシステムコードがエンクレーブを定義することを可能にするセキュリティ関連命令コード(例えば、オペコード)のセットによって定義することができる。セキュリティ関連の命令コードのセットは、中央処理装置(CPU)に組み込むことができる。エンクレーブを提供する信頼された実行環境の例の1つは、Intel(登録商標) Software Guard Extensions(Intel(登録商標) SGX)である。
【0022】
エンクレーブは、一般に、信頼できないコンピューティング環境において強いセキュリティを提供することができるが、例えば、大きなメモリフットプリントを有する機械学習プログラム(例えば、深層学習(DL)プログラム)のような、メモリ集約型プログラムを実行するエンクレーブの有用性は、少なくとも部分的に、エンクレーブページキャッシュ(EPC)と称される、物理マシン内のすべてのエンクレーブ間で共有される暗号化されたエンクレーブページを記憶するための物理メモリ領域の限られた物理的容量に起因して、制限され得る。しかしながら、EPCの一部はメタデータのために(例えば、エンクレーブページの完全性チェックのために)事前に割り当てることができるため、実際のエンクレーブプログラムのために利用可能なスペースの量は、実際の総サイズよりも少ない。たとえば、EPCのサイズが約128MBの場合、エンクレーブプログラムで使用可能な容量は約93MBまたは23,936ページになる。
【0023】
EPCのメモリ限界またはメモリバジェットは、エンクレーブの性能を損なうおそれがあり、MLプログラムが、保護されていない環境よりも遅く(たとえば、1桁遅く)動作するおそれがある。より具体的には、メモリサイズがEPCのメモリ制限またはメモリバジェットを超えると、EPCから信頼されていないメインメモリに古いページを追い出し、新しいページをEPCにロードすることによって、EPCと保護されていないメモリとの間のページスワッピングまたはセキュアページングが発生し、その結果、ML実行に大きなオーバヘッドが生じるおそれがある。ページスワッピングは、エンクレーブとの間の遷移(TLB(Translation Lookaside Buffer)フラッシュの原因となる)だけでなく、ページ暗号化と整合性チェックも含むため、スワッピングごとに最大数十万サイクルのコストがかかるおそれがある。さらに、拡張性の問題は、EPCを使用するために同時に競合する多くのエンクレーブから生じることがあり、MLプログラムが予測フェーズ中に多くの同時実行要求を受信するときに生じる。例えば、多くの予測要求を並列に処理する複数のエンクレーブを有する製品AIシステムでは、物理マシン内の複数のエンクレーブの競合は、仮想メモリのスラッシングと同様に、EPCスラッシングによる拡張性の低下を引き起こす。
【0024】
少なくとも、エンクレーブ保護フレームワークに関する上述の懸念に対処するために、本明細書で説明される実施形態は、MLプログラムを実行するための効率的で拡張可能なエンクレーブ保護をサポートするフレームワークを提供する。これを行うために、本明細書で説明される実施形態は、MLモデルを検査し、最適化された共有メモリバッファを有するMLモデルのためのカスタマイズされたエンクレーブまたはベッセルを生成することができる。EPCのメモリ限界を克服するために、本明細書で説明される実施形態は、MLプログラムのメモリ使用プロファイリングに基づいてMLプログラムの共通および固有の特性を活用することによって、実行時におけるMLプログラムのピークメモリ使用を最小限に抑えることに焦点を当てることができる。カスタマイズされたエンクレーブ内でMLプログラムを実行するために、基礎となるMLモデルまたはセマンティクスに対する変更が必要とされないので、本明細書で説明される実施形態は、保護されたMLプログラムの機能性に対する精度損失および他の制限を最小限に抑える。これにより、セキュリティとパフォーマンスとのバランスをとることができる。
【0025】
より具体的には、本明細書で説明する実施形態は、(1)共有メモリ計画、(2)オンデマンドパラメータローディング、および(3)EPC認識ジョブスケジューリングに基づいてカスタマイズされたエンクレーブを設計することができる。共有メモリ計画に関して、ML学習計算中に、メモリフットプリントを低減し、メモリの再利用性を改善するために、メモリバッファを異なる層またはサブ層にわたって共有することを可能にする共有メモリバッファを提供することができる。オンデマンドパラメータローディングに関しては、モデルパラメータのための大容量メモリバッファのバルク割り当ては、それらをオンデマンド方式で共有メモリバッファに取り出すことによって排除することができる。EPC認識ジョブスケジューリングに関して、本明細書に記載する実施形態は、各エンクレーブに必要なピークメモリのサイズを予め計算することによって拡張性を改善することができ、実行時におけるエンクレーブの推定総メモリ使用量が、メモリバジェット(例えば、約128MB)を超えることによってEPCスラッシングまたはページスワッピングを引き起こさない場合にのみ、ジョブをプロセッサにスケジューリングすることができる。本明細書で説明されるメモリバジェット認識エンクレーブスケジューリングは、(エンクレーブの数にかかわらず)高いスループットを提供することができる一方で、基礎となる信頼される実行環境の拡張性の制限を克服し、EPCスラッシングを引き起こすことなく、多くの並列ML予測要求の拡張可能な処理を達成することができる。
【0026】
本明細書に記載する実施形態は、完全にハードウェアであってもよく、完全にソフトウェアであってもよく、または、ハードウェアおよびソフトウェア要素の両方を含むものであってもよい。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されないソフトウェアで実施される。
【0027】
実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含むことができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを格納、通信、伝搬、またはトランスポートする任意の装置を含むことができる。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム(または装置またはデバイス)、または伝搬媒体とすることができる。媒体は、半導体または固体ステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスクおよび光ディスクなどのコンピュータ読み取り可能な記憶媒体を含むことができる。
【0028】
各コンピュータプログラムは、本明細書に記載する手順を実行するために、記憶媒体または装置がコンピュータによって読み取られるときに、コンピュータの操作を構成し制御するために、汎用または特殊目的のプログラム可能コンピュータによって読み取り可能な、機械読み取り可能な記憶媒体または装置(例えば、プログラムメモリまたは磁気ディスク)に実体的に記憶することができる。本発明のシステムはまた、コンピュータプログラムで構成された、コンピュータ読み取り可能な記憶媒体で実施されるものと考えることができ、その場合、構成された記憶媒体は、コンピュータを特定の所定の方法で動作させて、本明細書に記載する機能を実行させる。
【0029】
プログラムコードを記憶および/または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含んでもよい。メモリ要素は、プログラムコードの実際の実行中に採用されるローカルメモリ、バルクストレージ、および実行中にバルクストレージからコードが検索される回数を減らすために少なくとも何らかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。入力/出力またはI/O装置(キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されない)は、直接または介在するI/Oコントローラを介してシステムに結合され得る。
【0030】
介在する専用ネットワークまたは公衆ネットワークを介して、データ処理システムを他のデータ処理システムあるいはリモートプリンタまたはストレージデバイスに結合できるようにするために、ネットワークアダプタをシステムに結合することもできる。モデム、ケーブルモデム、およびイーサネット(登録商標)カードは、現在使用可能なネットワークアダプタのタイプの一例に過ぎない。
【0031】
ここで、同一の数字が同一または類似の要素を表し、最初に
図1を参照すると、予測クエリの受信に応答して実行されるML予測フェーズの機械学習(ML)ネットワーク100を示す図が提供される。一実施形態では、MLネットワーク100は、深層学習(DL)ネットワークを含む。深層学習は、そのモデルが人工ニューラルネットワーク(ANN)に基づく機械学習方法のファミリーを指し、人工ニューラルネットワーク(ANN)は、複数の層を使用して、より高いレベルの特徴を漸進的に抽出する。各層は、入力データをわずかに抽象的な表現に変換する役割を果たす。計算が進行し、より深くなるにつれて、複雑な関数を学習することができ、特徴表現(例えば、画像分類のためのオブジェクトエッジ)を抽出することができる。DLモデルは、ハイパーパラメータおよびモデルパラメータを含むことができる。ANNの開発中に、ハイパーパラメータは、手動で決定され、異なる複数層のニューロンを接続する複数層およびエッジのタイプなどのネットワーク構造を表すように微調整され得る。エッジ上の重みを含むことができるモデルパラメータは、訓練データおよび損失関数に基づいて訓練中に自動的に学習することができる。展開後、DLプログラムは、学習されたモデルを取り込み、入力データ(例えば、画像分類のための入力画像のクラス)が与えられた場合の予測結果を生成する。
【0032】
より具体的には、図示のように、ネットワーク100は、複数の層を含むANNを含み、各層は、前の層の出力と接続され、後続の層の入力となる。ML訓練とは異なり、ML予測は、一般に、順方向のみに機能し、シーケンシャルに層ごとに実行される。したがって、ネットワーク100は、フィードフォワードANNとすることができる。
【0033】
複数の層は、層110-1~110-4を含む。
図1には明示的に示されていないが、全部でN個の複数層を設けることができる。ネットワーク100は、入力として画像データを受信し、画像データに基づいて分類結果を出力するように構成することができる。一般に、層110-1、110-2、110-3、および110-4のそれぞれは、層110-1、110-2、110-3、および110-4の異なる1つの間で事前定義された依存性を有するリソース(たとえば、入出力(I/O)データおよびモデルパラメータ)の境界セットを使用して、層ごとの操作に対してそれ自体の計算を実行することができる。従って、層110-1、110-2、110-3および110-4は、前面層110-1から背面層110-4まで順次計算することができる。
【0034】
DL予測の間、複数の層の各々は、入力としてデータを取る。例えば、データには、モデルパラメータデータと、バッファに書き込むことができるI/Oデータを含めることができる。モデルパラメータデータは、訓練中に学習された重みデータを含むことができる。より具体的には、層110-1はモデルパラメータデータ120-1およびI/Oデータ130-1を取り、層110-2はモデルパラメータデータ120-2およびI/Oデータ130-2を取り、層110-3はモデルパラメータデータ120-3およびI/Oデータ130-3を取り、層110-4はモデルパラメータデータ120-4およびI/Oデータ130-4を取る。追加のI/Oデータ130-5は、層110-4の出力に関連して提供されることができる。
【0035】
DL予測の1つの特徴は、各層を実行するために必要なメモリのサイズが、一般に訓練されたモデルのメタデータ(例えば、層数およびタイプ)を含む目標パラメータまたはアーキテクチャを介して実行の前に計算できることである。層ごとの動作の典型的なワークフローは、(1)入力ベクトルが与えられると、対応するパラメータでドット積演算が実行され、(2)中間結果に対して追跡計算(例えば、バイアス加算およびアクティブ化)を実行することによって、最終層出力を生成することができるものである。2つの連続する層の中で、現在の層によって生成されたデータが入力ソースとして後続のレイヤで使用されるという点で、出力データの依存性があり得る。対照的に、他の全て(例えば、モデルパラメータデータ)は、互いに独立している。
【0036】
図2を参照すると、効率的で拡張可能なエンクレーブ保護のためのシステム200の概要を示す図が提供されている。この例示的な実施形態では、システム200は、画像データの機械学習(ML)予測を実行することができる。
【0037】
図示のように、システム200は、画像データ202、要求キュー204、ディスパッチャ206およびエンクレーブ210を含む。より具体的には、エンクレーブ210は、共有メモリ領域214、機械学習(ML)モデル216、およびユーザデータ218と通信する複数の層212を含む。システムは、要求キュー204に入れられる画像データ202に対してML予測を実行する要求を受信することができる。次に、ディスパッチャ206は、エンクレーブ210内で実行されるジョブをスケジュールすることができる。より具体的には、システム200は、共有メモリ領域214との共有メモリ使用プランニング、MLモデル216および/またはユーザデータ218からのデータのオンデマンドロード、およびディスパッチャ206を使用したメモリバジェット認識スケジューリングを実行することができる。これは、システム200が効率的で拡張可能なエンクレーブ保護を実行することを可能にすることができる。システム200に関するさらなる詳細は、
図3を参照して以下に記載される。
【0038】
図3を参照すると、機械学習(ML)プログラムのための効率的で拡張可能なエンクレーブ保護を実施するためのシステム/方法300のハイレベル概要を示すブロック/フロー図が提供されている。より具体的には、システム/方法300は、エンクレーブ保護下で高度に効率的かつ拡張可能なMLプログラム実行のためにエンクレーブのメモリフットプリントを最小化するMLフレームワークを提供する。
【0039】
システム/方法300は、メモリ使用量プロファイリング構成要素310、メモリ使用量最小化構成要素320、およびエンクレーブ実行構成要素330を含む複数の構成要素を含むことができる。構成要素310~230のうちの1つまたは複数は、効率的で拡張可能なエンクレーブ保護を実施するための機能を含むことができる。
【0040】
メモリ使用量プロファイリング構成要素310は、複数の機械学習(ML)プログラムのためのメモリプロファイルの結果を生成するように構成される。メモリプロファイルの結果には、MLプログラムのメモリ割り当てとメモリ使用パターンとを含めることができる。一実施形態では、MLプログラムは、1つ以上の深層学習(DL)プログラムを含む。メモリ使用プロファイリングの目標は、一般的なプログラム動作パターンに基づいてMLプログラムのメモリ使用量を削減する機会を見つけることである。メモリ使用量プロファイリング構成要素310に関するさらなる詳細は、
図4を参照して以下に説明される。
【0041】
メモリ使用量最小化構成要素320は、複数の調整されたMLプログラムを生成するために、メモリプロファイルの結果に基づいてMLプログラムのメモリ使用量を最小化するように構成される。メモリ使用量最小化構成要素320に関するさらなる詳細は、
図5を参照して以下に説明される。
【0042】
エンクレーブ実行構成要素330は、それぞれのエンクレーブ内で調整されたMLプログラムを実行するように構成される。エンクレーブは、機密保護を提供し、それによって、調整されたMLプログラムが、それぞれのエンクレーブ内で安全に実行されることを可能にする。一実施形態では、エンクレーブは、Intel(登録商標)SGXエンクレーブを含む。しかしながら、そのような実施形態は、限定的であると考えられるべきではない。エンクレーブ実行構成要素330に関するさらなる詳細は、
図6を参照して以下に説明される。
【0043】
ランタイム中に、調整されたMLプログラムは、各々、非常に小さなメモリフットプリント(例えば、調整されていないMLプログラムよりも約74%~約88%小さい)を有することができ、エンクレーブは、それらのメモリ使用が、信頼された実行環境のメモリ限界(例えば、約128MB)を超えないように、プロセッサにスケジュールされることができ、その結果、高い効率および拡張性(例えば、調整されていないMLプログラムよりも約5倍~21倍効率的)を有する機密MLプログラムがもたらされる。
【0044】
図4を参照すると、機械学習(ML)プログラムのためのメモリプロファイルの結果を生成するためのシステム/方法400を示すブロック/フロー図が提供されている。システム/方法400の目標は、共通の動作パターンに基づいてMLプログラムのメモリ使用量を低減する機会を見つけることである。
【0045】
メモリ使用量は、広く普及した機械学習プログラムの実行時に動的プログラム解析(Valgrindおよび修正されたIntel SGXドライバを使用)を実行することによってプロファイリングすることができる。動的プログラム解析は、メモリプロファイリングツール(例えば、Valgrind)を使用して実行することができる。信頼できる実行環境がIntel(登録商標) SGXである実施形態では、動的プログラム解析は、メモリプロファイリングツールおよび修正されたIntel(登録商標) SGXドライバを使用して実行することができる。メモリバッファの割り当てと割り当て解除、およびそれらのバッファにアクセスするプログラムコードの実行は、分析によって監視される。
【0046】
この目標を達成するために、図示のように、メモリ使用量プロファイリング構成要素310は、入力および出力(I/O)メモリプロファイリングサブ構成要素410および重みメモリプロファイリングサブ構成要素420を含む複数のサブコンポーネントを含むことができる。
【0047】
入出力メモリプロファイリングサブ構成要素410は、MLプログラムが入出力メモリバッファ(例えば、
図2を参照して上述した入出力メモリバッファ)をどのように使用するかを分析することによって入出力メモリプロファイリングを実行するように構成される。このプロファイリングの結果、MLプログラムは、初期化フェーズ(例えば、
図2を参照して上述したメモリ割り当て)の間に、プログラム実行の開始時に一度にすべての複数層のメモリバッファを割り当て、すべての複数層が計算された後にMLプログラムが終了したときに、メモリバッファを割り当て解除することを示すことができる。MLプログラムのメモリ使用量は、最初はそのピークに到達することができ、MLプログラムはそのライフタイムを通して最大メモリ割当を維持することができる。エンクレーブ保護では、エンクレーブ内部のメモリ使用量が多いと、高価なページスワップが発生する可能性があるため、この問題が発生する可能性がある。例えば、メモリバッファは長時間割り当てられるが、メモリバッファは短時間しか使用されない。より具体的には、階層化されたMLプログラム実行の性質のために、各層は、I/Oバッファの特定のセットを使用し、他のすべての層は、それらを使用しない。メモリ割り当てにおけるこのような冗長性は、多数のエンクレーブページスワッピングをもたらし、従って、大きな性能オーバヘッドをもたらす。
【0048】
重みメモリプロファイリングサブ構成要素420は、MLプログラムが重みメモリバッファ(例えば、
図2を参照して上述した重みメモリバッファ)をどのように使用するかを分析することによって、重みメモリプロファイリングを実行するように構成される。このプロファイリングの結果、すべての複数層の重みバッファがプログラム実行の開始時に割り当てられ、すべての複数層が計算された後にMLプログラムが終了したときに割り当て解除できることを示すことができた。入力および出力バッファとは異なり、重みバッファには、モデルファイル内の重みデータがロードされる。重みデータは、訓練中に生成することができ、特定の組の重みを特定の層に割り当てることができる。重みバッファが割り当てられた後、MLプログラムはモデルファイルから重みを読み取り、MLプログラム初期化中にモデルファイルから対応する層に重みを格納することができる。I/Oバッファと同様に、各層は、その実行中にのみそれに割り当てられた重みのセットを使用する。全プログラム実行期間と比較して、この期間は非常に短く、したがって、これらの重みは、MLプログラムのライフタイムの大部分の間、メモリを不必要に消費する。I/Oメモリの使用と同様に、重みメモリのこの冗長な使用は、エンクレーブ内部のパフォーマンスオーバーヘッドをもたらす。例えば、エンクレーブ保護を伴う実行時間は、例えば、保護されていない実行の約4倍から約23倍の間とすることができる。
【0049】
図5を参照すると、メモリプロファイルの結果に基づいてメモリ使用量を最小化するためのシステム/方法500を示すブロック/フロー図が提供されている。システム/方法500の目標は、メモリ使用量を最小化するようにMLプログラムを調整することである。
【0050】
図示のように、メモリ使用量最小化構成要素320は、共有メモリアーキテクチャサブ構成要素510、オンデマンド重みローディングサブ構成要素520、層間依存性解決サブ構成要素530、および層内計算分割サブ構成要素540を含む複数のサブ構成要素を含むことができる。
【0051】
共有メモリアーキテクチャサブ構成要素510は、NNフレームワークのすべての個々の層の計算に共有メモリを使用するようにMLプログラムを調整するように構成される。MLプログラムフレームワーク内の層は一般に独立であり、1つずつシーケンシャルに計算される可能性があるので、共有メモリはMLプログラムの層の計算の合計メモリ使用量を著しく低減することができる。すなわち、MLプログラムは、(
図2を参照して上述したように)各レイヤに対する別々の重みおよびI/Oバッファ割当てとは対照的に、MLプログラム実行の開始時に単一のメモリを割当てるように調整することができる。共用メモリアーキテクチャサブ構成要素510に関する詳細は、
図7を参照して以下に説明される。
【0052】
オンデマンド重みローディングサブ構成要素520は、モデルファイルから重みをロードするMLプログラムの動作を最適化するように構成される。オンデマンド重みローディングサブ構成要素520に関するさらなる詳細は、
図8を参照して以下に記載される。
【0053】
層間依存性解決サブ構成要素530は、いつ異なる複数層のメモリ使用量依存性に対処するように構成される。層間依存性解決サブ構成要素530に関するさらなる詳細は、
図9を参照して以下に説明される。
【0054】
層内計算分割サブ構成要素540は、高いメモリ使用量を有する層の計算を複数のセッションに分割するように構成される。メモリ使用量が高い層を識別するために、各層のメモリ使用量を閾値メモリ使用量と比較できる。
【0055】
例えば、EPCのメモリサイズが約128MBの場合、閾値のメモリ使用量を約93MBに設定すると、スラッシングを発生させることなく、EPC のメモリサイズを1つのエンクレーブで完全に使用できる。したがって、2つのエンクレーブを並列に実行することが望まれる場合、2つのエンクレーブのそれぞれの閾値メモリ使用量は、約46.5MBにすることができる。閾値メモリ使用量は、計算装置で実行される各エンクレーブの所望の性能に基づいて実験的に決定することができる。
【0056】
層内計算分割サブ構成要素540に関するさらなる詳細は、
図10を参照して以下に説明される。
【0057】
サブ構成要素510~540によって実行される技法のそれぞれは、MLプログラムの複数層の計算のメモリ使用量を低減することができる。例えば、エンクレーブの高価なページスワッピングを低減または排除することができる。
【0058】
図6を参照すると、エンクレーブ内で調整されたMLプログラムを実行するためのシステム/方法600を示すブロック/フロー図が提供されている。システム/方法600の目標は、高い拡張性を有する調整されたMLプログラムを機密的かつ効率的に実行することである。
【0059】
図示のように、エンクレーブ実行構成要素330は、エンクレーブ初期化サブ構成要素610、調整されたMLプログラム実行サブ構成要素620、エンクレーブスケジューリングサブ構成要素630、およびエンクレーブ終了サブ構成要素640を含む、複数のサブ構成要素を含むことができる。
【0060】
エンクレーブ初期化サブ構成要素610は、調整されたMLプログラムごとに、エンクレーブを起動し、初期化するように構成される。
【0061】
調整されたMLプログラム実行サブ構成要素620は、各エンクレーブ内で調整されたMLプログラムを実行するように構成される。より具体的には、各エンクレーブ内の調整されたMLプログラムが共有メモリを割り当てる。層がシーケンシャルに計算されるとき、実行される層のための対応する重みはオンデマンドでロードでき、追加の依存性のために余分な共有メモリの割り当てを調整(例えば、割当ておよび/または割当て解除)でき、大きなメモリ消費をもつ層の分割計算は、共有メモリを使用して効率的に実行される。
【0062】
エンクレーブスケジューリングサブ構成要素630は、エンクレーブの複数のものをプロセッサにスケジューリングするように構成される。スケジューリングは、少なくとも部分的に、エンクレーブのすべてによって共有されるメモリバジェット(たとえば、128MBメモリバジェット)に基づく。各エンクレーブを実行するために必要なデータメモリのサイズは実行前に計算できるため、新しいエンクレーブを起動する前にすべてのエンクレーブの総メモリ消費を予測することが可能である。したがって、エンクレーブスケジューリングサブ構成要素630は、ユーザからMLプログラム実行要求を受け取り、高価なページスワッピングを回避することによってベストエフォート型スループットを達成するために、プロセッサへのエンクレーブの起動をスケジュールすることができる。このような中央エンクレーブスケジューラが必要なのは、基盤となるオペレーティングシステム(OS)のプロセススケジューラがメモリバジェットを認識していないため、要求に応じてOSプロセススケジューラが自動的にエンクレーブを起動すると、すべてのエンクレーブが小さなメモリバジェットを競合する(その結果、大量のエンクレーブページスワッピングとオーバヘッドが発生する)状況が同時に発生する可能性があるためである。
【0063】
より具体的には、新たなMLプログラム実行が要求されると、エンクレーブスケジューリングサブ構成要素630は、新たなエンクレーブを立ち上げることが、予め計算されたメモリ要求を用いてページスワッピングを引き起こすかどうかをチェックする。新しいエンクレーブを起動することによってページスワッピングが生じることが期待される場合、エンクレーブスケジューリングサブ構成要素630は、新しいエンクレーブのために十分なメモリ空間が利用可能になるまで、現在実行中のエンクレーブが終了するのを待つ。新しいエンクレーブは、メモリがページスワップを発生させずに収容できるときはいつでも、プロセッサにスケジュールされる。したがって、エンクレーブスケジューリングサブ構成要素630は、すべてのML実行要求に対してベストエフォート型スループットを生成し、スケーラビリティを高い状態に保つ。
【0064】
エンクレーブ終了サブ構成要素640は、エンクレーブを終了するように構成される。エンクレーブは、機密計算が終了したことに応答して、エンクレーブ終了手順に基づいて安全に終了させることができる。
【0065】
図7を参照すると、一実施形態による共有メモリアーキテクチャフレームワークを示す図が提供されている。
図2のフレームワーク200と同様に、ML予測は、人工ニューラルネットワーク(ANN)(例えば、フィードフォワードANN)に基づいて動作する。より具体的には、フレームワーク700は、層710-1、710-2、710-3、710-4、・・・、710-Nを含む複数の層を含むことができる。各層は、後続の層の入力となる前の層の出力に接続することができる。一般に、層710-1~710-Nは、層710-1~710-Nの異なる1つの間で事前定義された依存性を有するデータの別個のセット上でそれぞれ独立して計算される。層710-1~710-Nは、前面層710-1から背面層710-Nまで順次計算することができる。
【0066】
前述したように、非効率的なメモリ管理は、エンクレーブで実行するときに著しい減速を引き起こす可能性がある。メモリ管理をより効率的にするために、フレームワーク700は、層710-1~710-Nのためのモデルパラメータデータ(例えば、重みデータ)およびI/Oデータを格納する共有メモリ領域720をさらに含む。共有メモリ領域720は、セキュアなコンテナ内に固定された最小チャンクのメモリを保持し、層710-1~710-Nは、複数層ベースの計算を実行しながら、共有メモリ領域720を共有する。このような共有メモリ領域720は、フォローアップメモリ割当ておよび割当て解除を必要とすることなく、すべての層毎の記憶および計算をサポートすることができる。
【0067】
順方向では、各層710-1~710-Nは、それ自体の計算を処理しながら、共有メモリ領域720を完全に占有することができる。いったん使用されると、占有された空間は、出力バッファを除いて、直ちに空にされ、それにより、後続の層は、この空間を後で再使用することができる。この点で、このような時間的局所性の利点を利用して、共有メモリ領域720は、余分なメモリ割り当て(割り当て解除)によって引き起こされるパフォーマンスペナルティなしに、実行中ずっとEPC領域にピン留めすることができる。
【0068】
高レベルでは、次の2つの段階のワークフローを実行できる。(1)オフラインプロファイリングと(2)オンライン展開。オフラインプロファイリング中に、目標ハイパーパラメータをプロファイリングすることができ、初期化時の共有メモリ領域720の最適化されたサイズを推定することができる。共有メモリ領域720のサイズは、すべての層710-1~710-Nにわたる最大メモリ使用量を有する層によって必要とされるメモリのサイズに対応する。MLプログラムのANNアーキテクチャをプログラム入力として指定できるため、MLプログラム実行前にこのサイズを事前計算できる。共有メモリ領域720のために可能な最小空間が維持されるべきである。その上限を予め計算し、最適化するために、ハイパーパラメータは、すべての操作をウォーキングし、すべての層710-1~710-Nで必要とされるメモリバッファの量を追跡することによって活用することができる。
図13を参照して、共有メモリ領域720のサイズを推定する方法の一例を説明する。共有メモリ領域720のサイズの推定が与えられると、カスタマイズされたエンクレーブが、本明細書で説明される実施形態に従って起動され得る。
【0069】
図8を参照すると、一実施形態によるオンデマンドローディングフレームワーク800を示す図が提供されている。
図2および
図7のフレームワーク200および700と同様に、MLプログラムは、人工ニューラルネットワーク(ANN)に基づいて動作する。一実施形態では、ANNはフィードフォワードANNを含む。
【0070】
より具体的には、フレームワーク800は、層810-1、810-2、810-3、および810-4を含む複数の層を含むことができる。各層は、後続の層の入力となる前の層の出力に接続することができる。
図8には明示的に示されていないが、全部でN個の層があってもよい。一般に、層810-1~810-4は、層810-1~810-4のうちの異なるものの間で事前定義された依存性を有するデータの別個のセット上でそれぞれ独立して計算される。層810-1~810-4は、前面層810-1から背面層810-4まで順次計算することができる。フレームワーク800はさらに、それぞれが対応するモデルパラメータデータを含むモデル832-1~832-4を有する共有メモリ820およびモデルファイル830を含む。
【0071】
初期化中、MLプログラムは、一般に、モデルファイル830を読み取り、モデル832-1~832-4からのモデルパラメータデータ(例えば、重みデータ)を、使用にかかわらず、バルク割り当てで全ての層810-1~810-4のバッファに一度にロードする。しかしながら、モデルパラメータデータのために共有メモリ820を利用するために、フレームワーク800は、オンデマンドで層810-1~810-4の各々のためにモデル832-1~832-4からモデルパラメータをロードする。より具体的には、すべての層のモデルパラメータデータを一度にロードする代わりに、必要なモデルパラメータデータのみが、現在の層を計算する前に共有メモリ820にロードされる。次の層が計算されるとき、層のための新しい対応するモデルパラメータデータを共有メモリ820にロードすることができ、古いモデルパラメータデータは上書きされるであろう。この実施例に示すように、モデル830?3からのモデルパラメータデータは、コンピューティング層810-3の前にオンデマンドで共有メモリにロードされる。
【0072】
図9を参照すると、一実施形態による層間依存性解決フレームワーク900を示す図が提供されている。
図2、
図7および
図8のフレームワーク200、700および800と同様に、MLプログラムは、人工ニューラルネットワーク(ANN)に基づいて動作する。一実施形態では、ANNはフィードフォワードANNを含む。
【0073】
より具体的には、フレームワーク900は、層910-1、910-2、910-3、および910-4を含む複数の層を含むことができる。各層は、後続の層の入力となる前の層の出力に接続することができる。
図9には明示的に示されていないが、全部でN個の層があってもよい。一般に、層910-1~910-4は、層910-1~910-4のうちの異なるものの間で事前定義された依存性を有するデータの別個のセット上でそれぞれ独立して計算される。層910-1~910-4は、前面層910-1から背面層910-4まで順次計算することができる。フレームワーク900は、共有メモリ領域920およびI/Oデータ930をさらに含む。この実施例では、I/Oデータ930は、層920-2への入力として層910-1の出力と組み合わされており、層910-3とI/Oデータ930との間に依存関係が存在する(破線で示すように)。
【0074】
あまり一般的ではないが、いくつかの層は、直前の層以外の層から入力を取得する。例えば、「ショートカット」層は、直前の層と別の指定された層との両方から入力を取得することができる。再使用の時点では、共有メモリ領域920が既に別の層によって占有されているために、参照された出力が利用可能でない可能性があるので、このような依存性は、課題となり得る。これを扱うために、共用メモリ領域920は、エンクレーブ内で別々に維持することができる。再利用の直後に、割り当てられたバッファをエンクレーブメモリから削除して、メモリ空間が最短のライフタイムの間エンクレーブに常駐するようにすることができる。これにより、メモリフットプリント全体への影響を最小限に抑えることができる。フレームワーク900は、層間依存性を利用し、特にそのような入力データのために共有メモリ920を割り当てる。この特別な共有メモリ920は、I/Oデータ930が生成されるときに割り当てられ、MLプログラムがもはやデータを必要としなくなるとすぐに割り当て解除される。このような共用メモリ920の割当ておよび割当て解除は、MLプログラムの実行前に決定することができる。
【0075】
図10を参照すると、一実施形態による層内計算分割フレームワーク1000を示す図が提供される。
図2、
図7、
図8、および
図9のフレームワーク200、700、800、および900と同様に、MLプログラムは、人工ニューラルネットワーク(ANN)に基づいて動作する。一実施形態では、ANNはフィードフォワードANNを含む。より具体的には、フレームワーク1000は、層1010を含む複数の層を含むことができる。例えば、層1010は、複数の層のうちの第3の層とすることができる。各層は、後続の層の入力となる前の層の出力に接続することができる。
図10には明示的に示されていないが、全部でN個の層があってもよい。一般に、層1010を含む複数の層は、複数の層のうちの異なる層間で事前定義された依存性を有するデータの別個のセット上でそれぞれ独立して計算される。層は、前面層から背面層まで順次計算することができる。
【0076】
フレームワーク1000は、共有メモリ領域1020をさらに含む。さらに、閾値よりも多くのメモリを消費するすべての層(たとえば、
図10に示す層1010)について、フレームワーク1000は、モデルパラメータデータのセットをモデルパラメータデータサブセット1030-1および1030?2に分割するようにMLプログラムを調整する。ML プログラムでは、一部の層が過度に大きなメモリ(他の層よりもかなり多くなる可能性がある)を消費するため、共有メモリが大きくなる。このような大きな共有メモリは、小さな層のためのメモリ空間の浪費である。この問題に対処するために、フレームワーク1000は、大規模な層1010の計算を、サブセット1030-1および1030-2に基づいて、複数のセッション1040-1および1040-2に分割する。例えば、層計算は、入力ベクトルに重みを繰り返し乗算し、出力ベクトルを生成する内積演算であり得る。そのような内積演算は、各セッションがサブセット1030-1および1030-2のそれぞれ1つだけで計算するように、複数のセッション1040-1および1040-2に分割することができる。その結果、共有メモリ領域1020のサイズを小さく保つことができ、共有メモリ領域1020の空間の利用率を、MLプログラム実行全体を通して高くすることができる。
【0077】
ただし、
図7~10に、それぞれのフレームワークとして、フレームワークが示されているが、
図7~10に示したフレームワークは効率的で拡張可能なエンクレーブ保護のために、単一のフレームワークに組み合わせることができる。
【0078】
図11を参照すると、機械学習(ML)プログラムのための効率的で拡張可能なエンクレーブ保護を実施するためのシステム/方法1100を示すブロック/フロー図が提供されている。
【0079】
ブロック1110において、メモリプロファイルの結果を生成するために、少なくとも1つのMLプログラムに関連するメモリ使用量がプロファイルされる。少なくとも1つのMLプログラムは、ML予測を含むことができる。少なくとも1つのMLプログラムは、複数のそれぞれのエンクレーブで実行される複数のMLプログラムの一部とすることができる。一実施形態では、少なくとも1つのMLプログラムは、少なくとも1つの深層学習(DL)プログラムを含む。メモリ使用量プロファイリングの目的は、一般的なプログラムの動作パターンに基づいてメモリ使用量を削減する機会を見つけることである。メモリプロファイルの結果には、MLプログラムのメモリ割り当てとメモリ使用パターンを含めることができる。
【0080】
ML予測は、人工ニューラルネットワーク(NN)フレームワーク(例えば、フィードフォワードNNフレームワーク)を使用して実施することができる。より具体的には、ANNは、対応する入力および出力を有する複数の層を含むことができる。モデルパラメータデータおよび入出力(I/O)データは、複数の層のそれぞれに割り当てることができる。
【0081】
プロファイル結果を生成するためにメモリ使用量をプロファイリングすることは、ブロック1112において、入力/出力(I/O)メモリをプロファイリングすることと、ブロック1114において、重みメモリをプロファイリングすることとを含むことができる。I/Oメモリをプロファイリングすることは、少なくとも1つのMLプログラムがI/Oメモリバッファを使用する方法を分析することを含むことができ、重みメモリをプロファイリングすることは、少なくとも1つのMLプログラムが重みメモリバッファを使用する方法を分析することを含むことができる。
【0082】
ブロック1110~1114に関するさらなる詳細は、
図2~4を参照して上述される。
【0083】
ブロック1120で、少なくとも1つのMLプログラムが、メモリプロファイルの結果に基づいて調整され、少なくとも1つのエンクレーブ内で実行するために少なくとも1つの調整されたMLプログラムが生成される。調整することは、エンクレーブで実行されている間に、少なくとも1つのMLプログラムのメモリ使用量を最小限に抑えるために実行される。例えば、エンクレーブの高価なページスワッピングを省略することができる。
【0084】
ブロック1122にて、少なくとも1つの調整されたMLプログラムを生成するために少なくとも1つのMLプログラムを調整することは、少なくとも1つのMLプログラムの層を計算するための共有メモリを割り当てることを含むことができる。すなわち、少なくとも1つのMLプログラムは、各層に対する別々の重みおよびI/Oバッファ割り当てとは対照的に、MLプログラム実行の開始時に単一メモリを割り当てるように調整することができる。MLプログラムフレームワーク内の層は一般に独立であり、1つずつシーケンシャルに計算される可能性があるので、共有メモリは、少なくとも1つのMLプログラムの層の計算中の総メモリ使用量を著しく低減することができる。
【0085】
少なくとも1つのMLプログラムを調整して、少なくとも1つの調整されたMLプログラムを生成することは、ブロック1124において、複数の層のそれぞれについてのモデルパラメータデータをオンデマンドで共有メモリ上にロードすることをさらに含むことができる。モデルパラメータデータは、少なくとも1つのMLプログラムに関連付けられた少なくとも1つのモデルファイルからロードされた重みを含むことができる。モードパラメータのオンデマンドローディングは、少なくとも1つのMLプログラムの動作を最適化することができる。
【0086】
少なくとも1つのMLプログラムを調整して、少なくとも1つの調整されたMLプログラムを生成することは、ブロック1126において、層間依存性解決を使用して、層のメモリ使用量依存性に対処することをさらに含むことができる。
【0087】
少なくとも1つのMLプログラムを調整し、少なくとも1つの調整されたMLプログラムを生成することは、ブロック1128において、層内計算分割を使用して、任意の高メモリ使用量層の計算を複数のセッションに分割することをさらに含むことができる。より具体的には、いくつかの層は過度に大きなメモリを消費する可能性があるので、メモリ使用量が大きいそれらの層は、共有メモリのサイズを最小化し、少なくとも1つのMLプログラムの実行を通して共有メモリの空間の利用率を高く保つために、複数のセッションに分割することができる。メモリ使用量の多い層を識別するために、各層のメモリ使用量を閾値メモリ使用量と比較できる。例えば、EPCのメモリサイズが約128MBの場合、閾値のメモリ使用量を約93MBに設定すると、スラッシングを発生させることなく、EPCのメモリサイズを1つのエンクレーブで完全に使用できる。したがって、2つのエンクレーブを並列に実行することが望まれる場合、2つのエンクレーブのそれぞれの閾値メモリ使用量は、約46.5MBにすることができる。閾値メモリ使用量は、計算装置で実行される各エンクレーブの所望の性能に基づいて実験的に決定することができる。
【0088】
例えば、層計算は、入力ベクトルに重みを繰り返し乗算し、出力ベクトルを生成する内積演算であり得る。そのような内積演算は、各セッションがそれぞれの重みサブセットのみを用いて計算するように、複数のセッションに分割することができる。
【0089】
ブロック1120~1128に関するさらなる詳細は、
図3、
図5、および
図7~
図10を参照して上述される。
【0090】
ブロック1130では、少なくとも1つのエンクレーブ内で、少なくとも1つの調整されたMLプログラムが実行される。少なくとも1つのエンクレーブは、少なくとも1つの新しいエンクレーブとすることができ、1つまたは複数の追加のエンクレーブが現在存在する。少なくとも1つのエンクレーブは、機密保護を提供し、それによって、少なくとも1つの調整されたMLプログラムが、少なくとも1つのエンクレーブ内で安全に実行されることを可能にする。一実施形態では、少なくとも1つのエンクレーブは、少なくとも1つのIntel(登録商標)SGXエンクレーブを含む。したがって、少なくとも1つのエンクレーブ内で少なくとも1つの調整されたMLプログラムを実行するという目標は、高い拡張性を有する少なくとも1つの調整されたMLプログラムを機密的かつ効率的に実行することである。
【0091】
より具体的には、少なくとも1つのエンクレーブ内の少なくとも1つの調整されたMLプログラムが、共有メモリを割り当てる。層がシーケンシャルに計算されるとき、実行されるべき層のための対応するモデルパラメータデータは、オンデマンドでロードされることができ、追加の依存性のために、余分な共有メモリの割り当てが調整される(例えば、割り当てられる、および/または割り当て解除される)ことができ、大きなメモリ消費を伴う層の分割された計算は、計算、調整、および任意の分割された計算に基づいて、共有メモリを使用して実行されることができる。少なくとも1つの調整されたMLプログラムを実行することは、さらに、少なくとも1つのエンクレーブを初期化することを含むことができる。
【0092】
ブロック1132で、少なくとも1つのエンクレーブが少なくとも1つのプロセッサにスケジュールされる。スケジューリングは、メモリ使用量が、基礎となる信頼処理されたプロセッサ技術のメモリバジェットを超えないように実行される(例えば、メモリバジェットは、約128MBとすることができる)。少なくとも1つのエンクレーブを実行するために必要なデータメモリのサイズは実行前に計算できるので、新しいエンクレーブを起動する前に総メモリ消費を予測することが可能である。したがって、少なくとも1つのプロセッサへの少なくとも1つのエンクレーブの起動は、ページスワッピングを回避することによってベストエフォート型スループットを達成するために、少なくとも1つの実行要求に基づいてスケジュールすることができる。したがって、メモリバジェットがページスワッピングを引き起こすことなく少なくとも1つのエンクレーブに収容できる場合は常に、少なくとも1つのエンクレーブが少なくとも1つのプロセッサにスケジュールされる。
【0093】
例えば、少なくとも1つのエンクレーブを少なくとも1つのプロセッサにスケジューリングすることは、新しいMLプログラム実行要求を受信することに応答して、少なくとも1つのエンクレーブを起動することが、事前に計算されたメモリ要求を使用してページスワッピングを引き起こすことを決定することを含むことができる。新しいエンクレーブの起動によってページスワップが発生することが予測される場合、少なくとも1つのエンクレーブは、少なくとも1つのエンクレーブに対して十分なメモリスペースが使用可能になるまで、現在実行中のエンクレーブが終了するのを待つことによって、少なくとも1つのプロセッサにスケジュールされる。従って、エンクレーブスケジューリングサブ構成要素は、すべてのML実行要求に対してベストエフォート型スループットを生成し、拡張性を高い状態に保つ。
【0094】
ブロック1134で、少なくとも1つのエンクレーブが終了する。少なくとも1つのエンクレーブは、秘密計算が終了したことに応答して、エンクレーブ終了手順に基づいて安全に終了することができる。
【0095】
ブロック1130~1136に関するさらなる詳細は、
図3および
図6を参照して上述される。
【0096】
次に
図12を参照すると、本発明の一実施形態による、サーバまたはネットワークデバイスを表すことができる例示的なコンピュータシステム1200が示されている。コンピュータシステム1200は、システムバス1202を介して他の構成要素に動作可能に結合された少なくとも1つのプロセッサ(CPU)1205を含む。キャッシュ1206、リードオンリーメモリ(ROM)1208、ランダムアクセスメモリ(RAM)1210、入力/出力(I/O)アダプタ1220、音声アダプタ1230、ネットワークアダプタ1290、ユーザインタフェースアダプタ1250、およびディスプレイアダプタ1260は、システムバス1202に動作可能に結合される。
【0097】
第1の記憶装置1222および第2の記憶装置1229は、I/Oアダプタ1220によってシステムバス1202に動作可能に結合される。記憶装置1222および1229は、ディスク記憶装置(例えば、磁気または光ディスク記憶装置)、ソリッドステート磁気装置などのいずれであってもよい。記憶装置1222および1229は、同じタイプの記憶装置または異なるタイプの記憶装置とすることができる。
【0098】
スピーカ1232は、音声アダプタ1230によってシステムバス1202に動作可能に結合することができる。トランシーバ1295は、ネットワークアダプタ1290によってシステムバス1202に動作可能に結合される。ディスプレイ装置1262は、ディスプレイアダプタ1260によってシステムバス1202に動作可能に結合される。
【0099】
第1のユーザ入力装置1252、第2のユーザ入力装置1259、および第3のユーザ入力装置1256は、ユーザインタフェースアダプタ1250によってシステムバス1202に動作可能に結合される。ユーザ入力装置1252,1259,1256は、センサ、キーボード、マウス、キーパッド、ジョイスティック、画像捕捉装置、動き感知装置、電力測定装置、マイクロフォン、前述の装置のうちの少なくとも2つの機能を組み込んだ装置などのいずれかとすることができる。もちろん、本発明の精神を維持しながら、他のタイプの入力装置を使用することもできる。ユーザ入力装置1252,1259,1256は、同じタイプのユーザ入力装置または異なるタイプのユーザ入力装置とすることができる。ユーザ入力装置1252,1259,1256は、システム1200との間で情報を入出力するために使用される。
【0100】
機械学習機密性(MLC)構成要素1270は、システムバス1202に動作可能に結合されてもよい。MLC構成要素1270は、上述の動作のうちの1つまたは複数を実行するように構成される。MLC構成要素1270は、スタンドアロンの特殊目的のハードウェア装置として実施することも、記憶装置に記憶されたソフトウェアとして実施することもできる。MLC構成要素1270がソフトウェアウェア実装される実施形態では、コンピュータシステム1200の別個の構成要素として示されているが、MLC構成要素1270は、例えば、第1の記憶装置1222および/または第2の記憶装置1229に格納することができる。代替的に、MLC構成要素1270は、別個の記憶装置(図示せず)に記憶され得る。
【0101】
もちろん、コンピュータシステム1200は、当業者によって容易に企図されるように、他の要素(図示せず)を含むこともでき、また、特定の要素を省略することもできる。例えば、当業者によって容易に理解されるように、他の様々な入力装置および/または出力装置を、その特定の実装に応じて、コンピュータシステム1200に含めることができる。例えば、様々なタイプの無線および/または有線の入力および/または出力装置を使用することができる。さらに、様々な構成の追加のプロセッサ、コントローラ、メモリなども、当業者には容易に理解されるように利用することができる。コンピュータシステム1200のこれらおよび他の変形は、本明細書で提供される本発明の教示を与えられれば、当業者によって容易に企図される。
【0102】
上記は、あらゆる点で例示的かつ例示的であるが、限定的ではないと理解されるべきであり、本明細書に開示される本発明の範囲は、詳細な説明からではなく、むしろ特許法によって許容される全範囲に従って解釈されるような特許請求の範囲から決定されるべきである。本明細書に示され、説明された実施形態は、本発明の原理の例示にすぎず、当業者は、本発明の範囲および精神から逸脱することなく、様々な修正を実施することができることを理解されたい。当業者は、本発明の範囲および精神から逸脱することなく、様々な他の特徴の組み合わせを実施することができる。このように、本発明の態様を、特許法によって要求される詳細および特殊性と共に説明してきたが、特許状によって保護されることが請求され、望まれるものは、添付の特許請求の範囲に記載されている。