(57)【要約】  再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャを使用するニューラル・ネットワーク処理ハードウェアが提供される。さまざまな実施形態では、ニューラル・ネットワーク・モデルのメモリが、複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合される。各層は、少なくとも１つの次元を含み、複数のシナプスの重みを含む。複数のニューラル・コアが提供される。各ニューラル・コアは、計算ユニットおよび活性化メモリを含む。計算ユニットは、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合される。計算ユニットは、複数のベクトル・ユニットを含む。活性化メモリは、入力活性化および出力活性化を格納するように適合される。システムは、層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割するように適合される。
2021528717.tif 000002
【特許請求の範囲】
【請求項１】
複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合されたニューラル・ネットワーク・モデルのメモリであって、各層が少なくとも１つの次元を含んでおり、複数のシナプスの重みを含んでいる、前記ニューラル・ネットワーク・モデルのメモリと、
複数のニューラル・コアであって、各ニューラル・コアが計算ユニットを備えており、前記計算ユニットが、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合されており、前記計算ユニットが複数のベクトル・ユニットを含んでいる、前記複数のニューラル・コアと、
前記入力活性化および前記出力活性化を格納するように適合された活性化メモリと
を備えているシステムであって、
前記システムが、前記層の次元および前記ベクトル・ユニットに基づいて前記複数のコアを複数のパーティションに分割するように適合されている、
システム。
【請求項２】
前記ニューラル・ネットワーク・モデルのメモリおよび前記複数のコアに動作可能なように結合された少なくとも１つのコントローラをさらに備えており、前記少なくとも１つのコントローラが、前記ニューラル・ネットワーク・モデルの層ごとに、前記複数のコアを構成して前記層を実装し、
前記層の入力活性化を前記複数のコアに提供するように適合されている、
請求項１に記載のシステム。
【請求項３】
前記複数のコアに結合されたネットワークをさらに備えている、請求項２に記載のシステム。
【請求項４】
前記ネットワークを介して入力活性化が前記複数のコアに提供される、請求項３に記載のシステム。
【請求項５】
前記複数のコアを構成することが、前記ネットワークを介してパラメータを前記複数のコアに分配することを含んでいる、請求項３に記載のシステム。
【請求項６】
前記複数のコアを構成することが、前記ネットワークを介して命令を前記複数のコアに分配することをさらに含んでいる、請求項５に記載のシステム。
【請求項７】
層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元に基づいてさらに決定される、請求項１に記載のシステム。
【請求項８】
層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元および特徴の次元に基づいてさらに決定される、請求項１に記載のシステム。
【請求項９】
層ごとの前記複数のパーティションが、前記層の前記出力活性化の空間的次元に基づいてさらに決定される、請求項１に記載のシステム。
【請求項１０】
層ごとの前記複数のパーティションが、前記層の前記出力活性化の空間的次元および特徴の次元に基づいてさらに決定される、請求項１に記載のシステム。
【請求項１１】
層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの１つまたは複数に基づいてさらに決定される、請求項１に記載のシステム。
【請求項１２】
層ごとの前記複数のパーティションが、前記複数のコアの次元によってさらに決定される、請求項１１に記載のシステム。
【請求項１３】
前記複数のパーティションの各々に含まれる前記コアが部分和を計算するように構成されている、請求項１に記載のシステム。
【請求項１４】
関連付けられた層の結果を計算するために前記部分和が集計される、請求項１３に記載のシステム。
【請求項１５】
集計のために、ネットワークを介して前記部分和が送信される、請求項１４に記載のシステム。
【請求項１６】
前記少なくとも１つのコントローラが、層の出力活性化の計算時に、前記出力活性化を前記複数のコアに再分配するようにさら適合される、請求項２に記載のシステム。
【請求項１７】
前記再分配がネットワークを介する、請求項１６に記載のシステム。
【請求項１８】
前記再分配が、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの１つまたは複数に基づいて決定される、請求項１６に記載のシステム。
【請求項１９】
複数の層を含んでいるニューラル・ネットワーク・モデルを読み取ることであって、各層が少なくとも１つの次元を含んでおり、複数のシナプスの重みを含んでいる、前記読み取ることと、
前記ニューラル・ネットワーク・モデルの層ごとに、前記層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割することと、
前記層を実装するように前記複数のコアを構成することと、
前記層の入力活性化を前記複数のコアに提供することと、
前記層に関連付けられた前記シナプスの重みを前記入力活性化に適用して複数の出力活性化を生成することと
を含んでいる方法。
【請求項２０】
各パーティション内の部分和を計算することと、
前記部分和を、各パーティション内の各コアに送信することと、
前記出力活性化を計算するために前記部分和を集計することと
をさらに含んでいる、請求項１９に記載の方法。
【請求項２１】
前記複数のコアを構成することが、ネットワークを介してパラメータを前記複数のコアに分配することを含んでいる、請求項１９に記載の方法。
【請求項２２】
前記複数のコアを構成することが、ネットワークを介して命令を前記複数のコアに分配することを含んでいる、請求項１９に記載の方法。
【請求項２３】
層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの１つまたは複数に基づいてさらに決定される、請求項１９に記載の方法。
【請求項２４】
層ごとの前記複数のパーティションが、前記複数のコアの次元によってさらに決定される、請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ニューラル・ネットワーク処理ハードウェアに関連しており、より詳細には、再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャに関連している。
【発明の概要】
【０００２】
本開示のさまざまな実施形態に従って、並列計算アーキテクチャが提供される。ニューラル・ネットワーク・モデルのメモリは、複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合される。各層は、少なくとも１つの次元を含み、複数のシナプスの重みを含む。複数のニューラル・コアが提供される。各ニューラル・コアは、計算ユニットおよび活性化（activation）メモリを含む。計算ユニットは、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合される。計算ユニットは、複数のベクトル・ユニットを含む。活性化メモリは、入力活性化および出力活性化を格納するように適合される。システムは、層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割するように適合される。
【０００３】
本開示の実施形態に従って、推論プロセッシング・ユニット（ＩＰＵ：Inference Processing Unit）を構成するための方法およびコンピュータ・プログラム製品が提供される。複数の層を含んでいるニューラル・ネットワーク・モデルが読み取られる。各層は、少なくとも１つの次元を含み、複数のシナプスの重みを含む。ニューラル・ネットワーク・モデルの層ごとに、層の次元およびベクトル・ユニットに基づいて複数のコアが複数のパーティションに分割され、複数のコアが、層を実装するように構成され、層の入力活性化が複数のコアに提供され、層に関連付けられたシナプスの重みが入力活性化に適用されて、複数の出力活性化を生成する。
【図面の簡単な説明】
【０００４】
【図１Ａ】単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。
【図１Ｂ】単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。
【図１Ｃ】単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。
【図１Ｄ】単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。
【図２Ａ】本開示の実施形態に従って、マルチコア推論プロセッシング・ユニット（ＩＰＵ）を示す図である。
【図２Ｂ】本開示の実施形態に従って、推論プロセッシング・ユニット（ＩＰＵ）のコア内の中心的計算要素を示す図である。
【図３】本開示の実施形態に従って、例示的なテンソル・マッピングを示す図である。
【図４】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図５】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図６】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図７】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図８】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図９】本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。
【図１０】本開示の実施形態に従って、コア間で渡される部分和を示す図である。
【図１１Ａ】本開示の実施形態に従って、パラメータ分配を示す図である。
【図１１Ｂ】本開示の実施形態に従って、パラメータ分配を示す図である。
【図１２】本開示の実施形態に従って、コアの動作を示す、パイプライン化されたタイミング図である。
【図１３】本開示の実施形態に従って、データの入れ替えを示す、パイプライン化されたタイミング図である。
【図１４】本開示の実施形態に従って、入れ替え動作を示す図である。
【図１５】本開示の実施形態に従って、別の入れ替え動作を示す図である。
【図１６】本開示の実施形態に従って、別の入れ替え動作を示す図である。
【図１７】本開示に従って、並列計算の利用のためのデータの入れ替えを示す図である。
【図１８】本開示の実施形態に従って、推論プロセッシング・ユニット（ＩＰＵ）を構成する方法を示す図である。
【図１９】本発明の実施形態に従って、コンピューティング・ノードを示す図である。
【発明を実施するための形態】
【０００５】
人工ニューロンは、入力の線形結合の非線形関数である出力を有する数学関数である。１つのニューロンの出力が他のニューロンへの入力である場合、２つのニューロンが接続される。重みは、１つのニューロンの出力と別のニューロンの入力の間の接続の強さをエンコードするスカラー値である。
【０００６】
ニューロンは、非線形活性化関数を入力の加重和に適用することによって、活性化と呼ばれる出力を計算する。加重和は、各入力に、対応する重みを掛け、それらの積を累算することによって計算される中間結果である。部分和は、入力のサブセットの加重和である。すべての入力の加重和は、１つまたは複数の部分和を累算することによって段階的に計算されてよい。
【０００７】
ニューラル・ネットワークは、１つまたは複数のニューロンの集合である。ニューラル・ネットワークは、多くの場合、層と呼ばれるニューロンのグループに分割される。層は、１つまたは複数のニューロンの集合であり、それらのニューロンは、すべて同じ層から入力を受信し、すべて出力を同じ層に送信し、通常、類似する機能を実行する。入力層は、ニューラル・ネットワーク外のソースから入力を受信する層である。出力層は、ニューラル・ネットワーク外のターゲットに出力を送信する層である。他のすべての層は、中間処理層である。多層ニューラル・ネットワークは、２つ以上の層を含むニューラル・ネットワークである。深層ニューラル・ネットワークは、多くの層を含む多層ニューラル・ネットワークである。
【０００８】
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソル内の要素の連続的部分配列である。
【０００９】
各ニューラル・ネットワークは、パラメータ・テンソルＶ、重みテンソルＷ、入力データ・テンソルＸ、出力データ・テンソルＹ、および中間データ・テンソルＺに関連付けられる。パラメータ・テンソルは、層内のニューロン活性化関数σを制御するパラメータのすべてを含む。重みテンソルは、入力を層に接続する重みのすべてを含む。入力データ・テンソルは、層が入力として消費するデータのすべてを含む。出力データ・テンソルは、層が出力として計算するデータのすべてを含む。中間データ・テンソルは、層が部分和などの中間計算として生成するすべてのデータを含む。
【００１０】
層のデータ・テンソル（入力、出力、および中間）は、３次元であってよく、最初の２つの次元が空間的位置をエンコードしているとして解釈されてよく、第３の次元がさまざまな特徴をエンコードしているとして解釈されてよい。例えば、データ・テンソルがカラー画像を表す場合、最初の２つの次元が画像内の垂直座標および水平座標をエンコードし、第３の次元が、各位置での色をエンコードする。入力データ・テンソルＸのすべての要素を、個別の重みによってすべてのニューロンに接続することができ、そのため重みテンソルＷは、通常、入力データ・テンソル（入力行ａ、入力列ｂ、入力特徴ｃ）の３つの次元を出力データ・テンソル（出力行ｉ、出力列ｊ、出力特徴ｋ）の３つの次元と連結する６つの次元を有する。中間データ・テンソルＺは、出力データ・テンソルＹと同じ形状を有する。パラメータ・テンソルＶは、出力データ・テンソルの３つの次元を、活性化関数σのパラメータにインデックスを付ける追加の次元ｏと連結する。
【００１１】
層の出力データ・テンソルＹの要素は、方程式１として計算することができ、ニューロン活性化関数σが活性化関数パラメータＶ［ｉ，ｊ，ｋ，：］のベクトルによって構成され、加重和Ｚ［ｉ，ｊ，ｋ］が方程式２として計算され得る。
Ｙ［ｉ，ｊ，ｋ］＝σ（Ｖ［ｉ，ｊ，ｋ，：］；Ｚ［ｉ，ｊ，ｋ］）
方程式１
【００１２】
【数１】
2021528717.tif 000003
【００１３】
表記を簡単にするために、方程式２における加重和は、出力と呼ばれてよく、異なる活性化関数が使用される場合に一般性を失わずに同じ記述が当てはまるということを理解して、線形活性化関数Ｙ［ｉ，ｊ，ｋ］＝σ（Ｚ［ｉ，ｊ，ｋ］）＝Ｚ［ｉ，ｊ，ｋ］を使用することと同等である。
【００１４】
さまざまな実施形態では、前述したように、出力データ・テンソルの計算がより小さい問題に分解される。次に各問題が、１つまたは複数のニューラル・コア、または従来のマルチコア・システムの１つまたは複数のコアに関して並列に解かれてよい。
【００１５】
ニューラル・ネットワーク・モデルは、ニューラル・ネットワークによって実行される計算全体を集合的に指定する定数のセットであり、ニューロン間の接続のグラフに加えて、すべてのニューロンの重みおよび活性化関数パラメータを含んでいる。トレーニングは、望ましい機能を実行するようにニューラル・ネットワーク・モデルを変更するプロセスである。推論は、ニューラル・ネットワーク・モデルを変更せずに、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
【００１６】
推論プロセッシング・ユニットは、ニューラル・ネットワークの推論を実行するプロセッサのカテゴリである。ニューラル推論チップ（neural inference chip）は、推論プロセッシング・ユニットの特定の物理的例である。
【００１７】
前述したように、超並列計算アーキテクチャは、従来の連続的な計算アーキテクチャよりも実行を大幅に高速化する可能性を有している。しかし、実際の高速化は、実際のデータおよびアルゴリズムにおける並列性の存在、ならびに並列アーキテクチャへのデータおよびアルゴリズムのマッピングの効率によって制限される。ニューラル・ネットワークは、通常、並列性に適しており、空間および特徴の次元を含む多くの次元に沿って、活性化および重みデータの両方に豊富な並列性が存在する。しかし、並列度および並列性の最も効率的な種類は、個々のネットワークに応じて変化し、特定のネットワーク内でも変化する。例えば、層間で異なる次元が存在することがある。したがって、固定されたサイズ（例えば、固定された配列サイズ、固定されたベクトル幅、固定された数の並列計算ユニット）および構成を有する並列アーキテクチャは、データまたはアルゴリズムあるいはその両方において使用可能な並列性をすべて利用することが困難である。
【００１８】
ネットワークの次元の変形を示すために、表１は、さまざまな例示的なネットワークの層の次元（高さ×幅×特徴）を含んでいる。（同じデータセットに対して同じ分類問題を解いているため）同じ次元を有する入力層および最後の層を含んでいるにもかかわらず、実装間には、ネットワークの層のサイズの広い分散が存在する（すべての層が示されているのではない）。ネットワーク内で、層の形状が第１の層から最後の層に変化しているということが、理解されるであろう。初期の層は、通常、大きい空間的次元（高さ、幅）を有しており、一方、後期の層は、大きい特徴の次元を有している。
【００１９】
【表１】
2021528717.tif 000004
【００２０】
図１Ａ〜Ｄを参照すると、単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成が示されている。図１Ａでは、１６のコア並列性（core parallelism）を使用してプロセッサ１００が構成されており、つまり、１６個のコア（例えば、１０１）の各々が並列に実行されている。ベクトル並列性は２であり、つまり、各コアが２つの入力ベクトル（例えば、１０２）を並列に処理する。図１Ｂでは、８のコア並列性を使用してプロセッサ１００が構成されており、ベクトル並列性は４である。図１Ｃでは、４のコア並列性を使用してプロセッサ１００が構成されており、ベクトル並列性は８である。図１Ｄでは、２のコア並列性を使用してプロセッサ１００が構成されており、ベクトル並列性は１６である。本開示は、首尾一貫してデータを分割して各コアに割り当てる方法、異なる有効なベクトル幅を有するベクトル演算ユニットを作成する方法、データを異なる幅のベクトル・ユニットに首尾一貫して送信する方法、およびプロセッサを異なるモードに再構成する方法に対処することによって、そのような構成を可能にする。
【００２１】
図２Ａを参照すると、本開示の実施形態に従って、マルチコア推論プロセッシング・ユニット（ＩＰＵ）が示されている。ＩＰＵ２００は、ニューラル・ネットワーク・モデルのモデル・メモリ２０１を含んでいる。前述したように、ニューラル・ネットワーク・モデルは、ニューラル・ネットワークを計算するためのシナプスの重みを含んでよい。一部の実施形態では、モデル・メモリ２０１は、１つまたは複数の物理メモリを含んでおり、これらの物理メモリがシナプスの重み２１１および命令２１２に別々に割り当てられてよい。ＩＰＵ２００は、一過性であってよい活性化メモリ２０２を含んでいる。活性化メモリ２０２は、入力領域および出力領域に分割されてよく、処理するためのニューロン活性化を格納する。
【００２２】
ＩＰＵ２００は、ニューラル・コア２０３の配列２０６を含んでいる。各コア２０３は、モデル・メモリ２０１からニューラル・ネットワーク・モデルと共に読み込まれ、ベクトル計算を実行するよう機能する計算ユニット２３３を含んでいる。各コアは、ローカル活性化メモリ２３２も含んでいる。入力活性化は、各計算ステップの前に、ローカル活性化メモリ２３２から提供される。同じまたは別の計算ユニットで処理するために、計算ユニット２３３からの出力が活性化メモリ２３２に書き戻される。
【００２３】
ＩＰＵ２００は、１つまたは複数のネットワークオンチップ（ＮｏＣ：network-on-chip）２０５を含んでいる。一部の実施形態では、部分和ＮｏＣ２５１が、コア２０３を相互接続し、コア間で部分和を搬送する。一部の実施形態では、重みおよび命令をコア２０３に分配するために、個別のパラメータ分配ＮｏＣ２５２がコア２０３をメモリ２０１に接続する。ＮｏＣ２５１および２５２のさまざまな構成が、本開示に従って使用するのに適しているということが理解されるであろう。例えば、ブロードキャスト・ネットワーク、列ブロードキャスト・ネットワーク（row broadcast networks）、ツリー・ネットワーク、および交換ネットワークが使用されてよい。
【００２４】
さまざまな実施形態では、グローバル・スケジューラ（チップ・マイクロエンジン（chip microengine））２０４がＩＰＵ２００に含まれている。さまざまな実施形態では、ローカル・コア・コントローラ（local core controller）（コア・マイクロエンジン（core microengine））２３４が各コア２０３に含まれている。そのような実施形態では、グローバル・スケジューラ（チップ・マイクロエンジン）とローカル・コア・コントローラ（コア・マイクロエンジン）の間で動作の指示が共有される。例えば、グローバル・スケジューラ２０４によって、各コア２０３上で、計算命令がモデル・メモリ２０１から計算ユニット２３３に読み込まれてよい。グローバル・スケジューラ２０４によって、各コア２０３上で、パラメータ（例えば、ニューラル・ネットワーク／シナプスの重み）がモデル・メモリ２０１から計算ユニット２３３に読み込まれてよい。ローカル・コア・コントローラ２３４によって、各コア２０３上で、ニューラル・ネットワーク活性化データがローカル活性化メモリ２３２から計算ユニット２３３に読み込まれてよい。前述したように、活性化は、モデルによって定義された特定のニューラル・ネットワークの軸索に提供され、同じまたは別の計算ユニットから生じるか、あるいはシステムの外部から生じてよい。
【００２５】
計算ユニット２３３は、ローカル・コア・コントローラ２３４による指示に従って、出力ニューロン活性化を生成するための計算を実行する。特に、この計算は、入力されたシナプスの重みを入力活性化に適用することを含む。そのような計算を実行するために、コンピュータ内の樹状突起およびベクトル乗算ユニットを含むさまざまな方法が使用可能であるということが、理解されるであろう。計算の結果が、ローカル・コア・コントローラ２３４による指示に従って、ローカル活性化メモリ２３２に格納される。これらの段階は、各コアでの計算ユニットの効率的な使用を実現するために、パイプライン化されてよい。特定のニューラル・ネットワークの要件に従って、入力および出力がローカル活性化メモリ２３２からグローバル活性化メモリ２０２に転送されてよいということも、理解されるであろう。
【００２６】
図２Ｂを参照すると、１×Ｍの出力テンソル・ブロック２６１を計算するために、ニューラル・コアが、１×Ｎの入力活性化ブロック２６２にＮ×Ｍの重みブロック２６３を掛ける。ベクトル行列乗算ユニット２６４が、乗算を実行し、得られた積を１×Ｎのベクトル演算ユニット２６５に渡す。次に、演算２６５の結果がＭ個のニューロン活性化関数２６６に提供され、１×Ｍの出力テンソル・ブロック２６１を生成する。
【００２７】
例示の目的で、ＩＰＵ２００は、Ｎ×Ｍの並列ベクトルまたは行列計算要素をそれぞれ含んでいる、Ａ×Ｂの並列コアの配列を含んでよい。
【００２８】
各コアは、ベクトル行列乗算Ｚ＝ＸＷを計算し、Ｘは入力データ行ベクトル［１×Ｎ］、Ｗは重み行列［Ｎ×Ｍ」、Ｚは出力データ行ベクトル［１×Ｍ］である。各コアは、活性化関数Ｙ＝ｆ（Ｚ）を行列乗算の出力に適用し、Ｙは出力データ行ベクトル［１×Ｍ］であり、ｆ（・）は線形または非線形関数である。これによって、単一のニューロンの動作を作り出す。ニューラル・ネットワークの推論の場合、多くのニューロンおよびニューロンの多くの層にわたって、この動作が繰り返され、それぞれ、異なるデータＸ、および場合によっては、異なるパラメータＷに対して動作する。
【００２９】
本明細書においてさらに示されるように、本開示は、そのようなコアの並列性の利用を提供する。特に、コアとベクトルの両方の並列性が提供される。一般に、複数のコアにわたって分散することによって、データレベルまたはスレッドレベルの並列性に対応しながら、複数のベクトル・ユニットにわたって分散することによって、動作レベルの並列性に対応する。本開示は、どの時間でも、ほぼすべてのコアが計算しており（非アイドル）、ほぼすべてのベクトル・ユニットが計算している（非アイドル）ように、このマッピングを最大化できるようにする。
【００３０】
例示的な構成では、空間および特徴の次元にわたって、ニューラル推論データの並列性が提供される。複数のコアにわたって分散することによって空間的並列性が提供されると同時に、複数のベクトル・ユニットにわたって分散することによって特徴の並列性が提供されるというように、データ並列性がアーキテクチャの並列性にマッピングされてよい。
【００３１】
さまざまな実施形態では、コアレベルの並列性およびベクトルレベルの並列性が再構成可能である並列計算アーキテクチャが提供される。特に、この計算アーキテクチャは、ニューラル・ネットワークの推論に適用されてよい。ベクトルレベルの並列性に関して、さまざまな例が述べられる。しかし、本明細書において提供される開示が、行列レベルの並列性、またはさらに一般的には、並列演算ユニットまたは並列論理計算ユニットあるいはその両方を含む動作レベルの並列性に適用可能であるということが、理解されるであろう。
【００３２】
本明細書において示されているように、コア配列およびコア計算要素（core compute elements）の効率的利用を維持しながら、（異なる空間および特徴の次元を有する）異なるサイズのテンソルが同じコア配列にマッピングされる。データが、構成可能な粒度で各コアに分割される（コアレベルの並列性に対応する）。さまざまな構成で、データの空間的並列性がコア並列性にマッピングされ、データの特徴の並列性がベクトル並列性にマッピングされる。そのような構成は、ネットワーク内の初期の層に特に適していることがある。一部の構成では、空間的並列性および特徴の並列性がコア並列性にマッピングされ、特徴の並列性がベクトル並列性にマッピングされる。そのような構成は、ネットワーク内の後期の層に特に適していることがある。さまざまな実施形態では、データを各コアに分配するために、ＮｏＣが使用される。
【００３３】
下の表２に要約されているように、空間的並列性とコア並列性の間の関係および特徴の並列性とベクトル並列性の間の関係に応じて、異なる並列化戦略が使用可能である。標準的な初期の層では、特徴の並列性がベクトル並列性以下であり、空間的並列性がコア並列性より大きい。標準的な中間層では、特徴の並列性がベクトル並列性以上であり、空間的並列性がコア並列性以上である。標準的な後期の層では、特徴の並列性がベクトル並列性より大きく、空間的並列性がコア並列性より小さい。特徴の並列性がベクトル並列性に等しく、空間的並列性がコア並列性に等しい場合、特定のテンソルから特定の物理的コア配列への固有の１：１マッピングが存在するということが、理解されるであろう。
【００３４】
【表２】
2021528717.tif 000005
【００３５】
図３を参照すると、本開示の実施形態に従って、例示的なテンソル・マッピングが示されている。並列コア配列３０１は、それぞれＮ≧１のベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル３０２は、空間的並列性Ｒ×Ｃ＝１６、およびＦ＝Ｎの特徴の並列性を有している。したがって、Ａ＝Ｒ、Ｂ＝Ｃ、およびＮ＝Ｆである。コア配列３０１は、それぞれ１つのコアを含んでいる１６個の島３０３に分割されてよい。次に、活性化テンソルの１×１×１の空間的スライスが、各島にマッピングされてよい。
【００３６】
図４を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列４０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル４０２は、空間的並列性Ｒ×Ｃ＝６４、およびＦ＝Ｎの特徴の並列性を有している。したがって、Ａ＜Ｒ、Ｂ＜Ｃ、およびＮ＝Ｆである。コア配列４０１は、それぞれ１つのコアを含んでいる１６個の島４０３に分割されてよい。次に、活性化テンソルの２×２×１の空間的スライスが、各島にマッピングされてよい。
【００３７】
図５を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列５０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル５０２は、空間的並列性Ｒ×Ｃ＝６４、およびＦ＝４Ｎの特徴の並列性を有している。したがって、Ａ＜Ｒ、Ｂ＜Ｃ、およびＮ＜Ｆである。コア配列５０１は、それぞれ１つのコアを含んでいる１６個の島５０３に分割されてよい。次に、活性化テンソルの２×２×４Ｎのスライスが、各島にマッピングされてよい。
【００３８】
図６を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列６０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル６０２は、空間的次元Ｒ×Ｃ＝４、およびＦ＝４Ｎの特徴の並列性を有している。したがって、Ａ＞Ｒ、Ｂ＞Ｃ、およびＮ＜Ｆである。コア配列６０１は、それぞれ４つのコアを含んでいる４個の島６０３に分割されてよい。この例では、コアの配列内の島は正方形である。次に、活性化テンソルの１×１×４Ｎのスライスが各島にマッピングされてよく、島内の各コアが１×１×Ｎのサブスライスを受信する。
【００３９】
図７を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列７０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル７０２は、空間的次元Ｒ×Ｃ＝４、およびＦ＝４Ｎの特徴の並列性を有している。したがって、Ａ＞Ｒ、Ｂ＞Ｃ、およびＮ＜Ｆである。コア配列７０１は、それぞれ４つのコアを含んでいる４個の島７０３に分割されてよい。この例では、コアの配列内の島は、それぞれ一列に広がる。次に、活性化テンソルの１×１×４Ｎのスライスが各島にマッピングされてよく、島内の各コアが１×１×Ｎのサブスライスを受信する。
【００４０】
図８を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列８０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル８０２は、空間的次元Ｒ×Ｃ＝１、およびＦ＝１６Ｎの特徴の並列性を有している。したがって、Ａ＞Ｒ、Ｂ＞Ｃ、およびＮ＜Ｆである。コア配列８０１は、１６個のコアを含んでいる１つの島８０３に分割されてよい。次に、活性化テンソルの１×１×１のスライスが、島内の各コアにマッピングされてよい。
【００４１】
図９を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列９０１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。活性化テンソル９０２は、空間的次元Ｒ×Ｃ＝６４、およびＦ＝Ｎ／４の特徴の並列性を有している。したがって、２Ａ＝Ｒ、２Ｂ＝Ｃ、およびＮ＝４Ｆである。コア配列９０１は、それぞれ１つのコアを含んでいる１６個の島９０３に分割されてよい。次に、活性化テンソルの２×２×Ｆのスライスが、各島にマッピングされてよい。コアがＮのベクトル並列性を有しているため、活性化テンソルの２×２×Ｆのスライスが、コアのベクトル・ユニットによって単一のサイクルで計算されてよく、完全なベクトル・ユニットの利用を維持する。
【００４２】
上記の分割が例示であり、他の次元および分割方式が本開示の範囲に含まれるということが、理解されるであろう。
【００４３】
上記から理解されるように、コア配列およびコア計算要素の効率的利用を維持しながら、（異なる空間および特徴の次元を有する）異なるサイズのテンソルが同じコア配列にマッピングされてよい。使用可能な空間的並列性および特徴の並列性がコア並列性およびベクトル並列性以上である特定のパーティションでは、１つの島が１つのコアを含む。使用可能な特徴の並列性がベクトル並列性より大きく、使用可能な空間的並列性がコア並列性より小さい特定のパーティションでは、１つの島が２つ以上のコアを含む。
【００４４】
使用可能な空間的並列性がコア並列性より大きく、使用可能な特徴の並列性がベクトル並列性より小さい特定のパーティションでは、空間的並列性を増やすために、過剰な特徴の並列性を使用してコアがさらに分割される。再分割は、コア内の大きいベクトル・ユニットを複数のより小さいベクトル・ユニットに分割することによって実行される。例えば、１つの６４の幅のベクトル・ユニットは、２つの３２の幅のベクトル・ユニットまたは４つの１６の幅のベクトル・ユニットとして動作することもできる。（ニューラル推論ユニット内の）大きい合計ツリーの場合、ツリー内の合計の最終的なレベルの前に、結果が選択される。
【００４５】
図１０を参照すると、本開示の実施形態に従って、コア間で渡される部分和が示されている。並列コア配列１００１は、それぞれＮのベクトル並列性を有しているＡ×Ｂ＝１６個の並列コアを含んでいる。各島１００２はベクトル行列乗算Ｚ＝ＸＷを計算し、ＸおよびＷは、部分ベクトルＸ＝［Ｘ１，Ｘ２，Ｘ３，Ｘ４］および部分行列Ｗ＝［Ｗ１，Ｗ２，Ｗ２，Ｗ４］Ｔに分解され得る。島内のコアは、部分和Ｚ１＝Ｘ１Ｗ１、Ｚ２＝Ｘ２Ｗ２、Ｚ３＝Ｘ３Ｗ３、およびＺ４＝Ｘ４Ｗ４を計算する。島内のコア間で部分和を伝達し、部分和を合計して最終結果Ｚ＝Ｚ１＋Ｚ２＋Ｚ３＋Ｚ４に到達することによって、最終結果が取得される。一部の実施形態では、最終的な合計のために、すべての部分和が単一のコアに送信される。一部の実施形態では、ネットワークオンチップを介して部分和が送信される。このようにして部分和を実行することによって、全体的効率を最適化するように、効果的なベクトル・サイズが構成されてよい。
【００４６】
一部の実施形態では、ベクトル行列部分乗算、部分和の伝達、および部分和の累算が、完全にパイプライン化される。このようにして、島全体が、１つのベクトル行列演算のように見える。
【００４７】
図１１Ａ〜Ｂを参照すると、本開示の実施形態に従って、パラメータ分配が示されている。図１１Ａでは、コア配列１１０１が、それぞれ１つのコアを含んでいる１６個の島１１０２に分割されている。図１１Ｂでは、コア配列１１０１が、それぞれ４つのコアを含んでいる４つの島１１０３に分割されている。これらの異なる構成の場合、異なるパラメータ（重みおよび命令）が各コアで必要になる。特に、さまざまなニューラル・ネットワークでは、島が同じパラメータを必要とし、一方、島内のコアが異なるパラメータを必要とする。ＮｏＣ１１０４は、並列性の構成に従ってこれらのパラメータを分配し、それによって、並列計算を各コアに割り当てる。
【００４８】
図１２を参照すると、本開示の実施形態に従ってコアの動作を示す、パイプライン化されたタイミング図が示されている。１２０１で、計算命令がニューラル計算ユニット（neural computation unit）に読み込まれる。１２０２で、パラメータ（ニューラル・ネットワークの重みを含む）がニューラル計算ユニットに読み込まれる。１２０３で、オペランドがニューラル計算ユニットに読み込まれる。１２０４で、ベクトル行列乗算が実行される。１２０５で、部分和が伝達される。１２０６で、部分和が累算される。１２０７で、活性化関数が計算される。１２０８で、結果が格納される。各フェーズ１２１１〜１２１４は、異なる動作である。それに応じて、各動作は独立した並列性の構成を有することができる。
【００４９】
一部の実施形態ではチップ・マイクロエンジン（２０４）によって分配される命令が、各コアによって実行される動作（演算、データ・アドレス指定、部分和の伝達など）を決定する。これらの命令は、すべてのコアに全体的に渡されてよく、またはコアごとに特定の命令を使用して、各コアに個別に渡されてもよい。後者の場合、各コアは、現在のデータを使用して何を実行する必要があるか、コアに渡される部分和、および入れ替え動作のみを知る必要がある。コアは、構成についての全体的な知識を必要としない。動作のフェーズごとに新しい命令が渡されてよく、このようにして、動作の各フェーズでコア並列性の構成が変更されてよい。パイプライン化されたコアの場合、現在の並列性の構成が、パイプラインを通じて各フェーズで一貫して保たれ、重複する（パイプライン化された）動作を可能にする。
【００５０】
したがって、さまざまな実施形態では、システム内の並列性が実行中に動的に再構成可能である。一部の実施形態では、計算アーキテクチャを再構成するために、命令が使用される。一部の実施形態では、計算アーキテクチャの複数の部分を再構成するために、複数の命令が使用される。
【００５１】
図１３を参照すると、本開示の実施形態に従ってデータの入れ替えを示す、パイプライン化されたタイミング図が示されている。１３０１で、計算命令がニューラル計算ユニットに読み込まれる。１３０２で、パラメータ（ニューラル・ネットワークの重みを含む）がニューラル計算ユニットに読み込まれる。１３０３で、オペランドがニューラル計算ユニットに読み込まれる。１３０４で、ベクトル行列乗算が実行される。１３０５で、部分和が伝達される。１３０６で、部分和が累算される。１３０７で、活性化関数が計算される。１３０８で、結果が格納される。１３０９で、データが入れ替えられる。データ入れ替えフェーズは、計算動作フェーズ間で発生する。各フェーズ１２１１〜１２１４は、異なる動作である。
【００５２】
動作の終了時に、活性化データＸが適切なコア内にない場合、その活性化データを、例えばＮｏＣを介して、別のコアに伝達することが必要になることがある。この動作は、データの入れ替えと呼ばれることがあり、計算動作フェーズ間の追加フェーズとして発生する。並列性の構成を切り替えるときに、入れ替えが必要になることがある。さまざまな実施形態では、コアレベル（コア・マイクロコード）の命令を使用してデータ入れ替え動作が実行される。例えば、そのような命令は、コア＜ｃｏｒｅ＿ａｄｄｒ＞上で、アドレス＜ｒｄ＿ａｄｄｒ＞にある長さ＜ｂｌｏｃｋ＿ｌｅｎｇｔｈ＞のデータ・ブロックを読み取ること、およびデータ・ブロックをアドレス＜ｗｒ＿ａｄｄｒ＞に書き込むことを含んでよい。
【００５３】
したがって、システムの並列性の構成における変更のために、データが入れ替えられてよい。一部の実施形態では、ＮｏＣを経由して入れ替えが実行される。一部の実施形態では、命令を介してデータの入れ替えが開始される。
【００５４】
図１４を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル１４０１が、コア配列１４０２に提供される。出力活性化結果１４０３が生成される。入れ替えフェーズで、出力活性化結果がＮｏＣを介してコア間で伝達される。一部の実施形態では、入れ替え動作は明示的である。それによって、図示されているように、出力活性化結果が各コアに分配される。
【００５５】
図１５を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル１５０１が、コア配列１５０２に提供される。部分和１５０３が生成され、伝達される。次の層の島内の各コアが、異なるブロックの部分和を累算する。このようにして、ＮｏＣを介して出力活性化結果を送信することなく、累算された最終結果が最終的に異なるコアに行く。
【００５６】
図１６を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル１６０１が、コア配列１６０２に提供される。出力活性化結果１６０３が生成される。次の層の島内の各コアで、完全な出力テンソル結果が計算される。次の層では、必要なデータのみが処理される。
【００５７】
図１７を参照すると、本開示に従って、並列計算の利用のためのデータの入れ替えが示されている。例示的なニューラル・ネットワーク内の層Ｌは、次元Ｒ×Ｃ×Ｆ＝４×４×１を有する活性化テンソル１７０１を含んでいる。コア配列１７０２は、次元Ａ×Ｂ＝４×４を含んでいる。したがってテンソル１７０１は、必然的に、４×４＝１６個の島を含むように構成されたコア配列１７０２にマッピングされる。層Ｌ＋１は、次元Ｒ×Ｃ×Ｆ＝２×２×４の活性化テンソル１７０３を含んでいる。データの入れ替えがない場合、テンソル１７０３は、（１７０４に示されているように）２×２＝４個のコアのみを占有する。しかし、データの入れ替えがある場合、コア配列１７０２が、それぞれ４つのコアを含んでいる４つの島に分割されてよい。その場合、テンソル１７０３が４つの島にマッピングされてよく、その結果、（１７０５に示されているように）１００％のコア利用率が得られる。
【００５８】
ニューラル・ネットワークの異なる層を介して推論を実行する過程において、活性化データの構造が、より大きい空間的並列性からより大きい特徴の並列性に必然的に変わる。データが入れ替えられない場合、空間的並列性がコアレベルの並列性を下回るため、並列コアの利用率（並列に計算しているコアの数）が下がる。空間的並列性と特徴の並列性の両方をコアレベルの並列性にマッピングできるように入れ替えることによって、すべてのコアの完全な利用が維持され得る。
【００５９】
したがって、本開示は、コアレベルの並列性とベクトルレベルの並列性の間でデータを入れ替えることによって、並列コア配列および計算要素の利用の改善を可能にする。さまざまな実施形態では、データの入れ替えは、空間的並列性と特徴の並列性の間で提供され、コアレベルの並列性およびベクトルレベルの並列性にそれぞれマッピングされる。
【００６０】
ここで図１８を参照すると、本開示の実施形態に従って、推論プロセッシング・ユニット（ＩＰＵ）を構成する方法が示されている。１８０１で、複数の層を含んでいるニューラル・ネットワーク・モデルが読み取られる。各層は、少なくとも１つの次元を含み、複数のシナプスの重みを含む。ニューラル・ネットワーク・モデルの層ごとに、１８０２で、層の次元およびベクトル・ユニットに基づいて複数のコアが複数のパーティションに分割され、１８０３で、複数のコアが、層を実装するように構成され、１８０４で、層の入力活性化が複数のコアに提供され、１８０５で、層に関連付けられたシナプスの重みが入力活性化に適用されて、複数の出力活性化を生成する。
【００６１】
ここで図１９を参照すると、コンピューティング・ノードの例の概略図が示されている。コンピューティング・ノード１０は、適切なコンピューティング・ノードの一例に過ぎず、本明細書に記載された実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、コンピューティング・ノード１０は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【００６２】
コンピューティング・ノード１０内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム／サーバ１２が存在する。コンピュータ・システム／サーバ１２での使用に適した既知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００６３】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム／サーバ１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【００６４】
図１９に示すように、コンピューティング・ノード１０内のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含むさまざまなシステム・コンポーネントをプロセッサ１６に接続するバス１８を含んでよいが、これらに限定されない。
【００６５】
バス１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、MCA（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、ＰＣＩ（Peripheral Component Interconnect）バス、ＰＣＩｅ（Peripheral Component Interconnect Express）、およびＡＭＢＡ（Advanced Microcontroller Bus Architecture）を含むが、これらに限定されない。
【００６６】
コンピュータ・システム／サーバ１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【００６７】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス１８に接続することができる。下で詳細に示され、説明されているように、メモリ２８は、本開示の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを含んでいる少なくとも１つのプログラム製品を含んでよい。
【００６８】
例えば、一連の（少なくとも１つの）プログラム・モジュール４２を含んでいるプログラム／ユーティリティ４０がメモリ２８に格納されてよいが、これに限定されず、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール４２は、通常、本明細書に記載された実施形態の機能または方法あるいはその両方を実行する。
【００６９】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信してもよい。そのような通信は、入出力（Ｉ／Ｏ：Input/Output）インターフェイス２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（WAN：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図示されているように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ１２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００７０】
さまざまな実施形態では、１つまたは複数の推論プロセッシング・ユニット（図示されていない）がバス１８に結合される。そのような実施形態では、ＩＰＵがバス１８を介してメモリ２８からデータを受信するか、またはデータをメモリ２８に書き込んでよい。同様に、ＩＰＵは、本明細書において説明されているように、バス１８を介して他のコンポーネントと情報をやりとりしてよい。
【００７１】
本開示は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせを含んでよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【００７２】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー（Ｒ）・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００７３】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【００７４】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続を、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行うことができる。一部の実施形態では、本開示の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズするためのコンピュータ可読プログラム命令を実行してよい。
【００７５】
本開示の態様は、本明細書において、本開示の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００７６】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００７７】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【００７８】
図内のフローチャートおよびブロック図は、本開示のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００７９】
本開示のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【図１Ａ】
2021528717.tif 000006
【図１Ｂ】
2021528717.tif 000007
【図１Ｃ】
2021528717.tif 000008
【図１Ｄ】
2021528717.tif 000009
【図２Ａ】
2021528717.tif 000010
【図２Ｂ】
2021528717.tif 000011
【図３】
2021528717.tif 000012
【図４】
2021528717.tif 000013
【図５】
2021528717.tif 000014
【図６】
2021528717.tif 000015
【図７】
2021528717.tif 000016
【図８】
2021528717.tif 000017
【図９】
2021528717.tif 000018
【図１０】
2021528717.tif 000019
【図１１Ａ】
2021528717.tif 000020
【図１１Ｂ】
2021528717.tif 000021
【図１２】
2021528717.tif 000022
【図１３】
2021528717.tif 000023
【図１４】
2021528717.tif 000024
【図１５】
2021528717.tif 000025
【図１６】
2021528717.tif 000026
【図１７】
2021528717.tif 000027
【図１８】
2021528717.tif 000028
【図１９】
2021528717.tif 000029
【国際調査報告】
2021528717.tif 000030
2021528717.tif 000031