JP7325158B2 - ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現 - Google Patents

ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現 Download PDF

Info

Publication number
JP7325158B2
JP7325158B2 JP2021513308A JP2021513308A JP7325158B2 JP 7325158 B2 JP7325158 B2 JP 7325158B2 JP 2021513308 A JP2021513308 A JP 2021513308A JP 2021513308 A JP2021513308 A JP 2021513308A JP 7325158 B2 JP7325158 B2 JP 7325158B2
Authority
JP
Japan
Prior art keywords
processor
neural network
input data
input
data tensor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021513308A
Other languages
English (en)
Other versions
JP2022502733A (ja
Inventor
アーサー、ジョン、バーノン
キャシディ、アンドルー、スティーブン
フリックナー、マイロン
ダッタ、パラブ
ペナー、ハートムート
アプスワミー、ラティナクマー
潤 澤田
モダ、ダーメンドラ
エサー、スティーブン、カイル
タバ、ブライアン、セイショー
クラモ、ジェニファー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022502733A publication Critical patent/JP2022502733A/ja
Application granted granted Critical
Publication of JP7325158B2 publication Critical patent/JP7325158B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

本開示の実施形態は、ニューラル・ネットワークのマルチコア・ハードウェア実装に関し、より具体的には、ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現に関する。
本開示の実施形態によると、ニューラル・ネットワークを動作させる方法及びそのためのコンピュータ・プログラム製品が提供される。種々の実施形態において、複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサで入力データ・テンソルを受け取る。入力データ・テンソルは、入力ビット精度の特徴次元を有する。ニューラル・ネットワーク・プロセッサは、1又は複数のプロセッサ・ビット精度の1又は複数のプロセッサ特徴次元用に構成される。入力データ・テンソルは、入力ビット精度からプロセッサ・ビット精度の1つに変換される。入力データ・テンソルは、各々がプロセッサ特徴次元の1つに一致する複数のブロックに分割される。複数のブロックの各々は、複数のニューラル・コアの1つに提供される。複数のニューラル・コアは、1つ又は複数のニューラル・ネットワーク層の出力を計算する。
本開示の実施形態によると、ニューラル・ネットワーク計算のためのシステムが提供される。ニューラル・ネットワーク・プロセッサが、複数のニューラル・コアを含む。ニューラル・ネットワーク・プロセッサは、活性値(activation)ごとの1つ又は複数のプロセッサ精度を有する。プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される。変換回路が、ニューラル・ネットワーク・プロセッサに結合され、1つ又は複数の特徴においてチャネルごとの入力精度を有する入力データ・テンソルを受け取り、入力データ・テンソルを入力精度から前記プロセッサ精度に変換し、入力データ・テンソルを、各々がプロセッサ特徴次元の1つに一致する複数のブロックに分割し、複数のブロックの各々を複数のニューラル・コアの1つに提供するように適合される。ニューラル・ネットワーク・プロセッサは、複数のニューラル・コアによって、1つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される。
本開示の実施形態によるニューラル・コアを示す。 本開示の実施形態による例示的な推論処理ユニット(IPU)を示す。 本開示の実施形態によるマルチコア推論処理ユニット(IPU)を示す。 本開示の実施形態による変換を示す。 本開示の実施形態による、ニューラル・ネットワークを動作させる方法を示す。 本開示の実施形態によるコンピューティング・ノードを示す。
人工ニューロンは、入力の線形結合の非線形関数を出力とする数学関数である。2つのニューロンは、一方の出力が他方への入力である場合に結合されている。重みは、1つのニューロンの出力と別のニューロンの入力との間の結合の強度をエンコードするスカラー値である。
ニューロンは、その入力の加重和に非線形活性化関数を適用することによって、活性値と呼ばれる出力を計算する。加重和は、各入力に対応する重みを掛けて、その積を累積することによって計算された中間結果である。部分和は、入力のサブセットの加重和である。1つ又は複数の部分和を累積することによって、全ての入力の加重和を段階的に計算することができる。
ニューラル・ネットワークは、1つ又は複数のニューロンの集合である。ニューラル・ネットワークは、多くの場合、層と呼ばれるニューロンのグループに分割される。層は、全てが同じ層から入力を受け取り、全てが出力を同じ層に送り、典型的には同様の機能を果たす1つ又は複数のニューロンの集合である。入力層は、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層は、ニューラル・ネットワークの外部のターゲットに出力を送る層である。全ての他の層は、中間処理層である。多層ニューラル・ネットワークは、1つより多い層をもつニューラル・ネットワークである。ディープ・ニューラル・ネットワークは、多くの層をもつ多層ニューラル・ネットワークである。
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソルの要素の連続的な部分配列である。
各ニューラル・ネットワーク層は、パラメータ・テンソルV、重みテンソルW、入力データ・テンソルX、出力データ・テンソルY、及び中間データ・テンソルZと関連付けられる。パラメータ・テンソルは、層内のニューロン活性化関数σを制御するパラメータの全てを含む。重みテンソルは、入力を層に結合する重みの全てを含む。入力データ・テンソルは、層が入力として消費するデータの全てを含む。出力データ・テンソルは、層が出力として計算するデータの全てを含む。中間データ・テンソルは、層が、部分和などの中間計算として生成するあらゆるデータを含む。
層についてのデータ・テンソル(入力、出力及び中間)は、3次元とすることができ、最初の2つの次元は、空間的な位置をエンコードするものと解釈し、3つ目の次元は、異なる特徴をエンコードするものと解釈することができる。例えば、データ・テンソルがカラー画像を表すとき、最初の2つの次元は、画像内の垂直座標及び水平座標をエンコードし、3つ目の次元は、各位置における色をエンコードする。入力データ・テンソルXの全ての要素は、別個の重みによって全てのニューロンに結合することができるので、重みテンソルWは、一般に、入力データ・テンソルの3次元(入力行a、入力列b、入力特徴c)と出力データ・テンソルの3次元(出力行i、出力列j、出力特徴k)とを連結して、6次元を有する。中間データ・テンソルZは、出力データ・テンソルYと同じ形を有する。パラメータ・テンソルVは、3つの出力データ・テンソル次元を、活性化関数σのパラメータをインデックス化する付加的な次元oと連結する。
ある層の出力データ・テンソルYの要素は、式1のように計算することができ、ここで、ニューロン活性化関数σは、活性化関数パラメータV[i,j,k,:]のベクトルにより構成され、加重和Z[i,j,k]は、式2のように計算することができる。
Figure 0007325158000001

Figure 0007325158000002
表記を簡単にするために、異なる活性化関数が使用されるときに一般性を失うことなく同じ記述が適用されるという理解の下に、式2の加重和を出力と呼ぶことができ、これは、線形活性化関数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k]を使用することに等しい。
種々の実施形態において、上述のような出力データ・テンソルの計算は、より小さい問題に分解される。次に、各問題は、1つ又は複数のニューラル・コア上で、又は従来のマルチコア・システムの1つ又は複数のコア上で、並列に解くことができる。
畳み込み層は、隣接する層のニューロン間の局所的な結合パターンを強制することによって、自然なセンサ・データの空間的な局所相関を利用し、各ニューロンは、入力データ・テンソルの小さい領域のみから結合を受け取る。この結合の範囲は、ニューロンの受容野と呼ばれる。同じ出力特徴の要素を計算する全てのニューロンは、同じ重みのセット及びフィルタと呼ばれる活性化関数パラメータを、局所受容野と共有する。フィルタのサイズは、入力サイズに関係なく固定されるため、畳み込み層は、同じ入力及び出力次元をもつ全結合層よりもはるかに少ない自由パラメータと、それに応じて、より小さいメモリ・フットプリントとを有する。
例えば、空間畳み込み層において、各フィルタの受容野は、入力データ・テンソルの高さ及び幅のほんの一部しかカバーしないが、特徴深さ全体にわたって延びる。こうしたアーキテクチャは、フィルタが、空間的な局所入力パターンに対する最も強い応答を生成することを保証する。層は、入力データ・テンソルの幅及び高さにわたって各フィルタを畳み込み、フィルタのエントリと各位置における入力データ・テンソルとの間のドット積を計算し、各フィルタについての2次元活性化マップを生成することによって、その出力を計算する。
全てのフィルタについての特徴マップを積層することによって、畳み込み層についての完全な出力データ・テンソルが形成される。従って、出力データ・テンソルの全ての要素は、入力における小さい領域を見て、フィルタ・パラメータを同じ出力特徴マップ内のニューロンと共有するニューロンの出力と解釈することもできる。
畳み込み層の出力データ・テンソルのサイズは、入力データ・テンソルのサイズ、フィルタのサイズ、及びフィルタが入力データ・テンソルに適用されるストライドの関数であることが理解されるであろう。ストライド・パラメータであるstride_a、stride_b及びstride_cは、各フィルタ・アプリケーションの間の距離を定め、1の値は、各フィルタ・アプリケーションが、入力データ・テンソルの関連する次元に沿って1ピクセルだけシフトされることを示す。可能な出力ピクセルのサブセットのみを計算することによって、より大きいストライド値は計算負荷を低減させる。
種々の畳み込みにおいて、入力データ・テンソルのサイズに対して出力データ・テンソルのサイズを変えるために、例えばこれらのサイズを等しくするために、ゼロ・パディングを入力データ・テンソルに適用できることがさらに認識されるであろう。説明を簡単にするために、種々の例において、パディングを省略することができるが、本開示の範囲から逸脱することなく、種々の実施形態において、パディングを含ませ得ることが理解されるであろう。
畳み込み層において、同じ出力特徴の全ての要素は、各出力位置で複製される同じフィルタ重みを共有するので、6次元の重みテンソルは、多くの反復ブロックを含む。層の出力特徴を計算するフィルタの全てを含み、かつ、出力特徴次元(出力特徴k)及び3つのフィルタ入力次元(フィルタ行r、フィルタ列s、フィルタ特徴t)によってインデックス化された高密度(dense)4次元フィルタ・テンソルFによって、共有されるフィルタ重みをよりコンパクトに記述することができる。
Figure 0007325158000003
式3において、ここでは簡単にするために省略される境界条件に適合させるように、出力データ・テンソルのエッジ付近のi、j、k座標について、r、s、tの総和の範囲を縮小させることができる。ストライド・パラメータstride_a及びパディング・パラメータpad_aなどの、行座標計算をパラメータ化する定数のセットをAとすると、アクセサ(accessor)関数α(i,r;A)は、出力データ要素Y[i,j,k]を計算するために、フィルタ重みF[k,r,s,t]を掛ける入力データ・テンソル要素の行座標aを計算する同様のアクセサ関数β(j,s;B)及びγ(r,t;Γ)は、列座標b及び特徴座標cを計算する。
種々の実施形態において、上述のような畳み込みは、より小さい問題に分解される。次に、各問題は、1つ又は複数のニューロモーフィック・コア上で、又は従来のマルチコア・システムの1つ又は複数のコア上で、並列に解くことができる。
幾つかの実施形態において、入力データ・テンソルが、行次元及び列次元に沿って、特徴次元の全長を延びるブロックに分解される。そうした実施形態においては、ニューラル・コアは、入力データ・テンソル・ブロック及びフィルタ・テンソルF全体を受け取る。入力データ・テンソル・ブロックの境界にあるピクセルの畳み込みを正しく計算するために、入力データ・テンソル・ブロックを、それらが重なり合うように生成することができる。或いは、複数のニューラル・コアからの部分和を合計して、最終結果に達することができる。
ニューラル・ネットワークは、画像分類などの種々のタスクに有用である。低精度の及び/又は制約付きニューラル・ネットワーク・ハードウェア・アクセラレータは、従来のコンピュータ(例えば、CPU及びGPU)と比べてニューロン活性値(層間で送られる値)及びパラメータ(ニューロン間の重みなど)のためのより低いビット精度を用いて、そうしたタスクを実行することができる。このことは、タスク性能(分類精度など)を犠牲にすることなく、シリコン面積並びに計算エネルギーを節約する。
しかしながら、低精度の基板では、高精度である可能性のある入力を互換性のある低精度表現に変換するという課題がある。そうした低精度表現は、スカラーではなく、入力のベクトルなどの特定の形式を必要とする場合がある。さらに、ハードウェア精度は、製造時に固定されるが、異なるニューラル・ネットワーク及び単一のニューラル・ネットワーク内の異なる層は、様々なレベルの精度の恩恵を受けることができる。
代替的な手法のこれらの欠点及び他の欠点に対処するために、本開示は、低精度のハードウェア・ニューラル・ネットワーク基板が、種々の形式で高精度データを受け取り、それを互換性のある低精度ベクトル表現に変換し、柔軟な精度計算を実施することを可能にするシステム及び方法を提供する。
ここで図1を参照すると、本開示の実施形態によるニューラル・コアが示される。ニューラル・コア100は、出力テンソルの1つのブロックを計算するタイル化可能な(tileable)計算ユニットである。ニューラル・コア100は、M個の入力及びN個の出力を有する。種々の実施形態において、M=Nである。出力テンソル・ブロックを計算するために、ニューラル・コアは、M×1の入力データ・テンソル・ブロック101とM×Nの重みテンソル・ブロック102とを掛けて、その積を累積し、1×Nの中間テンソル・ブロック103に格納される加重和にする。O×Nのパラメータ・テンソル・ブロックは、N個のニューロン活性化関数の各々を指定するO個のパラメータを含み、N個のニューロン活性化関数を中間テンソル・ブロック103に適用して、1×Nの出力テンソル・ブロック105を生成する。
複数のニューラル・コアをニューラル・コア・アレイにタイル化することができる。幾つかの実施形態において、アレイは2次元である。
ニューラル・ネットワーク・モデルは、ニューロン間の結合のグラフ、並びに全てのニューロンについての重み及び活性化関数パラメータを含む、ニューラル・ネットワークにより実行される計算全体をまとめて指定する定数のセットである。訓練は、所望の関数を実行するために、ニューラル・ネットワーク・モデルを修正するプロセスである。推論は、ニューラル・ネットワーク・モデルを修正することなく、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサのカテゴリーである。ニューラル推論チップは、推論処理ユニットの特定の物理的インスタンスである。
ここで図2を参照すると、本開示の実施形態による例示的な推論処理ユニット(IPU)が示される。IPU200は、ニューラル・ネットワーク・モデル用のメモリ201を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。IPU200は、一時的なものとすることができる活性化メモリ202を含む。活性化メモリ202は、入力領域及び出力領域に分けることができ、処理のためにニューロン活性値を格納する。IPU200は、モデル・メモリ201からニューラル・ネットワーク・モデルをロードするニューラル計算ユニット203を含む。入力活性値は、各計算ステップに先立って、活性化メモリ202から提供される。ニューラル計算ユニット203からの出力は、同じ又は別のニューラル計算ユニットでの処理のために、活性化メモリ202に書き戻される。
種々の実施形態において、スケジューラ204が、IPU200に含まれる。そうした実施形態において、IPU内の全ての動作は、スケジューラによって指示される。下述のように、種々の実施形態において、中央スケジューラもしくは分散型スケジューラ又はその両方を設けることができる。グローバル・スケジューラは、チップ・マイクロエンジンと呼ぶことができ、一方、ローカル・スケジューラは、コア・マイクロエンジン又はローカル・コントローラと呼ぶことができる。種々の実施形態において、スケジューラは、1つ又は複数のマイクロエンジン、マイクロコントローラ、状態機械、CPU、又は他のコントローラを含む。
ここで図3を参照すると、本開示の実施形態によるマルチコア推論処理ユニット(IPU)が示される。IPU300は、ニューラル・ネットワーク・モデル用のモデル・メモリ301を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。IPU300は、一時的なものとすることができる活性化メモリ302を含む。活性化メモリ302は、入力領域及び出力領域に分けることができ、処理のためにニューロン活性値を格納する。幾つかの実施形態において、IPU300は、チップ・レベルの命令を格納するための命令メモリ307を含む。
IPU300は、アレイ305内に複数のコア303を含む。各コア303は、モデル・メモリ301からニューラル・ネットワーク・モデルをロードするニューラル計算ユニット333を含む。また、各コアは、ローカル活性化メモリ332も含む。入力活性値は、各計算ステップに先立って、ローカル活性化メモリ332から提供される。ニューラル計算ユニット333からの出力は、同じ又は別のニューラル計算ユニットでの処理のために、活性化メモリ332に書き戻される。
種々の実施形態において、グローバル・スケジューラ304が、IPU300に含まれる。種々の実施形態において、ローカル・コア・コントローラ334が、各コア303上に含まれる。そうした実施形態において、動作の指示は、グローバル・スケジューラ(チップ・マイクロエンジン)とローカル・コア・コントローラ(コア・マイクロエンジン)との間で共有される。幾つかの実施形態において、チップ・マイクロエンジン304により実行されるチップ・レベル命令を格納するためのチップ・レベル命令メモリ306が提供される。幾つかの実施形態において、コア303は、コア・マイクロエンジン334により実行されるコア・レベル命令を格納するためのコア・レベル命令メモリ336を含む。
311において、グローバル・スケジューラ304によって、計算命令が、命令メモリ301から各コア303にロードされる。312において、グローバル・スケジューラ304によって、パラメータ(ニューラル・ネットワーク/シナプス重みなど)が、モデル・メモリ301から各コア303にロードされる。313において、グローバル・スケジューラ304によって、ニューラル・ネットワーク活性値データが、データ・メモリ302から各コア303にロードされる。314において、マトリクス305内のコアが、計算を実行し、出力ニューロン活性値を生成する。特に、計算は、入力シナプス重みを入力活性値に適用することを含む。こうした計算を実行するために、イン・シリコ・デンドライト(in silico dendrite)並びにベクトル乗算ユニットを含む種々の方法が利用可能であることが理解されるであろう。315において、計算による結果が、データ・メモリ302に格納される。これらの段階は、各コア上のニューラル計算ユニットの効率的な使用がもたらされるように、パイプライン化することができる。
入力及び出力は、所与のニューラル・ネットワークの要件に応じて、ローカル活性化メモリ332からグローバル活性化メモリ302に転送される場合があることが理解されるであろう。同様に、モデル・メモリ及び命令メモリは、チップ・レベル・コンポーネント及びコア・レベル・コンポーネントの両方を持つ場合がある。コア・レベルでは、341において、計算命令がローカル命令メモリ336にロードされる。342において、パラメータ(例えば、ニューラル・ネットワーク/シナプス重み)が、モデル・メモリ331にロードされる。343において、ニューラル・ネットワーク活性化データが、データ・メモリ332にロードされる。344において、計算ユニット333は、出力活性値又は部分和を計算した。345において、計算による結果は、データ・メモリ332から出力される。これらの段階は、各コアの効率的な使用がもたらされるように、パイプライン化することができる。
ここで図4を参照すると、本開示の実施形態による変換が示される。種々の実施形態において、高精度から低精度への変換、もしくはスカラーからベクトルへの変換、又はその両方が提供される。特に、変換ブロックは、種々の形式の高精度データを受け取り、それをハードウェア互換性のある低精度表現に変換することができる。同様に、変換ブロックは、様々な形式のスカラー又はベクトル・データを受け取り、それをハードウェア互換性のあるベクトル表現に変換することもできる。
入力画像(例えば、401)は、多くの場合、各々が8ビット精度(コーディング0~255)を有する3色チャネル(例えば、RGB)である。例えば、ハードウェアがRビットを用いて各活性化チャネルを表現する場合(ここで、R<8)、種々の手法を用いて、Rビットの精度にキャストすることができる。
●8-R最下位ビットを除去することによって、各8ビット値をRビット値にキャストすることができる(例えば、8ビット全ての精度を必要としない場合)。
●各8ビット値を、8/R Rビット値にキャストすることができる(例えば、R=2の場合、8/2=4 2ビット値が使用される)。
●各8ビット値を、8/R Rビット値より小さい値にキャストすることができる(例えば、R=2の場合、2 2ビット値を使用し、4の最下位ビットを削除することができる)。
Wを入力幅、Hを入力高さ、Cをチャネル又は色の入力数とすると、サイズW×H×Cの入力画像(例えば、401)は、W×H C-要素ベクトル、又はW×H×Cスカラーとして表すことができる。例えば、ハードウェアがT-要素ベクトルを入力として使用する場合、T-要素ベクトルにキャストするための幾つかの方法が存在する。
●T>Cの場合、各C-要素ベクトルを、T-Cゼロ・エントリを有するT-要素ベクトルに直接マッピングし、その結果、W×H T-要素ベクトルを得ることができる。
●T>Cの場合、最大T/Cのピクセルを各T-要素ベクトルにパックすることができる。例えば、C=3及びT=24の場合、例えば、8ピクセルを幅4及び高さ2のストライドを有する4×2のパッチにパックし、その結果、W/4×H/2T-要素ベクトルを得ることができる。
●T>Cの場合、次の層における計算のために最適化するように、最大T/Cピクセルを各T-要素ベクトルにパックすることができる。例えば、C=3及びT=24で、次の層が8×8の畳み込みを実装している場合、8ピクセルを4のストライドを有する8×1のパッチなどにパックし、その結果、W/4×H T-要素ベクトルを得ることができる。ここで、次の層は、結果として得られる入力にわたって1×8の畳み込みの実施のみを必要とし、ハードウェア利用率を最適化する。
●T<Cの場合、各C-要素ベクトルをC/T T-要素ベクトルにアンパックし、その結果、W×H×C/T T-要素ベクトルを得ることができる。例えば、C=4及びT=2の場合、各4-要素ベクトルを2 2-要素ベクトルにアンパックして、W×H×2 2-要素ベクトルを得ることができる。
変形の説明に役立つ実例において、入力画像401は、256×256×3であり、基礎となるハードウェアは、4ビット活性値及び32-要素ベクトルを使用する。入力画像401は、4×4アレイのコア402の間で分配される。畳み込みを完了するために、各コアは、7×7×3フィルタのために元の画像401の(32+3)×(32+3)×3部分を必要とする。複数行のスクラッチ・パッド・メモリ402を用いて、1×7×3(×4)の最上位ビットを、32-要素プラットフォーム・ベクトル404に収まる(要素あたり4ビットの)21-要素ベクトルにパックする。図示されるように、2の列ストライドが使用され、幾らかのデータ重複が生じるが、畳み込み層のためにデータがサイジングされる。
この変換の結果は、7×7×3フィルタが、7×1×21フィルタになるというものである。ベクトル利用率は、
Figure 0007325158000004

