IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ バイドゥ ユーエスエイ エルエルシーの特許一覧

特許7290708仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法
<>
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図1
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図2A
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図2B
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図3
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図4A
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図4B
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図5A
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図5B
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図6
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図7
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図8
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図9
  • 特許-仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-05
(45)【発行日】2023-06-13
(54)【発明の名称】仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20230606BHJP
   G06F 9/455 20180101ALI20230606BHJP
【FI】
G06F9/50 150Z
G06F9/455 150
【請求項の数】 19
(21)【出願番号】P 2021214735
(22)【出願日】2021-12-28
(65)【公開番号】P2022043279
(43)【公開日】2022-03-15
【審査請求日】2021-12-28
(31)【優先権主張番号】17/142,946
(32)【優先日】2021-01-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516357421
【氏名又は名称】バイドゥ ユーエスエイ エルエルシー
【氏名又は名称原語表記】Baidu USA LLC
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】チャオ ジュビョウ
(72)【発明者】
【氏名】チョン ユエチャン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】国際公開第2020/140268(WO,A1)
【文献】米国特許出願公開第2018/0232254(US,A1)
【文献】特開2016-085663(JP,A)
【文献】特開2009-140053(JP,A)
【文献】国際公開第2020/157599(WO,A1)
【文献】国際公開第2018/020603(WO,A1)
【文献】特開2018-005576(JP,A)
【文献】特表2016-529633(JP,A)
【文献】国際公開第2009/107351(WO,A1)
【文献】特表2009-530743(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行するコンピュータ実装方法であって、
前記VM-Sおよび前記仮想機能を移行するコマンドを受信し、前記移行を実施する際に使用する前記VM-Sおよび前記仮想機能のチェックポイントの選択を受信したことに応答して、
前記アプリケーションの1つまたは複数の実行中のAIタスクを記録し、次いで停止すること、
前記仮想機能に関連するAIアクセラレータステータスを生成または選択すること、ならびに
記チェックポイントおよび前記AIアクセラレータ・ステータスをターゲット・ホストのハイパーバイザに送信して、移行後ターゲット仮想マシン(VM-T)を生成すること、
前記ターゲット・ホストが前記チェックポイントおよび前記AIアクセラレータ・ステータスを確認し、前記VM-Tを生成するためのリソースを生成および構成し、前記ターゲット・ホストの前記AIアクセラレータに、前記AIアクセラレータ・ステータスからのデータをロードしたという通知を受信したことに応答して、
前記VM-Sおよび前記仮想機能を前記VM-Tに移行すること、
を含み、
前記AIアクセラレータ・ステータスのシグナチャおよびフレッシュネスを確認することが、
前記VM-Sの公開鍵を使用して前記AIアクセラレータ・ステータスの前記シグナチャを解読すること、
前記AIアクセラレータ・ステータスの日付およびタイム・スタンプが規定日付および時刻範囲内にあると判定すること、
前記AIアクセラレータ・ステータスのハッシュを確認すること、
を含む、
コンピュータ実装方法。
【請求項2】
前記VM-Tが前記アプリケーションおよび前記AIタスクを再始動したという通知を受信したことに応答して、前記VM-Sおよび前記仮想機能の移行後クリーンアップを実施することであって、
セキュア計算の任意のAI推論、AIモデル、中間結果、またはその部分を含む、前記AIアクセラレータの少なくともセキュア・メモリを消去すること、ならびに
前記仮想機能に関連する前記VM-Sのメモリ、および前記アプリケーションによる前記仮想機能に対する任意の呼出しを消去すること、
を含むこと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記VM-Sの複数のチェックポイントのストレージ内に、前記VM-Sおよび前記仮想機能の状態のチェックポイントを記憶することであって、前記VM-Sの各チェックポイントが、前記VM-Sの前記リソースの状態、前記アプリケーションの状態、および前記AIアクセラレータの前記リソースに関連する前記仮想機能の状態を含むこと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記チェックポイントが、
1つまたは複数の実行中のAIタスクの記録と、
前記VM-Sに通信可能に結合された前記AIアクセラレータ内の前記リソースの構成情報と、
1つまたは複数の前記AIアクセラレータ内の仮想機能スケジューリング情報および通信バッファを含む前記VM-Sのメモリのスナップショットと、
前記チェックポイントの日付およびタイム・スタンプと、
をさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記AIアクセラレータステータスを生成することが、
前記AIアクセラレータ・ステータス内に前記AIアクセラレータ・ステータスの日付およびタイム・スタンプを記憶すること、
前記AIアクセラレータのプロセッサに関連する1つまたは複数のレジスタと、前記AIアクセラレータによって処理すべき保留中の命令のキャッシュ、キュー、またはパイプラインとを含む、前記AIアクセラレータ内のメモリの内容を前記AIアクセラレータ・ステータス内に記憶すること、および
前記AIアクセラレータステータスのハッシュを生成し、前記AIアクセラレータ・ステータスと、ハッシュと、日付およびタイム・スタンプとにデジタル署名すること、
を含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記AIアクセラレータ・ステータスが、前記AIアクセラレータが通信するように構成されるAIアクセラレータのクラスタ内の1つまたは複数の他のAIアクセラレータを示す1つまたは複数のレジスタ設定をさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
人工知能(AI)プロセッサに通信可能に結合される少なくとも1つのハードウェア・プロセッサを有する処理システムによって実行されるとき、前記処理システムの人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行する動作を実施する実行可能命令でプログラムするコンピュータ可読媒体であって、前記動作が、
前記VM-Sおよび前記仮想機能を移行するコマンドを受信し、前記移行を実施する際に使用する前記VM-Sおよび前記仮想機能のチェックポイントの選択を受信したことに応答して、
前記アプリケーションの1つまたは複数の実行中のAIタスクを記録し、次いで停止すること、
前記仮想機能に関連するAIアクセラレータステータスを生成または選択すること、ならびに
記チェックポイントおよび前記AIアクセラレータ・ステータスをターゲット・ホストのハイパーバイザに送信して、移行後ターゲット仮想マシン(VM-T)を生成すること、
前記ターゲット・ホストが前記チェックポイントおよび前記AIアクセラレータ・ステータスを確認し、前記VM-Tを生成するためのリソースを生成および構成し、前記ターゲット・ホストの前記AIアクセラレータに、前記AIアクセラレータ・ステータスからのデータをロードしたという通知を受信したことに応答して、
前記VM-Sおよび前記仮想機能を前記VM-Tに移行すること、
を含み、
前記AIアクセラレータ・ステータスのシグナチャおよびフレッシュネスを確認することが、
前記VM-Sの公開鍵を使用して前記AIアクセラレータ・ステータスの前記シグナチャを解読すること、
前記AIアクセラレータ・ステータスの日付およびタイム・スタンプが規定日付および時刻範囲内にあると判定すること、および
前記AIアクセラレータ・ステータスのハッシュを確認すること、
を含む、コンピュータ可読媒体。
【請求項8】
前記動作が、
前記VM-Tが前記アプリケーションおよび前記AIタスクを再始動したという通知を受信したことに応答して、前記VM-Sおよび前記仮想機能の移行後クリーンアップを実施することであって、
セキュア計算の任意のAI推論、AIモデル、中間結果、またはその部分を含む、前記AIアクセラレータの少なくともセキュア・メモリを消去すること、ならびに
前記仮想機能に関連する前記VM-Sのメモリ、および前記アプリケーションによる前記仮想機能に対する任意の呼出しを消去すること
を含むこと、
を含む、請求項に記載のコンピュータ可読媒体。
【請求項9】
前記動作が、
前記VM-Sの複数のチェックポイントのストレージ内に、前記VM-Sおよび前記仮想機能の状態のチェックポイントを記憶することであって、前記VM-Sの各チェックポイントが、前記VM-Sの前記リソースの状態、前記アプリケーションの状態、および前記AIアクセラレータの前記リソースに関連する前記仮想機能の状態を含むこと、
をさらに含む、請求項に記載のコンピュータ可読媒体。
【請求項10】
前記チェックポイントが、
1つまたは複数の実行中のAIタスクの記録と、
前記VM-Sに通信可能に結合された前記AIアクセラレータ内の前記リソースの構成情報と、
1つまたは複数の前記AIアクセラレータ内の仮想機能スケジューリング情報および通信バッファを含む前記VM-Sのメモリのスナップショットと、
前記チェックポイントの日付およびタイム・スタンプと、
をさらに含む、請求項に記載のコンピュータ可読媒体。
【請求項11】
前記AIアクセラレータステータスを生成することが、
前記AIアクセラレータ・ステータス内に前記AIアクセラレータ・ステータスの日付およびタイム・スタンプを記憶すること、
前記AIアクセラレータのプロセッサに関連する1つまたは複数のレジスタと、前記AIアクセラレータによって処理すべき保留中の命令のキャッシュ、キュー、またはパイプラインとを含む、前記AIアクセラレータ内のメモリの内容を前記AIアクセラレータ・ステータス内に記憶すること、および
前記AIアクセラレータステータスのハッシュを生成し、前記AIアクセラレータ・ステータスと、ハッシュと、日付およびタイム・スタンプとにデジタル署名すること、
を含む、請求項に記載のコンピュータ可読媒体。
【請求項12】
前記AIアクセラレータ・ステータスが、前記AIアクセラレータが通信するように構成されるAIアクセラレータのクラスタ内の1つまたは複数の他のAIアクセラレータを示す1つまたは複数のレジスタ設定をさらに含む、請求項11に記載のコンピュータ可読媒体。
【請求項13】
少なくとも1つのハードウェア・プロセッサによって実行されるとき、人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行するための動作をシステムに実施させる命令でプログラムされたメモリに結合された少なくとも1つのハードウェア処理を備えるシステムであって、前記動作が、
前記VM-Sおよび前記仮想機能を移行するコマンドを受信し、前記移行を実施する際に使用する前記VM-Sおよび前記仮想機能のチェックポイントの選択を受信したことに応答して、
前記アプリケーションの1つまたは複数の実行中のAIタスクを記録し、次いで停止すること、
前記仮想機能に関連するAIアクセラレータステータスを生成または選択すること、ならびに
記チェックポイントおよび前記AIアクセラレータ・ステータスをターゲット・ホストのハイパーバイザに送信して、移行後ターゲット仮想マシン(VM-T)を生成すること、
前記ターゲット・ホストが前記チェックポイントおよびAIアクセラレータ・ステータスを確認し、前記VM-Tを生成するためのリソースを生成および構成し、前記ターゲット・ホストの前記AIアクセラレータに、前記AIアクセラレータ・ステータスからのデータをロードしたという通知を受信したことに応答して、
前記VM-Sおよび前記仮想機能を前記VM-Tに移行すること、
を含み、
前記AIアクセラレータ・ステータスのシグナチャおよびフレッシュネスを確認することが、
前記VM-Sの公開鍵を使用して前記AIアクセラレータ・ステータスの前記シグナチャを解読すること、
前記AIアクセラレータ・ステータスの日付およびタイム・スタンプが規定日付および時刻範囲内にあると判定すること、および
前記AIアクセラレータ・ステータスのハッシュを確認すること、
を含む、システム。
【請求項14】
前記動作が、
前記VM-Tが前記アプリケーションおよび前記AIタスクを再始動したという通知を受信したことに応答して、前記VM-Sおよび前記仮想機能の移行後クリーンアップを実施することであって、
セキュア計算の任意のAI推論、AIモデル、中間結果、またはその部分を含む、前記AIアクセラレータの少なくともセキュア・メモリを消去すること、ならびに
前記仮想機能に関連する前記VM-Sのメモリ、および前記アプリケーションによる前記仮想機能に対する任意の呼出しを消去すること、
を含むこと、
をさらに含む請求項13に記載のシステム。
【請求項15】
前記動作が、
前記VM-Sの複数のチェックポイントのストレージ内に、前記VM-Sおよび前記仮想機能の状態のチェックポイントを記憶することであって、前記VM-Sの各チェックポイントが、前記VM-Sの前記リソースの状態、前記アプリケーションの状態、および前記AIアクセラレータの前記リソースに関連する前記仮想機能の状態を含むこと、
をさらに含む、請求項13に記載のシステム。
【請求項16】
前記チェックポイントが、
1つまたは複数の実行中のAIタスクの記録と、
前記VM-Sに通信可能に結合された前記AIアクセラレータ内の前記リソースの構成情報と、
1つまたは複数のAIアクセラレータ内の仮想機能スケジューリング情報および通信バッファを含む前記VM-Sのメモリのスナップショットと、
前記チェックポイントの日付およびタイム・スタンプと、
をさらに含む、請求項15に記載のシステム。
【請求項17】
前記AIアクセラレータステータスを生成することが、
前記AIアクセラレータ・ステータス内に前記AIアクセラレータ・ステータスの日付およびタイム・スタンプを記憶すること、
前記AIアクセラレータのプロセッサに関連する1つまたは複数のレジスタと、前記AIアクセラレータによって処理すべき保留中の命令のキャッシュ、キュー、またはパイプラインとを含む、前記AIアクセラレータ内のメモリの内容を前記AIアクセラレータ・ステータス内に記憶すること、
前記AIアクセラレータステータスのハッシュを生成し、前記AIアクセラレータ・ステータスと、ハッシュと、日付およびタイム・スタンプとにデジタル署名すること、
を含む、請求項13に記載のシステム。
【請求項18】
前記AIアクセラレータ・ステータスが、前記AIアクセラレータが通信するように構成されるAIアクセラレータのクラスタ内の1つまたは複数の他のAIアクセラレータを示す1つまたは複数のレジスタ設定をさらに含む、
請求項17に記載のシステム。
【請求項19】
コンピュータ上で動作しているときに、請求項1~のいずれか1項に記載のコンピュータ実装方法を前記コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【発明の詳細な説明】
【0001】
[技術分野]
本開示の実施形態は、一般的には、仮想マシンのホストに結合された1つまたは複数の人工知能アクセラレータに関する。より詳細には、本開示の実施形態は、人工アクセラレータを使用する仮想マシンを移行することに関する。
【0002】
[背景]
人工知能(AI)技術がイメージ分類、医学的診断、自動運転などの様々な分野で導入されており、最近ではAIモデル(「機械学習モデル」とも呼ばれる)が広く利用されている。ソフトウェア・アプリケーションの実行可能イメージまたはバイナリ・イメージと同様に、AIモデルは、トレーニングされるとき、特徴として分類するための属性のセットに基づいて推論を実施し得る。AIモデルのトレーニングは、有用な予測を生み出すAIモデルを生成するためにデータを収集、照合、およびフィルタリングする際にかなりの投資を必要とし得る。さらには、AIモデルを使用した結果として得られる予測は、ユーザが保護を望む個人的な機密データを含み得る。
【0003】
AIモデルから予測を生成することは、計算集約的なプロセスであり得る。1つまたは複数のユーザに対して十分な計算能力を提供するために、1つまたは複数のAIアクセラレータが1つまたは複数の仮想マシンのホスト・マシンに結合され得る。AIモデルをトレーニングすることなどの計算集約的なタスクに対して十分な計算機能力を提供するために、AIアクセラレータがクラスタで編成され、次いで複数のグループで編成され得、各グループが単一の仮想マシンに割り当てられ得る。あまり集約的ではないタスクでは、単一の仮想マシンが、それに割り当てられたAIアクセラレータを有し得る。
【0004】
いくつかの周知の理由で、仮想マシンが異なるホストに移行される必要があり得る。従来技術の仮想マシン移行では、移行中に1つまたは複数のAIアクセラレータのステータスが保護されない。少なくともその一部がAIアクセラレータ上で実施される1つまたは複数の人工知能タスクを生成するAIアプリケーションに、別のホストへの移行後に障害が発生し、またはAIアプリケーションが中断され得る。障害には、AIアクセラレータの構成、メモリ内容、およびコンピューティング状態を取り込むことに失敗すること、およびVM内のAIタスクのコンピューティング状態を取り込むことに失敗することが含まれ得る。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の一態様は、人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行するコンピュータ実装方法であって、前記VM-Sおよび前記仮想機能を移行するコマンドを受信し、前記移行を実施する際に使用する前記VM-Sおよび仮想機能のチェックポイントの選択を受信したことに応答して、前記アプリケーションの1つまたは複数の実行中のAIタスクを記録し、次いで停止すること、前記仮想機能に関連する前記AIアクセラレータのステータスを生成または選択すること、ならびに前記AIアクセラレータの前記チェックポイントおよび前記ステータスをターゲット・ホストのハイパーバイザに送信して、移行後ターゲット仮想マシン(VM-T)を生成すること、前記ターゲット・ホストが前記チェックポイントおよびAIステータスを確認し、VM-Tを生成するためのリソースを生成および構成し、前記ターゲット・ホストの前記AIアクセラレータに、前記AIアクセラレータ・ステータスからのデータをロードしたという通知を受信したことに応答して、前記VM-Sおよび仮想機能を前記VM-Tに移行することを含む方法である。
【0006】
本開示の実施形態が、限定ではなく例として、同様の参照が同様の要素を示す添付の図面の図で示される。
【図面の簡単な説明】
【0007】
図1】一実施形態による、チェックポイント認証および/または人工知能(AI)アクセラレータ・ステータス確認を用いて仮想マシンを移行し得るセキュア処理システムを示すブロック図である。
図2A】一実施形態による、1つまたは複数のホストと1つまたは複数の人工知能アクセラレータとの間のセキュア・コンピューティング環境を示すブロック図である。
図2B】一実施形態による、1つまたは複数のホストと1つまたは複数の人工知能アクセラレータとの間のセキュア・コンピューティング環境を示すブロック図である。
図3】一実施形態による、各クラスタがクラスタ内のAIアクセラレータのグループのリソースを仮想マシンにマッピングする仮想機能を有し、各人工知能アクセラレータがセキュア・リソースおよび非セキュア・リソースを有する、人工知能アクセラレータのクラスタを制御するホストを示すブロック図である。
図4A】一実施形態による、仮想化環境内のチェックポイント認証を用いる仮想マシン移行のための方法を実装する人工知能(AI)アクセラレータを有するデータ処理システムの構成要素を示すブロック図である。
図4B】一実施形態による、仮想化環境内のAIアクセラレータ・ステータス確認を用いる仮想マシン移行のための方法を実装するための人工知能(AI)アクセラレータを有するデータ処理システムの構成要素を示すブロック図である。
図5A】一実施形態による、移行すべきソース仮想マシンのホストのハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシン移行のための方法である。
図5B】一実施形態による、移行すべきソース仮想マシンのホストのハイパーバイザの観点からの、仮想化環境内のAIアクセラレータ・ステータス確認を使用するAIアクセラレータを有するデータ処理システムの仮想マシン移行のための方法を示す図である。
図6】一実施形態による、移行すべき仮想マシンのホスト上のソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いる仮想マシン移行のための方法で使用するためのチェックポイントを生成する方法を示す図である。
図7】一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行するかどうかを判定する方法を示す図である。
図8】一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行する方法を示す図である。
図9】一実施形態による、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行した後に、ソース・ホスト・コンピューティング・デバイスの移行後クリーンアップを実施する方法を示す図である。
図10】いくつかの実施形態による、移行後仮想マシンに対するホスト上のターゲット・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証および任意選択でAIアクセラレータ・ステータス確認を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行する方法を示す図である。
【発明を実施するための形態】
【0008】
[詳細な説明]
以下で論じられる詳細を参照して本開示の様々な実施形態および態様が説明され、添付の図面は様々な実施形態を示す。以下の説明および図面は本開示の例であり、本開示を限定すると解釈されるべきではない。本開示の様々な実施形態の完全な理解を与えるために、多数の特定の詳細が説明される。しかしながら、いくつかの例では、本開示の実施形態の簡潔な議論を与えるために、周知または従来の詳細は説明されない。
【0009】
本明細書での「一実施形態」に対する参照は、実施形態に関連して説明される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な場所での「一実施形態では」という語句の出現は、必ずしもすべて同一の実施形態を参照するわけではない。
【0010】
以下の実施形態は、ホスト・デバイスからAIアクセラレータにオフロード(または委任)され得るいくつかのタイプの動作の処理スループットを向上させるための人工知能(AI)アクセラレータの使用に関する。ホスト・デバイスは1つまたは複数の仮想マシン(VM)をホストする。ホスト上の少なくとも1つのVMが、仮想機能を介してAIアクセラレータのリソースをVMにマッピングする仮想機能に関連付けられ得る。仮想機能は、VMにマッピングされるAIアクセラレータ内のリソースと、アクセラレータ内のそれらのリソースの構成とを列挙する。VM内のドライバが、AIアクセラレータによって処理されるべきタスクのスケジューリングおよびコンピューティング・ステータスを追跡し得る。ドライバはまた、VMにマッピングされるAIアクセラレータのコード、データ、およびメモリを取得する。
【0011】
本明細書での「仮想機能」は、人工知能(AI)アクセラレータ内の、またはAIアクセラレータのクラスタ内のAIアクセラレータのグループ内の、リソースのセットの、1つの仮想マシンへのマッピングである。本明細書では、リソースのセットは、個々に、および集合的に「AIリソース」と呼ばれる。本明細書では、AIアクセラレータまたはAIアクセラレータのクラスタは、1つのAIアクセラレータとAIアクセラレータのクラスタとの間の区別が説明されていない限り「AIアクセラレータ」と呼ばれる。
【0012】
AIアクセラレータは、汎用処理装置(GPU)、人工知能(AI)アクセラレータ、数学コプロセッサ、デジタル信号プロセッサ(DSP)、または他のタイプのプロセッサであり得る。AIアクセラレータは、Baidu(登録商標)AIアクセラレータなどの知的所有権のある設計、または別のGPUなどであり得る。1つまたは複数のAIアクセラレータにセキュアに結合されたホスト・デバイスと共に実施形態が図示され、説明されるが、本明細書で説明される概念は、より一般に分散処理システムとして実装され得る。
【0013】
複数のAIアクセラレータが、アプリケーション・プログラム処理要求を、AIアクセラレータのうちの1つまたは複数についての処理タスクに変換するドライバを有するホスト・デバイスによって管理されるクラスタ内でリンクされ得る。ホスト・デバイスは、対応する仮想マシン(VM)に関連付けられるユーザをそれぞれ有する1つまたは複数のVMをサポートし得る。ドライバは、AIアクセラレータのリソースをVMにマッピングする仮想機能を実装し得る。ドライバは、AIアクセラレータのうちの1つまたは複数による処理を求める複数のVMからのアプリケーション処理要求をスケジューリングするスケジューラを含み得る。一実施形態では、ドライバは、スケジューラ内の処理要求を解析して、クラスタ内の1つまたは複数のAIアクセラレータをどのようにグループ化するか、および1つまたは複数のAIアクセラレータに、熱を削減し、エネルギーを節約するためにグループからリンク解除し、低電力状態に入るように命令するかどうかを決定し得る。
【0014】
ホスト・デバイスとAIアクセラレータとは、peripheral component interconnect express(PCIe)や他の高速バスなどの高速バスを介して相互接続され得る。ホスト・デバイスとAIアクセラレータとは、以下で説明される本発明の態様の動作を実施する前に、鍵を交換し、PCIeバスを介してセキュア・チャネルを開始し得る。動作のうちの一部は、AIアクセラレータが、人工知能(AI)モデルを使用して、ホスト・デバイスによって提供されるデータを使用して推論を実施することを含む。AIモデル推論がホスト・デバイスによって信頼される前に、ホスト・デバイスは、AIアクセラレータに、AIモデルのウォーターマークを決定することを含む、以下で説明される1つまたは複数の確認テストを実施させ得る。いくつかの実施形態および動作では、AIアクセラレータは、ホスト・デバイスがAIアクセラレータによって生成された結果の有効性をテストしていることを認識していない。
【0015】
ホスト・デバイスは、1つまたは複数のAIアクセラレータに結合された中央演算処理装置(CPU)を含み得る。各AIアクセラレータは、バスまたは相互接続を介してCPUに結合され得る。AIアクセラレータは、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)デバイスの形態、または他の形態の集積回路(IC)で実装され得る。代替として、ホスト・プロセッサは1次データ処理システムの一部であり得、AIアクセラレータは、1次システムがネットワークを介してリモートにそのデータ処理タスクをオフロードし得る2次システム(たとえば、software as a service(SaaS)システムやplatform as a service(PaaS)システムなどのクラウド・コンピューティング・システム)としての多くの分散システムのうちの1つであり得る。ホスト・プロセッサとAIアクセラレータとの間のリンクは、peripheral component interconnect express(PCIe)リンク、またはイーサネット接続などのネットワーク接続であり得る。各AIアクセラレータは、別のAIアクセラレータとの間の通信リンクを使用可能(リンクアップ)または使用不能(リンクダウン)にする1つまたは複数のリンク・レジスタを含み得る。
【0016】
第1の態様では、人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行するコンピュータ実装方法が、VM-Sの状態のチェックポイントをVM-Sの複数の状態のストレージ内に記憶することを含み得る。VM-Sの各状態は、VM-Sのリソースの状態、アプリケーションの状態、およびAIリソースをVM-SにマッピングするAIアクセラレータの仮想機能の状態を含み得る。VM-Sおよび仮想機能を移行するコマンドを受信し、移行を実施する際に使用するVM-Sの状態のチェックポイントの選択を受信したことに応答して、方法は、1つまたは複数の実行中のAIタスクを記録し、次いで停止すること、ならびに選択されたチェックポイントを使用して、VM-S、アプリケーション、1つまたは複数のAIタスク、および仮想機能をターゲット・ホスト上のターゲットVM(VM-T)に移行することをさらに含み得る。チェックポイントがターゲット・ハイパーバイザによって首尾よく確認され、移行が首尾よく完了したという通知をターゲット・ハイパーバイザから受信したことに応答して、記録済みの1つまたは複数のAIタスクおよびアプリケーションが、VM-T上で再始動され得る。仮想機能は、AIアクセラレータのリソースをVM-Sにマッピングし、VM-Sのユーザは、そのリソースが仮想機能によってVM-SにマッピングされるAIアクセラレータのリソースにアクセスし得る唯一のユーザである。一実施形態では、仮想機能は、複数のAIアクセラレータのリソースをVM-Sにマッピングし、チェックポイントは複数のAIアクセラレータ間の通信構成を含み、VM-Sのユーザは、仮想機能によってVM-Sにマッピングされる複数のAIアクセラレータのリソースにアクセスし得る唯一のユーザである。一実施形態では、方法は、VM-Sの移行が完了し、1つまたは複数の記録済みAIタスクが首尾よく再始動されたという通知をターゲット・ハイパーバイザから受信することをさらに含む。通知に応答して、VM-Sの移行後クリーンアップが実施され得る。移行後クリーンアップは、任意のAI推論、AIモデル、セキュア計算、またはその部分を含む、AIアクセラレータの少なくともセキュア・メモリを消去すること、ならびにAI仮想機能に関連するVM-Sのメモリ、およびアプリケーションによる仮想機能に対する任意の呼出しを消去することを含み得る。チェックポイントのシグナチャおよびフレッシュネス日付を確認することは、VM-Sの公開鍵を使用してチェックポイントのシグナチャを解読すること、チェックポイントの日付およびタイム・スタンプが規定日付および時刻範囲内にあると判定すること、およびVM-Sのチェックポイントのハッシュを確認することを含み得る。一実施形態では、チェックポイントは、1つまたは複数の実行中のAIタスクの記録と、VM-Sに通信可能に結合された1つまたは複数のAIアクセラレータ内のリソースの構成情報と、チェックポイントの日付およびタイム・スタンプと、1つまたは複数のAIアクセラレータ内の仮想機能、スケジューリング情報、および通信バッファを含むVM-Sのメモリのスナップショットとを含み得る。
【0017】
第2の態様では、人工知能(AI)アクセラレータの仮想機能(VF)にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行する方法が、ターゲット・ホストのハイパーバイザによって、人工知能(AI)プロセッサ・リソースをVM-Sにマッピングする仮想機能(VF)に関連するソース仮想マシン(VM-S)からチェックポイントを受信すること、およびVM-Sをターゲット仮想マシン(VM-T)としてホストする要求を受信することを含む。ターゲット・ホストのハイパーバイザは、チェックポイントに従ってVM-SおよびVM-SのVFをVM-Tとしてホストするためのリソースを割り振り、構成する。ターゲット・ホストのハイパーバイザは、VM-Sのデータのフレームを受信し、データのフレームを記憶してVM-Tを生成する。ターゲット・ホストのハイパーバイザは、VM-Sの未終了のAIタスクの記録された状態を受信し、VM-T上で未終了のAIタスクを再始動する。一実施形態では、VM-SおよびVFのチェックポイントを確認することは、VM-Sの公開鍵を用いてチェックポイントのシグナチャを解読すること、チェックポイントの日付およびタイム・スタンプが所定の範囲内にあると判定すること、およびチェックポイントのハッシュを再計算し、再計算したハッシュがチェックポイント内に記憶されたハッシュに合致するかどうかを判定することを含む。チェックポイントが首尾よく確認されたことに応答して、VM-Sをターゲット・ホストのハイパーバイザに移行することが続行され、ターゲット・ホストでVM-Tが生成される。
【0018】
第3の態様では、人工知能(AI)アクセラレータの仮想機能にアクセスするアプリケーションを実行中のソース仮想マシン(VM-S)を移行するコンピュータ実装方法が、VM-Sおよび仮想機能を移行するコマンドを受信したことに応答して、かつ移行を実施する際に使用するVM-Sおよび仮想機能のチェックポイントの選択を受信したことに応答して、アプリケーションの1つまたは複数の実行中のAIタスクを記録し、次いで停止することを含む。方法は、仮想機能に関連するAIアクセラレータのステータスを生成または選択し、次いでAIアクセラレータのチェックポイントおよびステータスをターゲット・ホストのハイパーバイザに送信して、移行後ターゲット仮想マシン(VM-T)を生成することをさらに含む。
【0019】
ターゲット・ホストがチェックポイントおよびAIアクセラレータ・ステータスを確認し、ターゲット・ホストがVM-Tを生成するためのリソースを生成および構成したという通知を受信したことに応答して、ターゲット・ホストは、VM-Sおよび仮想機能をVM-Tに移行する。移行は、ターゲット・ホストがAIアクセラレータ・ステータス・フレームからのデータをAIアクセラレータにロードすることを含む。一実施形態では、方法は、VM-TがアプリケーションおよびAIタスクを再始動したという通知を受信したことに応答して、VM-Sおよび仮想機能の移行後クリーンアップを実施することをさらに含む。VM-Sでの移行後クリーンアップは、(1)セキュア計算の任意のAI推論、AIモデル、中間結果、またはその部分を含む、AIアクセラレータの少なくともセキュア・メモリを消去すること、ならびに(2)仮想機能に関連するVM-Sのメモリ、およびアプリケーションによる仮想機能に対する任意の呼出しを消去することを含み得る。一実施形態では、VM-Sおよび仮想機能の状態のチェックポイントを記憶することは、VM-SおよびVFの状態のチェックポイントをVM-Sの複数のチェックポイントのストレージ内に記憶することを含み得る。VM-Sの各チェックポイントは、AIアクセラレータのリソースに関連するVM-Sのリソースの状態、アプリケーションの状態、および仮想機能の状態を含み得る。一実施形態では、チェックポイントは、1つまたは複数の実行中のAIタスクの記録、VM-Sに通信可能に結合されるAIアクセラレータ内のリソースの構成情報、VM-Sのメモリのスナップショットをさらに含み得る。チェックポイントは、1つまたは複数のAIアクセラレータ内の仮想機能スケジューリング情報および通信バッファと、チェックポイントの日付およびタイム・スタンプとをさらに含み得る。一実施形態では、AIアクセラレータのステータスを生成することは、AIアクセラレータ・ステータス内にステータスの日付およびタイム・スタンプを記憶すること、(2)AIアクセラレータのプロセッサに関連する1つまたは複数のレジスタと、AIアクセラレータによって処理すべき保留中の命令のキャッシュ、キュー、またはパイプラインとを含む、AIアクセラレータ内のメモリの内容をAIアクセラレータ・ステータス内に記憶すること、ならびに(3)AIアクセラレータのステータスのハッシュを生成し、ステータスと、ハッシュと、日付およびタイム・スタンプとにデジタルに署名することを含み得る。一実施形態では、AIアクセラレータ・ステータスは、AIアクセラレータが通信するように構成されるAIアクセラレータのクラスタ内の1つまたは複数の他のAIアクセラレータを示す1つまたは複数のレジスタ設定をさらに含み得る。一実施形態では、AIアクセラレータ・ステータスのシグナチャおよびフレッシュネスを確認することは、VM-Sの公開鍵を使用してAIステータスのシグナチャを解読すること、AIアクセラレータ・ステータスの日付およびタイム・スタンプが規定日付および時刻範囲内にあると判定すること、およびAIアクセラレータ・ステータスのハッシュを確認することを含み得る。
【0020】
上記の機能のいずれかは、1つまたは複数の非一時的コンピュータ可読媒体上に実行可能命令としてプログラムされ得る。実行可能命令が少なくとも1つのハードウェア・プロセッサを有する処理システムによって実行されるとき、処理システムは機能を実装させる。上記の機能のいずれかは、実行されるときに処理システムに機能を実装させる実行可能命令でプログラムされたメモリに結合された、少なくとも1つのハードウェア・プロセッサを有する処理システムによって実装され得る。
【0021】
図1は、一実施形態による、チェックポイント認証および/または人工知能(AI)アクセラレータ・ステータス確認を用いて仮想マシンを移行し得るセキュア処理システム100を示すブロック図である。図1を参照すると、システム構成100は、限定はしないが、ネットワーク103を介してソース・データ処理(DP)サーバ104-S(たとえばホスト)およびターゲットDPサーバ104-Tに通信可能に結合された1つまたは複数のクライアント・デバイス101~102を含む。DPサーバ104-Sは1つまたは複数のクライアントをホストし得る。1つまたは複数のクライアントは仮想マシンであり得る。本明細書で説明されるように、DPサーバ104-S上の任意の仮想マシンがターゲットDPサーバ104-Tに移行され得る。
【0022】
クライアント・デバイス101~102は、パーソナル・コンピュータ(たとえば、デスクトップ、ラップトップ、およびタブレット)、「シン」クライアント、携帯情報端末(PDA)、ウェブ対応アプライアンス、スマート・ウォッチ、携帯電話(たとえば、スマートフォン)などの任意のタイプのクライアント・デバイスであり得る。代替として、クライアント・デバイス101~102は、DPサーバ104-Sまたは104-T上の仮想マシンであり得る。ネットワーク103は、ワイヤードまたはワイヤレスの、ローカル・エリア・ネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、高速バス、またはそれらの組合せなどの任意のタイプのネットワークであり得る。
【0023】
サーバ(たとえば、ホスト)104-Sおよび104-T(別段の記載がない限り、集合的にDPサーバ104)は、ウェブまたはクラウド・サーバ、アプリケーション・サーバ、バック・エンドサーバ、またはそれらの組合せなどの任意の種類のサーバまたはサーバのクラスタであり得る。サーバ104は、クライアント・デバイス101~102などのクライアントが、サーバ104によって提供されるリソースまたはサービス(サーバ104を介してAIアクセラレータによって提供されるリソースおよびサービスなど)にアクセスすることを可能にするインターフェース(図示せず)をさらに含む。たとえば、サーバ104は、たとえばクラウド・ストレージ、クラウド・コンピューティング・サービス、人工知能トレーニング・サービス、データ・マイニング・サービスなどの様々なクラウド・サービスをクライアントに提供するクラウド・サーバまたはデータ・センタのサーバであり得る。サーバ104は、クラウドを介してsoftware-as-a-service(SaaS)またはplatform-as-a-service(PaaS)システムの一部として構成され得、クラウドは、プライベート・クラウド、パブリック・クラウド、またはハイブリッド・クラウドであり得る。インターフェースは、ウェブ・インターフェース、アプリケーション・プログラミング・インターフェース(API)、および/またはコマンド・ライン・インターフェース(CLI)を含み得る。
【0024】
たとえば、クライアントは、クライアント・デバイス101のユーザ・アプリケーション(たとえば、ウェブ・ブラウザ、アプリケーション)であり得る。クライアントは、サーバ104に実行用の命令(たとえば、AIトレーニング、AI推論命令など)を送り、または送信し得、命令は、ネットワーク103を介して、インターフェースを経由してサーバ104によって受信される。命令に応答して、サーバ104は、命令の実行を履行するためにAIアクセラレータ105~107と通信する。ソースDPサーバ104-Sは、1つまたは複数のAIアクセラレータに通信可能に結合され得る。AIアクセラレータ105-T..107-Tのうちの1つまたは複数を使用するアプリケーションを実行するDPサーバ104-Tによってホストされるクライアント仮想マシンが、ターゲットDPサーバ104-Tに移行され、対応するAIアクセラレータ105-T..107-T上で実行され得る。いくつかの実施形態では、命令は機械学習型の命令であり、専用マシンまたはプロセッサとしてのAIアクセラレータが、汎用プロセッサによる実行よりも何倍も高速に命令を実行し得る。したがって、サーバ104は、1つまたは複数のAIアクセラレータについての実行ジョブを分散式に制御/管理し得る。次いで、サーバ104は、クライアント・デバイス101~102またはサーバ104上の仮想マシンに実行結果を返す。AIアクセラレータは、Baidu, Inc.(登録商標)から入手可能なBaidu(登録商標)人工知能(AI)チップセットなどの1つまたは複数の専用プロセッサを含み得、または代替として、AIアクセラレータは、別のAIチップセット・プロバイダからのAIチップセットであり得る。
【0025】
一実施形態によれば、データ処理サーバ104(ホストとも呼ばれる)によってホストされるAIアクセラレータ105-S..107-Sまたは105-T..107-T(別段に示されていない限り、集合的に105..107)のいずれかにアクセスするアプリケーションのそれぞれが、信頼できるソースまたはベンダによってアプリケーションが提供されることを検証し得る。アプリケーションのそれぞれは、ユーザ・メモリ空間内で起動および実行され、ホスト104の中央演算処理装置(CPU)によって実行され得る。アプリケーションがAIアクセラレータ105~107のいずれか1つにアクセスするように構成されるとき、ホスト104と、AIアクセラレータ105~107のうちの対応する1つとの間で、曖昧にされた接続が確立され得、それによって、ホスト104とAIアクセラレータ105~107との間で交換されるデータが、マルウェア/侵入からの攻撃に対して保護される。
【0026】
図2Aは、いくつかの実施形態による、1つまたは複数のホストと1つまたは複数の人工知能(AI)アクセラレータとの間のセキュア・コンピューティング環境200を示すブロック図である。一実施形態では、システム200は、AIアクセラレータ105~107に対するハードウェア修正を伴う、または伴わない、ホスト104とAIアクセラレータ105~107との間の曖昧にされた通信についての保護方式を提供する。ホスト・マシンまたはサーバ104は、ユーザ・アプリケーション205、ランタイム・ライブラリ206、ドライバ209、オペレーティング・システム211、ハイパーバイザ212、ハードウェア213(たとえば、中央演算処理装置(CPU)201およびストレージ・デバイス204)などの、侵入から保護すべき1つまたは複数の層を有するシステムとして示され得る。アプリケーション205およびランタイム・ライブラリ206の下で、1つまたは複数のドライバ209が、ハードウェア213および/またはAIアクセラレータ105~107にインターフェースするようにインストールされ得る。
【0027】
ドライバ209は、1つまたは複数のユーザ・アプリケーション205によって要求された処理タスクをスケジューリングするスケジューラ209Aを含み得る。ドライバ209は、AIアクセラレータ105~107上で実行するようにスケジューリングされる処理タスクを解析して、処理スループット、エネルギー消費、AIアクセラレータによって生成される熱などのスケジューリング基準に基づいてAIアクセラレータ105~107をどのように最良に構成するかを決定する論理機構を有するアナライザ209Bをさらに含み得る。ドライバ209は、スケジューリング基準を達成するようにAIアクセラレータを構成することを対象とする1つまたは複数のポリシーをさらに含み得る。AIアクセラレータを構成することは、AIアクセラレータを1つまたは複数のグループにグループ化すること、1つまたは複数のグループから1つまたは複数のAIアクセラレータを除去することを含み得る。ドライバ209はチェックポインタ209Cをさらに含み得る。チェックポインタ209Cは、ユーザ・アプリケーション205の状態、VM201内のメモリ、スケジューラ209A状態、アナライザ209B状態、およびVM201内の仮想機能の構成をスナップショットし得る。本明細書では、仮想機能は、人工知能(AI)アクセラレータ、たとえば105内、またはAIアクセラレータ105..107のクラスタ内のリソースのセットの、仮想マシンへのマッピングである。図3、4A、および4Bを参照して、仮想機能が以下で説明される。
【0028】
AIアクセラレータのクラスタ内のAIアクセラレータのグループに割り当てられないAIアクセラレータは、エネルギーを節約し、熱を削減するために低電力状態に設定され得る。低電力状態は、AIアクセラレータのクロック速度を低減すること、またはAIアクセラレータがホスト・デバイスに依然として通信可能に結合されるスタンドバイ状態に入ることを含み得、AIアクセラレータがホスト・デバイスから処理タスクを受信する準備ができている実行状態にされ得る。代替として、クラスタ内のグループに割り当てられないAIアクセラレータが、電源投入状態のままにされ得、それによって、ドライバ209は、AIアクセラレータのグループのメンバではない単一のAIアクセラレータに作業を割り当て得る。
【0029】
AIアクセラレータを構成することは、1つまたは複数のAIアクセラレータに、1つまたは複数の他のAIアクセラレータとの間の通信リンクを生成(リンクアップ)して、AIアクセラレータのクラスタ内のAIアクセラレータのグループを形成するように命令することをさらに含み得る。AIアクセラレータを構成することは、1つまたは複数のDPアクセラレートに、AIアクセラレータと1つまたは複数の他のAIアクセラレータとの間の通信リンクを切断(リンクダウン)するように命令することをさらに含み得る。AIアクセラレータのリンクアップおよびリンクダウンは、各AIアクセラレータ内の1つまたは複数のリンク・レジスタによって管理され得る。
【0030】
ポリシー・ベースのパーティション実施形態では、AIアクセラレータ構成ポリシーは、各AIアクセラレータについての通信リンク(アップまたはダウン)を記述する単一のポリシーである。各AIアクセラレータの構成は他のAIアクセラレータとは異なり得る(通常は異なることになる)が、各AIアクセラレータの構成が単一のポリシー内に含まれ、クラスタ内の各AIアクセラレータは同一のポリシーを受け取る。次いで、各AIアクセラレータは、AIアクセラレータを構成することを記述するポリシーの部分に従って、それ自体を構成する。ポリシー・ベースのパーティションは、スケジューラ209A内の処理タスクの解析に基づき得る。解析は、グループへのAIアクセラレータの最適な割振りを決定し得る。一実施形態では、スループットを最適化するための、プロセッサのグループ内の、またはプロセッサの複数のグループにわたるタイム・シェア処理タスクが、エネルギー消費および生成される熱を最小限に抑える。グループへのAIアクセラレータのポリシー・ベースの区分化の利点は、AIアクセラレータの高速な区分化、各グループ内の、または各グループにわたる処理タスクの柔軟なスケジューリング、AIアクセラレータのタイム・シェアリング、およびグループのタイム・シェアリングを含む。
【0031】
動的パーティション実施形態では、AIアクセラレータ・ポリシーが各AIアクセラレータについて生成される。ドライバ209は、AIアクセラレータのグループを再編成すること、すべてのグループから1つまたは複数のAIアクセラレータを除去すること、およびそれらのAIアクセラレータを低電力状態に設定することを含めて、各AIアクセラレータの構成を動的に変更し得る。動的パーティション実施形態では、ユーザ間でAIアクセラレータをタイム・シェアリングするのではなく、AIアクセラレータの各グループが単一のユーザに割り当てられる。ドライバ209は、スケジューラ209A内の処理タスクを解析して、AIアクセラレータの最適なグループ化を決定するアナライザ209Bを含み得る。解析は、1つまたは複数のAIアクセラレータについての構成を生成し得、構成が、再構成すべきそれぞれのそのようなAIアクセラレータに配置され得る。動的区分化の利点は、1つまたは複数のプロセッサを低電力状態に設定することによる省エネルギー、ユーザ間のタイム・スライシングではなく、AIアクセラレータまたはAIアクセラレータのグループについてのユーザ専用の処理を含む。
【0032】
ハードウェア213は、1つまたは複数のプロセッサ201を有する処理システム201を含み得る。ハードウェア213はストレージ・デバイス204をさらに含み得る。ストレージ・デバイス204は、1つまたは複数の人工知能(AI)モデル202と、1つまたは複数のカーネル203とを含み得る。カーネル203は、シグナチャ・カーネル、ウォーターマーク対応カーネル、暗号化および/または解読カーネルなどを含み得る。シグナチャ・カーネルは、実行されるときに、カーネルのプログラミングに従って任意の入力にデジタルに署名し得る。ウォーターマーク対応カーネルは、データ・オブジェクト(たとえば、AIモデルまたは他のデータ・オブジェクト)からウォーターマークを抽出し得る。ウォーターマーク対応カーネルはまた、AIモデル、推論出力、または他のデータ・オブジェクト内にウォーターマークを埋め込み得る。
【0033】
ウォーターマーク・カーネル(たとえば、ウォーターマーク継承カーネル)は、別のデータ・オブジェクトからウォーターマークを継承し、推論出力やAIモデルなどの異なるオブジェクト内にそのウォーターマークを埋め込み得る。本明細書では、ウォーターマークは、AIモデルまたはAIモデルによって生成された推論に関連する識別子であり、AIモデルまたはAIモデルによって生成された推論内に埋め込まれ得る。たとえば、ウォーターマークは、1つまたは複数の重み変数または偏り変数内に埋め込まれ得る。代替として、1つまたは複数のノード(たとえば、人工知能モデルによって使用されない、または使用されない可能性が高いフェイク・ノード)が、ウォーターマークを埋め込み、または記憶するために作成され得る。
【0034】
ホスト・マシン104は、ホスト・マシン104および/またはAIアクセラレータ105~107上のジョブの実行を制御および管理し得るCPUシステムであり得る。AIアクセラレータ105~107とホスト・マシン104との間の通信チャネル215を保護する/曖昧にする目的で、データ侵入または攻撃を受けやすいホスト・システムの異なる層を保護するために、異なる構成要素が必要とされ得る。
【0035】
システム200は、いくつかの実施形態に従ってホスト・システム104およびAIアクセラレータ105~107を含む。任意の数のAIアクセラレータがあり得る。AIアクセラレータは、Baidu(登録商標)AIチップセット、または人工知能(AI)集約的コンピューティング・タスクを実施し得るグラフィカル処理装置(GPU)などの別のAIチップセットを含み得る。一実施形態では、ホスト・システム104は、ホスト・マシン104内にセキュリティ・モジュール(任意選択のトラステッド・プラットフォーム・モジュール(TPM)など)を任意選択で備える1つまたは複数のCPU213を有するハードウェアを含む。任意選択のTPMは、ハードウェア認証のためのホスト・システムに特有の暗号鍵(たとえば、RSA暗号鍵)を記憶するエンドポイント・デバイス上の専用チップである。各TPMチップは、承認鍵(EK)または承認証明(EC)、すなわちルート鍵と呼ばれる1つまたは複数のRSA鍵ペア(たとえば、公開鍵と秘密鍵のペア)を含み得る。鍵ペアは、任意選択のTPMチップ内で維持され、ソフトウェアによってアクセスすることはできない。次いで、ファームウェアおよびソフトウェアの重要なセクションが、許可されないファームウェアおよびソフトウェア修正に対してシステムを保護するために実行される前に、EKまたはECによってハッシュされ得る。したがって、ホスト・マシン上の任意選択のTPMチップは、セキュア・ブートのための信頼の起点として使用され得る。
【0036】
任意選択のTPMチップはまた、AIアクセラレータ105~107と通信するための作業カーネル・スペース内でドライバ209およびオペレーティング・システム(OS)211を保護し得る。ここで、ドライバ209はAIアクセラレータ・ベンダによって提供され、ホストとAIアクセラレータとの間の通信チャネル215をユーザ・アプリケーション205が制御するためのドライバ209として働き得る。任意選択のTPMチップおよびセキュア・ブート・プロセッサは、そのカーネル・スペース内でOS211およびドライバ209を保護するので、TPMも実質的にドライバ209およびOS211を保護する。
【0037】
AIアクセラレータ105~107のための通信チャネル215はOS211およびドライバ209によって排他的に使用され得るので、通信チャネル215は任意選択のTPMチップを通じて保護され得る。一実施形態では、通信チャネル215は、peripheral component interconnect(PCI)またはperipheral component interconnect express(PCIE)チャネルを含む。一実施形態では、通信チャネル215は曖昧にされた通信チャネルである。
【0038】
ランタイム・ライブラリ206は、アプリケーション・プログラミング・インターフェース(API)呼出しを、AIアクセラレータの実行、構成、および/または制御のためのコマンドに変換し得る。一実施形態では、ランタイム・ライブラリ206は、ユーザ・アプリケーションによる実行のための(たとえば、事前定義された)カーネルの所定のセットを提供する。一実施形態では、カーネルは、ストレージ・デバイス204内にカーネル203として記憶され得る。
【0039】
オペレーティング・システム211は、任意のLinux(登録商標)ディストリビューション、UNIX(登録商標)、Windows(登録商標) OS、Mac(登録商標) OS、または他のオペレーティング・システムであり得る。
【0040】
システムは、任意選択のTPMベースのセキュア・ブートを通じてブートアップし得る。任意選択のTPMセキュア・ブートは、署名/認証されたオペレーティング・システム211およびアクセラレータ・ドライバ209のみがアクセラレータ・サービスを提供するカーネル・スペース内で起動されることを保証する。一実施形態では、オペレーティング・システム211はハイパーバイザ(212)を通じてロードされ得る。ハイパーバイザまたは仮想マシン・マネージャ212は、仮想マシンを作成および実行するコンピュータ・ソフトウェア、ファームウェア、またはハードウェアである。カーネル・スペースは、ユーザ・アプリケーションに機能およびサービスを提供するためにカーネル(すなわち、実行のための(たとえば、事前定義された)機能の所定のセット)が識別される宣言領域またはスコープである。システムの完全性が損なわれる場合、任意選択のTPMセキュア・ブートがブートアップに失敗し、その代わりにシステムをシャットダウンし得る。
【0041】
ブーティング後に、ランタイム・ライブラリ206がユーザ・アプリケーション205を実行する。一実施形態では、ユーザ・アプリケーション205とランタイム・ライブラリ206は静的にリンクされ、一緒に起動される。別の実施形態では、ランタイム・ライブラリ206がまず起動され、次いでユーザ・アプリケーション205が動的にロードされる。静的にリンクされたライブラリは、コンパイル時にアプリケーションにリンクされたライブラリである。動的ローディングは動的リンカによって実施され得る。動的リンカは、実行時にユーザ・アプリケーションを実行するための共有ライブラリをロードし、リンクする。ここで、ユーザ・アプリケーション205およびランタイム・ライブラリ206は、実行時に互いに可視であり、たとえば、すべてのプロセス・データが互いに可視である。
【0042】
一実施形態では、ユーザ・アプリケーション205は、ランタイム・ライブラリ206によって事前に決定されたカーネルのセットからカーネルを呼び出し得るだけである。別の態様では、ユーザ・アプリケーション205およびランタイム・ライブラリ206は、キャッシュ・ベースのサイド・チャネル攻撃などのサイド・チャネル攻撃から防御するために、サイド・チャネル・フリー・アルゴリズムで強化される。サイド・チャネル攻撃は、実装されたアルゴリズム自体の弱点(たとえば、暗号解析およびソフトウェア・バグ)ではなく、コンピュータ・システムの実装から得られる情報に基づく任意の攻撃である。サイド・チャネル攻撃の例には、仮想化環境またはクラウド環境内の共有物理システムのキャッシュを監視する攻撃者の能力に基づく攻撃であるキャッシュ攻撃が含まれる。強化は、キャッシュ、キャッシュ上に配置される、アルゴリズムによって生成された出力のマスキングを含み得る。次に、ユーザ・アプリケーションが実行を終了したとき、ユーザ・アプリケーションはその実行を終了して退出する。
【0043】
一実施形態では、カーネル203のセットは難読化カーネル・アルゴリズムを含む。一実施形態では、難読化カーネル・アルゴリズムは対称または非対称アルゴリズムであり得る。対称難読化アルゴリズムは、同一のアルゴリズムを使用してデータ通信を難読化および難読化解除し得る。非対称難読化アルゴリズムは1対のアルゴリズムを必要とし、対の第1のものが難読化のために使用され、対の第2のものが難読化解除のために使用され、またはその逆である。別の実施形態では、非対称難読化アルゴリズムは、データ・セットを難読化するために使用される単一の難読化アルゴリズムを含むが、データ・セットは難読化解除されることが意図されず、たとえば、対応する難読化解除アルゴリズムが存在しない。
【0044】
難読化とは、通常は紛らわしく曖昧な言い回しで、通信メッセージを理解しにくくすることによって通信の所期の意味を曖昧にすることを指す。曖昧にされたデータは、リバース・エンジニアリングがより難しく、複雑になる。難読化アルゴリズムは、データ通信を曖昧にする(暗号化/解読する)ために、データが通信される前に適用され得、盗聴の機会が低減される。一実施形態では、難読化アルゴリズムは、追加の保護層のために、難読化されたデータをさらに暗号化するための暗号化方式をさらに含み得る。計算集約的であり得る暗号化とは異なり、難読化アルゴリズムは計算を簡略化し得る。
【0045】
いくつかの難読化技法は、限定はしないが、文字難読化、名前難読化、データ難読化、制御フロー難読化などを含み得る。文字難読化は、データ内の1つまたは複数の文字を特定の代替文字で置き換え、データを無意味にするプロセスである。文字難読化の例には、アルファベットに沿って所定の数の場所だけ各文字がシフトされ、または循環される、文字循環機能が含まれる。別の例は、特定のパターンに基づいて文字を並べ直し、または混乱させることである。名前難読化は、特定のターゲット文字列を無意味な文字列で置き換えるプロセスである。制御フロー難読化は、追加のコード(無効なコードの挿入、制御されないジャンプの挿入、代替構造の挿入)でプログラム内の制御フローの順序を変更して、アルゴリズム/AIモデルの真の制御フローを隠し得る。
【0046】
要約すれば、システム200は、データ機密性および完全性の損失からの、AIアクセラレータのための(機械学習モデル、トレーニング・データ、および推論出力を含むデータ伝送のための)複数の保護層を提供する。システム200は、任意選択のTPMベースのセキュア・ブート保護層およびカーネル確認/検証層を含み得る。システム200は、キャッシュ・ベースのサイド・チャネル攻撃などのサイド・チャネル攻撃から防御するように、サイド・チャネル・フリー・アルゴリズムを使用するアプリケーションを含み得る。
【0047】
ランタイム206は、ホスト104とAIアクセラレータ105~107との間のデータ通信を難読化するために難読化カーネル・アルゴリズムを提供し得る。一実施形態では、難読化は暗号方式と対にされ得る。別の実施形態では、難読化は単独の保護方式であり、AIアクセラレータについて暗号ベースのハードウェアが不要となる。
【0048】
図2Bは、一実施形態による、1つまたは複数のホストと1つまたは複数の人工知能(AI)アクセラレータとの間のセキュア・コンピューティング環境を示すブロック図である。一実施形態では、ホスト・チャネル・マネージャ(HCM)250は任意選択の認証モジュール251、任意選択の終了モジュール252、任意選択の鍵マネージャ253、任意選択の鍵ストア254、および任意選択の暗号エンジン255を含む。任意選択の認証モジュール251は、AIアクセラレータ105のリソースにアクセスし、またはリソースを使用することを許可するために、ホスト・サーバ104上で実行中のユーザ・アプリケーションを認証し得る。HCM250は、通信チャネル215を介してAIアクセラレータ215のアクセラレータ・チャネル・マネージャ(ACM)280と通信し得る。
【0049】
任意選択の終了モジュール252は接続を終了し得る(たとえば、接続に関連するチャネルが終了される)。任意選択の鍵マネージャ253は、異なるセキュア・データ交換チャネルについての1つまたは複数のデータ・パケットの暗号化/解読のための非対称鍵ペアまたは対称鍵を管理(たとえば、作成または破壊)し得る。ここで、(図2Aのユーザ・アプリケーション205の部分としての)各ユーザ・アプリケーションは、異なるセキュア・データ交換チャネルに対応し、または1対多関係でマッピングされ得、各データ交換チャネルはAIアクセラレータ105に対応し得る。各アプリケーションは複数のセッション鍵を利用し得、各セッション鍵は、AIアクセラレータ(たとえば、アクセラレータ105~107)に対応するセキュア・チャネルのためのものである。任意選択の鍵ストア254は暗号化非対称鍵ペアまたは対称鍵を記憶し得る。任意選択の暗号エンジン255は、セキュア・チャネルのいずれかを通じて交換されるデータについてのデータ・パケットを暗号化または解読し得る。これらのモジュールのうちのいくつかは、より少数のモジュールに統合され得ることに留意されたい。
【0050】
一実施形態では、AIアクセラレータ105は、ACM280、非機密リソース290、および機密リソース270を含む。ACM280は、たとえばリソース・アクセス制御などの、ホスト104とAIアクセラレータ105との間の通信を管理する役割を果たすHCM250に対応するモジュールである。ACM280は、ホスト・サーバ104とAIアクセラレータ105との間の通信チャネル215を確立するためにホスト・サーバ104のHCM250と協働するリンク構成モジュール281を含む。ACM280はリソース・マネージャ282をさらに含む。リソース・マネージャ282は、機密リソース270および非機密リソース290への制限付きアクセスを実施する。一実施形態では、機密リソース270は、AIアクセラレータ105内の第1の範囲のアドレス空間を占有する。非機密リソース290は、AIアクセラレータ105内の第2の範囲のアドレス空間を占有する。一実施形態では、第1および第2のアドレス空間は相互に排他的であり、重複しない。一実施形態では、リソース・マネージャ282は、機密リソース270と非機密リソース280の両方に対するホスト・サーバ104によるアクセスを許可する論理機構(たとえば、アクセス制御論理機構)をさらに含む。一実施形態では、リソース・マネージャ282は、以下でさらに説明されるように、ホスト・サーバ104から受信したアクセスおよび構成ポリシーを実施する。
【0051】
機密リソース270は、任意選択の鍵マネージャ271、任意選択の鍵ストア272、真の乱数発生器273、任意選択の暗号エンジン274、およびメモリ/ストレージ277を含み得る。任意選択の鍵マネージャ271は非対称鍵ペアまたは対称鍵を管理(たとえば、生成、保護、および/または破壊)し得る。任意選択の鍵ストア272は、機密リソース270内のセキュア・ストレージ内に暗号非対称鍵ペアまたは対称鍵を記憶し得る。真の乱数発生器273は、鍵生成と、リンクされたAIアクセラレータを認証することなどの暗号エンジン274での使用のためのシードを生成し得る。任意選択の暗号エンジン274は、データ交換のために鍵の情報またはデータ・パケットを暗号化または解読し得る。メモリ/ストレージ277は、AIモデル275およびカーネル276のためのストレージを含み得る。カーネル276は、ウォーターマーク・カーネル(継承ウォーターマーク・カーネル、ウォーターマーク対応カーネル、ウォーターマーク・シグナチャ・カーネルなどを含む)、暗号化および解読カーネル、および関連データを含み得る。
【0052】
AIアクセラレータ105は非機密リソース290をさらに含み得る。非機密リソース290は、1つまたは複数のプロセッサまたは処理論理機構291、およびメモリ/ストレージ292を含み得る。プロセッサまたは処理論理機構192は、AIタスク(たとえば、機械学習プロセス)などの様々な処理タスクを実施するために命令またはプログラムを実行することができる。
【0053】
リンク構成モジュール281は、AIアクセラレータから他のAIアクセラレータへのリンクまたは経路を確立または接続し、あるいはAIアクセラレータから別のAIアクセラレータへのリンクまたは経路を終了または切断する役割を果たす。一実施形態では、AIアクセラレータのグループに加わる(たとえば、ホストからの)要求に応答して、リンク構成モジュール281は、対応するAIアクセラレータからグループまたはクラスタ内のAIアクセラレータのうちの少なくともいくつかへのリンクまたは経路を確立し、それによって、AIアクセラレータは、他のAIアクセラレータと通信し得、たとえば、AI処理のために他のAIアクセラレータのリソースにアクセスする。同様に、AIアクセラレータの第1のグループからAIアクセラレータの第2のグループに切り換える要求に応答して、リンク構成モジュール281は、第1のグループからの対応するAIアクセラレータの既存のリンクを終了し、AIアクセラレータの第2のグループへの新しいリンクを確立する。
【0054】
一実施形態では、AIアクセラレータ105はAI処理装置(図示せず)をさらに含み、AI処理装置はAIトレーニング・ユニットおよびAI推論ユニットを含み得る。AIトレーニングおよび推論ユニットは、機密リソース270内の単一のユニットに統合され得る。AIトレーニング・モジュールは、トレーニング・データのセットを使用してAIモデルをトレーニングするように構成される。トレーニングされるAIモデルおよびトレーニング・データは、ホスト・システム104から通信リンク215を介して受信され得る。一実施形態では、トレーニング・データは非機密リソース290内に記憶され得る。AIモデル推論ユニットは、入力データのセット(たとえば、入力特徴のセット)に関してトレーニング済み人工知能モデルを実行して、入力データを推論および分類するように構成され得る。たとえば、イメージがAIモデルに入力され、イメージが人、風景などを含むかどうかが識別され得る。トレーニング済みAIモデルおよび入力データはまた、ホスト・システム104から通信リンク215を介してインターフェース140を経由して受信され得る。
【0055】
一実施形態では、機密リソース270内のウォーターマーク・ユニット(図示せず)が、ウォーターマーク・ジェネレータおよびウォーターマーク・インスクライバ(「ウォーターマーク・インプランタ」とも呼ばれる)を含み得る。ウォーターマーク・ユニット(図示せず)は、カーネル276を実行するための機密リソース270のウォーターマーク・カーネル・エグゼキュータまたはカーネル・プロセッサ(図示せず)を含み得る。一実施形態では、カーネルがホスト104から受信され、または永続的または非永続的ストレージから検索され、AIアクセラレータ105の機密リソース270内のカーネル・メモリ276内で実行され得る。ウォーターマーク・ジェネレータは、所定のウォーターマーク・アルゴリズムを使用してウォーターマークを生成するように構成される。代替として、ウォーターマーク・ジェネレータは、既存のウォーターマークからウォーターマークを継承し、またはホスト・システム104から受信され得る、人工知能モデルや入力データのセットなどの別のデータ構造またはデータ・オブジェクトからウォーターマークを抽出し得る。ウォーターマーク・インプランタは、人工知能モデルや人工知能モデルによって生成された出力データなどのデータ構造内にウォーターマークを記し、または埋め込むように構成される。ウォーターマークが埋め込まれた人工知能モデルまたは出力データは、通信リンク215を介してAIアクセラレータ105からホスト・システム104に返され得る。AIアクセラレータ105~107は同一または同様の構造または構成要素を有し、AIアクセラレータに関する説明は、本願全体にわたってすべてのAIアクセラレータに適用可能となることに留意されたい。
【0056】
図3は、一実施形態による、各クラスタがクラスタ内のAIアクセラレータのグループ311のリソースをホスト上の仮想マシンにマッピングする仮想機能を有し、各人工知能アクセラレータがセキュア・リソースおよび非セキュア・リソースを有する、人工知能アクセラレータのクラスタ310を制御するホスト104を示すブロック図である。
【0057】
ホスト104は、アプリケーション205、たとえば人工知能(AI)アプリケーション、ランタイム・ライブラリ206、1つまたは複数のドライバ209、オペレーティング・システム211、およびハードウェア213を含み得、それぞれは、図2Aおよび2Bを参照して上記で説明されたものであり、ここでは繰り返さない。仮想コンピューティング実施形態では、ホスト104は、VMware(登録商標) vSphere/ESXi(登録商標)やMicrosoft(登録商標) Hyper-V(登録商標)などのハイパーバイザ212をさらに含み得る。ハイパーバイザ212は、物理サーバ上で直接実行されるタイプ1「ベア・メタル」または「ネイティブ」ハイパーバイザであり得る。一実施形態では、ハイパーバイザ212は、任意の他のアプリケーションのようにオペレーティング・システム211内部にロードされ、オペレーティング・システム211によって管理されるタイプ2ハイパーバイザであり得る。どちらのケースでも、ハイパーバイザ212は、ホスト104上の1つまたは複数の仮想マシン(図示せず)をサポートし得る。そのような一態様では、仮想マシン(図示せず)は、図1のクライアント・デバイス101および102として扱われ得る。
【0058】
人工知能(AI)アクセラレータ・クラスタ310は、図2Aおよび2Bを参照して上記で説明されたAIアクセラレータ105~107を備え得る。図3を参照すると、AIアクセラレータ・クラスタ310は、たとえば、AからHと符号が付けられた8つのAIアクセラレータを含み得る。アクセラレータ・クラスタ310内の各AIアクセラレータは、アクセラレータ・クラスタ310内の1つまたは複数の他のAIアクセラレータに対する1つまたは複数の通信リンク215を有し得る。AIアクセラレータ通信リンク215は、図2Aおよび2Bを参照して上記で説明される。クラスタ310内の各AIアクセラレータは、ホスト104のドライバ209から受信したポリシーに従って構成される。クラスタ310内の各AIアクセラレータは、機密リソース270および非機密290リソースを有し得る。
【0059】
図3に示される例では、AIアクセラレータA~Dは、4つのAIアクセラレータの第1のグループ311として構成される。第1のグループ311内のAIアクセラレータのリソースは、仮想機能VF1によって構成および管理され、第1の仮想マシンに関連付けられる。AIアクセラレータE~Hは、4つのAIアクセラレータの第2のグループ312として構成される。第2のグループ312内のAIアクセラレータのリソースは、仮想機能VF2によって構成および管理され、第2の仮想マシンに関連付けられる。2つのグループ311および312のリソースは相互に排他的であり、2つのグループのどちらかのユーザは、2つのグループの他方のリソースにアクセスすることはできない。AIアクセラレータの第1のグループ311では、各AIアクセラレータは、別のアクセラレータに対する直接的な通信リンク、たとえばA-B、A-C、B-D、およびC-Dを有し、または1つまたは複数の介在アクセラレータを介する、別のアクセラレータに対する通信経路、たとえばA-B-D、A-C-Dなどを有する。第2のグループ312は、第2のグループ312内の各AIアクセラレータ間、および第2のグループ312内の互いのAIアクセラレータ間の直接的通信リンクを有するものとして示されている。ドライバ209はポリシーを生成し得、グループ内の各AIアクセラレータは、グループ内の他のAIアクセラレータのそれぞれまたはいくつかとの間の直接的通信リンクを有する。第1のグループ311のケースでは、ドライバ209は、たとえばAIアクセラレータAおよびDが互いの間の通信リンクを生成し、AIアクセラレータBおよびCが互いの間の通信リンクを生成するための命令をさらに含むポリシーを生成し得る。任意の数のグループ内に構成された、クラスタ310内の任意の数のAIアクセラレータが存在し得る。
【0060】
静的ポリシー・ベースの実施形態では、AIアクセラレータのそれぞれについての構成を定義し、ドライバ209からクラスタ310内のすべてのAIアクセラレータに送信される単一のポリシー。一実施形態では、ドライバ209は、クラスタ内のすべてのAIアクセラレータに、単一のブロードキャスト・メッセージでポリシーを送信し得る。各AIアクセラレータはポリシーを読み取り、クラスタ310内の1つまたは複数のAIアクセラレータとの間の通信リンクを作成(リンクアップ)または切断(リンクダウン)し、それによって、AIアクセラレータを1つまたは複数のグループに構成する。図3では、4つのAIアクセラレータの2つのグループとして構成された8つのAIアクセラレータがある。グループ内の各AIアクセラレータは、グループ内の各AIアクセラレータに対する直接的通信リンクを有し、あるいはAIアクセラレータがそれに対する直接的通信リンクを有する1つまたは複数のAIアクセラレータを介する、グループ内の各AIアクセラレータに対する間接的通信経路を有する。静的ポリシー・ベースの環境では、ドライバ209のスケジューラ209Aは、アプリケーション205および/または仮想マシンのユーザの間のタイム・スライシングを使用して、クラスタ310の1つまたは複数のグループに関する処理タスクをスケジューリングし得る。一実施形態では、アクセラレータ・クラスタ310内のアクセラレータの各グループは、異なる別々のスケジューラ209Aを有し得る。静的ポリシーはドライバ209によって変更され得、クラスタ310内のAIアクセラレータのそれぞれについての構成を記述する新しいポリシーが生成される。
【0061】
クラスタ310内の各AIアクセラレータ(たとえば、リンク構成モジュール281および/またはリソース・マネージャ282)は、ポリシーに従ってそれ自体を再構成し、AIアクセラレータと、クラスタ310内の1つまたは複数の他のAIアクセラレータとの間の通信リンクを作成(リンクアップ)または切断(リンクダウン)する。静的ポリシー・ベースの構成は、構成が単一のメッセージ、たとえばブロードキャスト・メッセージで送信され、各AIアクセラレータがクラスタ310内の他のAIアクセラレータとほぼ並列にそれ自体を構成するという点で高速である。すべてのAIアクセラレータについてのポリシーがすべてのAIアクセラレータに同時に送信されるので、構成が非常に迅速に行われ得る。たとえば、ポリシーが、AIアクセラレータ「B」に対するリンクを生成する、AIアクセラレータ「A」に対する命令を含む場合、ポリシーはまた、AIアクセラレータBがAIアクセラレータAに対するリンクを生成すべきであるという命令を有する。各AIアクセラレータは、リンクのそれ自体の端部をほぼ同時に開き得、それによって、AIアクセラレータAとAIアクセラレータBとの間のリンクを非常に迅速に開く。一実施形態では、単一のポリシーはAIアクセラレータの隣接テーブルとして表現され得る。
【0062】
静的ポリシー・ベースの構成はまた、異なるユーザ間のタイム・スライス・スケジューリングをサポートし、ユーザの処理タスクをクラスタ310内の複数のAIアクセラレータ・グループに割り振ることをサポートするという点でも効率的である。静的ポリシーは、スケジューラ209A内の処理タスクの特性を決定するアナライザ209Bから生成され得る。たとえば、スケジューラ209Aは、推論を実施し、またはAIモデルをさらにトレーニングするために同一のAIモデルを使用する多数のタスクを含み得る。アナライザは、AIモデルに関する推論またはトレーニングを実施する準備をするようにいくつかのAIアクセラレータを構成するポリシーを生成し得る。構成は、AIアクセラレータのグループ化を識別すること、およびスケジューラ209A内の処理タスクに備えて、1つまたは複数のAIモデルをAIアクセラレータのうちの1つまたは複数の機密メモリ内にロードすることを含み得る。
【0063】
動的ポリシー・ベースの実施形態では、ドライバ209は、AIアクセラレータの構成を達成するように、クラスタ310内の各AIアクセラレータを個々に構成し得る。ポリシーは、各AIアクセラレータに別々に送信される。実際には、動的ポリシー・ベースの実施形態では、各AIアクセラレータに送信されるポリシーは、通常は互いに異なる。AIアクセラレータはポリシーを受信し、ポリシーに従ってそれ自体を構成する。構成は、AIアクセラレータがそれ自体をクラスタ310内のグループ内に、またはグループ外に構成することを含む。AIアクセラレータは、ポリシーに従って、グループ内の少なくとも1つのAIアクセラレータとの間の通信リンクを作成する(リンクアップ)ことによってそれ自体をグループ内に構成する。AIアクセラレータは、AIアクセラレータとグループ内のすべてのAIアクセラレータとの間の通信リンクを切断する(リンクダウン)ことによってグループから出る。構成後、AIアクセラレータがAIアクセラレータのどのグループのメンバでもない場合、AIアクセラレータは、熱を削減し、エネルギーを節約するために低電力モードに設定され得る。一実施形態では、スケジューラ209Aは、スケジューラ209Aがそれに関してクラスタ310に対する処理タスクをスケジューリングしている各ユーザまたはアプリケーションに、AIアクセラレータまたはAIアクセラレータ・グループを割り当てる。
【0064】
図4Aは、一実施形態による、仮想化環境内のチェックポイント認証を用いる仮想マシン移行のための方法を実装する人工知能(AI)アクセラレータを有するデータ処理システムの構成要素を示すブロック図である。
【0065】
ソース・ホスト(HOST-S)401は、ネットワーク103を介してターゲット・ホスト(HOST-T)451に移行すべき第1の(ソース)VM(VM1-S)などの複数の仮想マシン(VM)をサポートし得る。ネットワーク103は、上記で図1を参照して説明されたように、任意のネットワークであり得る。HOST-S401はまた、VM2やVM3などの追加のVMをサポートし得る。仮想マシンVM1-S、VM2、およびVM3(それぞれ「402」と符号が付けられる)はそれぞれ、少なくとも1つのアプリケーション403および少なくとも1つのドライバ404を含み得る。ドライバ404は、ドライバ404を含むVM402がハイパーバイザ405、CPU406、およびバス407を介してVM402に通信可能に結合される1つまたは複数の人工知能(AI)アクセラレータ410と通信することを可能にする1つまたは複数の機能ライブラリおよびアプリケーション・プログラミング・インターフェース(API)を含み得る。
【0066】
ハイパーバイザ X 405は、HOST-S401のハードウェア上で実行中の「ベア・メタル」ハイパーバイザを含む任意のタイプのハイパーバイザであり得、またはハイパーバイザは、CPU406やメモリ(図示せず)などのホストのハードウェア上で実行中のHOST-S401のオペレーティング・システム(図示せず)を実行し得る。CPU406は、汎用プロセッサ、マルチコア・プロセッサ、パイプライン型プロセッサ、並列プロセッサなどの任意のタイプのCPUであり得る。バス407は、peripheral component interconnect express(PCIe)、光ファイバ・バス、他のタイプの高速バスなどの任意のタイプの高速バスであり得る。図2A、2B、および3を参照して上記で説明されたように、通信チャネル215、バス407を介する通信は暗号化され得る。バス407は、1つまたは複数の人工知能(AI)アクセラレータ410にCPU406を通信可能に結合する。各VMは、他のVMのそれぞれの暗号化通信チャネル215とは異なる1つまたは複数の鍵を使用する、別々に暗号化された通信チャネル215を有し得る。
【0067】
各AIアクセラレータ410は、図4では参照番号411とそれぞれ符号が付けられたVF1、VF2、...VFnなどの1つまたは複数の仮想機能をホストし得る。仮想機能411は、アクセラレータACC1 410のリソース412、たとえばRES1、RES2、...RESnを特定のホスト仮想マシン402にマッピングする。各仮想マシン402はユーザを有する。特定のVM402(たとえばVM1-S)に関連する仮想機能411は、特定のVM402(たとえばVM1-S)のユーザのみによってアクセスされ得る。仮想マシン・リソースはそれぞれ、図4では参照番号412と符号が付けられる。仮想マシン・リソース412は、図2Bを参照して上記で説明され、非機密リソース290(処理論理機構291およびメモリ/ストレージ292を含む)、アクセラレータ・チャネル・マネージャ280(リンク構成281およびリソース・マネージャ282を含む)、機密リソース270(AIモデル275、カーネル276、メモリ/ストレージ277、および鍵マネージャ271、鍵ストア272、真の乱数発生器273、および暗号エンジン274を含む)のようなリソースを含む。以下でより完全に説明されるように、仮想マシン、たとえばVM1-Sがターゲット・ホスト、たとえばHOST-T451に移行された後、少なくとも機密リソースが消去されるべきであり、その結果、VM1-Sの移行後仮想機能がターゲット・ホストHOST-T451に移行され、VM1-Sの移行後仮想機能の今や未使用のリソースが新しいVMに割り当てられた後、移行後VM1-Sの機密データおよびVM1-Sに関連する仮想機能に関連する機密データが、新しいVMにとってアクセス可能とはならない。
【0068】
ターゲット・ホスト、たとえばHOST-T451は、HOST-S401と同一または類似のハードウェアおよびソフトウェア構成であり得る。アクセラレータ410およびアクセラレータ460は、それぞれのプロセッサについて互換命令セットを有するなど、同一または類似のタイプであるべきである。HOST-T451は、VM1-SがVM1-Tに移行され得るように、VM-Sによって必要とされ得る、利用可能な十分なリソースを量的に有するべきである。質的に、HOST-S401およびHOST-T 451は、互換オペレーティング・ハードウェアおよびソフトウェアを有するべきである。たとえば、HOST-S401のアクセラレータ410は、HOST-T451上のアクセラレータACC2460と同一の製造業者、および互換モデルであり得、そうでない場合、移行が成功しないことがある。
【0069】
チェックポイント420は、HOST-S401からHOST-T451へのVM1-Sの移行の一部として移行されている仮想機能411(たとえばVF1)までの、その仮想機能411を含む、VM1-Sの状態のスナップショットである。VM1-Sのチェックポイント、および関連する仮想機能は、以下の情報を含み得る。一実施形態では、チェックポイントは、アクセラレータ410内部のリソース412内に含まれる情報を含まない。チェックポイント内に含まれる以下の情報のリストは、例としてのものであり、限定ではない。移行すべき仮想マシンおよび仮想機能のチェックポイント420についての以下の情報の表に当業者は追加し、または表から削除し得る。
【0070】
【表1】
【0071】
チェックポインタ209Cは、図6で説明されるイベントに従ってチェックポイント・フレーム420を生成し得る。チェックポイント・フレーム420は、たとえば指定の時間の増分で、システム例外または障害の検出時に、またはチェックポイント・フレーム420を取得する命令の受信時に生成され得る。そのような命令は、管理者やエンド・ユーザなどのユーザから来ることがある。各チェックポイント・フレーム420は、たとえば1ギガバイト(GB)程度のサイズであり得る。一実施形態では、チェックポインタ209は、チェックポイント・フレーム420を指定の数kまで記憶する環状バッファを含み得る。バッファが満杯であるとき、次に追加されるフレームが、最も古いチェックポイント・フレーム420を上書きする。仮想マシンおよび仮想機能を移行するとき、ユーザは、ユーザが移行のために望む実行中のアプリケーション403の既知の状態を表す、移行を実施するために使用する特定のチェックポイント・フレーム420を選択し得る。実施形態では、移行は、デフォルトで最新のチェックポイント・フレーム420を使用する。一実施形態では、ソースVM1-Sの移行中にソースVM1-Sからターゲット・ホストHOST-T451のハイパーバイザにチェックポイント・フレーム420を送信する前に、チェックポイント・フレーム420、チェックポイント・フレーム420のハッシュ、およびチェックポイント・フレーム420の日付およびタイム・スタンプがデジタルに署名され得る。
【0072】
ターゲット・ホストHOST-T451のハイパーバイザ455がチェックポイント・フレーム420を受信したとき、ハイパーバイザ455は、VM1-Sの公開鍵を使用してチェックポイント・フレーム420を解読し、日付およびタイム・スタンプが所定の時間ウィンドウ内にあることを確認し、チェックポイント・フレームのハッシュを検証し得る。日付およびタイム・スタンプを検証することは、チェックポイント・フレーム420のフレッシュネスを確認する。ターゲット・HOST-T451のハイパーバイザ455がチェックポイント・フレーム420を確認した場合、HOST-T451のハイパーバイザ455は、HOST-T451のソースVM1-Sについてのリソースを割り振って、VM1-T452を生成する。
【0073】
次に図4Bを参照すると、チェックポインタ209はAIアクセラレータ・ステータス・フレーム421をさらに取得する。AIアクセラレータ・ステータス・フレーム421がAIアクセラレータ410内部の情報を取り込むという点で、AIアクセラレータ・ステータス・フレーム421はチェックポイント・フレーム420とは異なる。AIアクセラレータ・ステータス・フレームの取り込まれた内容は、AIアクセラレータ内部の1つまたは複数のレジスタの内容、たとえばAIモデル、カーネル、中間推論計算などを含むセキュア・メモリおよび非セキュア・メモリの内容を含み得る。AIアクセラレータ・ステータス・フレーム421はチェックポイント・フレーム420と同時に取得され得、その結果、AIアクセラレータ・ステータス・フレーム421から得られる情報は、移行すべきVM1-Sの最新のチェックポイント・フレーム420と、仮想マシン、たとえばVM1-Sに対するAIアクセラレータ410のリソースの割振りをマッピングする、関連する仮想機能とに関して「フレッシュ」(現行)である。一実施形態では、チェックポイント・フレーム420の後、および実行中のアプリケーション403の保留中のAIタスクが停止した後に、AIアクセラレータ・ステータス・フレーム421が取得され得る。そのような実施形態は、AIアクセラレータ・ステータス・フレーム421が、移行後に確実に再始動することが難しいことがある部分的な進行中プロセスまたはスレッドに対応するAIアクセラレータのステータスを記憶することを回避する。
【0074】
AIアクセラレータ・ステータス・フレーム421は以下の情報を含み得る。以下の情報は、例としてのものであり、限定ではない。特定のシステム・インストールについての表内の情報に当業者は追加し、または表から削除し得る。VM1-Sの移行中にターゲット・ホストHOST-T451のハイパーバイザ455にフレームを送信する前に、AIアクセラレータ・ステータス・フレーム421、フレームのハッシュ、ならびにフレームのデータおよびタイム・スタンプが、AIアクセラレータ410の秘密鍵、または仮想マシンVM1-Sの秘密鍵でデジタルに署名され得る。仮想マシンVM1-Sおよび仮想機能を移行するとき、ユーザは特定のAIアクセラレータ・ステータス・フレーム421を選択し得、またはチェックポイント・フレーム420の選択に応答して、かつソースVM1-Sをターゲット・HOST-T451に移行する命令を受信したことに応答して、フレーム421が生成され得る。実施形態では、移行は、デフォルトで最新のチェックポイント・フレーム420に関連するAIアクセラレータ・ステータス・フレーム421を使用する。一実施形態では、ソースVM1-Sの移行中にソースVM1-Sからターゲット・ホストHOST-T451のハイパーバイザ455にAIアクセラレータ・ステータス・フレーム421を送信する前に、AIアクセラレータ・ステータス・フレーム421、AIアクセラレータ・ステータス・フレーム421のハッシュ、ならびにAIアクセラレータ・ステータス・フレーム421の日付およびタイム・スタンプがデジタルに署名され得る。
【0075】
ターゲット・ホストのハイパーバイザ455がAIアクセラレータ・ステータス・フレーム421を受信したとき、ハイパーバイザは、VM1-Sの公開鍵、または一実施形態ではVM1-SのAIアクセラレータ410の公開鍵を使用して、AIアクセラレータ・ステータス・フレーム421を解読し得、日付およびタイム・スタンプが所定の時間ウィンドウ内にあることを確認し、AIアクセラレータ・ステータス・フレーム421のハッシュを検証する。日付およびタイム・スタンプに関するチェックは、AIアクセラレータ・ステータス・フレーム421のフレッシュネスを確認する。ターゲット・HOST-T451のハイパーバイザ455がAIアクセラレータ・ステータス・フレーム421を確認した場合、HOST-T451のハイパーバイザ455は、AIアクセラレータ・ステータス・フレームの内容をVM1-T452上のAIアクセラレータACC2460にコピーし得る。
【0076】
【表2】
【0077】
図5Aは、一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシン移行のための方法500を示す。方法500は、ターゲット・ホスト、たとえばHOST-T451に、移行後仮想マシンVM1-Tとして移行すべきソース仮想マシン、たとえばVM1-S上で実施され得る。
【0078】
動作600では、VM1-Sの論理機構が、1つまたは複数の人工知能(AI)アクセラレータ、たとえばACC1410を利用するアプリケーション403を実行中のVM1-Sのチェックポイント・フレーム420を記憶するかどうかを決定し得る。図4Aを参照して上記で説明されたように、チェックポイント・フレーム420は、アプリケーション403、アプリケーションを実行中のスレッド、実行中スレッドを含むスケジューラ209A、アプリケーションに関するVM1-Sによって割り振られるメモリ、および1つまたは複数のAIアクセラレータのリソースをVM1-Sにマッピングする仮想機能を含むVM1-Sのスナップショットを含む。一実施形態では、任意選択で、チェックポイント・フレーム420を生成することはまた、AIアクセラレータ・ステータス・フレーム421を取得することをトリガし得る。一実施形態では、以下の動作800でアプリケーション403に関連する1つまたは複数のAIタスクが休止または停止した後に、AIアクセラレータ・ステータス・フレーム421が生成および記憶され得る。動作600は、図6を参照して以下で詳細に説明される。
【0079】
動作700では、VM1-Sは、VM1-Sを移行するかどうかを決定し得る。決定は、管理者やエンド・ユーザなどからのユーザ・コマンドの受信に基づき得る。一実施形態では、VM1-Sを移行する決定は、例外または障害規定値が規定値より上であることに基づき得る。動作700は、図7を参照して以下で詳細に説明される。
【0080】
動作800では、VM1-S、アプリケーション、および関連するAIアクセラレータについての仮想機能をターゲット・ホスト451に移行するコマンドを受信したことに応答して、かつ移行を実施する際に使用するチェックポイント・フレーム420の選択を受信したことに応答して、チェックポインタ209Cは、実行中のアプリケーションに関する1つまたは複数の実行中のAIタスクの状態を記録し、次いで1つまたは複数の実行中のAIタスクを停止または休止する。次いでVM1-Sは、VM1-Sおよび仮想機能をターゲット・ホストに移行するためのプロセス800を開始する。動作800は、図8を参照して以下で説明される。
【0081】
動作900では、VM1-Sが、ターゲット・ホスト451のハイパーバイザ455から、ハイパーバイザ455がチェックポイント420を首尾よく確認し、移行が完了したという通知を受信したことに応答して、ソース・ホストのハイパーバイザは、ターゲット・ホスト451上のハイパーバイザ455に、VM1-T内の移行後アプリケーションおよび記録済みタスクを再始動するように命令する。任意選択で、VM1-Sは、仮想機能を通じて、VM1-S、およびVM1-Sに関連する1つまたは複数のAIアクセラレータの移行後クリーンアップを実施する。方法900は、図9を参照して以下で説明される。方法500は終了する。
【0082】
図5Bは、一実施形態による、移行すべきソース仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のAIアクセラレータ・ステータス確認を使用するAIアクセラレータを有するデータ処理システム上の仮想マシン移行のための方法550を示す。方法550は、ターゲット・ホスト、たとえばHOST2 451に、移行後仮想マシンVM1-Tとして移行すべきソース仮想マシン、たとえばVM1-S上で実施され得る。
【0083】
動作800では、VM1-S、VM1-S上で実行中のアプリケーション、および関連するAIアクセラレータについての仮想機能をターゲット・ホスト451に移行するコマンドを受信したことに応答して、かつ移行を実施する際に使用するチェックポイント・フレーム420の選択を受信したことに応答して、チェックポインタ209Cは、実行中のアプリケーションに関する1つまたは複数の実行中のAIタスクの状態を記録し、次いで1つまたは複数の実行中のAIタスクを停止または休止する。次いでVM1-Sは、VM1-Sおよび仮想機能をターゲット・ホストに移行するためのプロセス800を開始する。動作800は、図8を参照して以下で説明される。
【0084】
動作551では、チェックポイント・フレーム420が選択された後、次いでVM1-Sは、VM1-Sの仮想機能に関連するAIアクセラレータ421のステータス・フレームを生成または選択する。AIアクセラレータ・ステータス・フレーム421は図4Bを参照して上記で説明される。AIアクセラレータ・ステータス・フレーム421のハッシュが生成され、AIアクセラレータ・ステータス・フレーム421のデータおよびタイム・スタンプが生成され、AIアクセラレータ・ステータス・フレーム421、ハッシュ、ならびに日付およびタイム・スタンプが、VM1-Sの秘密鍵、または一実施形態ではAIリソースをVM1-Sにマッピングする仮想機能に関連するAIアクセラレータ410の秘密鍵でデジタルに署名される。デジタルに署名されたAIアクセラレータ・ステータス・フレーム421は、ターゲット・ホスト451のハイパーバイザ455に送信される。
【0085】
動作900では、ターゲット・ホスト451のハイパーバイザ455から、チェックポイント・フレーム420およびAIアクセラレータ・ステータス・フレーム421が首尾よく確認され、移行が完了したという通知を受信したことに応答して、ターゲット・ホスト541上のハイパーバイザ455は、移行後仮想マシンVM1-T内のアプリケーションおよび記録済みAIタスクを再始動する。任意選択で、VM1-Sは移行後クリーンアップを実施し得る。仮想機能を通じた、VM1-S、およびVM1-Sに関連する1つまたは複数のAIアクセラレータの移行後クリーンアップを含む動作900は、図9を参照して以下で詳細に説明される。方法550は終了する。
【0086】
図6は、一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いる仮想マシン移行のための方法で使用するためのチェックポイント・フレームを生成する方法600を示す。
【0087】
動作601では、ホスト401内のハイパーバイザ405が、ソース仮想マシン(たとえばVM1-S)の状態、ネットワーク・ステータス、AIアクセラレータ・ステータス、およびジョブ完了進行を監視する。
【0088】
動作602では、チェックポイント・フレーム420を生成するための時間増分が満了したかどうかが判定される。時間増分は、ユーザまたは管理者によって設定され得、条件に基づいて動的に調節され得る。一実施形態では、ユーザは、VM1-Sを移行する必要を予期してなど、VM1-S上で実行中のアプリケーションが十分な進行を行っていない場合など、または他の理由で、時間増分を調節する。一実施形態では、時間増分が固定される。一実施形態では、障害が増加している場合、チェックポイント・フレーム420がより頻繁に生成され、障害が減少している場合、より低い頻度で生成されるように、障害の頻度、または障害の欠如に関して時間増分が動的に増加または減少する。チェックポイント・フレーム420を生成するときである場合、方法600は動作605に進み、そうでない場合、方法600は動作603に進む。
【0089】
動作603では、例外または障害が発生したかどうかが判定される。障害カウンタが構成され得、1つまたは複数の異なるタイプの障害が異なる重大性を有する。プロセッサ例外は、たとえば、失敗した送信または受信の再試行をサポートするネットワーク内のネットワーク障害よりもずっと重大である。したがって、プロセッサ障害は、ネットワーク障害カウントよりも低いカウントでチェックポイント・フレーム420の生成をトリガし得る。例外または障害が、例外または障害タイプについての構成された障害カウントを超えて発生した場合、方法600は動作605に進み、そうでない場合、方法600は動作604に進む。
【0090】
動作604では、ジョブ進行が完了の規定進行パーセント未満であるかどうかが判定される。一実施形態では、ジョブ進行は、複数のタイプのジョブ進行カウンタを有し得る。各ジョブ進行カウンタ・タイプは、たとえば、特定のソース・コードの呼出しによって、またはAIモデルをトレーニングするためのジョブ進行カウンタや、AI推論のためのカウンタなどの、AIアクセラレータ内の特定のAI機能に対する呼出しによってトリガされ得る。カウンタは、予想実行時間と実際の実行時間との関係、または他の尺度に基づき得る。進行が進行カウンタ・タイプについての規定パーセント未満であることをジョブ進行カウンタが示す場合、方法600は動作605に進み、そうでない場合、方法600は終了する。
【0091】
動作605では、VM1-Sが、VM1-S、実行中のアプリケーション、およびAIアクセラレータ・リソースをVM1-Sにマッピングする仮想機能のチェックポイント・フレーム420を生成する。
【0092】
動作606では、任意選択で、チェックポイント・フレーム420が生成された後、AIアクセラレータ・ステータス・フレーム421が生成され得る。方法600は終了する。
【0093】
図7は、一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証および/またはAIアクセラレータ・ステータス確認を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行するかどうかを判定する方法700を示す。
【0094】
動作701では、仮想マシン(VM)を移行するかどうかを示すフラグが偽にセットされる。
【0095】
動作702では、VM論理機構がVMを移行するユーザ・コマンドを受信したかどうかが判定される。一実施形態では、移行するコマンドは、実行中のAIアプリケーションの進行を監視中であり得るVMのユーザから生じ得る。ユーザがVMを移行することを選び得る理由は、当技術分野で周知のように、たとえば、プロセスが予想され得るように十分な進行を行っていないこと、特定のホスト・マシンに重い負荷がかけられ、または限られたリソースを有し、進行の欠如に寄与していることなどであり得る。VMを移行するユーザ・コマンドが受信された場合、方法700は動作705に進み、そうでない場合、方法700は動作703に進む。
【0096】
動作703では、VMを移行するコマンドが管理者から受信されたかどうかが判定され得る。管理者は、サーバに対する負荷、1つまたは複数のアプリケーションの進行、および利用可能なリソース・レベルを定期的に監視し得る。管理者は、ユーザ要求に応答して、または管理者自身の判断で、移行コマンドを送ることを選び得る。管理者がVMを移行するコマンドを発行した場合、方法700は動作705に進み、そうでない場合、方法700は動作704に進む。
【0097】
動作704では、例外または障害のタイプのカウントが規定量を超過したかどうかが判定され得る。異なるタイプの障害について異なる規定値が存在し得る。たとえば、障害カウントに基づいて自動移行がトリガされる前に、プロセッサ例外のカウントは非常に低いことがあり、ネットワーク障害のカウントは、プロセッサ障害と比べてずっと高いことがある。一実施形態では、自動的に検出された条件に基づいてVMの移行を自動的に開始するのではなく、検出された障害に基づいてVMを移行することをアドバイスする通知が管理者に送られ得る。任意のタイプの障害または例外が、その障害または例外タイプに関連する規定値よりも多く発生する場合、方法700は動作705に進み、そうでない場合、方法700は終了する。
【0098】
動作705では、移行フラグが真にセットされる。移行のために使用するチェックポイントの選択も受信される。移行を開始するユーザ・コマンドまたは管理者コマンドのケースでは、コマンドは、移行のために使用するチェックポイント・フレーム420も含み得る。自動的に開始された移行コマンドのケースでは、チェックポイント・フレーム420が自動的に生成され得、または最新のチェックポイント・フレーム420が選択され得る。一実施形態では、最新の記憶されたチェックポイント・フレーム420が規定時間量よりも古い場合、新しいチェックポイント・フレーム420が生成される。
【0099】
動作706では、任意選択で、AIアクセラレータ・ステータス・フレーム421が生成され得る。障害条件に基づいて、自動的に生成された移行コマンドのケースでは、AIアクセラレータ・ステータス・フレーム421が自動的に生成され得、移行と共に使用され得る。AIアクセラレータ・ステータス・フレームが選択または生成される場合、方法550(図5B)が実施され得る。そうでない場合、方法500(図5A)が実施される。方法700は終了する。
【0100】
図8は、一実施形態による、移行すべき仮想マシンをホストするソース・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行する方法800を示す。
【0101】
動作801では、移行中の仮想マシン、たとえばVM1-Sをホストするターゲット(宛先)サーバ、たとえばホスト451の選択が受信される。
【0102】
動作802では、VM1-S上で実行中のアプリケーションの1つまたは複数の実行中のAIタスクが停止または休止される。一実施形態では、実行中のAIタスクのうちの1つまたは複数が終了することを許可され、それ以外は休止または停止される。
【0103】
動作803では、選択されたチェックポイント・フレーム420がターゲット・ホスト451に転送される。VM1-Sのハイパーバイザ405は、チェックポイント・フレーム420のシグナチャ、日付およびタイム・スタンプ、およびハッシュが確認されたというターゲット・ホストからの応答を待機する。
【0104】
動作804では、ハイパーバイザ405またはドライバ209が、VM1-S上で実行中のAIアプリケーションを記録し、任意の関連する未終了のAIタスク、およびすべての未終了のAIタスクが停止される。
【0105】
動作805では、VM1-Sハイパーバイザ405は、未終了のAIジョブの記録済みの状態をターゲット・ホスト451のハイパーバイザ455に送る。方法800は終了する。
【0106】
図9は、一実施形態による、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行した後に、ソース仮想マシンの移行後クリーンアップを実施する方法900を示す。
【0107】
動作901では、ソース仮想マシン(VM1-S)のハイパーバイザ405は、ターゲット・ホスト451のハイパーバイザ455から、チェックポイント・フレーム420のシグナチャ、日付およびタイム・スタンプ、ならびにハッシュがすべて確認されたという通知を受信する。一実施形態では、通知は、AIアクセラレータ・ステータス・フレーム421のシグナチャ、日付およびタイム・スタンプ、ならびにハッシュが確認されたという指示も含み得る。通知は、ターゲット・ホスト451へのVM1-S移行が完了し、アプリケーションおよび未終了のAIタスクがVM1-Tとしてのターゲット・ホスト451上の移行後仮想マシンで再始動されたことをさらに示し得る。
【0108】
動作902では、ソース・ホスト401のハイパーバイザ405および/またはドライバ404が、ソースVM1-Sによって使用されたAIアクセラレータの少なくともセキュア・メモリを消去し得る。ハイパーバイザ405および/またはドライバ404はまた、VM1-Sに関連する仮想機能を介してアプリケーションに関連するAIアクセラレータを使用するAPIまたはドライバに呼出しを行ったVM1-S上のアプリケーションによって使用されたメモリを消去し得る。
【0109】
動作903では、ソース・ホスト401のハイパーバイザ405が、VM1-Sによって使用され、AIアクセラレータ・リソースをVM-Sにマッピングする仮想機能に関連するAIアクセラレータ・リソースを割振り解除することを含めて、VM1-Sのリソースを割振り解除し得る。方法900は終了する。
【0110】
図10は、いくつかの実施形態による、移行後仮想マシンをホストするホストのターゲット・ハイパーバイザの観点からの、仮想化環境内のチェックポイント認証を用いるAIアクセラレータを有するデータ処理システムの仮想マシンを移行する方法1000を示す。
【0111】
動作1001では、ターゲット・ホスト・マシン451のハイパーバイザ455が、AIプロセッサ・リソースをVM1-Sにマッピングする仮想機能に関連するソース仮想マシン、たとえばVM1-Sから、チェックポイント・フレーム420を受信する。ハイパーバイザ455はまた、VM1-Sをターゲット・ホスト451上の移行後仮想マシン(VM1-T)としてホストする要求を受信する。
【0112】
動作1002では、ホスト451上のハイパーバイザ455が、ホスト451上のVM1-SをVM1-Tとして生成するためのリソースを計算し、予約する。ハイパーバイザ455は、受信したチェックポイント・フレーム420に従って、VM1-Sおよび関連する仮想機能をホストするためのリソースを割り振り、構成する。
【0113】
動作1003では、ターゲット・ホスト451のハイパーバイザ455は、VM1-SをVM1-Tに移行する一部として受信したデータのフレームを受信し、ソース・ホスト401のハイパーバイザ405に対して肯定応答する。ハイパーバイザ455は、ハイパーバイザ455がVM1-Tを生成し得るように、受信したフレームをホスト451上に記憶する。
【0114】
動作1004では、任意選択で、ターゲット・ホスト451のハイパーバイザ455は、ソース・ホスト401のハイパーバイザ505から、署名されたAIアクセラレータ・ステータス・フレーム421を受信する。ハイパーバイザ455は、VM1-Sの公開鍵、またはVM1-Sのアクセラレータの公開鍵を使用して、署名されたAIアクセラレータ・フレーム421を解読する。ハイパーバイザ455は、フレーム421内の日付およびタイム・スタンプを確認し、フレーム421のダイジェストを確認する。署名されたAIアクセラレータ・ステータス・フレーム421が首尾よく確認された場合、次いでハイパーバイザ455は、AIアクセラレータ・ステータス・フレーム421からのデータをAIアクセラレータ内にロードし、AIアクセラレータ・ステータス・フレーム421内のデータに従ってAIアクセラレータを構成する。
【0115】
動作1005では、ターゲット・ホスト451のハイパーバイザ455は、VM1-S上で実行中のアプリケーションの未終了のAIタスクの記録済み状態を受信する。VM1-Tは、VM1-T上のアプリケーションおよび未終了のAIタスクを再始動する。
【0116】
動作1006では、ターゲット・ホスト451上のハイパーバイザ455は、ソース・ホスト401上のソース・ハイパーバイザ405に、アプリケーションおよび未終了のAIタスクの再始動に成功し、VM1-SのVM1-Tへの移行に成功したことを示す通知を送る。
【0117】
先行する詳細な説明のいくつかの部分は、コンピュータ・メモリ内のデータ・ビットに対する動作のアルゴリズムおよび記号表現によって提示された。これらのアルゴリズム記述および表現は、データ処理技術分野の当業者の作業を他の当業者に最も効果的に伝達するために当業者によって使用される方式である。アルゴリズムは、ここでは、一般に、所望の結果に至る、動作の首尾一貫したシーケンスであると理解される。動作は、物理量の物理的操作を必要とするものである。
【0118】
しかしながら、これらの用語および類似の用語のすべては適切な物理量に関連付けられるべきであり、これらの量に適用される好都合な符号に過ぎないことに留意されたい。別段に明記されていない限り、上記の議論から明らかなように、説明全体にわたって、以下の特許請求の範囲に記載されているような用語を使用する議論は、コンピュータ・システムのレジスタおよびメモリ内の物理(電子)量として表現されるデータを操作して、コンピュータ・システム・メモリまたはレジスタあるいは他のそのような情報ストレージ、送信デバイス、またはディスプレイ・デバイス内の物理量として同様に表現される他のデータに変換するコンピュータ・システムまたは類似の電子コンピューティング・デバイスの動作およびプロセスを指すことを理解されたい。
【0119】
本開示の実施形態はまた、本明細書の動作を実施するための装置に関する。そのようなコンピュータプログラムは非一時的コンピュータ可読媒体内に記憶される。機械可読媒体は、マシン(たとえば、コンピュータ)によって読取り可能な形式で情報を記憶するための任意の機構を含む。たとえば、機械可読(たとえば、コンピュータ可読)媒体は、マシン(たとえば、コンピュータ)読取り可能ストレージ媒体(たとえば、読取り専用メモリ(「ROM」)、ランダム・アクセス・メモリ(「RAM」)、磁気ディスク・ストレージ媒体、光ストレージ媒体、フラッシュメモリ・デバイス)を含む。
【0120】
先行する図に示されるプロセスまたは方法は、ハードウェア(たとえば回路、専用論理回路など)、(たとえば、非一時的コンピュータ可読媒体上で実施される)ソフトウェア、またはそれらの組合せを含む処理論理機構によって実施され得る。プロセスまたは方法がいくつかの順次的な動作によって上記で説明されるが、動作の一部は異なる順序で実施され得ることを理解されたい。さらに、いくつかの動作は、順次的ではなく並列に実施され得る。
【0121】
本開示の実施形態はまた、コンピュータ上で動作しているときに、先行する図に示されるプロセスまたは方法を前記コンピュータに実行させるためのコンピュータプログラムに関する。
【0122】
本開示の実施形態は、何らかの特定のプログラミング言語を参照して説明されない。本明細書で説明されるように本開示の実施形態の教示を実装するために様々なプログラミング言語が使用され得ることを理解されよう。
【0123】
上記の明細書では、本開示の実施形態が、その特定の例示的実施形態を参照して説明された。以下の特許請求の範囲に記載の本開示のより広い趣旨および範囲から逸脱することなく、それに対して様々な修正が行われ得ることは明らかであろう。したがって、本明細書および図面は、制限的な意味ではなく、例示的な意味でとらえられるべきである。
図1
図2A
図2B
図3
図4A
図4B
図5A
図5B
図6
図7
図8
図9
図10