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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-550308しきい値予測を伴う浮動小数点計算システム、方法、プログラム
<>
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図1A
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図1B
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図1C
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図2
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図3
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図4
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図5
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図6
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図7
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図8
  • 特表-しきい値予測を伴う浮動小数点計算システム、方法、プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-01
(54)【発明の名称】しきい値予測を伴う浮動小数点計算システム、方法、プログラム
(51)【国際特許分類】
   G06F 7/487 20060101AFI20231124BHJP
   G06F 17/16 20060101ALI20231124BHJP
   G06G 7/60 20060101ALI20231124BHJP
   G06N 3/02 20060101ALI20231124BHJP
【FI】
G06F7/487
G06F17/16 M
G06G7/60
G06N3/02
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023528073
(86)(22)【出願日】2021-11-02
(85)【翻訳文提出日】2023-05-10
(86)【国際出願番号】 IB2021060128
(87)【国際公開番号】W WO2022106944
(87)【国際公開日】2022-05-27
(31)【優先権主張番号】17/101,605
(32)【優先日】2020-11-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】カン、ミング
(72)【発明者】
【氏名】ウ、ソンフン
(72)【発明者】
【氏名】リー、エウン キュン
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB71
5B056CC01
(57)【要約】
システムは、第1の浮動小数点値および第2の浮動小数点値に従ってドット積演算を実施するように構成された浮動小数点計算ユニットと、浮動小数点計算ユニットに動作可能に結合された検出ロジックとを備える。検出ロジックは、第1の浮動小数点値および第2の浮動小数点値の指数部の固定小数点合計の間の差を計算し、計算された差に基づいて浮動小数点計算ユニットによるドット積演算の完了前に条件の存在を検出するように構成される。条件の存在の検出に応答して、検出ロジックは、通常ならドット積演算の一部として実施される計算のサブセットの実施を浮動小数点計算ユニットに回避させるようにさらに構成される。このような技術は、計算の回避されるサブセットの結果として2つの浮動小数点値のドット積がしきい値未満になったであろうことの予測器としての働きをする。
【特許請求の範囲】
【請求項1】
システムであって、
第1の浮動小数点値および第2の浮動小数点値に従ってドット積演算を実施するように構成された浮動小数点計算ユニットと、
前記浮動小数点計算ユニットに動作可能に結合された検出ロジックと
を備え、
前記検出ロジックが、前記第1の浮動小数点値および前記第2の浮動小数点値の指数部の固定小数点合計の間の差を計算し、前記計算された差に基づいて前記浮動小数点計算ユニットによる前記ドット積演算の完了前に条件の存在を検出するように構成され、
前記条件の前記存在の検出に応答して、前記検出ロジックが、通常なら前記ドット積演算の一部として実施される計算のサブセットの実施を前記浮動小数点計算ユニットに回避させるようにさらに構成された、システム。
【請求項2】
検出される前記条件が、前記第1の浮動小数点値および前記第2の浮動小数点値の指数部の固定小数点合計の間の前記差の前記計算の結果がしきい値未満かどうかである、請求項1に記載のシステム。
【請求項3】
前記しきい値が正の値と0とのうちの一方である、請求項2に記載のシステム。
【請求項4】
前記検出される条件の前記存在が、計算の前記回避されるサブセットの結果として前記第1の浮動小数点値と前記第2の浮動小数点値とのドット積が前記しきい値未満になったであろうことの予測器としての働きをする、請求項2に記載のシステム。
【請求項5】
前記検出ロジックに動作可能に結合され、前記浮動小数点計算ユニットに関連する処理遅延に比例して前記検出ロジックの動作電圧を低減するように構成された、電圧スケーリング・コントローラをさらに備える、請求項1ないし4のいずれかに記載のシステム。
【請求項6】
前記ドット積演算が、人工知能システム中で使用されるニューラル・ネットワーク・モデルのための訓練段階の一部である、請求項1ないし5のいずれかに記載のシステム。
【請求項7】
1つまたは複数の集積回路の一部として実装される、請求項1ないし6のいずれかに記載のシステム。
【請求項8】
方法であって、
第1の浮動小数点値および第2の浮動小数点値の指数部の固定小数点合計の間の差を計算するステップと、
前記第1の浮動小数点値および前記第2の浮動小数点値に従ってドット積演算を実施するように構成された浮動小数点計算ユニットによるドット積演算の完了前に、前記計算された差に基づいて条件の存在を検出するステップと、
前記条件の前記存在の検出に応答して、通常なら前記ドット積演算の一部として実施される計算のサブセットの実施を前記浮動小数点計算ユニットに回避させるステップと
を含み、
前記ステップのうちの1つまたは複数が、命令コードを実行するように構成された処理回路によって実行される、方法。
【請求項9】
検出される前記条件が、前記第1の浮動小数点値および前記第2の浮動小数点値の指数部の固定小数点合計の間の前記差の前記計算の結果がしきい値未満かどうかである、請求項8に記載の方法。
【請求項10】
前記しきい値が正の値と0とのうちの一方である、請求項9に記載の方法。
【請求項11】
前記検出される条件の前記存在が、計算の前記回避されるサブセットの結果として前記第1の浮動小数点値と前記第2の浮動小数点値とのドット積が前記しきい値未満になったであろうことの予測器としての働きをする、請求項9に記載の方法。
【請求項12】
前記第1の浮動小数点値および前記第2の浮動小数点値の指数部の固定小数点合計の間の前記差が
【数1】
として表され、exが前記第1の浮動小数点値および前記第2の浮動小数点値のうちの一方の前記指数部を表し、eyが前記第1の浮動小数点値および前記第2の浮動小数点値のうちの他方の前記指数部を表し、Nが前記指数部を構成する成分の数を表し、Sが正の積のグループを表し、Sが負の積のグループを表す、請求項9に記載の方法。
【請求項13】
前記ドット積演算が、人工知能システム中で使用されるニューラル・ネットワーク・モデルのための訓練段階の一部である、請求項8ないし12のいずれかに記載の方法。
【請求項14】
装置であって、
少なくとも1つのプロセッサと、
命令コードを含む少なくとも1つのメモリと
を備え、
前記少なくとも1つのメモリおよび前記命令コードが、前記少なくとも1つのプロセッサと共に、請求項8ないし13のいずれかに記載のステップを前記装置に実施させるように構成された、装置。
【請求項15】
プロセッサによって実行されたときに請求項8ないし13のいずれかに記載のステップを前記プロセッサに実施させる実行可能命令コードが組み入れられたコンピュータ可読記憶媒体を構成するコンピュータ・プログラム。
【請求項16】
システムであって、
整流化線形ユニットと、
前記整流化線形ユニットに動作可能に結合され、第1の浮動小数点値および第2の浮動小数点値に従ってドット積演算を実施するように構成された、浮動小数点計算ユニットと、
前記浮動小数点計算ユニットに動作可能に結合された検出ロジックと
を備え、
前記検出ロジックが、前記第1の浮動小数点値および前記第2の浮動小数点値の指数部の固定小数点合計の間の差を計算し、前記計算された差に基づいて、前記計算された差をしきい値と比較することによって前記浮動小数点計算ユニットによる前記ドット積演算の完了前に条件の存在を検出するように構成され、
前記計算された差が前記しきい値未満であることに応答して、前記検出ロジックが、通常なら前記ドット積演算の一部として実施される計算のサブセットの実施を前記浮動小数点計算ユニットに回避させ、前記浮動小数点計算ユニットの出力を前記整流化線形ユニットに制御させるようにさらに構成された、システム。
【請求項17】
人工知能システムの一部として実装される、請求項16に記載のシステム。
【請求項18】
1つまたは複数の集積回路の一部として実装される、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、人工知能システムで使用するための浮動小数点計算を実施することに関する。
【背景技術】
【0002】
機械学習アルゴリズムは人工知能システムの例と考えられるが、この機械学習アルゴリズムは、改善された反復計算精度の利益を得る計算応用例で広く使用されつつある。ニューラル・ネットワークベースのアルゴリズムは、最も広く使用されているタイプの機械学習アルゴリズムの1つである。ニューラル・ネットワークは、人間の脳が動作する方式を模倣するプロセスを通してデータのセット中の基礎をなす関係を認識するモデルである。ニューラル・ネットワーク・モデルは、最初に、訓練データ・セットを使用して訓練され(訓練段階)、次いで、訓練されたニューラル・ネットワーク・モデルを使用してターゲット・データ・セット中の関係が認識される(推論段階)。推論段階は低精度の固定小数点算術計算に依拠し得るが、訓練段階は通常、浮動小数点算術計算を必要とする。
【発明の概要】
【0003】
例証的な一実施形態では、システムが、第1の浮動小数点値および第2の浮動小数点値に従ってドット積演算を実施するように構成された浮動小数点計算ユニットと、浮動小数点計算ユニットに動作可能に結合された検出ロジックとを備える。検出ロジックは、第1の浮動小数点値および第2の浮動小数点値の指数部の固定小数点合計の間の差を計算し、計算された差に基づいて、浮動小数点計算ユニットによるドット積演算の完了前に条件の存在を検出するように構成される。条件の存在の検出に応答して、検出ロジックは、通常ならドット積演算の一部として実施される計算のサブセットの実施を浮動小数点計算ユニットに回避させるようにさらに構成される。
【0004】
さらに他の例証的な実施形態は、命令コードを実行するように構成されたプロセッサおよびメモリを備える装置の形と、検出するステップおよび回避させるステップを実施するように構成された方法の形と、プロセッサによって実行されたときにこれらのステップをプロセッサに実施させる実行可能命令コードが組み入れられた非一過性プロセッサ可読記憶媒体の形とで、それぞれ提供される。
【0005】
有利にも、一例として、例証的な実施形態は、計算アルゴリズムをサポートするのに使用されるハードウェアに関して計算オーバヘッドを早い段階で省くために、内積が計算される前に、負の内積出力または許容可能に小さい正の内積出力を予測する。
【0006】
本明細書に記載の実施形態に関するこれらおよび他の特徴および利点は、添付図面および後続の詳細な説明からより明らかになるであろう。
【図面の簡単な説明】
【0007】
図1A】1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、浮動小数点数のフィールド・フォーマットを描いた図である。
図1B】1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、浮動小数点数の算術表現を描いた図である。
図1C】1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、浮動小数点ドット積計算に関連する計算カーネルを描いた図である。
図2】1つまたは複数の例証的な実施形態がそれによって実装されることが可能な浮動小数点積和演算器ロジックを描いた図である。
図3】例証的な実施形態による、浮動小数点ドット積計算のためのしきい値検出ロジックを描いた図である。
図4】例証的な実施形態による、電圧スケーリングなし(A)、あり(B)の処理フローを描いた図である。
図5】例証的な実施形態による、浮動小数点ドット積計算のためのしきい値検出ロジックに関する方法を描いた図である。
図6】例証的な実施形態による人工知能システムの例示的な実装形態を描いた図である。
図7】例証的な実施形態による例示的なプロセッサ・システムを描いた図である。
図8】例証的な実施形態によるクラウド・コンピューティング環境を描いた図である。
図9】例証的な実施形態による抽象化モデル・レイヤを描いた図である。
【発明を実施するための形態】
【0008】
本明細書では、例示的なコンピューティング環境、クラウド・インフラストラクチャ、データ・リポジトリ、データ・センタ、データ処理システム、情報処理システム、コンピュータ・システム、データ記憶システム、ならびに関連するサーバ、コンピュータ、記憶ユニット、およびデバイスと、他の処理およびコンピューティング・デバイスとに関して、例証的な実施形態が記述されることがある。しかし、本発明の実施形態は、示される特定の例証的なシステムおよびデバイス構成と共に使用することに限られないことを了解されたい。さらに、本明細書における「クラウド・プラットフォーム」、「クラウド・コンピューティング環境」、「クラウド・インフラストラクチャ」、「データ・リポジトリ」、「データ・センタ」、「データ処理システム」、「情報処理システム」、「コンピュータ・システム」、「データ記憶システム」、「コンピューティング環境」などの文言は、例えば、プライベートまたはパブリックあるいはその両方のクラウド・コンピューティングまたは記憶システム、ならびに、分散仮想インフラストラクチャを含む他のタイプのシステムを包含するように広く解釈されるものとする。しかし、所与の実施形態が、より一般に、1つまたは複数の処理デバイスの任意の配置構成を含み得る。
【0009】
背景技術のセクションで上述されたように、人工知能(例えば、機械学習)システムで使用されるニューラル・ネットワーク・モデルの訓練段階は通常、浮動小数点算術計算を必要とする。一例として、このような浮動小数点算術は、「IEEE 754-2019: IEEE Standard for Floating-Point Arithmetic」という名称の米国電気電子学会(IEEE)規格において定義されている計算を含むことがある。IEEE754規格は、コンピュータ・プログラミング環境における2進法(基数2)および10進法(基数10)浮動小数点算術のための算術フォーマットおよび方法を指定している。IEEEは、この規格に準拠する浮動小数点システムの実装形態が、完全にソフトウェアにおいて、完全にハードウェアにおいて、またはソフトウェアとハードウェアとの任意の組合せにおいて実現されることを示している。
【0010】
IEEE754は、数1つ当たり16ビットを使用する半精度フォーマット、数1つ当たり32ビットの単精度フォーマット、および数1つ当たり64ビットの倍精度フォーマットを定義している。各フォーマットは、符号「s」と、指数「e」と、小数値「f」として表される仮数とを含む(例えば、数は、先頭の1ビットと、それに続く、小数点の右側の有効値を含む小数部とを仮定することによって正規化される)。このように、仮数は、浮動小数点数の、その数の有効数字を表す部分であり、指数で累乗された基数がこの部分に掛けられて数の実際の値が与えられる。
【0011】
図1Aは、IEEE754規格に合致し、1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、浮動小数点数のフィールド・フォーマット100を描いている。指数部および小数部のビットの数をそれぞれ示す変数nおよびpは、選択された精度に依存する。図1Bは、図1Aのフィールド・フォーマット100に合致し、1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、値(x)として示される浮動小数点数の算術表現110を描いている。
【0012】
人工知能システムで使用されるニューラル・ネットワーク・モデルの訓練段階で実施される浮動小数点計算の1つは、浮動小数点ドット積計算である。ドット積計算は通常、人工知能システムの積和演算器(MAC)ユニット中で実施される。ドット積は、長さの等しい2つの数列(例えば、2つの浮動小数点数)を入力して単一の数を返す代数的演算である。より詳細には、ドット積は、2つの数列の対応するエントリの積の合計である。2つの入力数がベクトルである場合、ドット積演算の結果(内積とも呼ばれる)は、スカラー値である。
【0013】
さらに、現代の人工知能システムにおける計算カーネルは、内積(浮動小数点ドット積演算の結果)をとり、内積に整流化線形ユニット(Relu)関数を適用する。図1Cは、2つの浮動小数点値xおよびwについて計算された内積y
【数1】