である。パックされた画像テンソル405、406は、256×128×32であるので、(4×4アレイ402内の)各コアは、テンソルの32×16×32部分(テンソルレット)を受け取る。
図示のように、入力ブロックを二重バッファリングして、先行するテンソル406をコア・アレイ402に送りながら交互に1つのテンソル405を処理することができる。
上記の例は、入力データ・テンソルの1つの可能な構成にすぎないことが理解されるであろう。例えば、4×7×1のスワッチ・サイズは、
Figure 0007325158000005

のベクトル利用率をもたらす。
種々の実施形態において、柔軟な精度変換が提供される。例示的なニューラル・ネットワークにおいて、各ニューラル・ネットワーク層は、各々がSビットで表される低精度重みを用いて、各々がRビットで表される低精度活性値を計算する。上述のように、層内のニューロンは、1つ(又は複数)の前の層から、入力X(要素xを有する)を受け取る。各ニューロンは、入力と、入力に適用される重みのセットW(要素wを有する)とに基づいて、その状態Yを計算し、ここで、入力に重みのセットWが適用された結果は、バイアスに加えられ、非線形活性化関数σを介して実行される。例えば、単一のニューロン活性値を計算するために、
Figure 0007325158000006

である。
基礎となるハードウェアにおいては、Y及びxによって与えられる各出力及び入力活性値を表すために、Rビットの精度が使用される。wによって与えられる各重み値を表すために、Sビットの精度が使用される。所与のネットワーク構造において、各層は、高い性能(例えば、分類精度)を維持するために、異なる最小精度を必要とする場合がある。1つの手法は、必要とされる最大精度を有するハードウェアを構築し、その精度を全ての層に対して使用することである。しかしながら、そうした手法は、エネルギー及び面積の効率が悪い。従って、本開示は、時間と精度とをトレードオフすることによって、任意の必要な精度を実装することができる反復手法を提供する。
Rビットを超えて活性化精度を高めるために、修正された非線形関数を用いて、最初に最上位Rビットを計算し、それらをゼロにし(例えば、シフトすることによって)、次いで、次の最上位Rビットを計算し、反復する。R*Mビットの精度を計算するために、M個のステップを必要とする(このステップは、後の演算でパイプライン化することができる)。精度の限度は、非線形性:
Figure 0007325158000007

