(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-16
(45)【発行日】2022-12-26
(54)【発明の名称】データプロセッシング(DP)アクセラレータのための難読化を用いたデータ伝送
(51)【国際特許分類】
G06N 20/00 20190101AFI20221219BHJP
G06F 21/60 20130101ALI20221219BHJP
G06F 21/55 20130101ALN20221219BHJP
【FI】
G06N20/00
G06F21/60 360
G06F21/55 360
【外国語出願】
(21)【出願番号】P 2020065882
(22)【出願日】2020-04-01
【審査請求日】2020-06-19
【審判番号】
【審判請求日】2022-03-29
(32)【優先日】2019-09-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516357421
【氏名又は名称】バイドゥ ユーエスエイ エルエルシー
【氏名又は名称原語表記】Baidu USA LLC
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】110001508
【氏名又は名称】弁理士法人 津国
(72)【発明者】
【氏名】ユエチャン・チェン
(72)【発明者】
【氏名】ハーフェイ・ジュ
【合議体】
【審判長】林 毅
【審判官】田中 寛人
【審判官】篠原 功一
(56)【参考文献】
【文献】米国特許第10275851号明細書(US,B1)
【文献】米国特許出願公開第2018/0241760号明細書(US,A1)
【文献】米国特許出願公開第2019/0220617号明細書(US,A1)
【文献】特開2018-190045号公報(JP,A)
【文献】米国特許出願公開第2019/0044918号明細書(US,A1)
【文献】高野 了成、アクセラレータクラウドを実現するシステムソフトウェアFlowOSの提案、情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC)、2018-HPC-163[online]、発行日2018年02月21日、pp.1-7、インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=186048&file_id=1&file_no=1>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00- 3/12, 7/08-99/00
G06F12/14,21/10-21/16,21/50-21/88
(57)【特許請求の範囲】
【請求項1】
データを難読化解除する方法であって、前記方法は、
データプロセシング(DP)アクセラレータによって、ホストから難読化カーネルアルゴリズムを受信するステップであって、前記難読化カーネルアルゴリズムは、リンクを介した前記ホストとの通信データを難読化及び難読化解除するために使用されるステップと、
前記難読化カーネルアルゴリズムを使用して、前記ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数の人工知能(AI)モデルを取得するステップであって、前記難読化されたデータは、前記ホストが1つ又は複数の人工知能(AI)モデルを難読化したデータである、ステップと、
前記1つ又は複数のAIモデルを予測入力に適用することにより、予測結果を生成するステップと、
前記難読化カーネルアルゴリズムを使用して、前記予測結果を難読化するステップと、
難読化された予測結果を、前記リンクを介して前記ホストに送信するステップであって、前記ホストは前記難読化された予測結果を難読化解除することにより前記予測結果を復元するように構成される、ステップと、を含
み、
前記ホストと前記データプロセシングアクセラレータとの間の通信は、ペリフェラル・コンポーネント・インターコネクト(PCI)・チャネル又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)・チャネルを介して行われる、
データを難読化解除する方法。
【請求項2】
前記難読化カーネルアルゴリズムは、前記ホストによって生成される請求項1に記載の方法。
【請求項3】
前記難読化されたデータを伝送するためのデータチャネルと異なる専用の通信チャネルにおいて前記難読化カーネルアルゴリズムを受信する請求項1に記載の方法。
【請求項4】
前記難読化されたデータは、トレーニング入力データを含み、前記トレーニング入力データを使用して前記1つ又は複数のAIモデルをトレーニングする請求項1に記載の方法。
【請求項5】
前記難読化カーネルアルゴリズムが対称アルゴリズムであるため、前記難読化解除と前記難読化の両方に同じアルゴリズムが使用される請求項1に記載の方法。
【請求項6】
前記難読化カーネルアルゴリズムは、名称ベースの難読化アルゴリズムである請求項1に記載の方法。
【請求項7】
1つ又は複数のAIモデルに対するリクエストを前記ホストから受信するステップと、
リクエストされた前記1つ又は複数のAIモデルに対して難読化を行うステップと、
難読化されたAIモデルを前記ホストに送信するステップであって、前記ホストは前記難読化されたAIモデルに対して難読化解除を行うことにより前記AIモデルを復元するステップと、をさらに含む請求項1に記載の方法。
【請求項8】
データを難読化する方法であって、前記方法は、
ホストにおいてデータプロセッシング(DP)アクセラレータにより1つ又は複数の人工知能(AI)モデルを使用してAI予測を実行する予測リクエストを生成するステップであって、ここで、前記予測リクエストは、難読化カーネルアルゴリズムに基づいて前記1つ又は複数のAIモデルを難読化する難読化されたデータを含むステップと、
前記難読化カーネルアルゴリズムと前記予測リクエストを、リンクを介して前記DPアクセラレータに送信するステップであって、前記難読化カーネルアルゴリズムは、前記難読化されたデータを難読化解除し、前記1つ又は複数のAIモデルを取得して予測結果を生成するために用いられ、前記DPアクセラレータは、前記難読化カーネルアルゴリズムを使用して前記予測結果を難読化し、難読化し
た予測結果を返送するよう構成される、ステップと、
前記DPアクセラレータからの難読化された予測結果を、前記リンクを介して受信するステップと、
前記難読化された予測結果を難読化解除して、前記予測結果を復元するステップと、を含
み、
前記ホストと前記データプロセシングアクセラレータとの間の通信は、ペリフェラル・コンポーネント・インターコネクト(PCI)・チャネル又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)・チャネルを介して行われる、
データを難読化する方法。
【請求項9】
前記難読化カーネルアルゴリズムは、前記ホストによって生成される請求項8に記載の方法。
【請求項10】
前記難読化されたデータを伝送するためのデータチャネルと異なる専用の通信チャネルにおいて前記難読化カーネルアルゴリズムを受信する請求項8に記載の方法。
【請求項11】
前記難読化されたデータは、トレーニング入力データを含み、前記トレーニング入力データを使用して前記1つ又は複数のAIモデルをトレーニングする請求項8に記載の方法。
【請求項12】
前記難読化カーネルアルゴリズムが対称アルゴリズムであるため、前記難読化解除と前記難読化の両方に同じアルゴリズムが使用される請求項8に記載の方法。
【請求項13】
前記難読化カーネルアルゴリズムは、名称ベースの難読化アルゴリズムである請求項8に記載の方法。
【請求項14】
前記DPアクセラレータからの1つ又は複数のAIモデルを復元するためのリクエストを生成するステップと、
前記DPアクセラレータに前記リクエストを送信するステップと、
前記1つ又は複数のAIモデルを示す難読化されたデータを、前記DPアクセラレータから受信するステップと、
難読化されたAIモデルに対して難読化解除を行うことにより前記AIモデルを復元するステップと、をさらに含む請求項8に記載の方法。
【請求項15】
命令が格納されている非一時的機械可読媒体であって、前記命令はプロセッサにより実行されると、
データプロセシング(DP)アクセラレータによって
ホストから難読化カーネルアルゴリズムを受信するステップであって、前記難読化カーネルアルゴリズムは、リンクを介した
前記ホストとの通信データを難読化及び難読化解除するために使用されるステップと、
前記難読化カーネルアルゴリズムを使用して、前記ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数の人工知能(AI)モデルを取得するステップ
であって、前記難読化されたデータは、前記ホストが1つ又は複数の人工知能(AI)モデルを難読化したデータである、ステップと、
前記1つ又は複数のAIモデルを予測入力に適用することにより、予測結果を生成するステップと、
前記難読化カーネルアルゴリズムを使用して、前記予測結果を難読化するステップと、
難読化された予測結果を前記ホストに送信するステップであって、前記ホストは前記難読化された予測結果を難読化解除することにより前記予測結果を復元する
ように構成される、ステップと、
を含
み、
前記ホストと前記データプロセシングアクセラレータとの間の通信は、ペリフェラル・コンポーネント・インターコネクト(PCI)・チャネル又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)・チャネルを介して行われる、
動作を前記プロセッサに実行させる、非一時的機械可読媒体。
【請求項16】
前記難読化カーネルアルゴリズムは、前記ホストによって生成される請求項15に記載の非一時的機械可読媒体。
【請求項17】
前記難読化されたデータを伝送するためのデータチャネルと異なる専用の通信チャネルにおいて、前記難読化カーネルアルゴリズムを受信する請求項15に記載の非一時的機械可読媒体。
【請求項18】
前記難読化されたデータは、トレーニング入力データを含み、前記トレーニング入力データを使用して前記1つ又は複数のAIモデルをトレーニングする請求項15に記載の非一時的機械可読媒体。
【請求項19】
前記難読化カーネルアルゴリズムが対称アルゴリズムであるため、前記難読化解除と前記難読化の両方に同じアルゴリズムが使用される請求項15に記載の非一時的機械可読媒体。
【請求項20】
前記難読化カーネルアルゴリズムは、名称ベースの難読化アルゴリズムである請求項15に記載の非一時的機械可読媒体。
【請求項21】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項1~7のいずれか一項に記載の方法を実現する、コンピュータプログラム。
【請求項22】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項8~14のいずれか一項に記載の方法を実現する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、主に難読化のマルチパーティ計算に関する。より詳細には、本開示の実施形態は、データプロセッシング(DP)アクセラレータのための難読化を用いたデータ伝送に関する。
【背景技術】
【0002】
人工知能(AI)アクセラレータ又はコプロセッサなどのデータプロセッシング(DP)アクセラレータは、機密取引を実行することが益々多くなってきている。これにより、DPアクセラレータのための通信チャネルを保護するニーズと、不正アクセスからホストシステムを保護するようにホストシステムの環境を保護するニーズとが高まっている。
【0003】
例えば、AIトレーニングデータ、モデル、及び推論出力のためのデータ伝送が保護されず、信頼できない当事者に漏洩してしまう可能性がある。さらに、暗号化キーに基づく解決策は遅くて実用的でない可能性がある。したがって、暗号化の有無にかかわらず、DPアクセラレータのためのデータ伝送を難読化するシステムが必要である。
【図面の簡単な説明】
【0004】
本開示の一態様は、データを難読化解除する方法であって、該方法は、データプロセシング(DP)アクセラレータによって難読化カーネルアルゴリズムを受信するステップであって、難読化カーネルアルゴリズムは、リンクを介したホストとの通信データを難読化及び難読化解除するために使用されるステップと、難読化カーネルアルゴリズムを使用して、ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数の人工知能(AI)モデルを取得するステップと、1つ又は複数のAIモデルを予測入力に適用することにより、予測結果を生成するステップと、難読化カーネルアルゴリズムを使用して、予測結果を難読化するステップと、リンクを介して難読化された予測結果をホストに送信するステップであって、ホストは難読化された予測結果を難読化解除することにより予測結果を復元するステップと、を含み得るデータを難読化解除する方法を提供する。
【発明を実施するための形態】
【0005】
本開示の他の一態様は、データを難読化する方法であって、該方法は、
ホストにおいてデータプロセッシング(DP)アクセラレータにより1つ又は複数の人工知能(AI)モデルを使用してAI予測を実行する予測リクエストを生成するステップであって、ここで、予測リクエストは、難読化カーネルアルゴリズムに基づいて1つ又は複数のAIモデルを難読化する難読化されたデータを含むステップと、難読化カーネルアルゴリズムと予測リクエストを、リンクを介してDPアクセラレータに送信するステップであって、ここで、難読化カーネルアルゴリズムを使用して難読化されたデータを難読化解除し、1つ又は複数のAIモデルを取得して予測結果を生成し、ここで、DPアクセラレータは、難読化カーネルアルゴリズムを使用して予測結果を難読化するステップと、DPアクセラレータからの難読化された予測結果を、リンクを介して受信するステップと、難読化された予測結果を難読化解除して、予測結果を復元するステップと、を含むデータを難読化する方法を提供する。
【0006】
本開示のさらなる一態様は、命令が格納されている非一時的機械可読媒体を提供する。前記命令がプロセッサにより実行されると、前記プロセッサに動作を実行させ、前記動作は、データプロセシング(DP)アクセラレータによって難読化カーネルアルゴリズムを受信するステップであって、難読化カーネルアルゴリズムは、リンクを介したホストとの通信データを難読化及び難読化解除するために使用されるステップと、難読化カーネルアルゴリズムを使用して、ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数の人工知能(AI)モデルを取得するステップと、1つ又は複数のAIモデルを予測入力に適用することにより、予測結果を生成するステップと、難読化カーネルアルゴリズムを使用して、予測結果を難読化するステップと、難読化された予測結果をホストに送信するステップであって、ホストは難読化された予測結果を難読化解除することにより予測結果を復元するステップと、を含み得る。
【0007】
本開示の第1態様によれば、ホストは難読化スキームによりデータプロセシング(DP)アクセラレータと通信する。DPアクセラレータ(又はシステム)は、難読化カーネルアルゴリズム(又は難読化アルゴリズム)を受信し、この難読化カーネルアルゴリズムは、ホストとの通信データを難読化及び難読化解除するために使用される。システムは、難読化カーネルアルゴリズムを使用して、ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数のAIモデルを取得する。システムは、1つ又は複数のAIモデルを予測入力に適用することにより、予測結果を生成する。システムは、難読化カーネルアルゴリズムを使用して、予測結果を難読化する。システムは、難読化された予測結果をホストに送信し、ここで、ホストは、難読化された予測結果を難読化解除することで、予測結果を復元する。
【0008】
本開示の第2態様によれば、システムは、DPアクセラレータにより1つ又は複数の人工知能(AI)モデルを使用してAI予測を実行する予測リクエストを生成し、ここで、前記予測リクエストは、難読化カーネルアルゴリズムに基づいて1つ又は複数のAIモデルを難読化する難読化されたデータを含む。システムは、難読化カーネルアルゴリズムと予測リクエストをDPアクセラレータに送信し、ここで、難読化カーネルアルゴリズムを使用して難読化されたデータを難読化解除し、1つ又は複数のAIモデルを取得して予測結果を生成し、ここで、DPアクセラレータは、難読化カーネルアルゴリズムを使用して予測結果を難読化する。システムは、DPアクセラレータから難読化された予測結果を受信する。システムは、難読化された予測結果を難読化解除して、予測結果を復元する。
【0009】
本開示の第3態様によれば、システムは、DPアクセラレータによりホストからのトレーニングリクエストを受信し、前記トレーニングリクエストには、1つ又は複数のAIモデル及び/又はトレーニング入力データを含む難読化されたデータが含まれる。システムは、DPアクセラレータの難読化ユニットによって難読化されたデータを難読化解除し、1つ又は複数のAIモデルを取得する。システムは、トレーニング入力データに基づいて1つ又は複数のAIモデルをトレーニングする。
【0010】
本開示の第4態様によれば、システム(例えば、ホスト)は、1つ又は複数のAIモデル及び/又はトレーニング入力データに対して難読化を行うことにより、難読化されたデータを生成する。システムは、DPアクセラレータによりAIモデルトレーニングを実行するための、難読化されたデータが含まれるトレーニングリクエストを生成する。該システムは、DPアクセラレータにトレーニングリクエストを送信し、ここで、DPアクセラレータの難読化ユニットは難読化アルゴリズムを適用して1つ又は複数のAIモデル及び/又はトレーニング入力データを取得し、ここで、トレーニング入力データを用いて1つ又は複数のAIモデルをトレーニングする。
【0011】
図1は、いくつかの実施形態に係るホストとデータプロセシング(DP)アクセラレータとの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。
図1を参照すると、システムコンフィギュレーション100は、ネットワーク103を介してDPサーバ104に通信可能に結合された1つ又は複数のクライアントデバイス101~102を含むが、これらに限定されない。クライアントデバイス101~102は、パーソナルコンピュータ(例えば、デスクトップコンピュータ、ラップトップコンピュータ、及びタブレットコンピュータ)、シンクライアント、パーソナルデジタルアシスタント(PDA)、ウェブ対応機器、スマートウォッチ又は携帯電話(例えば、スマートフォン)などの任意のタイプのクライアントデバイスであり得る。任意選択で、クライアントデバイス101、102は他のサーバであり得る。ネットワーク103は、任意のタイプのネットワーク、例えば、有線又は無線のローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)又はそれらの組み合わせであってもよい。
【0012】
サーバ(例えば、ホスト)104は、任意のタイプのサーバ又はサーバクラスタであってもよく、例えば、Web又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、又はそれらの組み合わせが挙げられる。サーバ104はさらに、クライアントデバイス101~102などのクライアントがサーバ104によって提供されるリソース又はサービス(サーバ104を介してDPアクセラレータによって提供されるリソース及びサービスなど)にアクセスできるようにするインターフェース(図示せず)を含む。例えば、サーバ104は、さまざまなクラウドサービス(クラウドストレージ、クラウドコンピューティングサービス、機械学習トレーニングサービス、データマイニングサービスなど)をクライアントに提供するクラウドサーバ、又はデータセンターのサーバであり得る。サーバ104は、プライベートクラウド、パブリッククラウド又はハイブリッドクラウドなどのクラウド上のソフトウェアであるサービス(SaaS)又はプラットフォームであるサービス(PaaS)システムの一部として構成され得る。インターフェースには、Webインターフェース、アプリケーションプログラミングインターフェース(API)及び/又はコマンドラインインターフェース(CLI)が含まれ得る。
【0013】
例えば、クライアント、この例では、クライアントデバイス101のユーザアプリケーション(例えば、ウェブブラウザ、アプリケーション)は、実行のための命令(例えば、人工知能(AI)トレーニング、推論命令など)をサーバ104へ送信又は伝送することができ、サーバ104がネットワーク103のインターフェースを介して前記命令を受信する。前記命令に応答して、サーバ104はDPアクセラレータ105~107と通信して命令を実行する。いくつかの実施形態において、命令は、専用マシン又はプロセッサとしてのDPアクセラレータがサーバ104による実行よりも何倍も速く命令を実行できる機械学習タイプの命令である。したがって、サーバ104は、1つ又は複数のDPアクセラレータの実行ジョブを分散方式で制御/管理することができる。次に、サーバ104は、実行結果をクライアントデバイス101~102に返送する。DPアクセラレータ又はAIアクセラレータには、バイドゥ社のBaidu人工知能(AI)チップセットなどの1つ又は複数の専用プロセッサが含まれ得る。又は任意選択で、DPアクセラレータは、NVIDIA、Intel、又はその他のAIチップセットプロバイダーのAIチップセットであり得る。
【0014】
一実施形態によれば、データプロセッシングサーバ104(ホストとも呼ばれる)によってホストされるDPアクセラレータ105~107のいずれかにアクセスする各アプリケーションは、該アプリケーションが信頼できるソース又はベンダーによって提供されることを検証することができる。各アプリケーションは、ホスト104の中央処理装置(CPU)によって特に構成及び実行される信頼できる実行環境(TEE)内で起動及び実行され得る。アプリケーションがDPアクセラレータ105~107のいずれかにアクセスするように構成されている場合、ホスト104とDPアクセラレータ105~107の対応するアクセラレータとの間で難読化接続が確立され得、それによりホスト104とDPアクセラレータ105~107の間で交換されるデータがマルウェア/侵入からの攻撃から保護される。
【0015】
図2は、いくつかの実施形態に係るホストシステムとデータプロセシング(DP)アクセラレータとの間で難読化通信を行う多層保護スキームの一例を示すブロック図である。一実施形態において、システム200は、DPアクセラレータに対するハードウェアの変更の有無にかかわらず、ホストとDPアクセラレータとの間の難読化通信のための保護スキームを提供する。
図2を参照すると、ホスト又はサーバ104は、侵入から保護されるべき1つ又は複数の層(例えば、ユーザーアプリケーション203、ランタイムライブラリ205、ドライバ209、オペレーティングシステム211、及びハードウェア213(例えば、セキュリティモジュール(信頼できるプラットフォームモジュール(TPM))/中央処理装置(CPU)))のシステムとして表すことができる。ホスト104は、通常、ホスト104又はDPアクセラレータ105~107上の実行ジョブを制御及び管理できるCPUシステムである。DPアクセラレータ105~107とホスト104との間の通信チャネルを保護/難読化するために、データ侵入又は攻撃を受けやすいホストシステムの異なる層を保護するために異なるコンポーネントが必要になる場合がある。例えば、信頼できる実行環境(TEE)は、ユーザーアプリケーション層とランタイムライブラリ層をデータ侵入から保護できる。
【0016】
図2を参照すると、いくつかの実施形態によれば、システム200は、ホストシステム104及びDPアクセラレータ105~107を含む。DPアクセラレータには、AI集約型コンピューティングタスクを実行できるBaiduAIチップセット、又はNVIDIAグラフィカルプロセッシングユニット(GPU)などの他のAIチップセットが含まれ得る。一実施形態において、ホストシステム104は、ホスト104内にセキュリティモジュール(信頼できるプラットフォームモジュール(TPM)など)を備えた、1つ又は複数のCPUを有するハードウェア213を含む。TPMは、ハードウェア認証用のホストシステムに固有の暗号化キー(RSA暗号化キーなど)を保存する、エンドポイント上の専用チップである。各TPMチップには、エンドースメントキー(EK)又はエンドースメントクレデンシャル(EC)(ルートキー)と呼ばれる1つ又は複数のRSAキーペア(公開キーと秘密キーのペアなど)が含まれ得る。キーペアはTPMチップ内に保持され、ソフトウェアからアクセスできない。不正なファームウェア及びソフトウェアによる変更からシステムを保護するために、ファームウェア及びソフトウェアの重要なセクションは、実行される前にEK又はECによってハッシュされることができる。したがって、ホスト上のTPMチップは、セキュアブートの信頼のルートとして使用できる。
【0017】
TPMチップはまた、作業カーネル空間におけるドライバ209及びオペレーティングシステム(OS)211とDPアクセラレータとの通信を確保する。ここで、ドライバ209は、DPアクセラレータベンダーによって提供され、ホストとDPアクセラレータ間の通信チャネル215を制御するためのユーザーアプリケーションのドライバとして機能することができる。TPMチップとセキュアブートがそのカーネル空間におけるOSとドライバを保護するため、TPMは、ドライバ209とオペレーティングシステム211をも効果的に保護する。
【0018】
DPアクセラレータ105~107の通信チャネル215がOS及びドライバによって独占され得るため、通信チャネル215は、TPMチップを介して保護され得る。一実施形態において、通信チャネル215は、ペリフェラル・コンポーネント・インターコネクト・チャネル又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)・チャネルを含む。一実施形態において、通信チャネル215は難読化通信チャネルである。
【0019】
ホスト104は、TPM/CPU213によって保護されるように強制される信頼できる実行環境(TEE)201を含むことができる。TEEは安全な環境である。TEEは、TEE内にロードされるコードとデータが機密性と完全性に関して保護されるように確保できる。TEEの例としては、Intelソフトウェアガードエクステンション(SGX)又はAMDセキュア仮想マシン暗号化(SEV)であり得る。Intel SGX及び/又はAMD SEVには、ユーザーレベルのコードがより高い特権レベルで実行されているプロセスから保護されているCPUのメモリのプライベート領域を割り当てることができる中央処理装置(CPU)命令コードのセットが含まれ得る。ここで、TEE201は、ユーザーアプリケーション203及びランタイムライブラリ205を保護することができ、ユーザーアプリケーション203及びランタイムライブラリ205それぞれは、エンドユーザ及びDPアクセラレータベンダーによって提供され得る。ここで、ランタイムライブラリ205は、APIコールをDPアクセラレータの実行、構成、及び/又は制御のためのコマンドに変換することができる。一実施形態において、ランタイムライブラリ205は、ユーザーアプリケーションによる実行のための所定の(例えば、事前定義された)カーネルセットを提供する。
【0020】
ホスト104は、Rust及びGoLangなどのメモリセーフな言語を使用して実装されるメモリセーフなアプリケーション207を含むことができる。MesaLock Linux(登録商標)などのメモリセーフなLinuxリリースで実行されるこれらのメモリセーフなアプリケーションはさらに、システム200をデータの機密性と完全性の攻撃から保護することができる。ただし、オペレーティングシステムは、あらゆるLinuxディストリビューション、UNIX(登録商標)、Windows OS又はMac OSであってもよい。
【0021】
ホストは、TPMセキュアブートを備えたシステムにメモリセーフなLinuxディストリビューションをインストールするようにセットアップすることができる。そのインストールは、製造段階又は準備段階でオフラインで実行できる。また、そのインストールにより、ホストシステムのユーザー空間のアプリケーションが、メモリセーフなプログラミング言語を使用してプログラムされるように確保できる。ホストシステム104で実行されている他のアプリケーションがメモリセーフなアプリケーションであることを確保することにより、ホストシステム104に対する潜在的な機密性及び完全性攻撃がさらに軽減され得る。
【0022】
インストール後、システムはTPMベースのセキュアブートを介して起動することができる。TPMセキュアブートは、カーネル空間においてアクセラレーターサービスを提供する、署名/認定されたオペレーティングシステムとアクセラレータードライバのみが起動されるように確保する。一実施形態において、オペレーティングシステムは、ハイパーバイザーを介してロードすることができる。なお、ハイパーバイザー又は仮想マシンマネージャーは、仮想マシンを作成及び実行するコンピューターソフトウェア、ファームウェア、又はハードウェアである。なお、カーネル空間は宣言領域又は範囲であり、ここで、カーネル(つまり、実行用の所定の(例えば、事前定義された)関数のセット)は、ユーザーアプリケーションに機能とサービスを提供するために、識別される。システムの完全性が損なわれた場合、TPMセキュアブートが起動に失敗することがあり、代わりにシステムがシャットダウンされる。
【0023】
セキュアブート後、ランタイムライブラリ205が実行されるとともに、CPU213に関連する信頼できるメモリスペースにランタイムライブラリ205を配置するTEE201を作成する。次に、ユーザーアプリケーション203がTEE201で起動される。一実施形態において、ユーザーアプリケーション203及びランタイムライブラリ205は静的にリンクされ、一緒に起動される。別の実施形態において、まず、ランタイムライブラリ205がTEEで起動され、次にユーザーアプリケーション203がTEE201で動的にロードされる。別の実施形態において、まず、ユーザーアプリケーション203がTEEで起動され、次にランタイムライブラリ205がTEE201で動的にロードされる。なお、静的にリンクされたライブラリは、コンパイル時にアプリケーションにリンクされたライブラリである。動的ロードは、動的リンカーによって実行できる。動的リンカーは、実行時にユーザーアプリケーションを実行するために共有ライブラリをロード及びリンクする。ここで、TEE201内のユーザーアプリケーション203及びランタイムライブラリ205は、実行時に互いに可視であり、例えば、すべてのプロセスデータは互いに可視である。ただし、TEEへの外部アクセスは拒否される。
【0024】
一実施形態において、ユーザーアプリケーションは、ランタイムライブラリ205によって予め定められたカーネルのセットからのみカーネルを呼び出すことができる。別の実施形態において、ユーザーアプリケーション203及びランタイムライブラリ205は、サイドチャネルフリーアルゴリズム(side channel free algorithm)で強化され、キャッシュベースのサイドチャネル攻撃などのサイドチャネル攻撃から防御する。サイドチャネル攻撃は、実装されたアルゴリズム自体の脆弱性(暗号解析やソフトウェアのバグなど)ではなく、コンピューターシステムの実装から得られた情報に基づいた攻撃である。サイドチャネル攻撃の例には、仮想化環境又はクラウド環境で共有物理システムのキャッシュを監視する攻撃者の能力に基づく攻撃であるキャッシュ攻撃が含まれる。強化には、キャッシュのマスキング、アルゴリズムによって生成されたキャッシュに配置される出力が含まれる。次に、ユーザーアプリケーションの実行が終了すると、ユーザーアプリケーションは実行を終了し、TEEを終了する。
【0025】
一実施形態において、TEE201及び/又はメモリセーフなアプリケーション207は必ずしも必要ではない。例えば、ユーザーアプリケーション203及び/又はランタイムライブラリ205は、ホスト104のオペレーティングシステム環境でホストされる。
【0026】
一実施形態において、カーネルのセットは難読化カーネルアルゴリズムを含む。一実施形態において、難読化カーネルアルゴリズムは、対称アルゴリズム又は非対称アルゴリズムとすることができる。対称難読化アルゴリズムは、同じアルゴリズムを使用してデータ通信を難読化及び難読化解除できる。非対称難読化アルゴリズムには、アルゴリズムペアが必要であり、該アルゴリズムペアのうちの第1のアルゴリズムが難読化に使用され、該アルゴリズムペアのうちの第2のアルゴリズムが難読化解除に使用され、逆もまた同様である。別の実施形態において、非対称難読化アルゴリズムは、データセットを難読化するための単一の難読化アルゴリズムを含むが、該データセットは難読化解除の実行を意図していない(例えば、対応する難読化解除アルゴリズムが存在しない)。難読化とは、通常は混乱した明確ではない言葉でコミュニケーションメッセージを理解しにくくすることにより、コミュニケーションの意図された意味を不明瞭化にすることを指す。データの難読化は、リバースエンジニアリングにとっていっそう困難で複雑である。データが伝送される前に難読化アルゴリズムを適用して、データ通信を難読化(暗号化/解読)することにより、盗聴の機会を減らす。一実施形態において、難読化アルゴリズムは、層への追加保護のために難読化されたデータをさらに暗号化する暗号化スキームをさらに含むことができる。計算が集中する可能性のある暗号化とは異なり、難読化アルゴリズムは計算を簡素化することができる。一部の難読化技術には、文字の難読化、名称の難読化、データの難読化、制御フローの難読化などが含まれるが、これらに限定されない。文字の難読化は、データ内の1つ又は複数の文字を特定の代替文字に置き換えて、データを無意味にするプロセスである。文字の難読化の例には、各文字がアルファベットに従って所定の位置量シフト又は回転する文字回転機能が含まれる。別の例は、特定のパターンに基づいて文字を並べ替えたり、ごちゃ混ぜにすることである。名称の難読化は、特定の対象の文字列を無意味な文字列に置き換えるプロセスである。制御フローの難読化は、追加コード(デッドコードの挿入、制御されていないジャンプの挿入、代替構造の挿入)でプログラムにおける制御フローの順序を変更して、アルゴリズム/AIモデルの真の制御フローを隠すことができる。
【0027】
要約すると、システム200は、(機械学習モデル、トレーニングデータ、及び推論出力を含むデータ伝送のための)DPアクセラレータにデータの機密性及び完全性の損失から保護する複数の保護層を提供する。システム200は、TPMベースのセキュアブート保護層、TEE保護層、及びカーネル確認/検証層を含むことができる。さらに、システム200は、ホスト上の他のアプリケーションがメモリセーフなプログラミング言語で実装されることを確保することにより、メモリセーフなユーザー空間を提供でき、潜在的なメモリ破損/脆弱性を排除することで攻撃をさらに消去できる。さらに、システム200は、キャッシュベースのサイドチャネル攻撃などのサイドチャネル攻撃から防御するために、サイドチャネルフリーアルゴリズムを使用するアプリケーションを含むことができる。
【0028】
最後に、ランタイムライブラリは、難読化カーネルアルゴリズムを提供して、ホストとDPアクセラレータ間のデータ通信を難読化することができる。一実施形態において、前記難読化は暗号化スキームとペアにすることができる。別の実施形態において、難読化が唯一の保護スキームであり、DPアクセラレータが暗号化ベースのハードウェアに基づく必要がなくなる。
【0029】
図3は、一実施形態に係るDPアクセラレータと通信するホストの一例を示すブロック図である。
図3を参照すると、システム300は、DPアクセラレータ105と通信するホスト104のTEE201を含むことができる。DPアクセラレータは、永続性又は非永続性記憶装置305を含む。記憶装置305は、難読化カーネルアルゴリズム301用の記憶空間及び他のデータ(例えば、AIモデル、入力/出力データ302)用の記憶空間を含むことができる。ホスト104のユーザーアプリケーション203は、DPアクセラレータ105との不明瞭化通信(例えば、難読化及び/又は暗号化により)チャネル215を作成できる。ホスト104は、(カーネルランタイムライブラリ205の一部として)難読化カーネルアルゴリズムを生成することにより、難読化通信チャネルを作成できる)。次に、ホスト104は、DPアクセラレータ(例えば、DPアクセラレータ105)に、DPアクセラレータ用の難読化カーネルアルゴリズムを送信して、通信チャネル215を通過するあらゆるデータパケットを難読化又は難読化解除する。別の実施形態において、チャネル215上のホスト104からの出力通信データパケットは第1の難読化アルゴリズムを使用し、チャネル上のホスト104からの入力データは第1の難読化アルゴリズムと異なる第2の難読化アルゴリズムを使用する。別の実施形態において、通信チャネルがドロップ又は終了すると、難読化アルゴリズムが再作成されることができ、ホスト104によって該通信チャネルに対して現在の難読化アルゴリズム又は新たな難読化アルゴリズムが生成される。別の実施形態において、チャネル215用の難読化アルゴリズム/スキームは、ホスト104と他のDPアクセラレータ(例えば、DPアクセラレータ106~107)との間の他のチャネルのための難読化スキームと異なる。一実施形態において、ホスト104は、DPアクセラレータ105~107の各通信セッションのための難読化アルゴリズムを格納する難読化インターフェースを含む。ホスト104とDPアクセラレータ105との間の不明瞭化通信が示されているが、不明瞭化通信(例えば、難読化)は、クライアント101~102とホスト104との間の通信チャネルなどの他の通信チャネルに適用され得る。
【0030】
図4は、一実施形態に係るホストとDPアクセラレータとの間の不明瞭化通信プロトコルの一例を示すフローチャートである。
図4を参照すると、プロトコルの動作400は、
図1のシステム100又は
図3のシステム300によって実行され得る。一実施形態において、クライアントデバイス(例えば、クライアント/ユーザなどのクライアントデバイス101)は、ホスト104へAIモデル推論/トレーニングリクエストを送信する。このリクエストは、リソース又はサービスに対するリクエスト(ビッグデータ分析、モデリング、機械学習/トレーニングタスクなどに対するリクエストなど)であり得、ホスト104の1つ又は複数のDPアクセラレータによって達成することができる。一実施形態において、動作401では、ホスト104は難読化アルゴリズムを準備して、不明瞭化された(例えば、難読化された)通信チャネルを作成する。難読化アルゴリズムは、任意のタイプの難読化アルゴリズムであってもよく、対称又は非対称にすることができる。動作402では、ホスト104は、難読化アルゴリズムをDPアクセラレータ105に送信して、ホスト104とDPアクセラレータ105との間に不明瞭化された(例えば、難読化された)通信チャネルを作成する。次に、ホスト104は、難読化アルゴリズムによりペイロード(例えば、AIモデル及び/又は入力データ)を難読化し、難読化されたペイロード(例えば、データ)をDPアクセラレータ105に送信する。別の実施形態において、難読化アルゴリズムは、暗号化されていてもされていなくてもよい(例えば、データとは別個の)専用チャネルを介して送信されてもよい。別の実施形態において、ホスト104は、難読化アルゴリズムの送信と異なる時間で難読化されたデータを送信する。
【0031】
動作403では、DPアクセラレータ105が難読化カーネルアルゴリズムと難読化されたデータの両方を受信すると、DPアクセラレータ105は、難読化アルゴリズムを使用して難読化されたデータを難読化解除し、元のデータ、例えば、AIモデル及び/又は入力データ(AI推論又はトレーニングのためのもの)を取得する。動作404では、リクエストがAI推論リクエストである場合、DPアクセラレータは入力データを使用してAIモデルを実行し、推論出力を生成する。リクエストがトレーニングリクエストである場合、DPアクセラレータはトレーニング入力データに基づいてAIモデル用のトレーニングセッションを開始する。動作405では、DPアクセラレータ105は、難読化アルゴリズムを使用して生成された出力を難読化する。動作406では、DPは難読化された出力をホスト104に返送する。動作407では、ホスト104は難読化された出力を難読化解除し、元の出力を取得する。したがって、ホスト104とDPアクセラレータ105との間の通信は、侵入者/盗聴者にとっては隠されているものである。
【0032】
図5は、一実施形態に係る方法の一例を示すフローチャートである。プロセス500は、処理ロジックにより実行可能であり、前記処理ロジックはソフトウェア、ハードウェア、又はそれらの組み合わせを含んでもよい。例えば、プロセス500は、
図1のDPアクセラレータ105などのDPアクセラレータによって実行され得る。
図5を参照すると、ブロック501では、処理ロジックは、難読化カーネルアルゴリズムを受信し、この難読化カーネルアルゴリズムは、ホストとの通信データを難読化及び難読化解除するために使用される。ブロック502では、処理ロジックは、難読化カーネルアルゴリズムを使用して、ホストから受信した、予測リクエストのための難読化されたデータを難読化解除して、1つ又は複数のAIモデルを取得する。ブロック503では、処理ロジックは、1つ又は複数のAIモデルを予測入力に適用することにより予測結果を生成する。ブロック504では、処理ロジックは、難読化カーネルアルゴリズムを使用して予測結果を難読化する。ブロック505では、処理ロジックは、難読化された予測結果をホストに送信し、ここで、ホストは、難読化された予測結果を難読化解除することにより予測結果を復元する。
【0033】
一実施形態において、難読化カーネルアルゴリズムはホストによって生成される。一実施形態において、難読化カーネルアルゴリズムは、難読化されたデータを伝送するためのデータチャネルと異なる専用の通信チャネルで受信される。
【0034】
一実施形態において、難読化されたデータは、トレーニング入力データを含み、1つ又は複数のAIモデルはトレーニング入力データを使用してトレーニングされる。一実施形態において、難読化カーネルアルゴリズムは対称アルゴリズムであり、難読化解除と難読化の両方に同じアルゴリズムが使用される。一実施形態において、難読化カーネルアルゴリズムは名称ベースの難読化アルゴリズムである。
【0035】
一実施形態において、処理ロジックは、ホストから1つ又は複数のAIモデルに対するリクエストをさらに受信し、リクエストされた1つ又は複数のAIモデルを難読化し、難読化されたAIモデルをホストに送信し、ここで、ホストは、難読化されたAIモデルを難読化解除することでAIモデルを復元する。
【0036】
図6は、一実施形態に係る方法の一例を示すフローチャートである。プロセス600は、処理ロジックにより実行可能であり、前記処理ロジックにはソフトウェア、ハードウェア、又はそれらの組み合わせが含まれ得る。例えば、プロセス600は、
図1のホスト104により実行されることが可能である。
図6を参照すると、ブロック601では、処理ロジックは、データプロセッシング(DP)アクセラレータにより1つ又は複数の人工知能(AI)モデルを使用してAI予測を実行する予測リクエストを生成し、ここで、予測リクエストは、難読化カーネルアルゴリズムに基づいて前記1つ又は複数のAIモデルを難読化する難読化されたデータを含む。ブロック602では、処理ロジックは、難読化カーネルアルゴリズムと予測リクエストをDPアクセラレータに送信し、ここで、難読化カーネルアルゴリズムを使用して難読化されたデータを難読化解除し、1つ又は複数のAIモデルを取得して予測結果を生成し、ここで、DPアクセラレータは、難読化カーネルアルゴリズムを使用して予測結果を難読化する。ブロック603では、処理ロジックは、DPアクセラレータから難読化された予測結果を受信する。ブロック604では、処理ロジックは、難読化された予測結果を難読化解除して、予測結果を復元する。
【0037】
一実施形態において、難読化カーネルアルゴリズムはホストによって生成される。一実施形態において、難読化カーネルアルゴリズムは、難読化されたデータを伝送するためのデータチャネルと異なる専用の通信チャネルで受信される。一実施形態において、難読化されたデータは、トレーニング入力データを含み、1つ又は複数のAIモデルはトレーニング入力データを使用してトレーニングされる。一実施形態において、難読化カーネルアルゴリズムは対称アルゴリズムであり、難読化解除と難読化の両方に同じアルゴリズムが使用される。他の実施形態において、難読化カーネルアルゴリズムは名称ベースの難読化アルゴリズムである。
【0038】
一実施形態において、処理ロジックは、DPアクセラレータからの1つ又は複数のAIモデルを復元するリクエストをさらに生成し、リクエストをDPアクセラレーターに送信し、DPアクセラレータから1つ又は複数のAIモデルを表す難読化されたデータを受信し、難読化されたAIモデルを難読化解除して、AIモデルを復元する。
【0039】
図7は、一実施形態に係る難読化ユニットを有するDPアクセラレータと通信するホストの一例を示すブロック図である。
図7を参照すると、システム700が難読化ユニット701を含むことを除いて、システム700は
図3のシステム300と同様であり得る。難読化ユニット701は、複数の難読化アルゴリズムを備えた永続性又は非永続性記憶装置702を含む専用ハードウェアモジュールであり得る。難読化アルゴリズムは、製造段階又は準備段階で事前にインストールされ得る。一実施形態において、難読化アルゴリズムは予めホスト104から受信される。一実施形態において、難読化ユニット701は、難読化/難読化解除機能を実行するための1つ又は複数のプロセッサ703を含む。難読化は、難読化ユニット701によって専用の処理として処理できるため、DPアクセラレータ105からの追加の処理リソースは必要ない。これは、DPアクセラレータ105がクライアントにサービスを提供している場合、又はトレーニングの実行に忙しく、リソースを追加することができない場合に役立つ。さらに、難読化ユニット701が難読化アルゴリズムを含むため、通信セッションのための難読化アルゴリズムは、ホスト104からDPアクセラレータに伝送されてもよく、ホスト104からDPアクセラレータに伝送されなくてもよい。
【0040】
一実施形態において、ホスト104は、難読化ユニット701によってサポートされる対応する難読化アルゴリズムを含む。一実施形態において、ホスト104が難読化されたデータを送信するとき、ホスト104は、データを難読化するために使用される対応する難読化アルゴリズムを示すインジケータを送信する。インジケータ(又はセレクタ又は難読化アルゴリズムの選択)は、予めDPアクセラレータ105からホスト104に伝送することができ、DPアクセラレータ105でサポートされる利用可能な難読化アルゴリズムをリストする。一実施形態において、難読化アルゴリズムの選択のためのインジケータは暗号化されていてもよく、暗号化されていなくてもよい。別の実施形態において、セレクタは、データを難読化するデータチャネルとは別のチャネルで送信されてもよい。
【0041】
図8は、一実施形態に係るホストとDPアクセラレータとの間で不明瞭化通信を行う一例を示すフローチャートである。
図8を参照すると、プロトコルの動作800は、
図1のシステム100又は
図7のシステム700によって実行され得る。一実施形態において、クライアントデバイス101などのクライアントデバイスは、AIモデル推論/トレーニングリクエストをホスト104に送信する。このリクエストは、リソース又はサービスに対するリクエスト(ビッグデータ分析、モデリング、機械学習/トレーニングタスクなどに対するリクエストなど)であり得、1つ又は複数のDPアクセラレータによって達成することができる。次に、ホスト104は、そのリクエストを満たすためにDPアクセラレータ105と通信する。一実施形態において、動作801では、DPアクセラレータ105の難読化ユニットによってサポートされる利用可能な難読化アルゴリズムを決定するために、ホスト104は利用可能な難読化アルゴリズムに対するリクエストを送信する。動作802では、DPアクセラレータ105は、そのリクエストに応じて難読化アルゴリズムセレクタのリストを返送する。一実施形態において、動作801~802はオプションである。セレクタのリストに基づいて、動作803では、ホスト104は難読化アルゴリズムの1つを選択し、難読化アルゴリズムセレクタを使用してサービスリクエストペイロード(例えば、AIモデル及び/又は入力データ)を難読化してサービスリクエストを準備する。動作804では、ホスト104は、アルゴリズムセレクタをサービスリクエスト及び難読化されたデータとともにDPアクセラレータ105に送信する。別の実施形態において、DPアクセラレータ105の難読化ユニット701がデフォルトセレクタを含むか、又は1つの難読化アルゴリズムのみをサポートする場合、アルゴリズムセレクタは、オプションのパラメータであり得、必ずしもホスト104とDPアクセラレータ105の間で通信されるわけではない。
【0042】
動作805では、DPアクセラレータ105は、アルゴリズムセレクタに基づいて難読化されたデータを難読化解除し、AIモデル及び/又は入力データを取得する。動作806では、リクエストがトレーニングリクエストである場合、DPアクセラレータはAIモデルのトレーニングセッションを開始する。
【0043】
一実施形態において、動作807では、トレーニングが完了すると、DPアクセラレータ105は、セレクタに基づいて出力データ(例えば、トレーニング完了データ又はトレーニングされたAIモデル)を難読化する。動作808では、DPアクセラレータ105は難読化された出力データをホスト104に返送する。動作809では、ホスト104はセレクタに基づいて前記データを難読化解除し、トレーニング完了データ又はトレーニングされたAIモデルを取得する。
【0044】
図9は、一実施形態に係る方法の一例を示すフローチャートである。プロセス900は、処理ロジックにより実行可能であり、前記処理ロジックにはソフトウェア、ハードウェア、又はそれらの組み合わせが含まれ得る。例えば、プロセス900は、
図7のDPアクセラレータ105などのDPアクセラレータによって実行され得る。
図9を参照すると、ブロック901では、処理ロジックは、ホストからトレーニングリクエストを受信し、該トレーニングリクエストには、1つ又は複数のAIモデル及び/又はトレーニング入力データを含む難読化されたデータが含まれる。ブロック902では、処理ロジックは、DPアクセラレータの難読化ユニットによって難読化されたデータを難読化解除し、1つ又は複数のAIモデルを取得する。ブロック903では、処理ロジックは、トレーニング入力データに基づいて1つ又は複数のAIモデルをトレーニングする。
【0045】
一実施形態において、処理ロジックは、難読化ユニットによってサポートされる複数の難読化アルゴリズムのうちの1つをさらに選択し、難読化ユニットのプロセッサによって処理し、選択された難読化アルゴリズムに基づいて難読化されたデータを難読化解除する。一実施形態において、難読化ユニットのプロセッサは、難読化アルゴリズムをAIモデルトレーニングの実行と同時に実行できるようにDPアクセラレータのプロセッサとは別体である。
【0046】
一実施形態において、難読化されたデータは、トレーニング入力データを含み、AIモデルはトレーニング入力データに基づいてトレーニングされる。一実施形態において、難読化カーネルアルゴリズムは対称アルゴリズムであり、難読化解除と難読化の両方に同じアルゴリズムが使用される。一実施形態において、難読化カーネルアルゴリズムは制御フロー難読化アルゴリズムである。
【0047】
一実施形態において、処理ロジックは、ホストから1つ又は複数のAIモデルに対するリクエストをさらに受信し、前記難読化ユニットによってリクエストされた1つ又は複数のAIモデルを難読化し、難読化されたAIモデルをホストに送信し、ここで、ホストは、難読化されたAIモデルを難読化解除することでAIモデルを復元する。
【0048】
図10は、一実施形態に係る方法の一例を示すフローチャートである。プロセス1000は、処理ロジックにより実行可能であり、前記処理ロジックにはソフトウェア、ハードウェア、又はそれらの組み合わせが含まれ得る。例えば、プロセス1000は、
図7のホスト104により実行されることが可能である。
図10を参照すると、ブロック1001において、処理ロジックは、1つ又は複数の人工知能(AI)モデル及び/又はトレーニング入力データに対して難読化を行うことにより、難読化されたデータを生成する。ブロック1002において、処理ロジックは、DPアクセラレータによりAIモデルトレーニングを実行するための、難読化されたデータが含まれるトレーニングリクエストを生成する。ブロック1003において、処理ロジックは、トレーニングリクエストをDPアクセラレータに送信し、DPアクセラレータの難読化ユニットが難読化アルゴリズムを適用して、1つ又は複数のAIモデル及び/又はトレーニング入力データを取得し、ここで、トレーニング入力データを用いて1つ又は複数のAIモデルをトレーニングする。
【0049】
一実施形態において、処理ロジックはさらに、DPアクセラレータからトレーニング結果を受信する。一実施形態において、処理ロジックは、DPアクセラレータの難読化ユニットによってサポートされる複数の難読化アルゴリズムのうちの1つとして難読化アルゴリズムをさらに選択する。ここで、難読化又は難読化解除は、選択された難読化アルゴリズムを使用して、DPアクセラレータの難読化ユニットのプロセッサによって実行される。
【0050】
一実施形態において、難読化ユニットのプロセッサは、難読化アルゴリズムをAIモデルトレーニングの実行と同時に実行できるようにDPアクセラレータのプロセッサとは別体である。一実施形態において、難読化アルゴリズムは対称アルゴリズムであり、難読化解除と難読化の両方に同じアルゴリズムが使用される。一実施形態において、難読化カーネルアルゴリズムは制御フロー難読化アルゴリズムである。
【0051】
一実施形態において、処理ロジックは、DPアクセラレータからの1つ又は複数のAIモデルを復元するリクエストをさらに生成し、難読化された1つ又は複数のAIモデルを表す難読化されたデータをDPアクセラレータから受信し、DPアクセラレータの難読化ユニットでサポートされる複数の難読化アルゴリズムのうちの1種の難読化アルゴリズムの指示を受信し、該指示に基づいて難読化されたAIモデルを難読化解除して、AIモデルを復元する。
【0052】
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又は動作を実施するように、プロセッサ(図示せず)によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路又はASIC)、デジタルシグナルプロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバ及び/又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェアコンポーネントが1つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
【0053】
図11は、本開示の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム1500は、上記のホスト104又はDPアクセラレータ105~107のような、上述した前記プロセス又は方法のいずれかを実行するあらゆるデータ処理システムを表すことができる。
【0054】
システム1500は、いくつかの異なる構成要素を備えていてもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、又は回路基板(例えば、コンピュータシステムのマザーボード又はアドインカード)に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
【0055】
なお、システム1500は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、一部の実施形態において付加的構成要素が存在してもよく、また、その他の実施形態において示された構成要素を異なる構成にすることが可能であることを理解されたい。システム1500は、デスクトップコンピュータ、ノードパソコン、タブレットコンピュータ、サーバ、モバイルフォン、メディアプレーヤ、パーソナルデジタルアシスタント(PDA)、スマート腕時計、パーソナル通信機、ゲーミングデバイス、ネットワークルータ又はハブ、ワイヤレスアクセスポイント(AP)又はリピータ、セットトップボックス或いはそれらの組み合わせを示すことができる。また、単一の機械又はシステムのみが示されたが、「機械」又は「システム」という用語は、本明細書で説明されるいずれか1つ又は複数の方法を実行するための、1つ(又は複数)の命令セットを単独で又は共同で実行する機械又はシステムの任意の組み合わせも含まれることを理解されたい。
【0056】
一実施形態において、システム1500は、バス又はインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、デバイス1505~1508とを含む。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアが含まれる単一のプロセッサ又は複数のプロセッサを表すことが可能である。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、1つ又は複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又はその他の命令セットを実行するプロセッサ、又は命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1501は更に1つ又は複数の専用プロセッサであってもよい。例えば、特定用途向け集積回路(ASIC)、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又は命令を処理可能な任意の他の種類のロジックが挙げられる。
【0057】
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明される動作及びステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ及び/又は表示装置を含んでいてもよい。
【0058】
プロセッサ1501は、メモリ1503と通信することができ、一実施形態において、メモリ1503は、所定量のシステムメモリを提供するための複数のメモリデバイスによって実現されることができる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、1つ又は複数の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意のデバイスにより実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX(登録商標)、UNIX(登録商標)、又はその他のリアルタイム若しくは組込みオペレーティングシステム(例えば、VxWorks)のような、任意の種類のオペレーティングシステムであってもよい。
【0059】
システム1500は、更にデバイス1505~1508のようなI/Oデバイスを含むことができ、I/Oデバイスは、ネットワークインターフェースデバイス1505、任意選択入力デバイス1506、及びその他の任意選択I/Oデバイス1507を含む。ネットワークインターフェースデバイス1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、又はその他の無線周波数(RF)送受信機、又はそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
【0060】
入力デバイス1506は、マウス、タッチパッド、タッチスクリーン(表示装置1504と統合されてもよい)、ポインターデバイス(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力デバイス1506は、タッチスクリーンと接続されるタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、及び表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する1つ又は複数の点を確定するためのその他の素子を用いて、それらの接触、移動又は中断を検出することができる。
【0061】
I/Oデバイス1507は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポート機能を促進するために、スピーカ及び/又はマイクロホンを含んでもよい。その他のI/Oデバイス1507は、更に、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCI-PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、又はそれらの組み合わせを含むことができる。デバイス1507は、結像処理サブシステム(例えば、カメラ)を更に含むことができ、前記結像処理サブシステムは、写真及びビデオ断片を記録することなどのカメラ機能を実現するための、電荷接続素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他のデバイスはシステム1500の具体的な構成又は設計により、組込みコントローラ(図示せず)により制御されることができる。
【0062】
データ、アプリケーション、1つ又は複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶デバイス(図示せず)が接続されることができる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶デバイスは、主にハードディスクドライブ(HDD)を使用して実現することができ、より小さい容量のSSD記憶デバイスをSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのベーシックインプット/アウトプットソフトウェア(BIOS)及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
【0063】
記憶デバイス1508は、本明細書に記載の方法又は機能のいずれか1つ又は複数を具現化する1つ又は複数の命令セット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が格納されているコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる)を備えてもよい。処理モジュール/ユニット/ロジック1528は、例えば、上述した
図1のホスト104又は
図3もしくは
図7のDPアクセラレータ105などの上記の構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、及びプロセッサ1501による実行中に、メモリ1503内及び/又はプロセッサ1501内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503及びプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェースデバイス1505を経由して送受信されてもよい。
【0064】
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つ又は複数の命令セットが格納される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース及び/又は関連するキャッシュとサーバ)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納又は符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本開示のいずれか1種又は複数種の方法を機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
【0065】
本明細書に記載された処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
【0066】
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本開示の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ及び/又はその他のデータ処理システムは、本開示の実施形態と共に使用することも可能であることを理解されたい。
【0067】
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
【0068】
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語(例えば、添付された特許請求の範囲に記載のもの)による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
【0069】
図に示される技術は、1つ又は複数の電子機器に格納され実行されるコード及びデータを使用して実施することができる。そのような電子機器は、コンピュータ可読媒体(例えば、非一時的コンピュータ可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み取り専用メモリ、フラッシュメモリ装置、相変化メモリ)及び一時的コンピュータ可読伝送媒体(例えば、電子、光学、音響学、又は他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号など)など)を使用して、コード及びデータを格納及び伝送する(内部に伝送され、及び/又はネットワークを介して他の電子装置に伝送される)。
【0070】
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ファームウェア、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又はそれらの組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
【0071】
本明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本発明のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。