にRelu関数を適用する計算カーネル120を描いている。Relu関数は、正の入力のみを通す。すなわち、yが0よりも大きい限り、Relu関数からyが出力され、そうでない場合は、Relu関数は0を出力する。
【0014】
本明細書では、ドット積
【数2】

の全体を計算する前であっても負の値が検出されて、それによりこの内積を完全に計算することなく0の出力が提供されるようにすることができれば、エネルギー効率が高いであろうことが理解される。例証的な実施形態は、計算アルゴリズムをサポートするのに使用されるハードウェアに関して計算オーバヘッドを早い段階で省くために、内積が計算される前に(すなわち、内積計算が完了する前に)このような負の内積出力を予測する技術を提供する。
【0015】
上で説明され図1Aおよび1Bに示されたように、浮動小数点数は3つのフィールド、すなわち符号(s)と指数(e)と小数(f)とを用いて表されることを想起されたい。IEEE754半精度フォーマットの場合、例えば、s=1ビット、e=5ビット、f=10ビットである。浮動小数点数は、正規数の場合、値(x)=(-1)*2[e]*(1.f)として表される。明白なように、値の大きさは、ビット数がより少ない「e」に主に依存し、より長いビット・ストリーム「f」は、値の大きさを微調整する働きをする。例えば、数xの大きさは、「f」の値にかかわらず、2[e]≦|x|<2[e+1]の範囲内である。本明細書では、このプロパティが、例証的な実施形態によれば有利にも、ドット積計算における0予測のための重要な機会をもたらすことが理解される。
【0016】
2つの浮動小数点数XとYとの積は、次のように制限される。
X=(-1)*2[ex]*(1.fx) => 2[ex]≦|X|<2[ex+1]
Y=(-1)*2[ey]*(1.fy) => 2[ey]≦|Y|<2[ey+1]
∴2[ex+ey]≦|XY|<2[ex+ey+2]
【0017】
本明細書ではさらに、例証的な実施形態によれば、積の最大および最小範囲の計算は、乗算を必要とせず、2つの浮動小数点値XおよびYについての指数値の、1つの固定小数点加算、すなわちex+eyのみを必要とすることが理解される。ドット積計算では、多くの(N個の)このような積が合計され、例えば、
【数3】