の前の部分和の精度によって設定される。
Sビットを超えて重み精度を高めるために、反復手法が適用される。S*Nビットの重み精度を計算するために、N個のステップが使用される。各ステップにおいて、部分和の更新が、最上位から始めてSビットで計算される。各更新の後、部分和Pに(最大で)2を掛けて(ビット・シフトで実装することができる)、より上位のビットを適切にクレジットすることができる。Pが最下位のSビットで更新されるときには、Pには2を掛けない。
例えば、S=1及びN=4の場合、S*Nビット精度重みwが格納され、4つの部分:
Figure 0007325158000008

として使用される。
次に、部分和Pは、複数の部分和計算にわたって、次の:
Figure 0007325158000009

のように集約される。
従って、本開示は、種々のスカラー、ベクトル、マトリクス、又はテンソル形式で利用し、ターゲットの基礎となるニューラル・ネットワーク・ハードウェアと互換性のあるテンソル形式を出力するトランスコーディング回路(transcoding circuit)を提供する。種々の実施形態においては、高精度データが、基礎となるニューラル・ネットワーク・ハードウェアと互換性のある低精度データに変換される。幾つかの実施形態においては、スカラー、ベクトル、マトリクス、又はテンソル形式の入力が、基礎となるニューラル・ネットワーク・ハードウェアと互換性のある特定のベクトル、マトリクス、又はテンソル形式に変換される。種々の実施形態においては、柔軟な精度変換が提供される。幾つかの実施形態においては、連続的に反復することによって、柔軟な精度変換が実施される。
本開示は、1つ又は複数の低精度の計算要素を用いることによって、柔軟な精度のニューラル・ネットワーク計算を提供する。幾つかの実施形態においては、柔軟な精度は、連続的に反復することによって、低精度要素で達成される。
ここで図5を参照すると、本開示の実施形態によるニューラル・ネットワークが示される。501において、複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサの入力データ・テンソルを受け取る。入力データ・テンソルは、入力ビット精度の特徴次元を有する。ニューラル・ネットワーク・プロセッサは、1つ又は複数のプロセッサ・ビット精度の1つ又は複数のプロセッサ特徴次元用に構成される。502において、入力データ・テンソルは、入力ビット精度からプロセッサ・ビット精度の1つに変換される。503において、入力データ・テンソルは、各々がプロセッサ特徴次元の1つに一致する複数のブロックに分割される。504において、複数のブロックの各々が、複数のニューラル・コアの1つに提供される。505において、複数のニューラル・コアは、1つ又は複数のニューラル・ネットワーク層の出力を計算する。
ここで図6を参照すると、コンピューティング・ノードの例の概略が示される。コンピューティング・ノード10は、好適なコンピューティング・ノードの一例に過ぎず、本発明で説明される実施形態の使用範囲又は機能に関する何らかの制限を示唆することを意図するものではない。それにも関わらず、コンピューティング・ノード10は、上述した機能のいずれも実装もしくは実行し又はその両方を行うことができる。
コンピューティング・ノード10において、多数の他の汎用又は専用コンピューティング・システム環境又は構成で動作可能なコンピュータ・システム/サーバ12がある。コンピュータ・システム/サーバ12と共に用いるのに好適であり得る周知のコンピューティング・システム、環境もしくは構成又はそれらの組み合わせの例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等が含まれる。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ12は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
図6に示されるように、コンピューティング・ノード10におけるコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ12のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット16、システム・メモリ28、及びシステム・メモリ28を含む種々のシステム・コンポーネントをプロセッサ16に結合するバス18を含むことができる。
バス18は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、Peripheral Component Interconnect(PCI)バス、Peripheral Component Interconnect Express(PCIe)、及びAdvanced Microcontroller Bus Architecture(AMBA)を含む。
コンピュータ・システム/サーバ12は、典型的には、種々のコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30もしくはキャッシュ・メモリ32又はその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハード・ドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム34を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD-ROM、DVD-ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。こうした事例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス18に接続することができる。以下でさらに示され説明されるように、メモリ28は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
限定ではなく例として、メモリ28内に、プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール42は、一般に、本明細書で説明される本発明の実施形態の機能もしくは方法又はその両方を実行する。
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24等といった1つ又は複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つ又は複数のデバイス、もしくはコンピュータ・システム/サーバ12が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)、又はそれらの組み合わせと通信することもできる。こうした通信は、入力/出力(I/O)インターフェース22を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、もしくはパブリック・ネットワーク(例えば、インターネット)、又はそれらの組み合わせのような、1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ20は、バス18を介して、コンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないが、コンピュータ・システム/サーバ12と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
本開示は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、命令がそこに記録された機械的にエンコアされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はそれらの組み合わせなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコア、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コア又はオブジェクト・コアとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、テンソルレット、ブロック、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。

