(57)【要約】  ニューラル・ネットワーク計算のためのシステムが提供される。ニューラル・ネットワーク・プロセッサが、複数のニューラル・コアを含む。ニューラル・ネットワーク・プロセッサは、活性値ごとの１つ又は複数のプロセッサ精度を有する。プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される。変換回路は、ニューラル・ネットワーク・プロセッサに結合され、１つ又は複数の特徴においてチャネルごとの入力精度を有する入力データ・テンソルを受け取り、入力データ・テンソルを入力精度からプロセッサ精度に変換し、入力データ・テンソルを、各々がプロセッサ特徴次元の１つに一致する複数のブロックに分割し、複数のブロックの各々を複数のニューラル・コアの１つに提供するように適合される。ニューラル・ネットワーク・プロセッサは、複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される。
2022502733.tif 000002
【特許請求の範囲】
【請求項１】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサで入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、入力ビット精度の特徴次元を有し、前記ニューラル・ネットワーク・プロセッサは、１又は複数のプロセッサ・ビット精度の１又は複数のプロセッサ特徴次元用に構成される、受け取ることと、
前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度の１つに変換することと、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割することと、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供することと、
前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算することと
を含む、方法。
【請求項２】
前記入力データ・テンソルは、画像を含む、請求項１に記載の方法。
【請求項３】
前記入力データ・テンソルを変換することは、最下位ビットを除去することを含む、請求項１に記載の方法。
【請求項４】
前記ニューラル・ネットワーク・プロセッサは、所定数の特徴用に構成され、前記入力データ・テンソルを変換することは、入力特徴を、各々が前記所定数の特徴を下回る又は前記所定数の特徴と等しい複数の特徴セットに分割することを含む、請求項１に記載の方法。
【請求項５】
前記入力データ・テンソルを分割することは、前記プロセッサ特徴次元の１つと一致するように、前記特徴次元の１つにおいて前記複数のブロックをゼロ・パディングすることを含む、請求項１に記載の方法。
【請求項６】
前記入力データ・テンソルを分割することは、前記入力データ・テンソルをパックすることを含む、請求項１に記載の方法。
【請求項７】
前記入力データ・テンソルをパックすることは、
入力特徴を再編成して、未使用のプロセッサ特徴次元に入力特徴の非特徴次元からのデータをロードすることを含む、請求項６に記載の方法。
【請求項８】
前記ニューラル・ネットワーク・プロセッサは、
複数の固定精度の部分和を計算し、
前記複数の固定精度の部分和を結合して完全和にする
ように構成される、請求項１に記載の方法。
【請求項９】
前記複数の固定精度の部分和は、中間結果である、請求項８に記載の方法。
【請求項１０】
前記中間結果は、入力のサブセットの加重和である、請求項９に記載の方法。
【請求項１１】
前記ニューラル・ネットワーク・プロセッサは、前記複数の固定精度の部分和から部分和を繰り返し計算するように構成される、請求項８に記載の方法。
【請求項１２】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、前記ニューラル・ネットワーク・プロセッサは、活性値ごとの１つ又は複数のプロセッサ精度を有し、プロセッサ特徴次元を有するデータを受け入れるように構成される、ニューラル・ネットワーク・プロセッサと、
前記ニューラル・ネットワーク・プロセッサに結合され、
１つ又は複数の特徴においてチャネルごとの入力精度を有する入力データ・テンソルを受け取り、
前記入力データ・テンソルを前記入力精度から前記プロセッサ精度に変換し、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割し、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供する
ように適合された変換回路と
を含み、
前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、
システム。
【請求項１３】
前記入力データ・テンソルは、画像を含む、請求項１２に記載のシステム。
【請求項１４】
前記入力データ・テンソルを変換することは、最下位ビットを除去することを含む、請求項１２に記載のシステム。
【請求項１５】
前記入力データ・テンソルを変換することは、各チャネルを、前記プロセッサ精度を下回る又は前記プロセッサ精度と等しい複数の値に分割することを含む、請求項１２に記載のシステム。
【請求項１６】
前記入力データ・テンソルを分割することは、前記プロセッサ特徴次元と一致するように、前記特徴次元の１つにおいて前記複数のブロックをゼロ・パディングすることを含む、請求項１２に記載のシステム。
【請求項１７】
前記入力データ・テンソルを分割することは、前記入力データ・テンソルをパックすることを含む、請求項１２に記載のシステム。
【請求項１８】
前記入力データ・テンソルをパックすることは、
入力特徴を再編成して、未使用のプロセッサ特徴次元に入力特徴の非特徴次元からのデータをロードすることを含む
請求項１７に記載のシステム。
【請求項１９】
前記ニューラル・ネットワーク・プロセッサは、
複数の固定精度の部分和を計算し、
前記複数の固定精度の部分和を結合して完全和にする
ように構成される、請求項１２に記載のシステム。
【請求項２０】
前記複数の固定精度の部分和は、中間結果である、請求項１９に記載のシステム。
【請求項２１】
前記中間結果は、入力のサブセットの加重和である、請求項２０に記載のシステム。
【請求項２２】
前記ニューラル・ネットワーク・プロセッサは、前記複数の固定精度の部分和から部分和を繰り返し計算するように構成される、請求項１９に記載のシステム。
【請求項２３】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、１つ又は複数のプロセッサ・ビット精度の１つ又は複数のプロセッサ特徴次元用に構成される、ニューラル・ネットワーク・プロセッサと、
前記ニューラル・ネットワーク・プロセッサに結合され、
入力ビット精度の特徴次元を有する入力データ・テンソルを受け取り、
前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ精度の１つに変換し、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割し、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供する
ように適合された変換回路と
を含み、
前記複数のニューラル・コアは、１つ又は複数のニューラル・ネットワーク層の前記出力を計算するように適合される、システム。
【請求項２４】
入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、１つ又は複数の特徴においてチャネルごとの入力精度を有する、受け取ることと、
前記入力データ・テンソルを前記入力精度からニューラル・ネットワーク・プロセッサのプロセッサ精度に変換することであって、前記ニューラル・ネットワーク・プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される、変換することと、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割することと、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供することと
を含み、
前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ニューラル・ネットワークのマルチコア・ハードウェア実装に関し、より具体的には、ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現に関する。
【発明の概要】
【０００２】
本開示の実施形態によると、ニューラル・ネットワークを動作させる方法及びそのためのコンピュータ・プログラム製品が提供される。種々の実施形態において、複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサで入力データ・テンソルを受け取る。入力データ・テンソルは、入力ビット精度の特徴次元を有する。ニューラル・ネットワーク・プロセッサは、１又は複数のプロセッサ・ビット精度の１又は複数のプロセッサ特徴次元用に構成される。入力データ・テンソルは、入力ビット精度からプロセッサ・ビット精度の１つに変換される。入力データ・テンソルは、各々がプロセッサ特徴次元の１つに一致する複数のブロックに分割される。複数のブロックの各々は、複数のニューラル・コアの１つに提供される。複数のニューラル・コアは、１つ又は複数のニューラル・ネットワーク層の出力を計算する。
【０００３】
本開示の実施形態によると、ニューラル・ネットワーク計算のためのシステムが提供される。ニューラル・ネットワーク・プロセッサが、複数のニューラル・コアを含む。ニューラル・ネットワーク・プロセッサは、活性値（activation）ごとの１つ又は複数のプロセッサ精度を有する。プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される。変換回路が、ニューラル・ネットワーク・プロセッサに結合され、１つ又は複数の特徴においてチャネルごとの入力精度を有する入力データ・テンソルを受け取り、入力データ・テンソルを入力精度から前記プロセッサ精度に変換し、入力データ・テンソルを、各々がプロセッサ特徴次元の１つに一致する複数のブロックに分割し、複数のブロックの各々を複数のニューラル・コアの１つに提供するように適合される。ニューラル・ネットワーク・プロセッサは、複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される。
【図面の簡単な説明】
【０００４】
【図１】本開示の実施形態によるニューラル・コアを示す。
【図２】本開示の実施形態による例示的な推論処理ユニット（ＩＰＵ）を示す。
【図３】本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）を示す。
【図４】本開示の実施形態による変換を示す。
【図５】本開示の実施形態による、ニューラル・ネットワークを動作させる方法を示す。
【図６】本開示の実施形態によるコンピューティング・ノードを示す。
【発明を実施するための形態】
【０００５】
人工ニューロンは、入力の線形結合の非線形関数を出力とする数学関数である。２つのニューロンは、一方の出力が他方への入力である場合に結合されている。重みは、１つのニューロンの出力と別のニューロンの入力との間の結合の強度をエンコードするスカラー値である。
【０００６】
ニューロンは、その入力の加重和に非線形活性化関数を適用することによって、活性値と呼ばれる出力を計算する。加重和は、各入力に対応する重みを掛けて、その積を累積することによって計算された中間結果である。部分和は、入力のサブセットの加重和である。１つ又は複数の部分和を累積することによって、全ての入力の加重和を段階的に計算することができる。
【０００７】
ニューラル・ネットワークは、１つ又は複数のニューロンの集合である。ニューラル・ネットワークは、多くの場合、層と呼ばれるニューロンのグループに分割される。層は、全てが同じ層から入力を受け取り、全てが出力を同じ層に送り、典型的には同様の機能を果たす１つ又は複数のニューロンの集合である。入力層は、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層は、ニューラル・ネットワークの外部のターゲットに出力を送る層である。全ての他の層は、中間処理層である。多層ニューラル・ネットワークは、１つより多い層をもつニューラル・ネットワークである。ディープ・ニューラル・ネットワークは、多くの層をもつ多層ニューラル・ネットワークである。
【０００８】
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソルの要素の連続的な部分配列である。
【０００９】
各ニューラル・ネットワーク層は、パラメータ・テンソルＶ、重みテンソルＷ、入力データ・テンソルＸ、出力データ・テンソルＹ、及び中間データ・テンソルＺと関連付けられる。パラメータ・テンソルは、層内のニューロン活性化関数σを制御するパラメータの全てを含む。重みテンソルは、入力を層に結合する重みの全てを含む。入力データ・テンソルは、層が入力として消費するデータの全てを含む。出力データ・テンソルは、層が出力として計算するデータの全てを含む。中間データ・テンソルは、層が、部分和などの中間計算として生成するあらゆるデータを含む。
【００１０】
層についてのデータ・テンソル（入力、出力及び中間）は、３次元とすることができ、最初の２つの次元は、空間的な位置をエンコードするものと解釈し、３つ目の次元は、異なる特徴をエンコードするものと解釈することができる。例えば、データ・テンソルがカラー画像を表すとき、最初の２つの次元は、画像内の垂直座標及び水平座標をエンコードし、３つ目の次元は、各位置における色をエンコードする。入力データ・テンソルＸの全ての要素は、別個の重みによって全てのニューロンに結合することができるので、重みテンソルＷは、一般に、入力データ・テンソルの３次元（入力行ａ、入力列ｂ、入力特徴ｃ）と出力データ・テンソルの３次元（出力行ｉ、出力列ｊ、出力特徴ｋ）とを連結して、６次元を有する。中間データ・テンソルＺは、出力データ・テンソルＹと同じ形を有する。パラメータ・テンソルＶは、３つの出力データ・テンソル次元を、活性化関数σのパラメータをインデックス化する付加的な次元ｏと連結する。
【００１１】
ある層の出力データ・テンソルＹの要素は、式１のように計算することができ、ここで、ニューロン活性化関数σは、活性化関数パラメータＶ［ｉ，ｊ，ｋ，：］のベクトルにより構成され、加重和Ｚ［ｉ，ｊ，ｋ］は、式２のように計算することができる。
【数１】
2022502733.tif 000003
【数２】
2022502733.tif 000004
【００１２】
表記を簡単にするために、異なる活性化関数が使用されるときに一般性を失うことなく同じ記述が適用されるという理解の下に、式２の加重和を出力と呼ぶことができ、これは、線形活性化関数Ｙ［ｉ，ｊ，ｋ］＝σ（Ｚ［ｉ，ｊ，ｋ］）＝Ｚ［ｉ，ｊ，ｋ］を使用することに等しい。
【００１３】
種々の実施形態において、上述のような出力データ・テンソルの計算は、より小さい問題に分解される。次に、各問題は、１つ又は複数のニューラル・コア上で、又は従来のマルチコア・システムの１つ又は複数のコア上で、並列に解くことができる。
【００１４】
畳み込み層は、隣接する層のニューロン間の局所的な結合パターンを強制することによって、自然なセンサ・データの空間的な局所相関を利用し、各ニューロンは、入力データ・テンソルの小さい領域のみから結合を受け取る。この結合の範囲は、ニューロンの受容野と呼ばれる。同じ出力特徴の要素を計算する全てのニューロンは、同じ重みのセット及びフィルタと呼ばれる活性化関数パラメータを、局所受容野と共有する。フィルタのサイズは、入力サイズに関係なく固定されるため、畳み込み層は、同じ入力及び出力次元をもつ全結合層よりもはるかに少ない自由パラメータと、それに応じて、より小さいメモリ・フットプリントとを有する。
【００１５】
例えば、空間畳み込み層において、各フィルタの受容野は、入力データ・テンソルの高さ及び幅のほんの一部しかカバーしないが、特徴深さ全体にわたって延びる。こうしたアーキテクチャは、フィルタが、空間的な局所入力パターンに対する最も強い応答を生成することを保証する。層は、入力データ・テンソルの幅及び高さにわたって各フィルタを畳み込み、フィルタのエントリと各位置における入力データ・テンソルとの間のドット積を計算し、各フィルタについての２次元活性化マップを生成することによって、その出力を計算する。
【００１６】
全てのフィルタについての特徴マップを積層することによって、畳み込み層についての完全な出力データ・テンソルが形成される。従って、出力データ・テンソルの全ての要素は、入力における小さい領域を見て、フィルタ・パラメータを同じ出力特徴マップ内のニューロンと共有するニューロンの出力と解釈することもできる。
【００１７】
畳み込み層の出力データ・テンソルのサイズは、入力データ・テンソルのサイズ、フィルタのサイズ、及びフィルタが入力データ・テンソルに適用されるストライドの関数であることが理解されるであろう。ストライド・パラメータであるｓｔｒｉｄｅ＿ａ、ｓｔｒｉｄｅ＿ｂ及びｓｔｒｉｄｅ＿ｃは、各フィルタ・アプリケーションの間の距離を定め、１の値は、各フィルタ・アプリケーションが、入力データ・テンソルの関連する次元に沿って１ピクセルだけシフトされることを示す。可能な出力ピクセルのサブセットのみを計算することによって、より大きいストライド値は計算負荷を低減させる。
【００１８】
種々の畳み込みにおいて、入力データ・テンソルのサイズに対して出力データ・テンソルのサイズを変えるために、例えばこれらのサイズを等しくするために、ゼロ・パディングを入力データ・テンソルに適用できることがさらに認識されるであろう。説明を簡単にするために、種々の例において、パディングを省略することができるが、本開示の範囲から逸脱することなく、種々の実施形態において、パディングを含ませ得ることが理解されるであろう。
【００１９】
畳み込み層において、同じ出力特徴の全ての要素は、各出力位置で複製される同じフィルタ重みを共有するので、６次元の重みテンソルは、多くの反復ブロックを含む。層の出力特徴を計算するフィルタの全てを含み、かつ、出力特徴次元（出力特徴ｋ）及び３つのフィルタ入力次元（フィルタ行ｒ、フィルタ列ｓ、フィルタ特徴ｔ）によってインデックス化された高密度（dense）４次元フィルタ・テンソルＦによって、共有されるフィルタ重みをよりコンパクトに記述することができる。
【数３】
2022502733.tif 000005
【００２０】
式３において、ここでは簡単にするために省略される境界条件に適合させるように、出力データ・テンソルのエッジ付近のｉ、ｊ、ｋ座標について、ｒ、ｓ、ｔの総和の範囲を縮小させることができる。ストライド・パラメータｓｔｒｉｄｅ＿ａ及びパディング・パラメータｐａｄ＿ａなどの、行座標計算をパラメータ化する定数のセットをＡとすると、アクセサ（accessor）関数α（ｉ，ｒ；Ａ）は、出力データ要素Ｙ［ｉ，ｊ，ｋ］を計算するために、フィルタ重みＦ［ｋ，ｒ，ｓ，ｔ］を掛ける入力データ・テンソル要素の行座標ａを計算する同様のアクセサ関数β（ｊ，ｓ；Ｂ）及びγ（ｒ，ｔ；Γ）は、列座標ｂ及び特徴座標ｃを計算する。
【００２１】
種々の実施形態において、上述のような畳み込みは、より小さい問題に分解される。次に、各問題は、１つ又は複数のニューロモーフィック・コア上で、又は従来のマルチコア・システムの１つ又は複数のコア上で、並列に解くことができる。
【００２２】
幾つかの実施形態において、入力データ・テンソルが、行次元及び列次元に沿って、特徴次元の全長を延びるブロックに分解される。そうした実施形態においては、ニューラル・コアは、入力データ・テンソル・ブロック及びフィルタ・テンソルＦ全体を受け取る。入力データ・テンソル・ブロックの境界にあるピクセルの畳み込みを正しく計算するために、入力データ・テンソル・ブロックを、それらが重なり合うように生成することができる。或いは、複数のニューラル・コアからの部分和を合計して、最終結果に達することができる。
【００２３】
ニューラル・ネットワークは、画像分類などの種々のタスクに有用である。低精度の及び／又は制約付きニューラル・ネットワーク・ハードウェア・アクセラレータは、従来のコンピュータ（例えば、ＣＰＵ及びＧＰＵ）と比べてニューロン活性値（層間で送られる値）及びパラメータ（ニューロン間の重みなど）のためのより低いビット精度を用いて、そうしたタスクを実行することができる。このことは、タスク性能（分類精度など）を犠牲にすることなく、シリコン面積並びに計算エネルギーを節約する。
【００２４】
しかしながら、低精度の基板では、高精度である可能性のある入力を互換性のある低精度表現に変換するという課題がある。そうした低精度表現は、スカラーではなく、入力のベクトルなどの特定の形式を必要とする場合がある。さらに、ハードウェア精度は、製造時に固定されるが、異なるニューラル・ネットワーク及び単一のニューラル・ネットワーク内の異なる層は、様々なレベルの精度の恩恵を受けることができる。
【００２５】
代替的な手法のこれらの欠点及び他の欠点に対処するために、本開示は、低精度のハードウェア・ニューラル・ネットワーク基板が、種々の形式で高精度データを受け取り、それを互換性のある低精度ベクトル表現に変換し、柔軟な精度計算を実施することを可能にするシステム及び方法を提供する。
【００２６】
ここで図１を参照すると、本開示の実施形態によるニューラル・コアが示される。ニューラル・コア１００は、出力テンソルの１つのブロックを計算するタイル化可能な（tileable）計算ユニットである。ニューラル・コア１００は、Ｍ個の入力及びＮ個の出力を有する。種々の実施形態において、Ｍ＝Ｎである。出力テンソル・ブロックを計算するために、ニューラル・コアは、Ｍ×１の入力データ・テンソル・ブロック１０１とＭ×Ｎの重みテンソル・ブロック１０２とを掛けて、その積を累積し、１×Ｎの中間テンソル・ブロック１０３に格納される加重和にする。Ｏ×Ｎのパラメータ・テンソル・ブロックは、Ｎ個のニューロン活性化関数の各々を指定するＯ個のパラメータを含み、Ｎ個のニューロン活性化関数を中間テンソル・ブロック１０３に適用して、１×Ｎの出力テンソル・ブロック１０５を生成する。
【００２７】
複数のニューラル・コアをニューラル・コア・アレイにタイル化することができる。幾つかの実施形態において、アレイは２次元である。
【００２８】
ニューラル・ネットワーク・モデルは、ニューロン間の結合のグラフ、並びに全てのニューロンについての重み及び活性化関数パラメータを含む、ニューラル・ネットワークにより実行される計算全体をまとめて指定する定数のセットである。訓練は、所望の関数を実行するために、ニューラル・ネットワーク・モデルを修正するプロセスである。推論は、ニューラル・ネットワーク・モデルを修正することなく、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
【００２９】
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサのカテゴリーである。ニューラル推論チップは、推論処理ユニットの特定の物理的インスタンスである。
【００３０】
ここで図２を参照すると、本開示の実施形態による例示的な推論処理ユニット（ＩＰＵ）が示される。ＩＰＵ２００は、ニューラル・ネットワーク・モデル用のメモリ２０１を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。ＩＰＵ２００は、一時的なものとすることができる活性化メモリ２０２を含む。活性化メモリ２０２は、入力領域及び出力領域に分けることができ、処理のためにニューロン活性値を格納する。ＩＰＵ２００は、モデル・メモリ２０１からニューラル・ネットワーク・モデルをロードするニューラル計算ユニット２０３を含む。入力活性値は、各計算ステップに先立って、活性化メモリ２０２から提供される。ニューラル計算ユニット２０３からの出力は、同じ又は別のニューラル計算ユニットでの処理のために、活性化メモリ２０２に書き戻される。
【００３１】
種々の実施形態において、スケジューラ２０４が、ＩＰＵ２００に含まれる。そうした実施形態において、ＩＰＵ内の全ての動作は、スケジューラによって指示される。下述のように、種々の実施形態において、中央スケジューラもしくは分散型スケジューラ又はその両方を設けることができる。グローバル・スケジューラは、チップ・マイクロエンジンと呼ぶことができ、一方、ローカル・スケジューラは、コア・マイクロエンジン又はローカル・コントローラと呼ぶことができる。種々の実施形態において、スケジューラは、１つ又は複数のマイクロエンジン、マイクロコントローラ、状態機械、ＣＰＵ、又は他のコントローラを含む。
【００３２】
ここで図３を参照すると、本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）が示される。ＩＰＵ３００は、ニューラル・ネットワーク・モデル用のモデル・メモリ３０１を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。ＩＰＵ３００は、一時的なものとすることができる活性化メモリ３０２を含む。活性化メモリ３０２は、入力領域及び出力領域に分けることができ、処理のためにニューロン活性値を格納する。幾つかの実施形態において、ＩＰＵ３００は、チップ・レベルの命令を格納するための命令メモリ３０７を含む。
【００３３】
ＩＰＵ３００は、アレイ３０５内に複数のコア３０３を含む。各コア３０３は、モデル・メモリ３０１からニューラル・ネットワーク・モデルをロードするニューラル計算ユニット３３３を含む。また、各コアは、ローカル活性化メモリ３３２も含む。入力活性値は、各計算ステップに先立って、ローカル活性化メモリ３３２から提供される。ニューラル計算ユニット３３３からの出力は、同じ又は別のニューラル計算ユニットでの処理のために、活性化メモリ３３２に書き戻される。
【００３４】
種々の実施形態において、グローバル・スケジューラ３０４が、ＩＰＵ３００に含まれる。種々の実施形態において、ローカル・コア・コントローラ３３４が、各コア３０３上に含まれる。そうした実施形態において、動作の指示は、グローバル・スケジューラ（チップ・マイクロエンジン）とローカル・コア・コントローラ（コア・マイクロエンジン）との間で共有される。幾つかの実施形態において、チップ・マイクロエンジン３０４により実行されるチップ・レベル命令を格納するためのチップ・レベル命令メモリ３０６が提供される。幾つかの実施形態において、コア３０３は、コア・マイクロエンジン３３４により実行されるコア・レベル命令を格納するためのコア・レベル命令メモリ３３６を含む。
【００３５】
３１１において、グローバル・スケジューラ３０４によって、計算命令が、命令メモリ３０１から各コア３０３にロードされる。３１２において、グローバル・スケジューラ３０４によって、パラメータ（ニューラル・ネットワーク／シナプス重みなど）が、モデル・メモリ３０１から各コア３０３にロードされる。３１３において、グローバル・スケジューラ３０４によって、ニューラル・ネットワーク活性値データが、データ・メモリ３０２から各コア３０３にロードされる。３１４において、マトリクス３０５内のコアが、計算を実行し、出力ニューロン活性値を生成する。特に、計算は、入力シナプス重みを入力活性値に適用することを含む。こうした計算を実行するために、イン・シリコ・デンドライト（in silico dendrite）並びにベクトル乗算ユニットを含む種々の方法が利用可能であることが理解されるであろう。３１５において、計算による結果が、データ・メモリ３０２に格納される。これらの段階は、各コア上のニューラル計算ユニットの効率的な使用がもたらされるように、パイプライン化することができる。
【００３６】
入力及び出力は、所与のニューラル・ネットワークの要件に応じて、ローカル活性化メモリ３３２からグローバル活性化メモリ３０２に転送される場合があることが理解されるであろう。同様に、モデル・メモリ及び命令メモリは、チップ・レベル・コンポーネント及びコア・レベル・コンポーネントの両方を持つ場合がある。コア・レベルでは、３４１において、計算命令がローカル命令メモリ３３６にロードされる。３４２において、パラメータ（例えば、ニューラル・ネットワーク／シナプス重み）が、モデル・メモリ３３１にロードされる。３４３において、ニューラル・ネットワーク活性化データが、データ・メモリ３３２にロードされる。３４４において、計算ユニット３３３は、出力活性値又は部分和を計算した。３４５において、計算による結果は、データ・メモリ３３２から出力される。これらの段階は、各コアの効率的な使用がもたらされるように、パイプライン化することができる。
【００３７】
ここで図４を参照すると、本開示の実施形態による変換が示される。種々の実施形態において、高精度から低精度への変換、もしくはスカラーからベクトルへの変換、又はその両方が提供される。特に、変換ブロックは、種々の形式の高精度データを受け取り、それをハードウェア互換性のある低精度表現に変換することができる。同様に、変換ブロックは、様々な形式のスカラー又はベクトル・データを受け取り、それをハードウェア互換性のあるベクトル表現に変換することもできる。
【００３８】
入力画像（例えば、４０１）は、多くの場合、各々が８ビット精度（コーディング０〜２５５）を有する３色チャネル（例えば、ＲＧＢ）である。例えば、ハードウェアがＲビットを用いて各活性化チャネルを表現する場合（ここで、Ｒ＜８）、種々の手法を用いて、Ｒビットの精度にキャストすることができる。
●８−Ｒ最下位ビットを除去することによって、各８ビット値をＲビット値にキャストすることができる（例えば、８ビット全ての精度を必要としない場合）。
●各８ビット値を、８／Ｒ  Ｒビット値にキャストすることができる（例えば、Ｒ＝２の場合、８／２＝４  ２ビット値が使用される）。
●各８ビット値を、８／Ｒ  Ｒビット値より小さい値にキャストすることができる（例えば、Ｒ＝２の場合、２  ２ビット値を使用し、４の最下位ビットを削除することができる）。
【００３９】
Ｗを入力幅、Ｈを入力高さ、Ｃをチャネル又は色の入力数とすると、サイズＷ×Ｈ×Ｃの入力画像（例えば、４０１）は、Ｗ×Ｈ  Ｃ−要素ベクトル、又はＷ×Ｈ×Ｃスカラーとして表すことができる。例えば、ハードウェアがＴ−要素ベクトルを入力として使用する場合、Ｔ−要素ベクトルにキャストするための幾つかの方法が存在する。
●Ｔ＞Ｃの場合、各Ｃ−要素ベクトルを、Ｔ−Ｃゼロ・エントリを有するＴ−要素ベクトルに直接マッピングし、その結果、Ｗ×Ｈ  Ｔ−要素ベクトルを得ることができる。
●Ｔ＞Ｃの場合、最大Ｔ／Ｃのピクセルを各Ｔ−要素ベクトルにパックすることができる。例えば、Ｃ＝３及びＴ＝２４の場合、例えば、８ピクセルを幅４及び高さ２のストライドを有する４×２のパッチにパックし、その結果、Ｗ／４×Ｈ／２Ｔ−要素ベクトルを得ることができる。
●Ｔ＞Ｃの場合、次の層における計算のために最適化するように、最大Ｔ／Ｃピクセルを各Ｔ−要素ベクトルにパックすることができる。例えば、Ｃ＝３及びＴ＝２４で、次の層が８×８の畳み込みを実装している場合、８ピクセルを４のストライドを有する８×１のパッチなどにパックし、その結果、Ｗ／４×Ｈ  Ｔ−要素ベクトルを得ることができる。ここで、次の層は、結果として得られる入力にわたって１×８の畳み込みの実施のみを必要とし、ハードウェア利用率を最適化する。
●Ｔ＜Ｃの場合、各Ｃ−要素ベクトルをＣ／Ｔ  Ｔ−要素ベクトルにアンパックし、その結果、Ｗ×Ｈ×Ｃ／Ｔ  Ｔ−要素ベクトルを得ることができる。例えば、Ｃ＝４及びＴ＝２の場合、各４−要素ベクトルを２  ２−要素ベクトルにアンパックして、Ｗ×Ｈ×２  ２−要素ベクトルを得ることができる。
【００４０】
変形の説明に役立つ実例において、入力画像４０１は、２５６×２５６×３であり、基礎となるハードウェアは、４ビット活性値及び３２−要素ベクトルを使用する。入力画像４０１は、４×４アレイのコア４０２の間で分配される。畳み込みを完了するために、各コアは、７×７×３フィルタのために元の画像４０１の（３２＋３）×（３２＋３）×３部分を必要とする。複数行のスクラッチ・パッド・メモリ４０２を用いて、１×７×３（×４）の最上位ビットを、３２−要素プラットフォーム・ベクトル４０４に収まる（要素あたり４ビットの）２１−要素ベクトルにパックする。図示されるように、２の列ストライドが使用され、幾らかのデータ重複が生じるが、畳み込み層のためにデータがサイジングされる。
【００４１】
この変換の結果は、７×７×３フィルタが、７×１×２１フィルタになるというものである。ベクトル利用率は、
【数４】
2022502733.tif 000006
である。パックされた画像テンソル４０５、４０６は、２５６×１２８×３２であるので、（４×４アレイ４０２内の）各コアは、テンソルの３２×１６×３２部分（テンソルレット）を受け取る。
【００４２】
図示のように、入力ブロックを二重バッファリングして、先行するテンソル４０６をコア・アレイ４０２に送りながら交互に１つのテンソル４０５を処理することができる。
【００４３】
上記の例は、入力データ・テンソルの１つの可能な構成にすぎないことが理解されるであろう。例えば、４×７×１のスワッチ・サイズは、
【数５】
2022502733.tif 000007
のベクトル利用率をもたらす。
【００４４】
種々の実施形態において、柔軟な精度変換が提供される。例示的なニューラル・ネットワークにおいて、各ニューラル・ネットワーク層は、各々がＳビットで表される低精度重みを用いて、各々がＲビットで表される低精度活性値を計算する。上述のように、層内のニューロンは、１つ（又は複数）の前の層から、入力Ｘ（要素ｘｉを有する）を受け取る。各ニューロンは、入力と、入力に適用される重みのセットＷ（要素ｗｉを有する）とに基づいて、その状態Ｙを計算し、ここで、入力に重みのセットＷが適用された結果は、バイアスに加えられ、非線形活性化関数σを介して実行される。例えば、単一のニューロン活性値を計算するために、
【数６】
2022502733.tif 000008
である。
【００４５】
基礎となるハードウェアにおいては、Ｙ及びｘｉによって与えられる各出力及び入力活性値を表すために、Ｒビットの精度が使用される。ｗｉによって与えられる各重み値を表すために、Ｓビットの精度が使用される。所与のネットワーク構造において、各層は、高い性能（例えば、分類精度）を維持するために、異なる最小精度を必要とする場合がある。１つの手法は、必要とされる最大精度を有するハードウェアを構築し、その精度を全ての層に対して使用することである。しかしながら、そうした手法は、エネルギー及び面積の効率が悪い。従って、本開示は、時間と精度とをトレードオフすることによって、任意の必要な精度を実装することができる反復手法を提供する。
【００４６】
Ｒビットを超えて活性化精度を高めるために、修正された非線形関数を用いて、最初に最上位Ｒビットを計算し、それらをゼロにし（例えば、シフトすることによって）、次いで、次の最上位Ｒビットを計算し、反復する。Ｒ＊Ｍビットの精度を計算するために、Ｍ個のステップを必要とする（このステップは、後の演算でパイプライン化することができる）。精度の限度は、非線形性：
【数７】
2022502733.tif 000009
の前の部分和の精度によって設定される。
【００４７】
Ｓビットを超えて重み精度を高めるために、反復手法が適用される。Ｓ＊Ｎビットの重み精度を計算するために、Ｎ個のステップが使用される。各ステップにおいて、部分和の更新が、最上位から始めてＳビットで計算される。各更新の後、部分和Ｐに（最大で）２Ｓを掛けて（ビット・シフトで実装することができる)、より上位のビットを適切にクレジットすることができる。Ｐが最下位のＳビットで更新されるときには、Ｐには２Ｓを掛けない。
【００４８】
例えば、Ｓ＝１及びＮ＝４の場合、Ｓ＊Ｎビット精度重みｗｉが格納され、４つの部分：
【数８】
2022502733.tif 000010
として使用される。
【００４９】
次に、部分和Ｐは、複数の部分和計算にわたって、次の：
【数９】
2022502733.tif 000011
のように集約される。
【００５０】
従って、本開示は、種々のスカラー、ベクトル、マトリクス、又はテンソル形式で利用し、ターゲットの基礎となるニューラル・ネットワーク・ハードウェアと互換性のあるテンソル形式を出力するトランスコーディング回路（transcoding circuit）を提供する。種々の実施形態においては、高精度データが、基礎となるニューラル・ネットワーク・ハードウェアと互換性のある低精度データに変換される。幾つかの実施形態においては、スカラー、ベクトル、マトリクス、又はテンソル形式の入力が、基礎となるニューラル・ネットワーク・ハードウェアと互換性のある特定のベクトル、マトリクス、又はテンソル形式に変換される。種々の実施形態においては、柔軟な精度変換が提供される。幾つかの実施形態においては、連続的に反復することによって、柔軟な精度変換が実施される。
【００５１】
本開示は、１つ又は複数の低精度の計算要素を用いることによって、柔軟な精度のニューラル・ネットワーク計算を提供する。幾つかの実施形態においては、柔軟な精度は、連続的に反復することによって、低精度要素で達成される。
【００５２】
ここで図５を参照すると、本開示の実施形態によるニューラル・ネットワークが示される。５０１において、複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサの入力データ・テンソルを受け取る。入力データ・テンソルは、入力ビット精度の特徴次元を有する。ニューラル・ネットワーク・プロセッサは、１つ又は複数のプロセッサ・ビット精度の１つ又は複数のプロセッサ特徴次元用に構成される。５０２において、入力データ・テンソルは、入力ビット精度からプロセッサ・ビット精度の１つに変換される。５０３において、入力データ・テンソルは、各々がプロセッサ特徴次元の１つに一致する複数のブロックに分割される。５０４において、複数のブロックの各々が、複数のニューラル・コアの１つに提供される。５０５において、複数のニューラル・コアは、１つ又は複数のニューラル・ネットワーク層の出力を計算する。
【００５３】
ここで図６を参照すると、コンピューティング・ノードの例の概略が示される。コンピューティング・ノード１０は、好適なコンピューティング・ノードの一例に過ぎず、本発明で説明される実施形態の使用範囲又は機能に関する何らかの制限を示唆することを意図するものではない。それにも関わらず、コンピューティング・ノード１０は、上述した機能のいずれも実装もしくは実行し又はその両方を行うことができる。
【００５４】
コンピューティング・ノード１０において、多数の他の汎用又は専用コンピューティング・システム環境又は構成で動作可能なコンピュータ・システム／サーバ１２がある。コンピュータ・システム／サーバ１２と共に用いるのに好適であり得る周知のコンピューティング・システム、環境もしくは構成又はそれらの組み合わせの例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等が含まれる。
【００５５】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ１２は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【００５６】
図６に示されるように、コンピューティング・ノード１０におけるコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット１６、システム・メモリ２８、及びシステム・メモリ２８を含む種々のシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができる。
【００５７】
バス１８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの１つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、及びＡｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＡＭＢＡ）を含む。
【００５８】
コンピュータ・システム／サーバ１２は、典型的には、種々のコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム／サーバ１２によってアクセス可能な任意の利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【００５９】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０もしくはキャッシュ・メモリ３２又はその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム３４を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。こうした事例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス１８に接続することができる。以下でさらに示され説明されるように、メモリ２８は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００６０】
限定ではなく例として、メモリ２８内に、プログラム・モジュール４２のセット（少なくとも１つ）を有するプログラム／ユーティリティ４０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール４２は、一般に、本明細書で説明される本発明の実施形態の機能もしくは方法又はその両方を実行する。
【００６１】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４等といった１つ又は複数の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つ又は複数のデバイス、もしくはコンピュータ・システム／サーバ１２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）、又はそれらの組み合わせと通信することもできる。こうした通信は、入力／出力（Ｉ／Ｏ）インターフェース２２を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、もしくはパブリック・ネットワーク（例えば、インターネット）、又はそれらの組み合わせのような、１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ２０は、バス１８を介して、コンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されていないが、コンピュータ・システム／サーバ１２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【００６２】
本開示は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００６３】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、命令がそこに記録された機械的にエンコアされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００６４】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はそれらの組み合わせなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ又はそれらの組み合わせを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
【００６５】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコア、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コア又はオブジェクト・コアとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【００６６】
本開示の態様は、本開示の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００６７】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むようにすることもできる。
【００６８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００６９】
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、テンソルレット、ブロック、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【００７０】
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
【図１】
2022502733.tif 000012
【図２】
2022502733.tif 000013
【図３】
2022502733.tif 000014
【図４】
2022502733.tif 000015
【図５】
2022502733.tif 000016
【図６】
2022502733.tif 000017
【手続補正書】
【提出日】令和3年4月13日(2021.4.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサで入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、入力ビット精度の特徴次元を有し、前記ニューラル・ネットワーク・プロセッサは、１又は複数のプロセッサ・ビット精度の１又は複数のプロセッサ特徴次元用に構成される、受け取ることと、
前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度の１つに変換することと、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割することと、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供することと、
前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算することと
を含む、方法。
【請求項２】
前記入力データ・テンソルは、画像を含む、請求項１に記載の方法。
【請求項３】
前記入力データ・テンソルを変換することは、最下位ビットを除去することを含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記ニューラル・ネットワーク・プロセッサは、所定数の特徴用に構成され、前記入力データ・テンソルを変換することは、入力特徴を、各々が前記所定数の特徴を下回る又は前記所定数の特徴と等しい複数の特徴セットに分割することを含む、請求項１から請求項３までのいずれか１項に記載の方法。
【請求項５】
前記入力データ・テンソルを分割することは、前記プロセッサ特徴次元の１つと一致するように、前記特徴次元の１つにおいて前記複数のブロックをゼロ・パディングすることを含む、請求項１から請求項４までのいずれか１項に記載の方法。
【請求項６】
前記入力データ・テンソルを分割することは、前記入力データ・テンソルをパックすることを含む、請求項１から請求項５までのいずれか１項に記載の方法。
【請求項７】
前記入力データ・テンソルをパックすることは、
入力特徴を再編成して、未使用のプロセッサ特徴次元に入力特徴の非特徴次元からのデータをロードすることを含む、請求項６に記載の方法。
【請求項８】
前記ニューラル・ネットワーク・プロセッサは、
複数の固定精度の部分和を計算し、
前記複数の固定精度の部分和を結合して完全和にする
ように構成される、請求項１から請求項７までのいずれか１項に記載の方法。
【請求項９】
前記複数の固定精度の部分和は、中間結果である、請求項８に記載の方法。
【請求項１０】
前記中間結果は、入力のサブセットの加重和である、請求項９に記載の方法。
【請求項１１】
前記ニューラル・ネットワーク・プロセッサは、前記複数の固定精度の部分和から部分和を繰り返し計算するように構成される、請求項８に記載の方法。
【請求項１２】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、前記ニューラル・ネットワーク・プロセッサは、活性値ごとの１つ又は複数のプロセッサ・ビット精度を有し、プロセッサ特徴次元を有するデータを受け入れるように構成される、ニューラル・ネットワーク・プロセッサと、
前記ニューラル・ネットワーク・プロセッサに結合され、
１つ又は複数の特徴においてチャネルごとの入力ビット精度を有する入力データ・テンソルを受け取り、
前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度に変換し、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割し、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供する
ように適合された変換回路と
を含み、
前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、
システム。
【請求項１３】
前記入力データ・テンソルを変換することは、各チャネルを、前記プロセッサ・ビット精度を下回る又は前記プロセッサ・ビット精度と等しい複数の値に分割することを含む、請求項１２に記載のシステム。
【請求項１４】
複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、１つ又は複数のプロセッサ・ビット精度の１つ又は複数のプロセッサ特徴次元用に構成される、ニューラル・ネットワーク・プロセッサと、
前記ニューラル・ネットワーク・プロセッサに結合され、
入力ビット精度の特徴次元を有する入力データ・テンソルを受け取り、
前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度の１つに変換し、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割し、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供する
ように適合された変換回路と
を含み、
前記複数のニューラル・コアは、１つ又は複数のニューラル・ネットワーク層の前記出力を計算するように適合される、システム。
【請求項１５】
入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、１つ又は複数の特徴においてチャネルごとの入力ビット精度を有する、受け取ることと、
前記入力データ・テンソルを前記入力ビット精度からニューラル・ネットワーク・プロセッサのプロセッサ・ビット精度に変換することであって、前記ニューラル・ネットワーク・プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される、変換することと、
前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の１つに一致する複数のブロックに分割することと、
前記複数のブロックの各々を前記複数のニューラル・コアの１つに提供することと
を含み、
前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、１つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、方法。
【請求項１６】
請求項１から請求項１１までのいずれか１項又は請求項１５に記載の方法をコンピュータに実行させるコンピュータ・プログラム。
【請求項１７】
請求項１６に記載のコンピュータ・プログラムが格納されたコンピュータ可読ストレージ媒体。
【国際調査報告】
2022502733.tif 000018
2022502733.tif 000019