である。したがって、正の積のグループ(S)と負の積のグループ(S)とを区別することができる。
【0018】
正および負のグループの合計の範囲は、次のとおりである。
正の積の合計:
【数4】

負の積の合計:
【数5】
【0019】
したがって、例証的な実施形態では、積の総計
【数6】

であることを確認するために、次の条件がチェックされる。
【数7】
【0020】
上の式(1)における必要とされる計算は、高価な乗算や浮動小数点計算なしに、固定小数点合計のみを含むことに留意されたい。有利にも、この計算的に安価な事前チェックにより、計算のほぼ50パーセント(%)(負の数が生じるとき)が回避される。数が正の数であると判明した場合は、通常の浮動小数点計算が継続する。
【0021】
前述のように、浮動小数点ドット積計算は通常、人工知能システムに関連するMACハードウェア・ユニット中で実施される。図2は、1つまたは複数の例証的な実施形態がそれによって実装されることが可能な、MACユニット200に関連する浮動小数点積和演算器ロジックを描いている。MACユニットは、値AとBとのドット積に対して値Cを加算または減算することによって、3つの値AとBとCとを結合する。浮動小数点値の場合、MACユニット200は、入力EA、EB、およびECを処理し、ここで、Eは、値A、B、およびCのそれぞれの指数部を指す。MACユニット200はまた、入力MA、MB、およびMCを処理し、ここで、Mは、値A、B、およびCのそれぞれの仮数(小数)部を指す。浮動小数点MACユニット200は、整合ロジック、加算器ロジック、乗算器ロジック、シフタ・ロジック、比較器ロジック、ならびに他の機能的ロジックを(図2に例証されるように)備え、比較的複雑である。浮動小数点MACユニット200などの積和演算器の従来のロジック動作は、当業者なら理解するであろうし、したがって本明細書ではこれ以上詳細に説明しない。
【0022】
固定小数点加算エネルギーが浮動小数点ベースのMAC動作の10%であると仮定すると、本明細書では、10%の予測オーバヘッドで負の数を予測することによってMAC計算の約40%をスキップできることが理解される。一方、累算された数が事前チェック条件を満たさないことが判明した場合、10%の予測オーバヘッドは無駄に費やされる。したがって、0.4*(100%の節約-10%のオーバヘッド)+0.6*(-10%のオーバヘッド)=30%のエネルギー節約である。
【0023】
いくつかの状況では、本明細書において、式(1)は、正の積の可能な最大の大きさが負の積の可能な最小の大きさと比較されるので、必要以上または所望以上に保守的である可能性があることが理解される。したがって、代替実施形態では、以下で式(2)に描かれるように、式(1)の右側の項の「0」をしきい値「Th」で置き換えることによって事前チェック条件が緩和される。
【数8】
【0024】
Th>0であり、Thの大きさは一般に比較的小さく設定されることを理解されたい。このように、左の項は正の数だが、0に非常に近い場合には計算はスキップされることが可能である。Th値を制御することによって、精度が許容可能な程度により低くなることを代償としてより高いエネルギー効率が達成される。すなわち、Thの設定に基づいて、計算の10%を追加的に回避できる場合、エネルギー節約は、0.5*(100%の節約-10%のオーバヘッド)+0.5*(-10%のオーバヘッド)=40%のエネルギー節約である。
【0025】
図3は、例証的な実施形態による、浮動小数点ドット積計算のためのしきい値検出のロジック実装形態300を描いている。ロジック実装形態300は、上の式(2)のハードウェア実装形態の例証的な一実施形態を表す。代替実施形態は、他のロジック実装形態を有することがある。
【0026】
図示のように、ロジック実装形態300は、浮動小数点MACユニット340に動作可能に結合されたしきい値検出器310(検出ロジック)を備え、浮動小数点MACユニット340は、マルチプレクサ342に動作可能に結合される。しきい値検出器310は、加算器312、加算器314、デマルチプレクサ316、レジスタ320、レジスタ322、マルチプレクサ324、排他的論理和(XOR)ゲート326、加算器328、および比較器330を含むロジック構成要素を備える。データ入力、データ出力、選択ビット、制御ビット(またはデジタル信号)などが所与のロジック構成要素から入力されるかまたは出力されるかあるいはその両方がなされると言及される場合、これは、所与のロジック構成要素が、対応するそのような入力の受領またはそのような出力の送出あるいはその両方のために他のロジック構成要素との接続性を可能にする対応する端子を有すると想定する。
【0027】
上で説明されたように、2つの浮動小数点値XとYとの積の最大および最小範囲の計算は、乗算を必要とせず、2つの浮動小数点値XおよびYについての指数値の、1つの加算、すなわちex+eyのみを必要とすること、ならびに、ドット積計算では、多くの(N個の)このような積が合計され、例えば、
【数9】