Claims (17)

  1. 複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサで入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、入力ビット精度の特徴次元を有し、前記ニューラル・ネットワーク・プロセッサは、1又は複数のプロセッサ・ビット精度の1又は複数のプロセッサ特徴次元用に構成される、受け取ることと、
    前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度の1つに変換することと、
    前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の1つに一致する複数のブロックに分割することと、
    前記複数のブロックの各々を前記複数のニューラル・コアの1つに提供することと、
    前記複数のニューラル・コアによって、1つ又は複数のニューラル・ネットワーク層の出力を計算することと
    を含む、方法。
  2. 前記入力データ・テンソルは、画像を含む、請求項1に記載の方法。
  3. 前記入力データ・テンソルを変換することは、最下位ビットを除去することを含む、請求項1又は請求項2に記載の方法。
  4. 前記ニューラル・ネットワーク・プロセッサは、所定数の特徴用に構成され、前記入力データ・テンソルを変換することは、入力特徴を、各々が前記所定数の特徴を下回る又は前記所定数の特徴と等しい複数の特徴セットに分割することを含む、請求項1から請求項3までのいずれか1項に記載の方法。
  5. 前記入力データ・テンソルを分割することは、前記プロセッサ特徴次元の1つと一致するように、前記特徴次元の1つにおいて前記複数のブロックをゼロ・パディングすることを含む、請求項1から請求項4までのいずれか1項に記載の方法。
  6. 前記入力データ・テンソルを分割することは、前記入力データ・テンソルをパックすることを含む、請求項1から請求項5までのいずれか1項に記載の方法。
  7. 前記入力データ・テンソルをパックすることは、
    入力特徴を再編成して、未使用のプロセッサ特徴次元に入力特徴の非特徴次元からのデータをロードすることを含む、請求項6に記載の方法。
  8. 前記ニューラル・ネットワーク・プロセッサは、
    複数の固定精度の部分和を計算し、
    前記複数の固定精度の部分和を結合して完全和にする
    ように構成される、請求項1から請求項7までのいずれか1項に記載の方法。
  9. 前記複数の固定精度の部分和は、中間結果である、請求項8に記載の方法。
  10. 前記中間結果は、入力のサブセットの加重和である、請求項9に記載の方法。
  11. 前記ニューラル・ネットワーク・プロセッサは、前記複数の固定精度の部分和から部分和を繰り返し計算するように構成される、請求項8に記載の方法。
  12. 複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、前記ニューラル・ネットワーク・プロセッサは、活性値ごとの1つ又は複数のプロセッサ・ビット精度を有し、プロセッサ特徴次元を有するデータを受け入れるように構成される、ニューラル・ネットワーク・プロセッサと、
    前記ニューラル・ネットワーク・プロセッサに結合され、
    1つ又は複数の特徴においてチャネルごとの入力ビット精度を有する入力データ・テンソルを受け取り、
    前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度に変換し、
    前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の1つに一致する複数のブロックに分割し、
    前記複数のブロックの各々を前記複数のニューラル・コアの1つに提供する
    ように適合された変換回路と
    を含み、
    前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、1つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、
    システム。
  13. 前記入力データ・テンソルを変換することは、各チャネルを、前記プロセッサ・ビット精度を下回る又は前記プロセッサ・ビット精度と等しい複数の値に分割することを含む、請求項12に記載のシステム。
  14. 複数のニューラル・コアを含むニューラル・ネットワーク・プロセッサであって、1つ又は複数のプロセッサ・ビット精度の1つ又は複数のプロセッサ特徴次元用に構成される、ニューラル・ネットワーク・プロセッサと、
    前記ニューラル・ネットワーク・プロセッサに結合され、
    入力ビット精度の特徴次元を有する入力データ・テンソルを受け取り、
    前記入力データ・テンソルを前記入力ビット精度から前記プロセッサ・ビット精度の1つに変換し、
    前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の1つに一致する複数のブロックに分割し、
    前記複数のブロックの各々を前記複数のニューラル・コアの1つに提供する
    ように適合された変換回路と
    を含み、
    前記複数のニューラル・コアは、1つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、システム。
  15. 入力データ・テンソルを受け取ることであって、前記入力データ・テンソルは、1つ又は複数の特徴においてチャネルごとの入力ビット精度を有する、受け取ることと、
    前記入力データ・テンソルを前記入力ビット精度からニューラル・ネットワーク・プロセッサのプロセッサ・ビット精度に変換することであって、前記ニューラル・ネットワーク・プロセッサは、プロセッサ特徴次元を有するデータを受け入れるように構成される、変換することと、
    前記入力データ・テンソルを、各々が前記プロセッサ特徴次元の1つに一致する複数のブロックに分割することと、
    前記複数のブロックの各々を前記ニューラル・ネットワーク・プロセッサの複数のニューラル・コアの1つに提供することと
    を含み、
    前記ニューラル・ネットワーク・プロセッサは、前記複数のニューラル・コアによって、1つ又は複数のニューラル・ネットワーク層の出力を計算するように適合される、方法。
  16. 請求項1から請求項11までのいずれか1項又は請求項15に記載の方法をコンピュータに実行させるコンピュータ・プログラム。
  17. 請求項16に記載のコンピュータ・プログラムが格納されたコンピュータ可読ストレージ媒体。
