(57)【要約】  分散したニューラル・コアのネットワークにおいて、階層的並列処理が実現される。様々な実施形態において、複数のニューラル・コアが提供される。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを割り当てて、計算を行う。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、その割り当てられた出力アクティベーションの各々について部分和を計算し、少なくとも計算された部分和から、その割り当てられた出力アクティベーションを計算する。
2021532451.tif 000002
【特許請求の範囲】
【請求項１】
ニューラル推論チップであって、
並列に動作するように構成されている複数のベクトル計算ユニットを各々備える、複数のニューラル・コアを備え、
前記複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されており、
前記複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを割り当てて計算を行う、
ニューラル推論チップ。
【請求項２】
前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
その割り当てられた出力アクティベーションの各々について部分和を計算し、
少なくとも前記計算された部分和からその割り当てられた出力アクティベーションを計算する、請求項１に記載のニューラル推論チップ。
【請求項３】
前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
前記複数のニューラル・コアのうちの別の１つから、その割り当てられた出力アクティベーションのうちの少なくとも１つについての部分和を受け取り、
前記計算された部分和および前記受け取られた部分和から、その割り当てられた出力アクティベーションを計算する、請求項２に記載のニューラル推論チップ。
【請求項４】
前記ベクトル計算ユニットは乗算および加算ユニットを備える、請求項１に記載のニューラル推論チップ。
【請求項５】
前記ベクトル計算ユニットは累算ユニットを備える、請求項１に記載のニューラル推論チップ。
【請求項６】
前記複数のニューラル・コアは前記部分和の計算を並列に行う、請求項２に記載のニューラル推論チップ。
【請求項７】
前記複数のニューラル・コアは前記出力アクティベーションの計算を並列に行う、請求項２に記載のニューラル推論チップ。
【請求項８】
前記部分和を計算することは、前記複数のベクトル計算ユニットのうちの少なくとも１つを適用して、前記入力アクティベーションとシナプス重みとを乗算することを含む、請求項２に記載のニューラル推論チップ。
【請求項９】
前記割り当てられた出力アクティベーションを計算することは、複数の加算ユニットを適用することを含む、請求項２に記載のニューラル推論チップ。
【請求項１０】
出力アクティベーションを計算することは、非線形関数を適用することを含む、請求項２に記載のニューラル推論チップ。
【請求項１１】
前記ベクトル計算ユニットは、
複数の乗算演算を並列に行い、
複数の加算を並列に行い、
前記部分和を累算するように構成されている、請求項２に記載のニューラル推論チップ。
【請求項１２】
前記複数のベクトル計算ユニットは、部分和を並列に計算するように構成されている、請求項２に記載のニューラル推論チップ。
【請求項１３】
前記複数のニューラル・コアの各々による前記計算はパイプライン化されている、請求項１に記載のニューラル推論チップ。
【請求項１４】
前記複数のニューラル・コアの各々は前記計算の各段を同時に行うように構成されている、請求項１３に記載のニューラル推論チップ。
【請求項１５】
前記計算は並列処理を維持する、請求項１４に記載のニューラル推論チップ。
【請求項１６】
複数のニューラル・コアの各々において、ニューラル・ネットワークのある層の入力アクティベーションのサブセットを受け取ることであって、前記複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備え、前記複数のニューラル・コアの各々は、その複数のベクトル乗算器を入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている、前記受け取ることと、
前記複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを割り当てて計算を行うことと、
前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々が、
その割り当てられた出力アクティベーションの各々について部分和を計算し、
少なくとも前記計算された部分和からその割り当てられた出力アクティベーションを計算することと、
を含む、方法。
【請求項１７】
前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
前記複数のニューラル・コアのうちの別の１つから、その割り当てられた出力アクティベーションのうちの少なくとも１つについての部分和を受け取り、
前記計算された部分和および前記受け取られた部分和から、その割り当てられた出力アクティベーションを計算する、請求項１６に記載の方法。
【請求項１８】
前記ベクトル計算ユニットは乗算および加算ユニットを備える、請求項１６に記載の方法。
【請求項１９】
前記ベクトル計算ユニットは累算ユニットを備える、請求項１６に記載の方法。
【請求項２０】
前記複数のニューラル・コアは前記部分和の計算を並列に行う、請求項１６に記載の方法。
【請求項２１】
前記複数のニューラル・コアは前記出力アクティベーションの計算を並列に行う、請求項１６に記載の方法。
【請求項２２】
前記部分和を計算することは、前記複数のベクトル計算ユニットのうちの少なくとも１つを適用して、前記入力アクティベーションとシナプス重みとを乗算することを含む、請求項１６に記載の方法。
【請求項２３】
前記割り当てられた出力アクティベーションを計算することは、複数の加算ユニットを適用することを含む、請求項１６に記載の方法。
【請求項２４】
出力アクティベーションを計算することは非線形関数を適用することを含む、請求項１６に記載の方法。
【請求項２５】
複数の乗算演算を並列に行うことと、
複数の加算を並列に行うことと、
前記部分和を累算することと、
を更に含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態はニューラル計算に関し、より詳細には、分散したニューラル・コアのネットワークにおける階層的並列処理に関する。
【発明の概要】
【０００２】
本開示の実施形態によれば、ニューラル計算のためのシステムが提供される。様々な実施形態において、複数のニューラル・コアが提供される。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを割り当てて、計算を行う。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、その割り当てられた出力アクティベーションの各々について部分和を計算し、少なくとも計算された部分和から、その割り当てられた出力アクティベーションを計算する。
【０００３】
本開示の実施形態によれば、ニューラル計算の方法およびニューラル計算用のコンピュータ・プログラム製品が提供される。様々な実施形態において、複数のニューラル・コアの各々において、ニューラル・ネットワークの層の入力アクティベーションのサブセットが受け取られる。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。ニューラル・ネットワークのある層の出力アクティベーションのサブセットが、複数のニューラル・コアの各々に割り当てられて、計算される。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、その割り当てられた出力アクティベーションの各々について部分和を計算し、少なくとも計算された部分和から、その割り当てられた出力アクティベーションを計算する。
【図面の簡単な説明】
【０００４】
【図１】本開示の実施形態に係るニューラル・コアを示す図である。
【図２】本開示の実施形態に係るコア間並列処理を示す例示的なニューラル・コアを示す図である。
【図３】本開示の実施形態に係るコア内並列処理を示す例示的なニューラル・コアを示す図である。
【図４】本開示の実施形態に係るニューラル計算の方法を示す図である。
【図５】本開示の実施形態に係る計算ノードを描いた図である。
【発明を実施するための形態】
【０００５】
人工ニューロンは、その出力がその入力の線形結合の非線形関数となる数学的関数である。一方の出力が他方への入力である場合、その２つのニューロンは結合されている。重みとは、あるニューロンの出力と別のニューロンの入力の間の結合強度を符号化するスカラ値である。
【０００６】
ニューロンは、その入力の重み付き和に非線形活性化関数を適用することによって、アクティベーションと呼ばれるその出力を計算する。重み付き和とは、各入力と対応する重みとを乗算しその積を累算することによって計算される中間結果である。部分和とは、入力のサブセットの重み付き和である。１つまたは複数の部分和を累算することによって、全ての入力の重み付き和が段階的に計算され得る。
【０００７】
ニューラル・ネットワークとは、１つまたは複数のニューロンの集合である。ニューラル・ネットワークは多くの場合、層と呼ばれるニューロンの組へと分割されている。層とは、全てが同じ層から入力を受け取り全てが同じ層へと出力を送り、典型的には同様の機能を実行する１つまたは複数のニューロンの、集合である。入力層とは、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層とは、ニューラル・ネットワークの外部のターゲットへと出力を送る層である。他の全ての層は中間処理層である。多層ニューラル・ネットワークとは、２つ以上の層を有するニューラル・ネットワークである。ディープ・ニューラル・ネットワークとは、多数の層を有する多層ニューラル・ネットワークである。
【０００８】
テンソルは数値の多次元のアレイである。テンソル・ブロックは、テンソル中の要素の連続的なサブアレイである。
【０００９】
各ニューラル・ネットワーク層は、パラメータ・テンソルＶ、重みテンソルＷ、入力データ・テンソルＸ、出力データ・テンソルＹ、および中間データ・テンソルＺと関連付けられている。パラメータ・テンソルは、層中のニューロン活性化関数σを制御するパラメータの全てを包含する。重みテンソルは、入力を層に結合する重みの全てを包含する。入力データ・テンソルは、層が入力として消費するデータの全てを包含する。出力データ・テンソルは、層が出力として計算するデータの全てを包含する。中間データ・テンソルは、層が中間計算値として生成する任意のデータ、例えば部分和を包含する。
【００１０】
ある層についてのデータ・テンソル（入力、出力、および中間）は３次元であってもよく、この場合、最初の２つの次元が空間位置を符号化するものとして解釈され、３番目の次元が異なる特徴を符号化するものとして解釈され得る。例えば、データ・テンソルがカラー画像を表す場合、最初の２つの次元は画像中の垂直および水平座標を符号化し、３番目の次元は各位置における色を符号化する。入力データ・テンソルＸのあらゆる要素を別個の重みによってあらゆるニューロンに結合することができ、この場合、重みテンソルＷは一般に、入力データ・テンソルの３つの次元（入力行ａ、入力列ｂ、入力特徴ｃ）を出力データ・テンソルの３つの次元（出力行ｉ、出力列ｊ、出力特徴ｋ）と連結した、６次元を有する。中間データ・テンソルＺは、出力データ・テンソルＹと同じ形状を有する。パラメータ・テンソルＶは、出力データ・テンソルの３つの次元を、活性化関数σのパラメータのインデックスとなる追加の次元ｏと連結する。
【００１１】
ある層の出力データ・テンソルＹの要素は式１のように計算でき、式中、ニューロン活性化関数σは活性化関数のパラメータのベクトルＶ［ｉ，ｊ，ｋ，：］によって構成されており、重み付き和Ｚ［ｉ，ｊ，ｋ］は式２のように計算できる。
Ｙ［ｉ，ｊ，ｋ］＝σ（Ｖ［ｉ，ｊ，ｋ，：］；Ｚ［ｉ，ｊ，ｋ］）
式１
【００１２】
【数１】
2021532451.tif 000003
【００１３】
表記を簡単にするために、式２中の重み付き和を出力と呼ぶ場合があるが、これは線形活性化関数Ｙ［ｉ，ｊ，ｋ］＝σ（Ｚ［ｉ，ｊ，ｋ］）＝Ｚ［ｉ，ｊ，ｋ］を用いることと等価であり、異なる活性化関数が使用されるときに一般性を失うことなく同じ説明が当てはまるものと理解される。
【００１４】
様々な実施形態において、上記したような出力データ・テンソルの計算は、より小さい問題へと分解される。各問題は、１つもしくは複数のニューラル・コア上で、または従来のマルチコア・システムの１つもしくは複数のコア上で並列に、解かれ得る。
【００１５】
ニューラル・ネットワークが本来的に並列な構造であることが、上記から明らかであろう。所与の層中のニューロンは、１つまたは複数の層または他の入力から、要素ｘｉを有する入力Ｘを受け取る。各ニューロンは、入力および要素ｗｉを有する重みＷに基づいて、その状態ｙ∈Ｙを計算する。様々な実施形態において、入力の重み付き和はバイアスｂによって調整され、次いでその結果が非線形処理（ｎｏｎｌｉｎｅａｒｉｔｙ）Ｆ（・）に渡される。例えば、単一のニューロンのアクティベーションは、ｙ＝Ｆ（ｂ＋Σｘｉｗｉ）として表現できる。
【００１６】
所与の層中の全てのニューロンが同じ層から入力を受け取りそれらの出力を独立して計算するので、ニューロンのアクティベーションを並列に計算することができる。全体的なニューラル・ネットワークのこの態様により、並列分散型コアにおいて計算を行うことによって全体的な計算の速度が高まる。更に、各コア内で、ベクトル演算を並列に計算することができる。回帰的入力がある場合、例えばある層がそれ自体に戻るように投影される場合ですら、全てのニューロンがやはり同時に更新される。実際には、回帰的な接続は、その層への次の入力と揃うように遅延される。
【００１７】
ここで図１を参照すると、本開示の実施形態に係るニューラル・コアが描かれている。ニューラル・コア１００は、出力テンソルの１つのブロックを計算する、タイル化可能（ｔｉｌｅａｂｌｅ）な計算ユニットである。ニューラル・コア１００は、Ｍ個の入力およびＮ個の出力を有する。様々な実施形態において、Ｍ＝Ｎである。出力テンソル・ブロックを計算するために、ニューラル・コアは、Ｍ×１の入力テンソル・ブロック１０１をＭ×Ｎの重みテンソル・ブロック１０２と乗算し、その積を累算して重み付き和を得、これが１×Ｎの中間テンソル・ブロック１０３に格納される。Ｏ×Ｎのパラメータ・テンソル・ブロックは、中間テンソル・ブロック１０３に適用されて１×Ｎの出力テンソル・ブロック１０５を生成するＮ個のニューロン活性化関数の各々を規定する、Ｏ個のパラメータを包含する。
【００１８】
複数のニューラル・コアをニューラル・コアのアレイ中でタイル化することができる。いくつかの実施形態では、アレイは２次元である。
【００１９】
ニューラル・ネットワーク・モデルとは、ニューロン間の結合のグラフならびにあらゆるニューロンについての重みおよび活性化関数のパラメータを含む、ニューラル・ネットワークが行う計算の全体を集合的に規定する定数のセットである。訓練とは、所望の機能を実行するようにニューラル・ネットワーク・モデルを修正するプロセスである。推論とは、ニューラル・ネットワーク・モデルを変更することなく、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
【００２０】
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサの一範疇である。ニューラル推論チップは、推論処理ユニットの具体的な物理的実例である。
【００２１】
アレイ中に複数のコアを含む実施形態では、各コアは全体的なニューラル・ネットワークの計算の一部を実施する。添え字ｉ＝１：ＮＩＮＰＵＴを有するｘｉを値とするＮＩＮＰＵＴ個の入力ニューロンを有する、添え字ｊ＝１：ＮＮＥＵＲＯＮを有するＮＮＥＵＲＯＮ個の出力ニューロンを有する所与の層の場合には、その層の出力の値は、ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝１：ＮＩＮＰＵＴに対して、式３によって与えられる。
Ｙｊ＝Ｆ（ｂｊ＋Σｘｉｗｊｉ）
式３
【００２２】
いくつかの実施形態では、各コアは、何らかの数の出力ニューロンを計算する。ＮＣＯＲＥ個のコアに関して、各コアは平均ＮＮＥＵＲＯＮ／ＮＣＯＲＥ個の出力ニューロンを計算し、各々が全ての入力を受け取る。この場合、全てのコアが全ての入力を必要とするが、計算するのは一部の出力のみである。例えば：
コア１は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｉ＝１：ＮＩＮＰＵＴに対して、Ｙｊ＝Ｆ（ｂｊ＋Σｘｉｗｊｉ）
コア２は以下を計算する：ｊ＝ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：２ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｉ＝１：ＮＩＮＰＵＴに対して、Ｙｊ＝Ｆ（ｂｊ＋Σｘｉｗｊｉ）
コアｋは以下を計算する：ｊ＝（ｋ−１）ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｉ＝１：ＮＩＮＰＵＴに対して、Ｙｊ＝Ｆ（ｂｊ＋Σｘｉｗｊｉ）
コアＮＣＯＲＥは以下を計算する：ｊ＝（ＮＣＯＲＥ−１）ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：ＮＮＥＵＲＯＮおよびｉ＝１：ＮＩＮＰＵＴに対して、Ｙｊ＝Ｆ（ｂｊ＋Σｘｉｗｊｉ）
【００２３】
いくつかの実施形態では、各コアは全ての出力ニューロンを計算するものの、入力のサブセットについてのみである。ＮＣＯＲＥ個のコアについて、各コアは、平均ＮＩＮＰＵＴ／ＮＣＯＲＥ個の入力ニューロンについて、全ての出力ニューロンを計算する。この場合、コアは一部の入力しか必要としないが、出力は収集し加算する必要がある。例えば：
コア１は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝１：ＮＩＮＰＵＴ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅ１＝Σｘｉｗｊｉ
コア２は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：２ＮＩＮＰＵＴ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅ２＝Σｘｉｗｊｉ
コアｋは以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝（ｋ−１）ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅｋ＝Σｘｉｗｊｉ
コアＮＣＯＲＥは以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝（ＮＣＯＲＥ−１）ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：ＮＩＮＰＵＴに対して、Ｙｊ＿ｃｏｒｅＮＣＯＲＥ＝Σｘｉｗｊｉ
【００２４】
完全な結果に達するためには、ｊ＝１：ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｉ＿ｃｏｒｅｋ）である。様々な実施形態において、完全な結果はコア間でまたはコア外で計算される。
【００２５】
いくつかの実装形態では、各コアは何らかの数の出力ニューロンを計算するが、各コアが入力ニューロンの全てにアクセスできる訳ではない。そのような実施形態では、各コアは部分的な出力を計算し、各コアがそのニューロンのセットを完全に計算するために必要な部分的出力の全てを得るまで、それらを分配する。そのような実施形態では、コアは非ゼロである情報（部分和）を渡しさえすればよく、アレイはニューラル・ネットワーク層の高レベルの構造を利用することが可能になる。例えば、畳み込みニューラル・ネットワークは、入力、出力、および部分和の計算および連絡の必要量がより少ない。例えば：
コア１は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝１：ＮＩＮＰＵＴ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅ１＝Σｘｉｗｊｉ
コア２は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：２ＮＩＮＰＵＴ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅ２＝Σｘｉｗｊｉ
コアｋは以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝（ｋ−１）ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／Ｎｃｏｒｅに対して、Ｙｊ＿ｃｏｒｅｋ＝Σｘｉｗｊｉ
コアＮＣＯＲＥは以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝（ＮＣＯＲＥ−１）ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：ＮＩＮＰＵＴに対して、Ｙｊ＿ｃｏｒｅＮＣＯＲＥ＝Σｘｉｗｊｉ
【００２６】
次いで、完全な結果が連続的にまたはオーバーラップしてのいずれかで計算される。ｊ＝１：ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｉ＿ｃｏｒｅｋ）である。
コア１は以下を計算する：ｊ＝１：ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｊ＿ｃｏｒｅｋ）
コア２は以下を計算する：ｊ＝ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：２ＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｊ＿ｃｏｒｅｋ）
コアｋは以下を計算する：ｊ＝（ｋ−１）ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｊ＿ｃｏｒｅｋ）
コアＮｃｏｒｅは以下を計算する：ｊ＝（Ｎｃｏｒｅ−１）ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：ＮＮＥＵＲＯＮおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｊ＿ｃｏｒｅｋ）
【００２７】
ここで図２を参照すると、コア間並列処理を示す例示的なニューラル・コアが示されている。コア２０１は並列ベクトル計算ユニットを備えるクロスバー２０２を含み、クロスバー２０２は入力２０３、
【数２】
2021532451.tif 000004
を受け取り、これらにパラメータ
【数３】
2021532451.tif 000005
を乗算するものであり、ここで、Ｍ＝ＮＩＮＰＵＴ／ＮＣＯＲＥである。行列乗算の結果は並列和および非線形処理ユニット２０５に提供され、非線形処理ユニット２０５は、アレイ中の他のコアから部分和入力Ｙｉ＿ｃｏｒｅｋ、２０６を受け取る。
【００２８】
上で指摘したように、アレイ中の各コアは、並列／同時ニューラル・ネットワーク計算要素を含む。例えば、所与のコアｋは以下を計算する：
ｊ＝１：ＮＮＥＵＲＯＮおよびｉ＝（ｋ−１）ＮＩＮＰＵＴ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／ＮＣＯＲＥに対して、Ｙｊ＿ｃｏｒｅｋ＝Σｘｉｗｊｉ
または以下を計算する：
ｊ＝（ｋ−１）ＮＮＥＵＲＯＮ／ＮＣＯＲＥ＋１：ｋＮＮＥＵＲＯＮ／ＮＣＯＲＥおよびｋ＝１：ＮＣＯＲＥに対して、Ｙｊ＝Ｆ（ｂｊ＋ΣＹｊ＿ｃｏｒｅｋ）
あるいはその両方を計算する。
【００２９】
ＮＮＥＵＲＯＮの部分和（Ｙｊ＿ｃｏｒｅｋ）は別個のベクトル・ユニットで同時に計算でき、各計算ベクトルは単一のニューロンｊについて乗算および加算（Σｘｉｗｊｉ）を行う。ＮＮＥＵＲＯＮの和および非線形処理（Ｙｊ）は、別個の累算および非線形ユニットで同時に計算でき、各々が単一のニューロンｊについて計算を行う。
【００３０】
ここで図３を参照すると、コア内並列処理を示す例示的なニューラル・コアが示されている。コア３０１は（図２のユニット２０２のうちの１つに対応している）ベクトル乗算／加算ユニット３０２を含み、ベクトル乗算／加算ユニット３０２は入力３０３、［ｘ１，・・・，ｘ８］を受け取り、これらにパラメータ３０４、［ｗｊ１，・・・，ｗｊ８］を乗算する。行列乗算の結果は並列和および非線形処理ユニット３０５に提供され、非線形処理ユニット３０５はアレイ中の他のコアから部分和入力３０６を受け取り、ニューロン出力３０７を提供する。このようにして、所与のベクトル・ユニットは多くの入力に対して一斉に作用して、単一の出力または複数の出力を生成する。
【００３１】
上で記載したように、ベクトル・ユニットは各々、並列／同時の様式で計算を行う。例えば、ｋ番目のコアのｊ番目のベクトル・ユニットは、Ｙｊ＿ｃｏｒｅｋ＝Σｘｉｗｊｉを計算する。この演算は並列で／同時に行うことができる。ベクトル・ユニットは、例えば加算ツリーを用いて並列加算を行い、これは同時性を更に高めるためにパイプライン化することができる。例えば、（図示したように）ｉ＝１：８であれば、ベクトル・ユニットは８回の並列乗算を実施し、続いて４回の２入力加算、続いて２回の２入力加算、続いて１回の２入力加算を行う。これら４回の並列演算をパイプライン化して、より高いスループットが得られるように同時に実行することができる。
【００３２】
表１を参照すると、コア・アレイのサイズ（列１×１・・・６４×６４）およびクロス・バーのサイズ（行１×１・・・１０２４×１０２４）に対して、様々なコア・アレイ並列処理の合計値が示されている。並列処理の合計は、コア・アレイのサイズとクロスバーのサイズの積である。
【００３３】
【表１】
2021532451.tif 000006
【００３４】
図４を参照すると、本開示の実施形態に係るニューラル計算の方法が示されている。４０１では、複数のニューラル・コアの各々において、ニューラル・ネットワークの層の入力アクティベーションのサブセットが受け取られる。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。４０２では、ニューラル・ネットワークのある層の出力アクティベーションのサブセットが、複数のニューラル・コアの各々に割り当てられて、計算される。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、４０３において、その割り当てられた出力アクティベーションの各々について部分和を計算し、４０５において、少なくとも計算された部分和からその割り当てられた出力アクティベーションを計算する。いくつかの実施形態では、複数のコアの各々は、４０４において、複数のニューラル・コアのうちの別の１つからその割り当てられた出力アクティベーションのうちの少なくとも１つについての部分和を受け取り、４０５において、計算された部分和および受け取られた部分和から、その割り当てられた出力アクティベーションを計算する。
【００３５】
本明細書で提供されるニューラル・ネットワークが、分類器または生成器として使用され得ることが諒解されるであろう。
【００３６】
ここで図５を参照すると、計算ノードの例の概略図が示されている。計算ノード１０は好適な計算ノードの一例に過ぎず、本明細書に記載する実施形態の使用または機能性の範囲に関してどのような限定を示唆することも意図していない。いずれにせよ、計算ノード１０は実装され得る、または本明細書で上記した機能性のいずれかを実行できる、あるいはその両方である。
【００３７】
計算ノード１０には、多数の汎用または専用計算システム環境または構成と共に動作できる、コンピュータ・システム／サーバ１２が存在する。コンピュータ・システム／サーバ１２との使用に好適であり得る、よく知られた計算システム、環境、または構成あるいはその組合せの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、携帯型デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能消費者向け電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、などが挙げられるが、これらに限定されない。
【００３８】
コンピュータ・システム／サーバ１２は、プログラム・モジュールなどの、コンピュータ・システムによって実行されるコンピュータ・システム実行可能命令の一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム／サーバ１２は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施されてもよい。分散型クラウド・コンピューティング環境では、プログラム・モジュールを、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスを含むコンピュータ・システム・ストレージ媒体内に配置することができる。
【００３９】
図５に示すように、計算ノード１０中のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８からプロセッサ１６までを含む様々なシステム・コンポーネントを連結するバス１８を含み得るが、これらに限定されない。
【００４０】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの１つまたは複数を表している。例として、限定するものではないが、そのようなアーキテクチャとしては、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、米国のビデオ電子装置規格化協会（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ；ＶＥＳＡ）ローカル・バス、周辺装置相互接続（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ；ＰＣＩ）バス、周辺装置相互接続エキスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ；ＰＣＩｅ）、およびアドバンスト・マイクロコントローラ・バス・アーキテクチャ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ；ＡＭＢＡ）が挙げられる。
【００４１】
コンピュータ・システム／サーバ１２は通常、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２がアクセス可能な任意の利用可能な媒体であってよく、これには、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体の両方が含まれる。
【００４２】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ・システム・ストレージ媒体を更に含み得る。単なる例として、取り外し不可能な不揮発性磁気媒体（図示しないが典型的には「ハード・ドライブ」と呼ばれる）に対する読み取りおよび書き込みを行うための、ストレージ・システム３４が提供され得る。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、ならびに、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などの取り外し可能な不揮発性光ディスクに対する読み取りおよび書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、各々が１つまたは複数のデータ媒体インターフェースによってバス１８に接続され得る。以下で更に描写し記載するように、メモリ２８は、本開示の実施形態の機能を実行するように構成されている１組の（例えば少なくとも１つの）プログラム・モジュールを有する、少なくとも１つのプログラム製品を含み得る。
【００４３】
１組の（少なくとも１つの）プログラム・モジュール４２を有するプログラム／ユーティリティ４０は、限定ではなく例としてメモリ２８に格納され得るが、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データにも格納され得る。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはこれらの何らかの組合せは、ネットワーキング環境の実装を含み得る。プログラム・モジュール４２は一般に、本明細書に記載する実施形態の機能または方法論あるいはその組合せを実行する。
【００４４】
コンピュータ・システム／サーバ１２はまた、キーボード、ポインティング・デバイス、ディスプレイ２４等などの１つもしくは複数の外部デバイス１４、ユーザとコンピュータ・システム／サーバ１２の対話を可能にする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ１２と１つもしくは複数の他のコンピューティング・デバイスとの通信を可能にする任意のデバイス（例えば、ネットワーク・カード、モデム等）、あるいはその組合せとも通信し得る。そのような通信は、入力／出力（Ｉ／Ｏ）インターフェース２２を介して行うことができる。また更に、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、または公共ネットワーク（例えばインターネット）、あるいはその組合せなどの、１つまたは複数のネットワークと通信し得る。描かれているように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２のその他のコンポーネントと通信する。示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ１２と組み合わせて使用してもよいことが理解されるべきである。例としては以下が挙げられるが、これらに限定されない：マイクロコード、デバイス・ドライバ、冗長な処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム、等。
【００４５】
本開示は、システム、方法、またはコンピュータ・プログラム製品あるいはそれらの組合せとして具現化され得る。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体を含んでもよい。
【００４６】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持および保存できる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の好適な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されているパンチ・カードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の好適な組合せが含まれる。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの、一時的信号そのものであると解釈されるべきではない。
【００４７】
本明細書に記載するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを経由して、外部のコンピュータもしくは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを備え得る。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に保存されるように転送する。
【００４８】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存型命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードのいずれか、であり得る。コンピュータ可読プログラム命令は、専らユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的に遠隔のコンピュータ上で、または専ら遠隔のコンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、遠隔のコンピュータを、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよく、または、外部のコンピュータへの接続を（例えば、インターネット・サービス・プロバイダを利用してインターネットを介して）行ってもよい。いくつかの実施形態では、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本開示の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個人化することができる。
【００４９】
本明細書には、本開示の実施形態に係る方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本開示の態様が記載されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せを、コンピュータ可読プログラム命令によって実施できることが、理解されるであろう。
【００５０】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が保存されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んだ製品を備えるように、コンピュータ可読記憶媒体に保存され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方式で機能するように指示できるものであってもよい。
【００５１】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００５２】
図中のフローチャートおよびブロック図には、本開示の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の、可能な実装形態のアーキテクチャ、機能性、および動作が説明されている。この関連において、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、モジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替的実装形態において、ブロック内に記された機能は、図に記されたものとは異なる順序で行われ得る。例えば連続して示される２つのブロックは、実際は実質的に並行して実行され得、またはこれらのブロックは時には関わる機能に応じて、逆の順序で実行され得る。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実施され得ることも、留意されるであろう。
【００５３】
様々な実施形態において、１つまたは複数の推論処理ユニット（図示せず）がバス１８に連結される。そのような実施形態では、ＩＰＵはバス１８を介してメモリ２８からデータを受け取る、またはメモリ２８にデータを書き込む。同様に、ＩＰＵは本明細書に記載するように、バス１８を介して他のコンポーネントと相互作用することができる。
【００５４】
本開示の様々な実施形態の説明は、例示の目的で提示されてきたが、網羅的であることも、開示される実施形態に限定されることも意図していない。当業者には記載される実施形態の範囲から逸脱することなく多くの修正および変更が明らかであろう。本明細書で用いられる専門用語は、実施形態の原理、実際の用途、もしくは市場で見られる技術に対する技術的な改善を最もよく説明するように、または、他の当業者が本明細書において開示される実施形態を理解できるように、選択された。
【図１】
2021532451.tif 000007
【図２】
2021532451.tif 000008
【図３】
2021532451.tif 000009
【図４】
2021532451.tif 000010
【図５】
2021532451.tif 000011
【国際調査報告】
2021532451.tif 000012
2021532451.tif 000013