であることを想起されたい。したがって、図3のしきい値検出器310に示されるように、XおよびYについての指数ビット(指数部)の対応する各対exおよびeyが加算器312に入力され、それにより、加算器312の出力はex+eyである。加算器312の出力は、マルチプレクサ324の出力と共に加算器314に入力される。加算器314の出力は、デマルチプレクサ316に入力される。
【0028】
デマルチプレクサ316は、正の結果を表す、第1の出力上の
【数10】

を生成し、負の結果を表す、第2の出力上の
【数11】

を生成する。正の結果はレジスタ320に入力され、負の結果はレジスタ322に入力される。さらに、正の結果は正レジスタ320から出力され、負の結果はレジスタ322から出力され、両方はマルチプレクサ324に入力され、マルチプレクサ324は、前述のように加算器314への入力としての働きをする出力を生成する。
【0029】
図3にさらに示されるように、XORゲート326は、それぞれ浮動小数点値XおよびYについての符号ビットであるsxおよびsyを入力として受け取る。sxとsyとが異なるとき、これは、XとYとの積の符号が負であることを意味する。したがって、値は、負レジスタ322中の値と累算される。sxとsyとが同じである場合、これは、XとYとの積の符号が正であることを意味し、したがって、値は正レジスタ320中の値と累算される。XORゲート326の出力は、したがって、適宜、デマルチプレクサ316およびマルチプレクサ324を制御するのに使用されることに留意されたい。
【0030】
正レジスタ320からの正の結果、およびレジスタ322からの負の結果はまた、加算器328にも入力され、加算器328の出力は、比較器330中でしきい値Thに対してチェックされる。ここが、式(2)の事前チェック条件が決定される場所である。比較器330の出力は、浮動小数点MACユニット340のENに入力として提供され、また、マルチプレクサ342に制御信号として提供され、マルチプレクサ342は、0である第1の入力と、浮動小数点MACユニット340の出力である第2の入力とを有する。ENは、比較器330の出力が論理1(EN=1)のときにだけ浮動小数点MACユニット340が動作するような、浮動小数点MACユニット340のための有効化スイッチを表すことに留意されたい。したがって、浮動小数点MACユニット340が図2の浮動小数点MACユニット200に示されるように構成されていると仮定すると、入力値(すなわち、EA、EB、MA、MB・・・)は、EN=0の場合は入力レジスタ中で更新されないことになる。このようにして、図2のユニット200の回路は、非アクティブであり前の計算ステータスを維持することになる。
【0031】
マルチプレクサ342は、前述のRelu関数を表す。したがって、
【数12】