JP2021513308A 2018-10-11 2019-09-25 ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現 Active JP7325158B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/157,852 2018-10-11
US16/157,852 US20200117981A1 (en) 2018-10-11 2018-10-11 Data representation for dynamic precision in neural network cores
PCT/IB2019/058120 WO2020074989A1 (en) 2018-10-11 2019-09-25 Data representation for dynamic precision in neural network cores

Publications (2)

Publication Number Publication Date
JP2022502733A JP2022502733A (ja) 2022-01-11
JP7325158B2 true JP7325158B2 (ja) 2023-08-14

Family

ID=70161324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021513308A Active JP7325158B2 (ja) 2018-10-11 2019-09-25 ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現

Country Status (6)

Country Link
US (1) US20200117981A1 (ja)
JP (1) JP7325158B2 (ja)
CN (1) CN112673383A (ja)
DE (1) DE112019003529T5 (ja)
GB (1) GB2590888B (ja)
WO (1) WO2020074989A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111291240B (zh) * 2018-12-06 2023-12-08 华为技术有限公司 处理数据的方法和数据处理装置
US11714992B1 (en) * 2018-12-13 2023-08-01 Amazon Technologies, Inc. Neural network processing based on subgraph recognition
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
US11562205B2 (en) * 2019-09-19 2023-01-24 Qualcomm Incorporated Parallel processing of a convolutional layer of a neural network with compute-in-memory array
US11494875B2 (en) * 2020-03-25 2022-11-08 Nintendo Co., Ltd. Systems and methods for machine learned image conversion
US11379951B2 (en) 2020-03-25 2022-07-05 Nintendo Co., Ltd. Systems and methods for machine learned image conversion
KR20220062892A (ko) * 2020-11-09 2022-05-17 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN113240077B (zh) * 2021-04-27 2022-04-05 瀚博半导体(上海)有限公司 一种张量处理方法和系统
US11782706B1 (en) 2021-06-29 2023-10-10 Amazon Technologies, Inc. Reconfigurable neural network processing based on subgraph recognition
CN117480508A (zh) * 2021-11-25 2024-01-30 英特尔公司 用于加速处理引擎的计算的装置、方法、设备及介质
US20230409888A1 (en) * 2022-06-16 2023-12-21 International Business Machines Corporation Network comprising a plurality of oscillators
WO2023249762A1 (en) * 2022-06-21 2023-12-28 Ceremorphic, Inc. Max-pool prediction for efficient convolutional nuerual network for resource-constrained devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180197084A1 (en) 2017-01-11 2018-07-12 Electronics And Telecommunications Research Institute Convolutional neural network system having binary parameter and operation method thereof
JP2018142049A (ja) 2017-02-27 2018-09-13 株式会社日立製作所 情報処理装置、画像認識装置、および、畳込みニューラルネットワークのパラメータ設定方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0484358A (ja) * 1990-07-27 1992-03-17 Nippon Telegr & Teleph Corp <Ntt> ニユーラルネットの並列計算処理方法
JPH0683796A (ja) * 1992-08-31 1994-03-25 Ricoh Co Ltd 信号処理装置
JPH06309293A (ja) * 1993-04-26 1994-11-04 Nippon Telegr & Teleph Corp <Ntt> 多層構造型ニューラルネットワークの構成方法
JP2861893B2 (ja) * 1995-10-31 1999-02-24 日本電気株式会社 形状変換装置及びこの装置における形状変換方法
US8868477B2 (en) * 2012-03-29 2014-10-21 International Business Machines Coproration Multi-compartment neurons with neural cores
US9159020B2 (en) * 2012-09-14 2015-10-13 International Business Machines Corporation Multiplexing physical neurons to optimize power and area
US10990872B2 (en) * 2016-03-31 2021-04-27 International Business Machines Corporation Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency
CN106127297B (zh) * 2016-06-02 2019-07-12 中国科学院自动化研究所 基于张量分解的深度卷积神经网络的加速与压缩方法
CN107526709A (zh) * 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
CN108345939B (zh) * 2017-01-25 2022-05-24 微软技术许可有限责任公司 基于定点运算的神经网络
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN117933314A (zh) * 2017-04-21 2024-04-26 上海寒武纪信息科技有限公司 处理装置、处理方法、芯片及电子装置
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
CN107480770B (zh) * 2017-07-27 2020-07-28 中国科学院自动化研究所 可调节量化位宽的神经网络量化与压缩的方法及装置
CN107633010B (zh) * 2017-08-14 2020-06-19 中南大学 一种复杂造型grc板块图像的识别方法和系统
CN107704335B (zh) * 2017-09-28 2019-08-20 华南理工大学 一种基于fpga的crc并行运算ip核
CN107944556B (zh) * 2017-12-12 2020-09-08 电子科技大学 基于块项张量分解的深度神经网络压缩方法
US11163861B2 (en) * 2017-12-29 2021-11-02 Texas Instruments Incorporated Machine learning model with watermarked weights
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US20200065676A1 (en) * 2018-08-22 2020-02-27 National Tsing Hua University Neural network method, system, and computer program product with inference-time bitwidth flexibility

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180197084A1 (en) 2017-01-11 2018-07-12 Electronics And Telecommunications Research Institute Convolutional neural network system having binary parameter and operation method thereof
JP2018142049A (ja) 2017-02-27 2018-09-13 株式会社日立製作所 情報処理装置、画像認識装置、および、畳込みニューラルネットワークのパラメータ設定方法

