(57)【要約】  畳み込み演算のエネルギー効率および速度を高めるように適合されたネットワークおよびそのための符号化が提供される。様々な実施形態において、ニューラル・ネットワークは、複数のニューラル・コアを含む。複数のニューラル・コアのそれぞれは、メモリを備える。ネットワークは、複数のニューラル・コアを相互に結合する。複数のニューラル・コアのそれぞれのメモリは、重みテンソルの少なくとも一部を含む。重みテンソルは、複数の重みを含む。各ニューラル・コアは、入力画像の一部を、ローカルで読み出すか、または受け取り、それに重みテンソルの一部を適用し、その結果を、ローカルに記憶するか、またはネットワークを介して複数のニューラル・コアのうちの他のものに送るように適合される。
2021522565.tif 000002
【特許請求の範囲】
【請求項１】
ニューラル・ネットワークを管理するためのシステムであって、
複数のニューラル・コアであって、前記複数のニューラル・コアのそれぞれが少なくとも１つのメモリを備える、前記複数のニューラル・コアと、
前記複数のニューラル・コアを相互に結合するネットワークと
を含み、前記複数のニューラル・コアのそれぞれの前記少なくとも１つのメモリが、複数のフィルタを含む重みテンソルの少なくとも一部を含み、各ニューラル・コアが、
入力データ・テンソルの一部を、ローカルで読み出すか、または受け取り、
それに前記重みテンソルの前記一部を適用し、
その結果を、ローカルに記憶するか、または前記ネットワークを介して前記複数のニューラル・コアのうちの他のものに送るように適合される、システム。
【請求項２】
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に適用することが、ベクトル行列の乗算とそれに続く活性化関数を計算することを含む、請求項１に記載のシステム。
【請求項３】
前記複数のニューラル・コアが２次元配列に配置される、請求項１または２のいずれかに記載のシステム。
【請求項４】
前記ネットワークが前記複数のニューラル・コア間の局所結合性を提供する、請求項１ないし３のいずれかに記載のシステム。
【請求項５】
前記ネットワークが前記配列内で隣接するニューラル・コア間の結合性を提供する、請求項３に記載のシステム。
【請求項６】
前記複数のニューラル・コアのそれぞれにおける前記重みテンソルの前記一部が、前記重みテンソルのブロックを含む、請求項１ないし５のいずれかに記載のシステム。
【請求項７】
前記重みテンソルが、前記配列の物理次元に従って前記複数のニューラル・コア間で分散される、請求項３に記載のシステム。
【請求項８】
前記重みテンソルの次元、形状、および分割が設定変更可能である、請求項７に記載のシステム。
【請求項９】
前記重みテンソルが、局所性を示す１つまたは複数の次元に沿って分割される、請求項７に記載のシステム。
【請求項１０】
前記１つまたは複数の次元が空間次元を含む、請求項９に記載のシステム。
【請求項１１】
前記１つまたは複数の次元が少なくとも１つの特徴次元を含む、請求項９に記載のシステム。
【請求項１２】
前記重みテンソルがスパースである、請求項１ないし１１のいずれかに記載のシステム。
【請求項１３】
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に前記適用する間、前記重みテンソルの非ゼロ値だけが計算に使用される、請求項１２に記載のシステム。
【請求項１４】
前記メモリが、前記重みテンソルの非ゼロ値だけを記憶する、請求項１２または１３のいずれかに記載のシステム。
【請求項１５】
前記重みテンソルが畳み込みフィルタに対応する、請求項１ないし１４のいずれかに記載のシステム。
【請求項１６】
前記重みテンソルが１つまたは複数の空間次元に沿って分割される、請求項１５に記載のシステム。
【請求項１７】
前記結果が中間結果であり、
各ニューラル・コアが、前記中間結果をローカルに記憶するか、または前記ネットワークを介して前記複数のニューラル・コアのうちの別のものに送るようにさらに適合され、
各ニューラル・コアが、前記中間結果を、ローカルで読み出すか、または受け取り、そこから最終結果を計算するようにさらに適合される
請求項１ないし１６のいずれかに記載のシステム。
【請求項１８】
前記複数のニューラル・コアのそれぞれにおける前記重みテンソルの前記一部が、前記重みテンソルのブロックを含み、前記複数のニューラル・コアのサブセットが、同じ複製されたブロックを含む、請求項１ないし１７のいずれかに記載のシステム。
【請求項１９】
前記複数のニューラル・コアのうちの１つが、重みテンソル全体を含む、請求項１ないし１８のいずれかに記載のシステム。
【請求項２０】
前記１つのニューラル・コアが、前記重みテンソルの前記一部を前記複数のニューラル・コアのうちの他のものにそれぞれ分散するように適合される、請求項１９に記載のシステム。
【請求項２１】
前記重みテンソル全体を含む中央メモリをさらに含み、前記中央メモリから、前記重みテンソルの前記一部を、前記複数のニューラル・コアのうちの他のものにそれぞれ分散するように適合される、請求項１ないし２０のいずれかに記載のシステム。
【請求項２２】
前記重みテンソルの前記一部が前記複数のフィルタのサブセットに対応する、請求項１ないし２１のいずれかに記載のシステム。
【請求項２３】
前記重みテンソルが圧縮される、請求項１ないし２２のいずれかに記載のシステム。
【請求項２４】
前記重みテンソルが、ゼロ値を除外するように符号化される、請求項１ないし２３のいずれかに記載のシステム。
【請求項２５】
前記重みテンソルの各値が、−１、０、または１である、請求項１ないし２４のいずれかに記載のシステム。
【請求項２６】
重みテンソル・ブロックが、複数のニューラル・コアのために複製される、請求項１８に記載のシステム。
【請求項２７】
前記重みテンソル・ブロックが、単一のニューラル・コア・メモリにのみ記憶され、ネットワークオンチップを介して複数のニューラル・コアに分散される、請求項２６に記載のシステム。
【請求項２８】
前記重みテンソル・ブロックが、前記コア配列の外部にある単一のメモリのみに記憶される、請求項２７に記載のシステム。
【請求項２９】
ニューラル・ネットワークを管理するための方法であって、
メモリを備えるニューラル・コアにおいて、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取ることと、
複数のフィルタを含む重みテンソルの少なくとも一部を前記メモリから読み取ることと、
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に適用して結果を得ることと、
前記結果を、ローカルに記憶するか、またはネットワーク介して少なくとも１つの他のニューラル・コアに送ることと
を含む、方法。
【請求項３０】
前記重みテンソルがスパースである、請求項２９に記載の方法。
【請求項３１】
前記重みテンソルの前記一部が前記複数のフィルタのサブセットに対応する、請求項２９または３０のいずれかに記載の方法。
【請求項３２】
前記重みテンソルが圧縮される、請求項２９ないし３１のいずれかに記載の方法。
【請求項３３】
前記重みテンソルが、ゼロ値を除外するように符号化される、請求項２９ないし３２のいずれかに記載の方法。
【請求項３４】
前記重みテンソルの各値が、−１、０、または１である、請求項２９ないし３３のいずれかに記載の方法。
【請求項３５】
ニューラル・ネットワークを管理するためのコンピュータ・プログラム製品であって、
処理回路によって読み取り可能であり、請求項２９ないし３４のいずれかに記載の方法を実行するために前記処理回路によって実行される命令を記憶するコンピュータ可読記憶媒体を備える、コンピュータ・プログラム製品。
【請求項３６】
コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項２９ないし３４のいずれかの方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、並列分散テンソル計算用のハードウェア・アクセラレータに関し、より詳細には、畳み込み演算のエネルギー効率および速度を高めるように適合されたニューラル・ネットワークおよびそのための符号化に関する。
【背景技術】
【０００２】
機械学習において、畳み込みニューラル・ネットワーク（ＣＮＮ：convolutional neural network）は、たとえば視覚画像の分析に適用可能な多層ニューラル・ネットワークのクラスである。ＣＮＮは、入力層と、出力層と、畳み込み演算を集合的に計算する人工ニューロンの少なくとも１つの層を含む複数の隠れ層とで構成される。
【０００３】
人工ニューロンは、その出力がその入力の線形結合の非線形関数である数学関数である。一方の出力が他方の入力である場合、２つのニューロンが結合される。重みは、一方のニューロンの出力ともう一方のニューロンの入力との間の結合の強さを符号化するスカラー値である。複数の結合されたニューラル・コアから適切な全体的な結果を計算することは非常に困難である。
【０００４】
したがって、当技術分野において前述の問題に対処する必要がある。
【発明の概要】
【０００５】
第１の態様から見ると、本発明はニューラル・ネットワークを管理するためのシステムを提供し、システムは、複数のニューラル・コアであって、複数のニューラル・コアのそれぞれが少なくとも１つのメモリを備える複数のニューラル・コアと、複数のニューラル・コアを相互に結合するネットワークとを含み、複数のニューラル・コアのそれぞれの少なくとも１つのメモリは、複数のフィルタを含む重みテンソルの少なくとも一部を含み、各ニューラル・コアは、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取り、それに重みテンソルの一部を適用し、その結果を、ローカルに記憶するか、またはネットワークを介して複数のニューラル・コアのうちの他のものに送るように適合される。
【０００６】
さらなる態様から見ると、本発明はニューラル・ネットワークを管理するための方法を提供し、方法は、メモリを備えるニューラル・コアにおいて、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取ることと、複数のフィルタを含む重みテンソルの少なくとも一部をメモリから読み取ることと、重みテンソルの一部を入力データ・テンソルの一部に適用して結果を得ることと、結果を、ローカルに記憶するか、またはネットワーク介して少なくとも１つの他のニューラル・コアに送ることとを含む。
【０００７】
さらなる態様から見ると、本発明はシステムを提供し、システムは、複数のニューラル・コアであって、複数のニューラル・コアのそれぞれが少なくとも１つのメモリを備える複数のニューラル・コアと、複数のニューラル・コアを相互に結合するネットワークと、コンピュータ可読記憶媒体によって具現化されるプログラム命令を有するコンピュータ可読記憶媒体を備えるコンピューティング・ノードを含み、プログラム命令は、コンピューティング・ノードのプロセッサによって実行されて、プロセッサに、複数のフィルタを重みテンソルに符号化すること、および重みテンソルの少なくとも一部を複数のニューラル・コアのそれぞれに提供することを含む方法を実行させ、複数のニューラル・コアのそれぞれは、重みテンソルの少なくとも一部をそのメモリに記憶し、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取り、重みテンソルの一部を入力データ・テンソルの一部に適用して結果を得て、結果を、ローカルに記憶するか、またはネットワーク介して少なくとも１つの他のニューラル・コアに送るように適合される。
【０００８】
さらなる態様から見ると、本発明はニューラル・ネットワークを管理するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、かつ本発明のステップを実行するための方法を実行するために処理回路によって実行される命令を記憶するコンピュータ可読記憶媒体を備える。
【０００９】
さらなる態様から見ると、本発明は、コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１０】
本開示の実施形態によれば、ニューラル・ネットワーク・システムが提供される。システムは、複数のニューラル・コアを含む。複数のニューラル・コアのそれぞれは、少なくとも１つのメモリを備える。ネットワークは、複数のニューラル・コアを相互に結合する。複数のニューラル・コアのそれぞれのメモリは、重みテンソルの少なくとも一部を含む。重みテンソルは、複数のフィルタを含む。各ニューラル・コアは、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取り、それに重みテンソルの一部を適用し、その結果を、ローカルに記憶するか、またはネットワークを介して複数のニューラル・コアのうちの他のものに送るように適合される。
【００１１】
本開示の実施形態によれば、ニューラル・ネットワークを動作させるための方法およびコンピュータ・プログラム製品が提供される。入力データ・テンソルの一部は、ニューラル・コアにおいてローカルで読み出されるか、または受け取られる。ニューラル・コアは、メモリを備える。重みテンソルの少なくとも一部がメモリから読み取られる。重みテンソルは、複数のフィルタを含む。重みテンソルの一部が入力データ・テンソルの一部に適用されて結果が得られる。結果は、ローカルに記憶されるか、またはネットワークを介して少なくとも１つの他のニューラル・コアに送られる。
【００１２】
次に、本発明の実施形態について、添付図面を参照して単に例として説明する。
【図面の簡単な説明】
【００１３】
【図１】本開示の実施形態によるニューラル・コアを示す図である。
【図２】本開示の実施形態による畳み込み演算を示す図である。
【図３】本開示の実施形態による、重みテンソルおよび入力データの計算コアへの第１の分散を示す図である。
【図４】本開示の実施形態による、重みテンソルおよび入力データの計算コアへの第２の分散を示す図である。
【図５】本開示の実施形態による、重みテンソルおよび入力データの計算コアへの第３の分散を示す図である。
【図６】本開示の実施形態によるニューラル・ネットワークを動作させるための方法を示す図である。
【図７】本開示の実施形態によるコンピューティング・ノードを示す図である。
【発明を実施するための形態】
【００１４】
機械学習において、畳み込みニューラル・ネットワーク（ＣＮＮ）は、たとえば視覚画像の分析に適用可能な多層ニューラル・ネットワークのクラスである。ＣＮＮは、入力層および出力層、ならびに畳み込み演算を集合的に計算する人工ニューロンの少なくとも１つの層を含む複数の隠れ層で構成される。
【００１５】
人工ニューロンは、出力がその入力の線形結合の非線形関数である数学関数である。一方の出力が他方の入力である場合、２つのニューロンが結合される。重みは、一方のニューロンの出力ともう一方のニューロンの入力との間の結合の強さを符号化するスカラー値である。
【００１６】
ニューロンは、その入力の重み付き和に非線形活性化関数を適用することによって、活性化と呼ばれるその出力を計算する。重み付き和は、各入力に、対応する重みを乗算し、その積を累積することによって計算される中間結果である。部分和は、入力のサブセットの重み付き和である。すべての入力の重み付き和は、１つ以上の部分和を累積することによって段階的に計算され得る。
【００１７】
ニューラル・ネットワークは、１つ以上のニューロンの集合体である。ニューラル・ネットワークは、しばしば層と呼ばれるニューロンのグループに分割される。層は、すべて同じ層から入力を受け取り、すべて同じ層に出力を送り、典型的には同様の機能を実行する１つ以上のニューロンの集合体である。入力層は、ニューラル・ネットワーク外のソースから入力を受け取る層である。出力層は、ニューラル・ネットワーク外のターゲットに出力を送る層である。他のすべての層は、中間処理層である。多層ニューラル・ネットワークは、２つ以上の層を有するニューラル・ネットワークである。深層ニューラル・ネットワークは、多くの層を有する多層ニューラル・ネットワークである。
【００１８】
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソル内の要素の連続したサブ配列である。
【００１９】
各ニューラル・ネットワーク層は、パラメータ・テンソルＶ、重みテンソルＷ、入力データ・テンソルＸ、出力データ・テンソルＹ、および中間データ・テンソルＺに関連付けられる。パラメータ・テンソルは、層内のニューロン活性化関数σを制御するすべてのパラメータを含む。重みテンソルは、入力を層に結合するすべての重みを含む。入力データ・テンソルは、層が入力として使用するすべてのデータを含む。出力データ・テンソルは、層が出力として計算するすべてのデータを含む。中間データ・テンソルは、部分和など、層が中間計算として生成する任意のデータを含む。
【００２０】
１つの層についてのデータ・テンソル（入力、出力、中間）は、３次元とすることができ、最初の２次元は、空間位置の符号化として解釈することができ、３番目の次元は、異なる特徴の符号化として解釈することができる。たとえば、データ・テンソルが色画像を表す場合、最初の２次元は画像内の垂直座標および水平座標を符号化し、３番目の次元は、各位置での色を符号化する。入力データ・テンソルＸのすべての要素は、別個の重みによってすべてのニューロンに結合され得るので、重みテンソルＷは、一般に、入力データ・テンソルの３次元（入力行ａ、入力列ｂ、入力特徴ｃ）を出力データ・テンソルの３次元（出力行ｉ、出力列ｊ、出力特徴ｋ）と連結し、６次元を有する。中間データ・テンソルＺは、出力データ・テンソルＹと同じ形状を有する。パラメータ・テンソルＶは、３つの出力データ・テンソルの次元を、活性化関数σのパラメータにインデックスを付ける追加の次元ｏと連結する。
【００２１】
１つの層についての出力データ・テンソルＹの要素は、式１のように計算することができ、式中、ニューロン活性化関数σは、活性化関数パラメータＶ［ｉ，ｊ，ｋ，：］のベクトルによって構成され、重み付き和Ｚ［ｉ，ｊ，ｋ］は、式２のように計算することができる。
【００２２】
【数１】
2021522565.tif 000003
【００２３】
【数２】
2021522565.tif 000004
【００２４】
表記を簡単にするために、式２における重み付き和は出力と呼ばれることがあり、これは、異なる活性化関数が使用される場合でも一般性を失うことなく同じステートメントが適用されるという理解の下に、線形活性化関数Ｙ［ｉ，ｊ，ｋ］＝σ（Ｚ［ｉ，ｊ，ｋ］）＝Ｚ［ｉ，ｊ，ｋ］を使用することと同等である。
【００２５】
様々な実施形態において、上記のような出力データ・テンソルの計算は、より小さい問題に分解される。その場合、各問題は、１つまたは複数のニューラル・コア上、または従来のマルチコア・システムの１つまたは複数のコア上で、並列に解くことができる。
【００２６】
次に図１を参照すると、本開示の実施形態によるニューラル・コアが示されている。ニューラル・コア１００は、出力テンソルの１つのブロックを計算するタイリング可能な計算ユニットである。ニューラル・コア１００は、Ｍ個の入力およびＮ個の出力を有する。様々な実施形態において、Ｍ＝Ｎである。出力テンソル・ブロックを計算するために、ニューラル・コアはＭ×１の入力テンソル・ブロック１０１にＭ×Ｎの重みテンソル・ブロック１０２を乗算し、その積を累積して重み付き和とし、重み付き和は１×Ｎの中間テンソル・ブロック１０３に格納される。Ｏ×Ｎのパラメータ・テンソル・ブロックは、１×Ｎの出力テンソル・ブロック１０５を生成するために中間テンソル・ブロック１０３に適用されるＮ個のニューロン活性化関数のそれぞれを指定するＯ個のパラメータを含む。
【００２７】
複数のニューラル・コアは、ニューラル・コア配列内にタイリングされてよい。いくつかの実施形態において、配列は２次元である。
【００２８】
ニューラル・ネットワーク・モデルは、ニューラル・ネットワークによって実行される計算全体を集合的に指定する定数のセットであり、ニューロン間の結合のグラフ、ならびに各ニューロンに対する重みおよび活性化関数パラメータを含む。訓練は、所望の関数を実行するためにニューラル・ネットワーク・モデルを変更するプロセスである。推論は、ニューラル・ネットワーク・モデルを変更することなく、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
【００２９】
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサのカテゴリである。ニューラル推論チップは、推論処理ユニットの特定の物理インスタンスである。
【００３０】
いくつかの実施形態において、出力データ・テンソルは、同じ形状のブロックに分割され、それぞれが単一のニューラル・コアによって計算される。このような実施形態において、入力データ・テンソル、重みテンソル、およびパラメータ・テンソルは、互換性のある形状のブロックに分解されて、その出力データ・ブロックの計算を担うニューラル・コアによって受け取られる、対応する入力データ・ブロックと、重みブロックと、パラメータ・ブロックとを組み合わせることによって各出力データ・ブロックが計算されるようになる。
【００３１】
いくつかの実施形態において、出力データ・ブロックの計算は、複数のニューラル・コアに分散されてよい。このような実施形態において、各ニューラル・コアは、１つまたは複数の入力データ・ブロックおよび対応する重みブロックを受け取り、それらの部分和を含む中間ブロックを生成し、これらのブロックは、同様に対応する出力データ・ブロックを計算するために必要なパラメータ・ブロックを受け取る単一のニューラル・コアによって集められ、合計される。
【００３２】
様々な実施形態において、ニューラル・コア配列は、単一のチップ上に存在してよい。このような実施形態において、テンソル・ブロックは、オンチップ・ネットワークを介して送信されてよい。これにより、計算のより近くにモデルを配置することができ、速度および並列性が向上し、エネルギー使用量およびメモリ・アクセスが減少する。
【００３３】
いくつかの実施形態において、コア間でテンソル・ブロックを通信するネットワークは、コアがコア配列の同じ近傍のコアへの直接結合のみを有するように、局所結合性を有してよい。たとえば、２次元ニューラル・コア配列において、各ニューラル・コアは、垂直方向および水平方向に直接隣接する４つのコアにのみ直接結合されてよい。このような実施形態において、テンソル・ブロックは、直接結合されたコアのチェーンを介してそれらを中継することによって遠くのコアに送信され得るが、このような間接通信は、直接通信よりも多くの時間およびエネルギーを必要とする。したがって、コア間でテンソル・ブロックを送信するとき、間接通信に対する直接通信の比率を最大化する方法で問題を分割することが有利である。
【００３４】
コア間でテンソル・ブロックを通信するネットワークが局所結合性を有し、ニューラル・コア配列によって計算される問題も局所構造を有する場合、問題がテンソル内で局所性を示す次元を、ネットワークがコア配列内で局所性を示す次元に整列する方法で、結果として生じるテンソル・ブロックがコアに割り当てられ得るように、テンソルを分割することが有利である。たとえば、２次元のニューラル・コア配列では、最近傍の結合性を有するオンチップ・ネットワークは、ニューラル・コア配列の行と列の次元に沿った局所性を示す。出力データ・テンソルの各要素が入力データ・テンソル内の対応する位置の小さい空間近隣からのみ結合を受け場合、出力データ・テンソルは、入力データ・テンソルの行と列の次元に沿った局所性を示す。このような場合、出力データ・テンソルは、その行と列の次元に沿って分割されるべきであり、結果として生じるブロックは、ニューラル・コア配列の行と列の次元に沿って分散されるべきである。空間畳み込み層は、このような出力データ・テンソルの一例である。
【００３５】
図２を参照すると、例示的な畳み込みが示されている。フィルタ２０１は、複数の重みｗ１…ｗ９を含む。ここで提供されるサイズは単なる例示であり、本明細書に記載のように任意のフィルタ寸法が使用されてよいことが理解されよう。フィルタ２０１は、画像２０２の各タイルに適用される。この例では、２つの連続する３×３のタイルが示されている。各タイルの結果は、特徴マップ２０３の要素である。第１の連続するタイルの結果は、特徴マップの１番目の点で示されている。第２の連続するタイルの結果は、２番目の点で終了する線で示されている。複数の特徴マップを生成するために、複数のフィルタが同じ画像に適用されてよいことが理解されよう。
【００３６】
畳み込み層は、隣接層のニューロン間の局所結合性パターンを強制することによって、未加工のセンサ・データにおける空間局所的な相関を利用し、各ニューロンは、入力データ・テンソルの小さい領域からのみ結合を受け取る。この結合性の範囲は、ニューロンの受容野と呼ばれる。同じ出力特徴の要素を計算するすべてのニューロンは、局所受容野を使用して、フィルタと呼ばれる重みと活性化関数パラメータの同じセットを共有する。フィルタのサイズは、入力サイズに関係なく固定されているので、畳み込み層は、同じ入力次元および同じ出力次元を有する全結合層よりもはるかに少ない自由パラメータを有し、それに応じてメモリ・フットプリントも小さくなる。
【００３７】
たとえば、空間畳み込み層において、各フィルタの受容野は、入力データ・テンソルの高さおよび幅のごく一部のみをカバーするが、特徴の深さ（feature depth）全体に広がる。このようなアーキテクチャは、フィルタが空間局所的な入力パターンに対して最も強い応答を生成することを保証する。層は、入力データ・テンソルの幅および高さ全体にわたって各フィルタを畳み込み、各位置でのフィルタのエントリと入力データとの間のドット積を計算して各フィルタの２次元活性化マップを生成することによって、その出力を計算する。
【００３８】
すべてのフィルタの特徴マップを積み重ねると、畳み込み層の全出力ボリュームが形成される。したがって、出力データ・テンソルのすべてのエントリは、入力の中の小さい領域に注目し、かつ同じ出力特徴マップのニューロンとフィルタ・パラメータを共有するニューロンの出力と解釈することもできる。
【００３９】
畳み込み層の出力データ・テンソルのサイズは、入力データ・テンソルのサイズと、フィルタのサイズと、フィルタが入力データ・テンソルに適用される際のストライドとの関数であることが理解されよう。ストライド・パラメータｓｔｒｉｄｅ＿ａ、ｓｔｒｉｄｅ＿ｂ、およびｓｔｒｉｄｅ＿ｃは、各フィルタの適用間隔を定義し、１の値は、各フィルタ適用が入力データ・テンソルの関連する次元に沿って１画素シフトされることを示す。可能な出力画素のサブセットのみを計算するので、ストライド値が大きいほど計算負荷が軽減される。
【００４０】
さらに、様々な畳み込みにおいて、入力サイズと相対的に出力画像サイズを変化させるために、たとえばそれらのサイズを等しくするために、ゼロパディングが入力画像に適用されてよいことが理解されよう。説明を簡単にするために、様々な例において画像パディングは省略されることがあるが、本開示の範囲から逸脱することなく、パディングが様々な実施形態に含まれ得ることは明らかであろう。
【００４１】
畳み込み層では、同じ出力特徴の要素はすべて、各出力位置で複製される同じフィルタの重みを共有するので、６次元の重みテンソルは多くの繰り返しブロックを含む。共有されるフィルタの重みは、密な４次元フィルタ・テンソルＦによって、よりコンパクトに記述することができ、この密な４次元フィルタ・テンソルＦは、層の出力特徴を計算するすべてのフィルタを含み、かつ出力特徴次元（出力特徴ｋ）および３つのフィルタ入力次元（フィルタ行ｒ、フィルタ列ｓ、フィルタ特徴ｔ）によってインデックスが付けられる。
【００４２】
【数３】
2021522565.tif 000005
【００４３】
式３では、境界条件に対応するために、出力データ・テンソルのエッジ近くのｉ，ｊ，ｋ座標についてｒ，ｓ，ｔの合計の範囲を減らすことができるが、ここでは簡単にするために省略されている。アクセサ関数α（ｉ，ｒ；Α）は、出力データ要素Ｙ［ｉ，ｊ，ｋ］を計算するためにフィルタの重みＦ［ｋ，ｒ，ｓ，ｔ］に乗算すべき入力データ要素の行座標ａを計算し、式中、Αは、ストライド・パラメータｓｔｒｉｄｅ＿ａおよびパディング・パラメータｐａｄ＿ａなどの、行座標計算をパラメータ化する定数のセットである。類似のアクセサ関数β（ｊ，ｓ；Β）およびγ（ｒ，ｔ；Γ）は、列座標ｂおよび特徴座標ｃを計算する。
【００４４】
例示的な畳み込みのパラメータを以下の表１に示す。
【００４５】
【表１】
2021522565.tif 000006
【００４６】
以下でさらに説明するように、畳み込み層を実装するために必要な計算は、たとえば１つまたは複数のニューロモーフィック・コアで、または従来のマルチコア（フォン・ノイマン型アーキテクチャ）ＣＰＵで並列に実行されてよい。この並列処理により、より大きいデータセット上で動作するより大容量のネットワークが可能になる。
【００４７】
様々な実施形態において、上述のような畳み込みは、より小さい問題に分解される。各問題は、１つまたは複数のニューロモーフィック・コア上、または従来のマルチコア・システムの１つまたは複数のコア上で並列に解くことができる。
【００４８】
いくつかの実施形態において、入力データ・テンソルは、その行および列の次元に沿って、その特徴の次元の全長に及ぶブロックに分解される。このような実施形態において、ニューラル・コアは、入力データ・ブロックおよびフィルタ・テンソル全体Ｆを受け取る。入力データ・ブロックの境界における画素の畳み込みを正しく計算するためには、入力データ・ブロックは、それらが重複するように生成され得る。代替として、複数のニューラル・コアからの部分和を合計して、最終結果を得ることができる。
【００４９】
上記の実施形態の例が図３に示されている。入力データ３０１は、次元Ａ×Ｂを有するＣ個の入力特徴マップ（または画像）を含む。データ３０１は、ブロック３０２に分割される。入力データ・ブロック３０２は、重みテンソル３０４と共にニューラル・コア３０３に提供される。
【００５０】
いくつかの実施形態において、入力データ・テンソルは、その行、列、および特徴の次元に沿ってブロックに分解され、フィルタ・テンソルは同様に、その入力特徴の次元に沿ってブロックに分解される。このような実施形態において、ニューラル・コアは、入力データ・ブロックおよび対応するフィルタ・ブロックを受け取る。いくつかの実施形態において、同じ入力行および入力列に対応するが異なる入力特徴に対応する入力データ・ブロックは、対応する部分和を計算する異なるニューラル・コアに分散され、それらは後に集められて合計される。いくつかの実施形態において、出力特徴の数は、入力特徴の次元に沿ったブロックの数で乗算される。このような実施形態では、訓練中、調整された数の出力特徴が考慮される。
【００５１】
別の例示的な実施形態が図４に示されている。入力データ４０１は、ブロック４０２に分割される。データ・ブロック４０２は、フィルタ・テンソルの対応する部分４０４と共にニューラル・コア４０３に提供される。
【００５２】
いくつかの実施形態において、重みテンソルは、その出力特徴の次元に沿ってブロックにさらに分解される。フィルタ・テンソルの各出力特徴ブロックは、異なるニューラル・コアに送られ、したがって、入力テンソルの各ブロックは、出力特徴ブロックが存在するのと同じ数のニューラル・コアに送られる。
【００５３】
別の例示的な実施形態が図５に示されている。入力データ５０１は、ブロック５０２に分割される。データ・ブロック５０２は、フィルタ・テンソル５０５の対応する部分５０４と共にコア５０３を計算するために提供される。
【００５４】
畳み込み層は、スパースな重みテンソルの例である。テンソルは、主としてゼロ値を含む場合はスパースであり、主として非ゼロ値を含む場合は密である。非ゼロ値のみを記憶することによって、スパースなテンソルが圧縮されて、使用するメモリを同じ形状を有する密なテンソルよりもはるかに少なくすることができる。同様に、ゼロ値を省くことによって、スパースなテンソルによる乗算は、使用する演算をはるかに少なくすることができ、その結果、密なテンソルによる乗算よりもエネルギーが少なくなる。
【００５５】
畳み込み層は、その局所結合性に起因して、ブロックスパース（block-sparse）な重みテンソルの例でもある。スパースなテンソルは、その非ゼロ値のすべてがブロック内で集中している場合、ブロックスパースである。テンソルが所与の次元に沿ってブロックスパースである場合、テンソルはその次元に沿った局所性を示す。テンソルは、一部の次元に沿ってスパースまたはブロックスパースである場合があり、他の次元に沿って密である場合がある。たとえば、空間畳み込み層の重みテンソルは、入力行および入力列の次元に沿ってブロックスパースであり、入力特徴、出力行、出力列、および出力特徴の次元に沿って密である。
【００５６】
全結合層は、典型的には密な重みテンソルの例である。全結合層では、３次元入力データ・テンソルのすべての要素が３次元出力データ・テンソルのすべての要素に結合される。各結合は異なる非ゼロ重みを有してよく、各活性化関数は異なるパラメータを有してよい。したがって、６次元の重みテンソルと４次元のパラメータ・テンソルの両方は、すべての次元に沿って密であり、両方のテンソルのボリューム全体が、全結合層を実装するいずれのシステムのメモリにも記憶されなければならない。
【００５７】
単一の画像の場合、Ｘは次元Ａ×Ｂ×Ｃの入力テンソルを示す。フィルタ・テンソルＦは、畳み込みフィルタのセットを示し、次元Ｋ×Ｒ×Ｓ×Ｔを有する。出力テンソルＺは、次元Ｉ×Ｊ×Ｋを有する。様々な実施形態において、データ・テンソル内の各要素は、固定サイズ、たとえば４ビットである。様々な実施形態において、フィルタ・テンソル内の各要素は、有限集合、たとえば｛−１，０，＋１｝から選択される。
【００５８】
サイズＲ×Ｓ×ＴのＫ個のフィルタ・カーネルの場合、各入力画素はＫ×Ｒ×Ｓ回使用される。サイズＡ×Ｂ×Ｃの入力データ・テンソルの場合、各フィルタの重みは（Ａ−Ｒ＋１）×（Ｂ−Ｓ＋１）回、出力画素の数だけ使用される。
【００５９】
入力Ｘは、長さＡ×Ｂ×Ｃの列ベクトルとして表すことができる。フィルタＦは、Ａ×Ｂ×Ｃ行およびＫ×Ａ×Ｂ列を有する行列として表すことができる。列の数は、フィルタの数に入力画像内の画素数を乗算したものに相当する。したがって、Ｋ×Ａ×Ｂ列を有する出力行ベクトルは、ＹＴ＝ＸＴ×Ｆとして得ることができる。
【００６０】
上記の定式化がスパース行列の乗算をもたらすことが理解されよう。特に、Ｆの各列は、最大でＲ×Ｓ×Ｔの非ゼロエントリを有する。Ｆの各行は、最大でＫ×Ｒ×Ｓの非ゼロエントリを有する。
【００６１】
Ｆのスパースな性質により、その記憶および使用において様々な最適化が可能になることが理解されよう。たとえば、Ｆは、行または列の最初のインデックスが絶対位置であり、後続のインデックスが相対位置であるように記憶されてよい。
【００６２】
様々な実施形態において、フィルタ・テンソルＦの異なる表現が使用される。
【００６３】
そのような例示的な１つの表現において、行列全体を記憶する代わりに、フィルタ入力列内の非ゼロ値ごとにフィルタ入力行および要素値が記憶される。このような実施形態において、出力ＺＴ内のエントリｊを計算するために、Ｆの列ｊが考慮される。列内では、記憶された行インデックスｍ∈［０…ｉ］ごとにＸＴ内のエントリｍがルックアップされ、スカラーが式４のように累積される。
【００６４】
【数４】
2021522565.tif 000007
【００６５】
いくつかの実施形態において、列あたりの非ゼロ値の最大数は、Ｒ×Ｓ×Ｔに限定される。これは、フィルタの最大受容野に相当する。
【００６６】
上記のように、Ｆ内の列ごとに、すべての非ゼロ値が読み取られる。ニューラル・コアを使用するいくつかの実施形態において、入力データ値は、重み値と並行して読み取られる。Ｆのスパース性を活用するために、ゼロ値を有する入力は無視される。各入力と対応する重みとの積は、上記の式４に従って部分和に加算される。いくつかの実施形態において、加算は並行して実行される。
【００６７】
別の例示的な表現において、行列全体を記憶する代わりに、行内の非ゼロ値ごとに、列インデックスおよび値が記憶される。このような実施形態において、出力ＹＴを計算するために、Ｆの行ｉが考慮される。記憶された行インデックスｍ∈［０…ｊ］ごとに、ＸＴ内のエントリｍがルックアップされ、スカラーが式５のように累積される。
【００６８】
【数５】
2021522565.tif 000008
【００６９】
いくつかの実施形態において、行あたりの非ゼロ値の最大数は、Ｋ×Ｒ×Ｓに限定される。これは、可能な最大の並列度に相当する。
【００７０】
Ｆ内の行ごとに、すべてのゼロ値が並行して読み取られる。ニューラル・コアを使用するいくつかの実施形態において、入力データ値は重み値と並行して読み取られる。Ｆのスパース性を活用するために、ゼロ値を有する入力は無視される。各入力と対応する重みとの積は、上記の式５に従って部分和に加算される。いくつかの実施形態において、加算は並行して実行される。いくつかの実施形態において、部分和はメモリに戻されて記憶される。この記憶ステップにより、エネルギー使用を負担して任意のさらなるニューロンのために回路を再利用することができる。
【００７１】
上記の実施形態において、各入力データ値は一度読み取られ、次いで下流処理のために分割される。入力を体系的な方法で通過することによって、データ・メモリを繰り返し読み書きする必要性が最小限に抑えられる。部分和は繰り返しロードされるが、入力データのスパース性は一度確認されるだけでよい。
【００７２】
上記の例において、Ｆのスパース性は、クラスタ内で２つの行がターゲットとして同じニューロンを有さないように行をクラスタ化することによって活用されてよい。いくつかの実施形態において、各行は、可能な限り多くのニューロンをターゲットとする。いずれの場合でも、各行は異なる軸索発火値を有してよい。この表現により、すべてのニューロンの状態をまとめて読み取ることができる。
【００７３】
別の例示的な表現において、行列全体を記憶する代わりに、Ｆ内の非ゼロ値ごとに、行および列のインデックスならびに対応する値が記憶される。このような実施形態において、出力ＹＴを計算するために、Ｆの行ｉおよび列ｊが考慮される。記憶されたインデックス・エントリごとに、スカラーは式６のように累積される。
【００７４】
【数６】
2021522565.tif 000009
【００７５】
次に図６を参照すると、本開示の実施形態による、ニューラル・ネットワークを動作させる方法が示されている。６０１において、入力データ・テンソルの一部がニューラル・コアで受け取られる。ニューラル・コアはメモリを備える。６０２において、重みテンソルの少なくとも一部がメモリから読み取られる。重みテンソルは複数のフィルタを含む。６０３において、重みテンソルの一部が入力データ・テンソルの一部に適用されて、結果が得られる。６０４において、結果は、ネットワークを介して少なくとも１つの他のニューラル・コアに送られる。
【００７６】
次に図７を参照すると、コンピューティング・ノードの例の概略図が示されている。コンピューティング・ノード１０は、適切なコンピューティング・ノードの一例にすぎず、本明細書に記載の実施形態の使用または機能の範囲に関するいずれの制限を示唆することも意図されていない。それでもなお、コンピューティング・ノード１０は、上述の機能のいずれかを実装すること、または実行すること、あるいはその両方が可能である。
【００７７】
コンピューティング・ノード１０には、多数の他の汎用または専用のコンピューティング・システム環境または構成で動作可能なコンピュータ・システム／サーバ１２がある。コンピュータ・システム／サーバ１２と共に使用するのに適したよく知られているコンピューティング・システム、環境、または構成あるいはその組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【００７８】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システムが実行可能な命令の一般的なコンテキストで説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、論理、データ構造などを含んでよい。コンピュータ・システム／サーバ１２は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境の中で実践されてよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルとリモート両方のコンピュータ・システム記憶媒体の中に配置されてよい。
【００７９】
図７に示すように、コンピューティング・ノード１０内のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形式で示されている。コンピュータ・システム／サーバ１２の構成要素には、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム構成要素をプロセッサ１６に結合するバス１８が含まれ得るが、これらに限定されない。
【００８０】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの１つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ）ローカル・バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）、およびアドバンスト・マイクロコントローラ・バス・アーキテクチャ（ＡＭＢＡ）が含まれる。
【００８１】
コンピュータ・システム／サーバ１２は、典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１２によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取り外し可能な媒体と取り外し不可の媒体の両方を含む。
【００８２】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。単に例として、ストレージ・システム３４は、取り外し不可、不揮発性の磁気媒体（図示せず、通常「ハード・ドライブ」と呼ばれる）に対する読取りと書込みを行うために提供され得る。図示しないが、取り外し可能、不揮発性の磁気ディスク（たとえば、「フロッピー・ディスク」）に対する読取りと書込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読取りと書込みを行うための光ディスク・ドライブが提供され得る。そのような例において、それぞれは、１つまたは複数のデータ媒体インターフェースによってバス１８に接続され得る。以下でさらに詳細に示され、説明されるように、メモリ２８は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット（たとえば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含んでよい。
【００８３】
プログラム・モジュール４２のセット（少なくとも１つ）を有するプログラム／ユーティリティ４０は、限定ではなく例として、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ２８に記憶されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せはそれぞれ、ネットワーキング環境の実装を含んでよい。プログラム・モジュール４２は一般に、本明細書に記載の実施形態の機能または方法あるいはその両方を実行する。
【００８４】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ１２が１つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（たとえば、ネットワーク・カード、モデムなど）、あるいはその組合せと通信してもよい。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（たとえば、インターネット）、あるいはその組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図示されるように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方がコンピュータ・システム／サーバ１２と共に使用され得ることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【００８５】
様々な実施形態において、１つまたは複数のニューラル・コア（図示せず）は、バス１８に結合される。このような実施形態において、ニューラル・コアは、バス１８を介してメモリ２８からデータを受け取るか、またはメモリ２８にデータを書き込んでよい。同様に、ニューラル・コアは、本明細書に記載されているようにバス１８を介して他の構成要素と相互作用してよい。様々な実施形態において、ニューラル・コアは、たとえば、本明細書の他の場所に記載されているように１つまたは複数のローカル・コントローラ、メモリ、またはクロックを含んでよい。
【００８６】
本開示は、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せを含んでよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体（または複数の媒体）を含んでよい。
【００８７】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは溝内に命令が記録された隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波（たとえば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【００８８】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【００８９】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋などのオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは同様のプログラム言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行されてよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は外部コンピュータ（たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して）に対して行われてもよい。いくつかの実施形態において、本開示の態様を実行するために、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行することができる。
【００９０】
本開示の態様は、本開示の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【００９１】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定された機能／動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定された機能／動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
【００９２】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定された機能／動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００９３】
図中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定される論理機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態において、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。たとえば、連続して示された２つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【００９４】
本開示の様々な実施形態の説明を例示の目的で提示してきたが、網羅的であること、または開示された実施形態に限定されることは意図されていない。説明した実施形態の範囲から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の応用例、または市場で見られる技術を超える技術的改良を最もよく説明するために、あるいは、本明細書で開示される実施形態を当業者が理解できるようにするために選択されたものである。
【図１】
2021522565.tif 000010
【図２】
2021522565.tif 000011
【図３】
2021522565.tif 000012
【図４】
2021522565.tif 000013
【図５】
2021522565.tif 000014
【図６】
2021522565.tif 000015
【図７】
2021522565.tif 000016
【手続補正書】
【提出日】令和2年11月4日(2020.11.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラル・ネットワークを管理するためのシステムであって、
複数のニューラル・コアであって、前記複数のニューラル・コアのそれぞれが少なくとも１つのメモリを備える、前記複数のニューラル・コアと、
前記複数のニューラル・コアを相互に結合するネットワークと
を含み、前記複数のニューラル・コアのそれぞれの前記少なくとも１つのメモリが、複数のフィルタを含む重みテンソルの少なくとも一部を含み、各ニューラル・コアが、
入力データ・テンソルの一部を、ローカルで読み出すか、または受け取り、
前記入力データ・テンソルの前記一部に前記重みテンソルの前記一部を適用し、
適用した結果を、ローカルに記憶するか、または前記ネットワークを介して前記複数のニューラル・コアのうちの他のものに送るように適合される、システム。
【請求項２】
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に適用することが、ベクトル行列の乗算と前記乗算に続く活性化関数を計算することを含む、請求項１に記載のシステム。
【請求項３】
前記複数のニューラル・コアが２次元配列に配置される、請求項１または２のいずれかに記載のシステム。
【請求項４】
前記ネットワークが前記複数のニューラル・コア間の局所結合性を提供する、請求項１ないし３のいずれかに記載のシステム。
【請求項５】
前記ネットワークが前記２次元配列内で隣接するニューラル・コア間の結合性を提供する、請求項３に記載のシステム。
【請求項６】
前記複数のニューラル・コアのそれぞれにおける前記重みテンソルの前記一部が、前記重みテンソルのブロックを含む、請求項１ないし５のいずれかに記載のシステム。
【請求項７】
前記重みテンソルが、前記２次元配列の物理次元に従って前記複数のニューラル・コア間で分散される、請求項３に記載のシステム。
【請求項８】
前記重みテンソルの次元、形状、および分割が設定変更可能である、請求項７に記載のシステム。
【請求項９】
前記重みテンソルが、局所性を示す１つまたは複数の次元に沿って分割される、請求項７に記載のシステム。
【請求項１０】
前記１つまたは複数の次元が空間次元を含む、請求項９に記載のシステム。
【請求項１１】
前記１つまたは複数の次元が少なくとも１つの特徴次元を含む、請求項９に記載のシステム。
【請求項１２】
前記重みテンソルが疎である、請求項１ないし１１のいずれかに記載のシステム。
【請求項１３】
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に前記適用する間、前記重みテンソルの非ゼロ値だけが計算に使用される、請求項１２に記載のシステム。
【請求項１４】
前記メモリが、前記重みテンソルの非ゼロ値だけを記憶する、請求項１２または１３のいずれかに記載のシステム。
【請求項１５】
前記重みテンソルが畳み込みフィルタに対応する、請求項１ないし１４のいずれかに記載のシステム。
【請求項１６】
前記重みテンソルが１つまたは複数の空間次元に沿って分割される、請求項１５に記載のシステム。
【請求項１７】
前記結果が中間結果であり、
各ニューラル・コアが、前記中間結果をローカルに記憶するか、または前記ネットワークを介して前記複数のニューラル・コアのうちの別のものに送るようにさらに適合され、
各ニューラル・コアが、前記中間結果を、ローカルで読み出すか、または受け取り、前記中間結果から最終結果を計算するようにさらに適合される
請求項１ないし１６のいずれかに記載のシステム。
【請求項１８】
前記複数のニューラル・コアのそれぞれにおける前記重みテンソルの前記一部が、前記重みテンソルのブロックを含み、前記複数のニューラル・コアのサブセットが、同じ複製されたブロックを含む、請求項１ないし１７のいずれかに記載のシステム。
【請求項１９】
前記複数のニューラル・コアのうちの１つが、重みテンソル全体を含む、請求項１ないし１８のいずれかに記載のシステム。
【請求項２０】
前記１つのニューラル・コアが、前記重みテンソルの前記一部を前記複数のニューラル・コアのうちの他のものにそれぞれ分散するように適合される、請求項１９に記載のシステム。
【請求項２１】
前記重みテンソル全体を含む中央メモリをさらに含み、前記中央メモリから、前記重みテンソルの前記一部を、前記複数のニューラル・コアのうちの他のものにそれぞれ分散するように適合される、請求項１ないし２０のいずれかに記載のシステム。
【請求項２２】
前記重みテンソルの前記一部が前記複数のフィルタのサブセットに対応する、請求項１ないし２１のいずれかに記載のシステム。
【請求項２３】
前記重みテンソルが圧縮される、請求項１ないし２２のいずれかに記載のシステム。
【請求項２４】
前記重みテンソルが、ゼロ値を除外するように符号化される、請求項１ないし２３のいずれかに記載のシステム。
【請求項２５】
前記重みテンソルの各値が、−１、０、または１である、請求項１ないし２４のいずれかに記載のシステム。
【請求項２６】
重みテンソル・ブロックが、複数のニューラル・コアのために複製される、請求項１８に記載のシステム。
【請求項２７】
前記重みテンソル・ブロックが、単一のニューラル・コア・メモリにのみ記憶され、ネットワークオンチップを介して複数のニューラル・コアに分散される、請求項２６に記載のシステム。
【請求項２８】
前記重みテンソル・ブロックが、コア配列の外部にある単一のメモリのみに記憶される、請求項２７に記載のシステム。
【請求項２９】
ニューラル・ネットワークを管理するための方法であって、
メモリを備えるニューラル・コアにおいて、入力データ・テンソルの一部を、ローカルで読み出すか、または受け取ることと、
複数のフィルタを含む重みテンソルの少なくとも一部を前記メモリから読み取ることと、
前記重みテンソルの前記一部を前記入力データ・テンソルの前記一部に適用して結果を得ることと、
前記結果を、ローカルに記憶するか、またはネットワーク介して少なくとも１つの他のニューラル・コアに送ることと
を含む、方法。
【請求項３０】
前記重みテンソルが疎である、請求項２９に記載の方法。
【請求項３１】
前記重みテンソルの前記一部が前記複数のフィルタのサブセットに対応する、請求項２９または３０のいずれかに記載の方法。
【請求項３２】
前記重みテンソルが圧縮される、請求項２９ないし３１のいずれかに記載の方法。
【請求項３３】
前記重みテンソルが、ゼロ値を除外するように符号化される、請求項２９ないし３２のいずれかに記載の方法。
【請求項３４】
前記重みテンソルの各値が、−１、０、または１である、請求項２９ないし３３のいずれかに記載の方法。
【請求項３５】
ニューラル・ネットワークを管理するためのコンピュータ・プログラムを格納する記録場体であって、前記コンピュータプログラムは、コンピュータに、請求項２９ないし３４のいずれかに記載の方法を実行させるためのプログラムである、記録媒体。
【請求項３６】
ニューラル・ネットワークを管理するためのコンピュータ・プログラムであって、コンピュータに、請求項２９ないし３４のいずれかに記載の方法を実行させるためのコンピュータ・プログラム。
【国際調査報告】
2021522565.tif 000017
2021522565.tif 000018
2021522565.tif 000019
2021522565.tif 000020