がしきい値Th未満である場合は、マルチプレクサ342の出力は0であり、そうでない場合は、浮動小数点MACユニット340の出力がマルチプレクサ342の出力として選択される。いくつかの実施形態では、しきい値Thは0とすることができ、他の実施形態では、しきい値Thは、比較的小さい何らかの許容可能な正の数とすることができることを想起されたい。例にすぎないが、小さい許容可能な正の数は、ドット積の最大値の約1%よりも小さい値であってよい。
【0032】
追加の実施形態では、エネルギー消費を省くためにしきい値検出器310が典型的な供給電圧未満で動作するように、しきい値検出器310中の回路は、電圧スケーリング機能付きで実装されることが可能であることを了解されたい。このような電圧スケーリング機能は、電圧スケーリング・コントローラ344によって制御される。コントローラ344は、必要または所望に依って電圧スケーリング機能を有効化または無効化するように構成される。
【0033】
図4Aおよび4Bは、それぞれ、例証的な実施形態による、電圧スケーリングなしの処理フロー400および電圧スケーリングありの処理フロー410を描いている。処理フロー400および410は、しきい値検出器310および浮動小数点MACユニット340に関連する順次データ(データ1、データ2、データ3、データ4など)の処理に対応する。例えば、浮動小数点MACユニット340が所与のデータ(データ1)についての計算を実施するとき、しきい値検出器310は次のデータ(データ2)についての予測を(しきい値検出に基づいて)実施し、以下同様である。
【0034】
しきい値検出器310によって実施される予測段階計算は比較的単純なので、処理遅延は、MACユニットの浮動小数点処理に関連する処理遅延と比較して相対的に小さく、例えば、この相対的な処理時間差は図4Aで明白である。したがって、予測動作に電圧スケーリングを適用することができ、例えば、電圧スケーリング・コントローラ344は、しきい値検出器310の回路に供給されるロジック供給電圧VDD(動作または基準電圧)のパーセント低減を引き起こす。いくつかの実施形態では、VDDは、典型的な(通常の)電圧動作レベルの30%低減される。低減された電圧により、しきい値検出器310はそれに比例してより遅く動作する、すなわち処理遅延が増大する。この場合、図4Bの処理フロー410に描かれるように、浮動小数点計算のための時間期間(時間遅延)が予測段階によって完全に利用されることも可能である。例えば、データ2についての予測のための処理時間は、遅くなって、データ1についての浮動小数点計算のための処理時間のすべてまたはほとんどを占める。
【0035】
いくつかの実施形態では、予測動作のためのVDDを低減することによって、オーバヘッドは半分に低減され(エネルギー=C*VDD の式により、0.7*0.7=0.49)、この結果、45%のエネルギー節約になる。ディープ・ニューラル・ネットワークは複数の(例えば、50個までの)レイヤからなり、各レイヤは畳込み、オプションのバッチ正規化、およびRelu関数を含むので、このようなエネルギー節約は重要である可能性がある。VDDのスケーリングは、任意の典型的な電圧制御メカニズムを使用してコントローラ344によって適用されることが可能である。
【0036】
図5は、例証的な実施形態による、浮動小数点ドット積計算のためのしきい値検出の方法500を描いている。方法500は、例えば、図3のロジック実装形態300を含むシステムによって実施されることが可能であることを了解されたい。しかし、代替実施形態では、方法500は、方法のステップを実施するように構成された他のシステムによって実施されることも可能である。
【0037】
ステップ502で、第1の浮動小数点値および第2の浮動小数点値の指数部の固定小数点合計の間の差を計算する。
【0038】
ステップ504で、第1の浮動小数点値および第2の浮動小数点値に従ってドット積演算を実施するように構成された浮動小数点計算ユニットによるドット積演算の完了前に、計算された差に基づいて条件の存在を検出する。
【0039】
ステップ506で、条件の存在の検出に応答して、通常ならドット積演算の一部として実施される計算のサブセットの実施を浮動小数点計算ユニットに回避させる。
【0040】
図6は、例証的な実施形態による、人工知能システム600の例示的な実装形態を描いている。図示のように、システム600は、訓練データ・セット610、ニューラル・ネットワーク・モデル620、しきい値検出ロジック630、浮動小数点MACユニット640、および整流化線形ユニット650を備える。図3に描かれ上述された例示的なハードウェア実装形態に関して、加算器312、加算器314、デマルチプレクサ316、レジスタ320、レジスタ322、マルチプレクサ324、XORゲート326、加算器328、比較器330、およびコントローラ344は、しきい値検出ロジック630の一部として実装されることが可能であることを了解されたい。さらに、浮動小数点MACユニット340は、浮動小数点MACユニット640によって実装されることが可能である。またさらに、マルチプレクサ342は、整流化線形ユニット650によって実装されることが可能である。しきい値検出ロジック630、浮動小数点MACユニット640、および整流化線形ユニット650は、訓練データ・セット610に基づくニューラル・ネットワーク・モデル620の訓練中に計算を実施するのに使用されることを理解されたい。
【0041】
例示的な一実施形態では、人工知能システム600のしきい値検出ロジック630、浮動小数点MACユニット640、および整流化線形ユニット650は、1つまたは複数の特定用途向け集積回路(ASIC)によって実装される。ASICは、特定の目的のために実行可能プログラム・コード(例えば、命令コード、コンピュータ・プログラム・コードなど)でプログラムされるかまたは他の方法で構成されるロジック(例えば、回路、プロセッサ、メモリなど)を備える、特定の目的のためにカスタマイズされる集積回路(IC)チップまたはデバイスである。この例示的な場合では、特定の目的は、人工知能システム(例えば、機械学習アルゴリズム)の、およびより具体的には、訓練データ・セット610を使用したニューラル・ネットワーク・モデル620の訓練段階の、実装および実行である。ASICはまた、システム・オン・チップ(SoC)とも考えられる。1つまたは複数の例証的な実施形態と共に使用できるいくつかのASIC実装形態は、ユーザ選択可能な基本的なロジック機能(例えば、切替えや比較などの様々な機能を提供するように複数のVLSIトランジスタ・デバイスで構成されたマルチプレクサや比較器など)のセル・ライブラリを採用して、システムの構成(および再構成)を可能にする。
【0042】
人工知能システム600およびその一部は、1つまたは複数のマルチコア中央処理装置(CPU)、1つまたは複数のグラフィックス・プロセッシング・ユニット(GPU)、および1つまたは複数のフィールド・プログラマブル・ゲート・アレイ(FPGA)を含む技術など、代替的な回路/プロセッサベースの技術において実現されることが可能であることも、さらに了解されたい。いくつかの実施形態では、人工知能システム600は、2つ以上の回路/プロセッサベースの技術(例えば、ASIC、CPU、GPU、FPGAなど)の組合せとして実装されることが可能である。
【0043】
図1~6に描かれた技術はまた、本明細書に記載のように、システムを提供することを含むことができ、このシステムは個別ソフトウェア・モジュールを含み、個別ソフトウェア・モジュールの各々は、有形のコンピュータ可読記録可能記憶媒体に組み入れられる。モジュールのすべて(もしくはその任意のサブセット)が同じ媒体上にあることも可能であり、または、例えば各モジュールが異なる媒体上にあることも可能である。モジュールは、図に示されるかまたは本明細書で記述されるかあるいはその両方である構成要素のいずれかまたはすべてを含むことができる。本発明の一実施形態では、モジュールは、例えば、ハードウェア・プロセッサ上で稼働することができる。この場合、方法ステップは、ハードウェア・プロセッサ上で実行される前述のようなシステムの個別ソフトウェア・モジュールを使用して実施されることが可能である。さらに、コンピュータ・プログラム製品が、システムに個別ソフトウェア・モジュールをプロビジョニングすることを含めた本明細書に記載の少なくとも1つの方法ステップを実施するために実行されるように適応されたコードを有する有形のコンピュータ可読記録可能記憶媒体を含むことができる。
【0044】
加えて、図1~6に描かれた技術は、データ処理システム中のコンピュータ可読記憶媒体に記憶されたコンピュータ使用可能プログラム・コードを含むことが可能なコンピュータ・プログラム製品を介して実装されることが可能であり、コンピュータ使用可能プログラム・コードは、ネットワークを介してリモート・データ処理システムからダウンロードされたものである。また、本発明の一実施形態では、コンピュータ・プログラム製品は、サーバ・データ処理システム中のコンピュータ可読記憶媒体に記憶されたコンピュータ使用可能プログラム・コードを含むことができ、コンピュータ使用可能プログラム・コードは、リモート・システムを用いてコンピュータ可読記憶媒体中で使用されるために、ネットワークを介してリモート・データ処理システムにダウンロードされる。
【0045】
本発明またはその要素の一実施形態は、メモリと、メモリに結合され例示的な方法ステップを実施するように構成された少なくとも1つのプロセッサとを備える装置の形で実装されることが可能である。
【0046】
加えて、本発明の一実施形態は、コンピュータまたはワークステーション上で稼働するソフトウェアを利用することができる。図7を参照すると、このような実装形態は、例えば、プロセッサ702と、メモリ704と、ディスプレイ706およびキーボード708によって例えば形成される入出力インタフェースとを採用し得る。本明細書における用語「プロセッサ」は、例えば、マルチコアCPU、GPU、FPGA、または、1つもしくは複数のASICなど他の形の処理回路、あるいはその組合せを含むものなど、任意の処理デバイスを含むものとする。さらに、用語「プロセッサ」は、1つよりも多い個々のプロセッサを指すこともある。用語「メモリ」は、例えば、RAM(ランダム・アクセス・メモリ)、ROM(読取専用メモリ)、固定メモリ・デバイス(例えば、ハード・ドライブ)、取外し可能メモリ・デバイス(例えば、ディスケット)、フラッシュ・メモリなど、プロセッサ(例えば、CPU、GPU、FPGA、ASICなど)に関連付けられるメモリを含むものとする。加えて、本明細書における文言「入出力インタフェース」は、例えば、データを処理ユニットに入力するためのメカニズム(例えば、マウス)、および、処理ユニットに関連する結果を提供するためのメカニズム(例えば、プリンタ)を含むものとする。プロセッサ702と、メモリ704と、ディスプレイ706やキーボード708などの入出力インタフェースとは、例えばバス710を介して、データ処理ユニット712の一部として相互接続されることが可能である。バス710を例えば介した適切な相互接続はまた、コンピュータ・ネットワークとインタフェースするために提供されることが可能なネットワーク・カードなどのネットワーク・インタフェース714にも提供されることが可能であり、また、メディア718とインタフェースするために提供されることが可能なディスケットやCD-ROMドライブなどのメディア・インタフェース716にも提供されることが可能である。
【0047】
したがって、本明細書に記載のような本発明の方法を実施するための命令またはコードを含むコンピュータ・ソフトウェアが、関連するメモリ・デバイス(例えば、ROM、固定または取外し可能メモリ)に記憶されてよく、利用される準備ができたときに部分的または全体的に(例えば、RAMに)ロードされてCPUによって実装され得る。このようなソフトウェアは、次のものに限定されないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができる。
【0048】
プログラム・コードを記憶するかまたは実行するかあるいはその両方を行うのに適したデータ処理システムが、システム・バス710を通してメモリ要素704に直接または間接的に結合された少なくとも1つのプロセッサ702を備えることになる。メモリ要素は、プログラム・コードの実際の実装中に利用されるローカル・メモリと、バルク・ストレージと、実装中にコードがバルク・ストレージから取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時記憶域を提供するキャッシュ・メモリとを含むことができる。
【0049】
入出力またはI/Oデバイス(次のものに限定されないが、キーボード708、ディスプレイ706、ポインティング・デバイスなどを含む)が、直接に(バス710などを介して)、あるいは介在するI/Oコントローラ(明確にするために省略されている)を通して、システムに結合されることが可能である。
【0050】
介在するプライベートまたはパブリック・ネットワークを通してデータ処理システムが他のデータ処理システムまたはリモートのプリンタもしくは記憶デバイスに結合されるのを可能にするために、ネットワーク・インタフェース714などのネットワーク・アダプタがシステムに結合されてもよい。モデム、ケーブル・モデム、およびイーサネット(R)カードは、現在利用可能なタイプのネットワーク・アダプタのほんの少数である。
【0051】
特許請求の範囲を含めた本明細書において、「サーバ」は、サーバ・プログラムを実行する物理的なデータ処理システム(例えば、図7に示されるシステム712)を含む。このような物理的サーバがディスプレイおよびキーボードを備える場合とそうでない場合とがあることは理解されるであろう。
【0052】
本発明は、任意の可能な技術的詳細の統合レベルにおける、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(1つまたは複数)を含み得る。
【0053】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、次のものに限定されないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードや溝の中の隆起構造など機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書におけるコンピュータ可読記憶媒体は、電波もしくは他の自由伝搬する電磁波、導波路もしくは他の伝送媒体を通して伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、またはワイヤを通して伝送される電気信号など、本質的に一過性の信号であると解釈されるべきではない。
【0054】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされることが可能であり、あるいは、ネットワークを介して、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶されるように転送する。
【0055】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データであり得、または、Smalltalk(R)やC++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語とを含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されるか、一部がユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして実行されるか、一部はユーザのコンピュータ上で実行され一部はリモート・コンピュータ上で実行されるか、または全体がリモート・コンピュータもしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてよく、または、外部コンピュータへの接続が(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)行われてよい。いくつかの実施形態では、プログラム可能ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を例えば含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行して、電子回路を個人化し得る。
【0056】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート例証またはブロック図あるいはその両方を参照しながら記述されている。フローチャート例証またはブロック図あるいはその両方の各ブロック、およびフローチャート例証またはブロック図あるいはその両方の中のブロックの組合せがコンピュータ可読プログラム命令によって実装されることが可能であることは、理解されるであろう。
【0057】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装する手段を生み出すように、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為の態様を実装する命令を含む製造品を構成するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するよう指示することができるコンピュータ可読記憶媒体に記憶され得る。
【0058】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させてコンピュータ実装プロセスを作り出すものであってよい。
【0059】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を例証する。これに関し、フローチャートまたはブロック図中の各ブロックは、命令のモジュール、セグメント、または部分を表すことがあり、これは、指定される論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中に記された機能は、図中に記された順序以外の順序で生じることがある。例えば、連続的に示される2つのブロックが、実際には、同時に実行されるかほぼ同時に実行されるか一部もしくは全部が一時的に重複する方式で実行される1つのステップとして達成されることがあり、または、ブロックは、関係する機能に依って逆の順序で実行されることも時としてある。また、ブロック図またはフローチャート例証あるいはその両方の各ブロック、およびブロック図またはフローチャート例証あるいはその両方におけるブロックの組合せは、指定される機能または行為を実施するかまたは専用ハードウェアおよびコンピュータ命令の組合せを実施する、専用ハードウェアベースのシステムによって実装されることが可能であることにも留意されるであろう。
【0060】
本明細書に記載の方法はいずれも、コンピュータ可読記憶媒体に組み入れられた個別ソフトウェア・モジュールを備えるシステムを提供する追加のステップを含むことができることに留意されたい。モジュールは、例えば、本明細書で詳述される構成要素のいずれかまたはすべてを含むことができる。この場合、方法ステップは、ハードウェア・プロセッサ702上で実行される前述のようなシステムの個別ソフトウェア・モジュールまたはサブモジュールあるいはその両方を使用して実施されることが可能である。さらに、コンピュータ・プログラム製品が、システムに個別ソフトウェア・モジュールをプロビジョニングすることを含めた本明細書に記載の少なくとも1つの方法ステップを実施するために実装されるように適応されたコードを有するコンピュータ可読記憶媒体を含むことができる。
【0061】
いずれの場合でも、本明細書で例証される構成要素は、様々な形のハードウェア、ソフトウェア、またはこれらの組合せにおいて、例えば、特定用途向け集積回路(ASIC)、機能的回路、関連するメモリを備える適切にプログラムされたデジタル・コンピュータなどおいて実装されることを理解されたい。本明細書で提供される本発明の教示が与えられれば、関連技術の当業者なら本発明の構成要素の他の実装形態を企図することができるであろう。
【0062】
本開示はクラウド・コンピューティングに関する詳細な記述を含むが、本明細書で具陳される教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。そうではなく、本発明の実施形態は、現在知られているかまたは後に開発される他の任意のタイプのコンピューティング環境と共に実装されることが可能である。
【0063】
クラウド・コンピューティングは、最小限の管理労力でまたはサービスのプロバイダとの最小限の対話で、迅速にプロビジョニングおよび解放されることが可能な、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの、好都合なオンデマンド・ネットワーク・アクセスを可能にするためのサービス送達モデルである。このクラウド・モデルは、少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとを含み得る。
【0064】
特性は次のとおりである。
【0065】
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人間による対話を必要とすることなく自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング能力を必要に依って単方向的にプロビジョニングすることができる。
【0066】
広範なネットワーク・アクセス:能力は、ネットワークを介して利用可能であり、ヘテロジニアスなシンまたはシック・クライアント・プラットフォーム(例えば、モバイル・フォン、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
【0067】
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数の消費者に役立つようにプールされ、需要に応じて異なる物理および仮想リソースが動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの正確な場所に対してどんな制御も知識も有さないが、より高い抽象化レベルの場所(例えば、国、州、またはデータセンタ)を指定できることがあるという点で、場所自立感がある。
【0068】
迅速な弾力性:能力は、迅速かつ弾力的に、場合によっては自動的にプロビジョニングされて素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。消費者にとっては、プロビジョニングに利用可能な能力はしばしば無限であるように見え、いつでもどんな量でも購入することができる。
【0069】
測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)にとって適切な何らかの抽象化レベルの計量能力を活用することによって、リソース使用を自動的に制御および最適化する。リソース使用は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと消費者との両方にとっての透明性を提供する。
【0070】
サービス・モデルは、次のとおりである。
【0071】
ソフトウェア・アズ・ア・サービス(SaaS):消費者に提供される能力は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インタフェースを通して様々なクライアント・デバイスからアクセス可能である(例えば、ウェブベースの電子メール)。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション能力を含めて、基礎をなすクラウド・インフラストラクチャを管理することや制御することはないが、限られたユーザ特有アプリケーション構成設定については例外である可能性がある。
【0072】
プラットフォーム・アズ・ア・サービス(PaaS):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者によって作成または取得されたアプリケーションを、クラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含めて、基礎をなすクラウド・インフラストラクチャを管理することや制御することはないが、展開されたアプリケーションに対する、および場合によってはアプリケーション・ホスティング環境構成に対する制御を有する。
【0073】
インフラストラクチャ・アズ・ア・サービス(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基礎的なコンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含む可能性のある自由裁量によるソフトウェアを展開および実行することができる。消費者は、基礎をなすクラウド・インフラストラクチャを管理することや制御することはないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御を有し、場合によっては、限られたネットワーキング構成要素(例えば、ホスト・ファイアウォール)に対する限定的な制御を有する。
【0074】
展開モデルは次のとおりである。
【0075】
プライベート・クラウド:クラウド・インフラストラクチャは、もっぱら組織のために運営される。これは、組織または第三者によって管理されることがあり、オンプレミスまたはオフプレミスに存在することがある。
【0076】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有の関心事(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス考慮事項)を有する具体的なコミュニティをサポートする。これは、組織または第三者によって管理されることがあり、オンプレミスまたはオフプレミスに存在することがある。
【0077】
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な産業グループに利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0078】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、2つ以上のクラウドは、固有のエンティティであり続けるが、データおよびアプリケーションの可搬性を可能にする標準化されたまたはプロプラエタリな技術(例えば、クラウド間の負荷均衡化のためのクラウド・バースティング)によってまとめられる。
【0079】
クラウド・コンピューティング環境はサービス指向であり、その焦点は、ステートレス性、低結合、モジュール性、およびセマンティック相互運用性に合わせられる。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0080】
次に図8を参照すると、例証的なクラウド・コンピューティング環境850が描かれている。図示のように、クラウド・コンピューティング環境850は、1つまたは複数のクラウド・コンピューティング・ノード810を含み、これらのノード810により、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、パーソナル・デジタル・アシスタント(PDA)もしくはセルラー電話機854A、デスクトップ・コンピュータ854B、ラップトップ・コンピュータ854C、または自動車コンピュータ・システム854N、あるいはその組合せなどが通信し得る。ノード810は、相互と通信し得る。これらは、前述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組合せなど、1つまたは複数のネットワーク中で、物理的または仮想的にグループ化されることがある(図示せず)。これにより、クラウド・コンピューティング環境850は、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを提供することができる。図8に示されるコンピューティング・デバイス854A~Nのタイプは例証にすぎないものとすること、ならびに、コンピューティング・ノード810およびクラウド・コンピューティング環境850は任意のタイプのネットワークまたは(例えば、ウェブ・ブラウザを使用する)ネットワーク・アドレス指定可能接続あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることが理解される。
【0081】
次に図9を参照すると、クラウド・コンピューティング環境850(図8)によって提供される機能的抽象化レイヤのセットが示されている。図9に示される構成要素、レイヤ、および機能は例証にすぎないものとし、本発明の実施形態はこれに限定されないことを、あらかじめ理解されたい。描かれているように、以下のレイヤおよび対応する機能が提供される。
【0082】
ハードウェアおよびソフトウェア・レイヤ960は、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム961、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ962、サーバ963、ブレード・サーバ964、記憶デバイス965、ならびにネットワークおよびネットワーキング構成要素966を含む。いくつかの実施形態では、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア967およびデータベース・ソフトウェア968を含む。
【0083】
仮想化レイヤ970は抽象化レイヤを提供し、この抽象化レイヤから、仮想エンティティの以下の例が提供され得る。すなわち、仮想サーバ971、仮想ストレージ972、仮想プライベート・ネットワークを含む仮想ネットワーク973、仮想アプリケーションおよびオペレーティング・システム974、ならびに仮想クライアント975である。一例では、管理レイヤ980は、以下に述べる機能を提供し得る。リソース・プロビジョニング981は、クラウド・コンピューティング環境内でタスクを実施するのに利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格設定982は、リソースがクラウド・コンピューティング環境内で利用されるのに伴うコスト追跡と、これらのリソースの消費に対する料金請求または送り状送付とを提供する。
【0084】
一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティが、クラウド消費者およびタスクに対する識別検証、ならびに、データおよび他のリソースの保護を提供する。ユーザ・ポータル983は、クラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス・レベル管理984は、必要とされるサービス・レベルが満たされるようなクラウド・コンピューティング・リソース割振りおよび管理を提供する。サービス・レベル・アグリーメント(SLA)計画および達成985は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前取決めおよび調達を提供する。
【0085】
作業負荷レイヤ990は、クラウド・コンピューティング環境が利用される機能の例を提供する。このレイヤから提供される作業負荷および機能の例は、本発明の1つまたは複数の実施形態による、マッピングおよびナビゲーション991、ソフトウェア開発およびライフサイクル管理992、仮想教室教育送達993、データ分析処理994、トランザクション処理995、ならびに人工知能アルゴリズム(しきい値検出および浮動小数点計算を含む)処理996を含む。
【0086】
本明細書で使用される術語は、特定の実施形態について記述するためのものにすぎず、本発明の限定とはしない。本明細書において、単数形「a」、「an」、および「the」は、コンテキストが明確にそうでないと示さない限り、複数形も含むものとする。さらに、用語「comprises」または「comprising」あるいはその両方は、本明細書で使用されるとき、言明される特徴、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、別の特徴、ステップ、動作、要素、構成要素、またはこれらのグループ、あるいはその組合せの存在または追加を排除しないことも理解されるであろう。
【0087】
本発明の少なくとも1つの実施形態は、例えば、モデル復元ロジックの複雑な手動の(例えばカスタム構築される)開発に取って代わるフレームワーク(例えば、1つまたは複数のフレームワーク構成のセット)など、有益な効果を提供し得る。本明細書で例証的に述べたように、フレームワークは、障害検出構成要素および関連するモデル復元パイプラインのセットを用いて構成およびインスタンス化される。インスタンス化された後は、フレームワークは、ログを入力として使用して所与のライフサイクルにプラグインし、新しいモデル・バージョンのための新しいモデル・アーチファクトを既存のライフサイクル・パイプライン中に送達する。1つまたは複数の例証的な実施形態では、フレームワークは、AIアプリケーションのエンドツーエンド開発およびライフサイクル管理のための、クラウドベースのフレームワークおよびプラットフォームである。
【0088】
本発明の様々な実施形態についての記述を例証のために提示したが、この記述は、網羅的なものとはせず、開示される実施形態に限定されるものともしない。述べた実施形態の範囲を逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される術語は、実施形態の原理、実際上の適用、もしくは市場で見られる技術に勝る技術的改善を最もよく説明するために、または本明細書に開示される実施形態を他の当業者が理解できるようにするために選ばれたものである。
図1A
図1B
図1C
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】