Also Published As

Publication number Publication date
GB2590888B (en) 2021-10-27
JP2022502733A (ja) 2022-01-11
US20200117981A1 (en) 2020-04-16
DE112019003529T5 (de) 2021-04-15
GB2590888A (en) 2021-07-07
CN112673383A (zh) 2021-04-16
WO2020074989A1 (en) 2020-04-16

Similar Documents

Publication Publication Date Title
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
JP7372009B2 (ja) 並列分散テンソル計算用のニューラル・ハードウェア・アクセラレータ
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
JP6857286B2 (ja) ニューラルネットワークアレイの性能の改善
EP3373210B1 (en) Transposing neural network matrices in hardware
US11295208B2 (en) Robust gradient weight compression schemes for deep learning applications
US10108538B1 (en) Accessing prologue and epilogue data
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
WO2019220975A1 (ja) ニューラルネットワーク回路装置、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
EP3915056A1 (en) Neural network activation compression with non-uniform mantissas
JP2022552180A (ja) 大規模並列ニューラル推論エンジン用のマルチモード低精度内積計算回路
WO2020257531A1 (en) Mixed-signal acceleration of deep neural networks
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、系统及应用
JP7426980B2 (ja) 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理
KR101169367B1 (ko) 고속 홀로그램 생성 장치 및 방법
AU2020395435B2 (en) Flexible precision neural inference processing units
JP7556653B2 (ja) 柔軟な精度のニューラル推論処理ユニット
JP7506276B2 (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230711

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230728

R150 Certificate of patent or registration of utility model

Ref document number: 7325158

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150