JP2021528717A - 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ - Google Patents

再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ Download PDF

Info

Publication number
JP2021528717A
JP2021528717A JP2020557195A JP2020557195A JP2021528717A JP 2021528717 A JP2021528717 A JP 2021528717A JP 2020557195 A JP2020557195 A JP 2020557195A JP 2020557195 A JP2020557195 A JP 2020557195A JP 2021528717 A JP2021528717 A JP 2021528717A
Authority
JP
Japan
Prior art keywords
layer
cores
activation
core
dimension
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.)
Granted
Application number
JP2020557195A
Other languages
English (en)
Other versions
JP7227272B2 (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 JP2021528717A publication Critical patent/JP2021528717A/ja
Application granted granted Critical
Publication of JP7227272B2 publication Critical patent/JP7227272B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャを使用するニューラル・ネットワーク処理ハードウェアが提供される。さまざまな実施形態では、ニューラル・ネットワーク・モデルのメモリが、複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合される。各層は、少なくとも1つの次元を含み、複数のシナプスの重みを含む。複数のニューラル・コアが提供される。各ニューラル・コアは、計算ユニットおよび活性化メモリを含む。計算ユニットは、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合される。計算ユニットは、複数のベクトル・ユニットを含む。活性化メモリは、入力活性化および出力活性化を格納するように適合される。システムは、層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割するように適合される。

Description

本開示の実施形態は、ニューラル・ネットワーク処理ハードウェアに関連しており、より詳細には、再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャに関連している。
本開示のさまざまな実施形態に従って、並列計算アーキテクチャが提供される。ニューラル・ネットワーク・モデルのメモリは、複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合される。各層は、少なくとも1つの次元を含み、複数のシナプスの重みを含む。複数のニューラル・コアが提供される。各ニューラル・コアは、計算ユニットおよび活性化(activation)メモリを含む。計算ユニットは、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合される。計算ユニットは、複数のベクトル・ユニットを含む。活性化メモリは、入力活性化および出力活性化を格納するように適合される。システムは、層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割するように適合される。
本開示の実施形態に従って、推論プロセッシング・ユニット(IPU:Inference Processing Unit)を構成するための方法およびコンピュータ・プログラム製品が提供される。複数の層を含んでいるニューラル・ネットワーク・モデルが読み取られる。各層は、少なくとも1つの次元を含み、複数のシナプスの重みを含む。ニューラル・ネットワーク・モデルの層ごとに、層の次元およびベクトル・ユニットに基づいて複数のコアが複数のパーティションに分割され、複数のコアが、層を実装するように構成され、層の入力活性化が複数のコアに提供され、層に関連付けられたシナプスの重みが入力活性化に適用されて、複数の出力活性化を生成する。
単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。 単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。 単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。 単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成を示す図である。 本開示の実施形態に従って、マルチコア推論プロセッシング・ユニット(IPU)を示す図である。 本開示の実施形態に従って、推論プロセッシング・ユニット(IPU)のコア内の中心的計算要素を示す図である。 本開示の実施形態に従って、例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、別の例示的なテンソル・マッピングを示す図である。 本開示の実施形態に従って、コア間で渡される部分和を示す図である。 本開示の実施形態に従って、パラメータ分配を示す図である。 本開示の実施形態に従って、パラメータ分配を示す図である。 本開示の実施形態に従って、コアの動作を示す、パイプライン化されたタイミング図である。 本開示の実施形態に従って、データの入れ替えを示す、パイプライン化されたタイミング図である。 本開示の実施形態に従って、入れ替え動作を示す図である。 本開示の実施形態に従って、別の入れ替え動作を示す図である。 本開示の実施形態に従って、別の入れ替え動作を示す図である。 本開示に従って、並列計算の利用のためのデータの入れ替えを示す図である。 本開示の実施形態に従って、推論プロセッシング・ユニット(IPU)を構成する方法を示す図である。 本発明の実施形態に従って、コンピューティング・ノードを示す図である。
人工ニューロンは、入力の線形結合の非線形関数である出力を有する数学関数である。1つのニューロンの出力が他のニューロンへの入力である場合、2つのニューロンが接続される。重みは、1つのニューロンの出力と別のニューロンの入力の間の接続の強さをエンコードするスカラー値である。
ニューロンは、非線形活性化関数を入力の加重和に適用することによって、活性化と呼ばれる出力を計算する。加重和は、各入力に、対応する重みを掛け、それらの積を累算することによって計算される中間結果である。部分和は、入力のサブセットの加重和である。すべての入力の加重和は、1つまたは複数の部分和を累算することによって段階的に計算されてよい。
ニューラル・ネットワークは、1つまたは複数のニューロンの集合である。ニューラル・ネットワークは、多くの場合、層と呼ばれるニューロンのグループに分割される。層は、1つまたは複数のニューロンの集合であり、それらのニューロンは、すべて同じ層から入力を受信し、すべて出力を同じ層に送信し、通常、類似する機能を実行する。入力層は、ニューラル・ネットワーク外のソースから入力を受信する層である。出力層は、ニューラル・ネットワーク外のターゲットに出力を送信する層である。他のすべての層は、中間処理層である。多層ニューラル・ネットワークは、2つ以上の層を含むニューラル・ネットワークである。深層ニューラル・ネットワークは、多くの層を含む多層ニューラル・ネットワークである。
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソル内の要素の連続的部分配列である。
各ニューラル・ネットワークは、パラメータ・テンソルV、重みテンソルW、入力データ・テンソルX、出力データ・テンソルY、および中間データ・テンソルZに関連付けられる。パラメータ・テンソルは、層内のニューロン活性化関数σを制御するパラメータのすべてを含む。重みテンソルは、入力を層に接続する重みのすべてを含む。入力データ・テンソルは、層が入力として消費するデータのすべてを含む。出力データ・テンソルは、層が出力として計算するデータのすべてを含む。中間データ・テンソルは、層が部分和などの中間計算として生成するすべてのデータを含む。
層のデータ・テンソル(入力、出力、および中間)は、3次元であってよく、最初の2つの次元が空間的位置をエンコードしているとして解釈されてよく、第3の次元がさまざまな特徴をエンコードしているとして解釈されてよい。例えば、データ・テンソルがカラー画像を表す場合、最初の2つの次元が画像内の垂直座標および水平座標をエンコードし、第3の次元が、各位置での色をエンコードする。入力データ・テンソルXのすべての要素を、個別の重みによってすべてのニューロンに接続することができ、そのため重みテンソルWは、通常、入力データ・テンソル(入力行a、入力列b、入力特徴c)の3つの次元を出力データ・テンソル(出力行i、出力列j、出力特徴k)の3つの次元と連結する6つの次元を有する。中間データ・テンソルZは、出力データ・テンソルYと同じ形状を有する。パラメータ・テンソルVは、出力データ・テンソルの3つの次元を、活性化関数σのパラメータにインデックスを付ける追加の次元oと連結する。
層の出力データ・テンソルYの要素は、方程式1として計算することができ、ニューロン活性化関数σが活性化関数パラメータV[i,j,k,:]のベクトルによって構成され、加重和Z[i,j,k]が方程式2として計算され得る。
Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])
方程式1
Figure 2021528717
表記を簡単にするために、方程式2における加重和は、出力と呼ばれてよく、異なる活性化関数が使用される場合に一般性を失わずに同じ記述が当てはまるということを理解して、線形活性化関数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k]を使用することと同等である。
さまざまな実施形態では、前述したように、出力データ・テンソルの計算がより小さい問題に分解される。次に各問題が、1つまたは複数のニューラル・コア、または従来のマルチコア・システムの1つまたは複数のコアに関して並列に解かれてよい。
ニューラル・ネットワーク・モデルは、ニューラル・ネットワークによって実行される計算全体を集合的に指定する定数のセットであり、ニューロン間の接続のグラフに加えて、すべてのニューロンの重みおよび活性化関数パラメータを含んでいる。トレーニングは、望ましい機能を実行するようにニューラル・ネットワーク・モデルを変更するプロセスである。推論は、ニューラル・ネットワーク・モデルを変更せずに、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
推論プロセッシング・ユニットは、ニューラル・ネットワークの推論を実行するプロセッサのカテゴリである。ニューラル推論チップ(neural inference chip)は、推論プロセッシング・ユニットの特定の物理的例である。
前述したように、超並列計算アーキテクチャは、従来の連続的な計算アーキテクチャよりも実行を大幅に高速化する可能性を有している。しかし、実際の高速化は、実際のデータおよびアルゴリズムにおける並列性の存在、ならびに並列アーキテクチャへのデータおよびアルゴリズムのマッピングの効率によって制限される。ニューラル・ネットワークは、通常、並列性に適しており、空間および特徴の次元を含む多くの次元に沿って、活性化および重みデータの両方に豊富な並列性が存在する。しかし、並列度および並列性の最も効率的な種類は、個々のネットワークに応じて変化し、特定のネットワーク内でも変化する。例えば、層間で異なる次元が存在することがある。したがって、固定されたサイズ(例えば、固定された配列サイズ、固定されたベクトル幅、固定された数の並列計算ユニット)および構成を有する並列アーキテクチャは、データまたはアルゴリズムあるいはその両方において使用可能な並列性をすべて利用することが困難である。
ネットワークの次元の変形を示すために、表1は、さまざまな例示的なネットワークの層の次元(高さ×幅×特徴)を含んでいる。(同じデータセットに対して同じ分類問題を解いているため)同じ次元を有する入力層および最後の層を含んでいるにもかかわらず、実装間には、ネットワークの層のサイズの広い分散が存在する(すべての層が示されているのではない)。ネットワーク内で、層の形状が第1の層から最後の層に変化しているということが、理解されるであろう。初期の層は、通常、大きい空間的次元(高さ、幅)を有しており、一方、後期の層は、大きい特徴の次元を有している。
Figure 2021528717
図1A〜Dを参照すると、単一のマルチコア・プロセッサ上の特定のネットワークの例示的な並列構成が示されている。図1Aでは、16のコア並列性(core parallelism)を使用してプロセッサ100が構成されており、つまり、16個のコア(例えば、101)の各々が並列に実行されている。ベクトル並列性は2であり、つまり、各コアが2つの入力ベクトル(例えば、102)を並列に処理する。図1Bでは、8のコア並列性を使用してプロセッサ100が構成されており、ベクトル並列性は4である。図1Cでは、4のコア並列性を使用してプロセッサ100が構成されており、ベクトル並列性は8である。図1Dでは、2のコア並列性を使用してプロセッサ100が構成されており、ベクトル並列性は16である。本開示は、首尾一貫してデータを分割して各コアに割り当てる方法、異なる有効なベクトル幅を有するベクトル演算ユニットを作成する方法、データを異なる幅のベクトル・ユニットに首尾一貫して送信する方法、およびプロセッサを異なるモードに再構成する方法に対処することによって、そのような構成を可能にする。
図2Aを参照すると、本開示の実施形態に従って、マルチコア推論プロセッシング・ユニット(IPU)が示されている。IPU200は、ニューラル・ネットワーク・モデルのモデル・メモリ201を含んでいる。前述したように、ニューラル・ネットワーク・モデルは、ニューラル・ネットワークを計算するためのシナプスの重みを含んでよい。一部の実施形態では、モデル・メモリ201は、1つまたは複数の物理メモリを含んでおり、これらの物理メモリがシナプスの重み211および命令212に別々に割り当てられてよい。IPU200は、一過性であってよい活性化メモリ202を含んでいる。活性化メモリ202は、入力領域および出力領域に分割されてよく、処理するためのニューロン活性化を格納する。
IPU200は、ニューラル・コア203の配列206を含んでいる。各コア203は、モデル・メモリ201からニューラル・ネットワーク・モデルと共に読み込まれ、ベクトル計算を実行するよう機能する計算ユニット233を含んでいる。各コアは、ローカル活性化メモリ232も含んでいる。入力活性化は、各計算ステップの前に、ローカル活性化メモリ232から提供される。同じまたは別の計算ユニットで処理するために、計算ユニット233からの出力が活性化メモリ232に書き戻される。
IPU200は、1つまたは複数のネットワークオンチップ(NoC:network-on-chip)205を含んでいる。一部の実施形態では、部分和NoC251が、コア203を相互接続し、コア間で部分和を搬送する。一部の実施形態では、重みおよび命令をコア203に分配するために、個別のパラメータ分配NoC252がコア203をメモリ201に接続する。NoC251および252のさまざまな構成が、本開示に従って使用するのに適しているということが理解されるであろう。例えば、ブロードキャスト・ネットワーク、列ブロードキャスト・ネットワーク(row broadcast networks)、ツリー・ネットワーク、および交換ネットワークが使用されてよい。
さまざまな実施形態では、グローバル・スケジューラ(チップ・マイクロエンジン(chip microengine))204がIPU200に含まれている。さまざまな実施形態では、ローカル・コア・コントローラ(local core controller)(コア・マイクロエンジン(core microengine))234が各コア203に含まれている。そのような実施形態では、グローバル・スケジューラ(チップ・マイクロエンジン)とローカル・コア・コントローラ(コア・マイクロエンジン)の間で動作の指示が共有される。例えば、グローバル・スケジューラ204によって、各コア203上で、計算命令がモデル・メモリ201から計算ユニット233に読み込まれてよい。グローバル・スケジューラ204によって、各コア203上で、パラメータ(例えば、ニューラル・ネットワーク/シナプスの重み)がモデル・メモリ201から計算ユニット233に読み込まれてよい。ローカル・コア・コントローラ234によって、各コア203上で、ニューラル・ネットワーク活性化データがローカル活性化メモリ232から計算ユニット233に読み込まれてよい。前述したように、活性化は、モデルによって定義された特定のニューラル・ネットワークの軸索に提供され、同じまたは別の計算ユニットから生じるか、あるいはシステムの外部から生じてよい。
計算ユニット233は、ローカル・コア・コントローラ234による指示に従って、出力ニューロン活性化を生成するための計算を実行する。特に、この計算は、入力されたシナプスの重みを入力活性化に適用することを含む。そのような計算を実行するために、コンピュータ内の樹状突起およびベクトル乗算ユニットを含むさまざまな方法が使用可能であるということが、理解されるであろう。計算の結果が、ローカル・コア・コントローラ234による指示に従って、ローカル活性化メモリ232に格納される。これらの段階は、各コアでの計算ユニットの効率的な使用を実現するために、パイプライン化されてよい。特定のニューラル・ネットワークの要件に従って、入力および出力がローカル活性化メモリ232からグローバル活性化メモリ202に転送されてよいということも、理解されるであろう。
図2Bを参照すると、1×Mの出力テンソル・ブロック261を計算するために、ニューラル・コアが、1×Nの入力活性化ブロック262にN×Mの重みブロック263を掛ける。ベクトル行列乗算ユニット264が、乗算を実行し、得られた積を1×Nのベクトル演算ユニット265に渡す。次に、演算265の結果がM個のニューロン活性化関数266に提供され、1×Mの出力テンソル・ブロック261を生成する。
例示の目的で、IPU200は、N×Mの並列ベクトルまたは行列計算要素をそれぞれ含んでいる、A×Bの並列コアの配列を含んでよい。
各コアは、ベクトル行列乗算Z=XWを計算し、Xは入力データ行ベクトル[1×N]、Wは重み行列[N×M」、Zは出力データ行ベクトル[1×M]である。各コアは、活性化関数Y=f(Z)を行列乗算の出力に適用し、Yは出力データ行ベクトル[1×M]であり、f(・)は線形または非線形関数である。これによって、単一のニューロンの動作を作り出す。ニューラル・ネットワークの推論の場合、多くのニューロンおよびニューロンの多くの層にわたって、この動作が繰り返され、それぞれ、異なるデータX、および場合によっては、異なるパラメータWに対して動作する。
本明細書においてさらに示されるように、本開示は、そのようなコアの並列性の利用を提供する。特に、コアとベクトルの両方の並列性が提供される。一般に、複数のコアにわたって分散することによって、データレベルまたはスレッドレベルの並列性に対応しながら、複数のベクトル・ユニットにわたって分散することによって、動作レベルの並列性に対応する。本開示は、どの時間でも、ほぼすべてのコアが計算しており(非アイドル)、ほぼすべてのベクトル・ユニットが計算している(非アイドル)ように、このマッピングを最大化できるようにする。
例示的な構成では、空間および特徴の次元にわたって、ニューラル推論データの並列性が提供される。複数のコアにわたって分散することによって空間的並列性が提供されると同時に、複数のベクトル・ユニットにわたって分散することによって特徴の並列性が提供されるというように、データ並列性がアーキテクチャの並列性にマッピングされてよい。
さまざまな実施形態では、コアレベルの並列性およびベクトルレベルの並列性が再構成可能である並列計算アーキテクチャが提供される。特に、この計算アーキテクチャは、ニューラル・ネットワークの推論に適用されてよい。ベクトルレベルの並列性に関して、さまざまな例が述べられる。しかし、本明細書において提供される開示が、行列レベルの並列性、またはさらに一般的には、並列演算ユニットまたは並列論理計算ユニットあるいはその両方を含む動作レベルの並列性に適用可能であるということが、理解されるであろう。
本明細書において示されているように、コア配列およびコア計算要素(core compute elements)の効率的利用を維持しながら、(異なる空間および特徴の次元を有する)異なるサイズのテンソルが同じコア配列にマッピングされる。データが、構成可能な粒度で各コアに分割される(コアレベルの並列性に対応する)。さまざまな構成で、データの空間的並列性がコア並列性にマッピングされ、データの特徴の並列性がベクトル並列性にマッピングされる。そのような構成は、ネットワーク内の初期の層に特に適していることがある。一部の構成では、空間的並列性および特徴の並列性がコア並列性にマッピングされ、特徴の並列性がベクトル並列性にマッピングされる。そのような構成は、ネットワーク内の後期の層に特に適していることがある。さまざまな実施形態では、データを各コアに分配するために、NoCが使用される。
下の表2に要約されているように、空間的並列性とコア並列性の間の関係および特徴の並列性とベクトル並列性の間の関係に応じて、異なる並列化戦略が使用可能である。標準的な初期の層では、特徴の並列性がベクトル並列性以下であり、空間的並列性がコア並列性より大きい。標準的な中間層では、特徴の並列性がベクトル並列性以上であり、空間的並列性がコア並列性以上である。標準的な後期の層では、特徴の並列性がベクトル並列性より大きく、空間的並列性がコア並列性より小さい。特徴の並列性がベクトル並列性に等しく、空間的並列性がコア並列性に等しい場合、特定のテンソルから特定の物理的コア配列への固有の1:1マッピングが存在するということが、理解されるであろう。
Figure 2021528717
図3を参照すると、本開示の実施形態に従って、例示的なテンソル・マッピングが示されている。並列コア配列301は、それぞれN≧1のベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル302は、空間的並列性R×C=16、およびF=Nの特徴の並列性を有している。したがって、A=R、B=C、およびN=Fである。コア配列301は、それぞれ1つのコアを含んでいる16個の島303に分割されてよい。次に、活性化テンソルの1×1×1の空間的スライスが、各島にマッピングされてよい。
図4を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列401は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル402は、空間的並列性R×C=64、およびF=Nの特徴の並列性を有している。したがって、A<R、B<C、およびN=Fである。コア配列401は、それぞれ1つのコアを含んでいる16個の島403に分割されてよい。次に、活性化テンソルの2×2×1の空間的スライスが、各島にマッピングされてよい。
図5を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列501は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル502は、空間的並列性R×C=64、およびF=4Nの特徴の並列性を有している。したがって、A<R、B<C、およびN<Fである。コア配列501は、それぞれ1つのコアを含んでいる16個の島503に分割されてよい。次に、活性化テンソルの2×2×4Nのスライスが、各島にマッピングされてよい。
図6を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列601は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル602は、空間的次元R×C=4、およびF=4Nの特徴の並列性を有している。したがって、A>R、B>C、およびN<Fである。コア配列601は、それぞれ4つのコアを含んでいる4個の島603に分割されてよい。この例では、コアの配列内の島は正方形である。次に、活性化テンソルの1×1×4Nのスライスが各島にマッピングされてよく、島内の各コアが1×1×Nのサブスライスを受信する。
図7を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列701は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル702は、空間的次元R×C=4、およびF=4Nの特徴の並列性を有している。したがって、A>R、B>C、およびN<Fである。コア配列701は、それぞれ4つのコアを含んでいる4個の島703に分割されてよい。この例では、コアの配列内の島は、それぞれ一列に広がる。次に、活性化テンソルの1×1×4Nのスライスが各島にマッピングされてよく、島内の各コアが1×1×Nのサブスライスを受信する。
図8を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列801は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル802は、空間的次元R×C=1、およびF=16Nの特徴の並列性を有している。したがって、A>R、B>C、およびN<Fである。コア配列801は、16個のコアを含んでいる1つの島803に分割されてよい。次に、活性化テンソルの1×1×1のスライスが、島内の各コアにマッピングされてよい。
図9を参照すると、本開示の実施形態に従って、別の例示的なテンソル・マッピングが示されている。並列コア配列901は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。活性化テンソル902は、空間的次元R×C=64、およびF=N/4の特徴の並列性を有している。したがって、2A=R、2B=C、およびN=4Fである。コア配列901は、それぞれ1つのコアを含んでいる16個の島903に分割されてよい。次に、活性化テンソルの2×2×Fのスライスが、各島にマッピングされてよい。コアがNのベクトル並列性を有しているため、活性化テンソルの2×2×Fのスライスが、コアのベクトル・ユニットによって単一のサイクルで計算されてよく、完全なベクトル・ユニットの利用を維持する。
上記の分割が例示であり、他の次元および分割方式が本開示の範囲に含まれるということが、理解されるであろう。
上記から理解されるように、コア配列およびコア計算要素の効率的利用を維持しながら、(異なる空間および特徴の次元を有する)異なるサイズのテンソルが同じコア配列にマッピングされてよい。使用可能な空間的並列性および特徴の並列性がコア並列性およびベクトル並列性以上である特定のパーティションでは、1つの島が1つのコアを含む。使用可能な特徴の並列性がベクトル並列性より大きく、使用可能な空間的並列性がコア並列性より小さい特定のパーティションでは、1つの島が2つ以上のコアを含む。
使用可能な空間的並列性がコア並列性より大きく、使用可能な特徴の並列性がベクトル並列性より小さい特定のパーティションでは、空間的並列性を増やすために、過剰な特徴の並列性を使用してコアがさらに分割される。再分割は、コア内の大きいベクトル・ユニットを複数のより小さいベクトル・ユニットに分割することによって実行される。例えば、1つの64の幅のベクトル・ユニットは、2つの32の幅のベクトル・ユニットまたは4つの16の幅のベクトル・ユニットとして動作することもできる。(ニューラル推論ユニット内の)大きい合計ツリーの場合、ツリー内の合計の最終的なレベルの前に、結果が選択される。
図10を参照すると、本開示の実施形態に従って、コア間で渡される部分和が示されている。並列コア配列1001は、それぞれNのベクトル並列性を有しているA×B=16個の並列コアを含んでいる。各島1002はベクトル行列乗算Z=XWを計算し、XおよびWは、部分ベクトルX=[X,X,X,X]および部分行列W=[W,W,W,Wに分解され得る。島内のコアは、部分和Z=X、Z=X、Z=X、およびZ=Xを計算する。島内のコア間で部分和を伝達し、部分和を合計して最終結果Z=Z+Z+Z+Zに到達することによって、最終結果が取得される。一部の実施形態では、最終的な合計のために、すべての部分和が単一のコアに送信される。一部の実施形態では、ネットワークオンチップを介して部分和が送信される。このようにして部分和を実行することによって、全体的効率を最適化するように、効果的なベクトル・サイズが構成されてよい。
一部の実施形態では、ベクトル行列部分乗算、部分和の伝達、および部分和の累算が、完全にパイプライン化される。このようにして、島全体が、1つのベクトル行列演算のように見える。
図11A〜Bを参照すると、本開示の実施形態に従って、パラメータ分配が示されている。図11Aでは、コア配列1101が、それぞれ1つのコアを含んでいる16個の島1102に分割されている。図11Bでは、コア配列1101が、それぞれ4つのコアを含んでいる4つの島1103に分割されている。これらの異なる構成の場合、異なるパラメータ(重みおよび命令)が各コアで必要になる。特に、さまざまなニューラル・ネットワークでは、島が同じパラメータを必要とし、一方、島内のコアが異なるパラメータを必要とする。NoC1104は、並列性の構成に従ってこれらのパラメータを分配し、それによって、並列計算を各コアに割り当てる。
図12を参照すると、本開示の実施形態に従ってコアの動作を示す、パイプライン化されたタイミング図が示されている。1201で、計算命令がニューラル計算ユニット(neural computation unit)に読み込まれる。1202で、パラメータ(ニューラル・ネットワークの重みを含む)がニューラル計算ユニットに読み込まれる。1203で、オペランドがニューラル計算ユニットに読み込まれる。1204で、ベクトル行列乗算が実行される。1205で、部分和が伝達される。1206で、部分和が累算される。1207で、活性化関数が計算される。1208で、結果が格納される。各フェーズ1211〜1214は、異なる動作である。それに応じて、各動作は独立した並列性の構成を有することができる。
一部の実施形態ではチップ・マイクロエンジン(204)によって分配される命令が、各コアによって実行される動作(演算、データ・アドレス指定、部分和の伝達など)を決定する。これらの命令は、すべてのコアに全体的に渡されてよく、またはコアごとに特定の命令を使用して、各コアに個別に渡されてもよい。後者の場合、各コアは、現在のデータを使用して何を実行する必要があるか、コアに渡される部分和、および入れ替え動作のみを知る必要がある。コアは、構成についての全体的な知識を必要としない。動作のフェーズごとに新しい命令が渡されてよく、このようにして、動作の各フェーズでコア並列性の構成が変更されてよい。パイプライン化されたコアの場合、現在の並列性の構成が、パイプラインを通じて各フェーズで一貫して保たれ、重複する(パイプライン化された)動作を可能にする。
したがって、さまざまな実施形態では、システム内の並列性が実行中に動的に再構成可能である。一部の実施形態では、計算アーキテクチャを再構成するために、命令が使用される。一部の実施形態では、計算アーキテクチャの複数の部分を再構成するために、複数の命令が使用される。
図13を参照すると、本開示の実施形態に従ってデータの入れ替えを示す、パイプライン化されたタイミング図が示されている。1301で、計算命令がニューラル計算ユニットに読み込まれる。1302で、パラメータ(ニューラル・ネットワークの重みを含む)がニューラル計算ユニットに読み込まれる。1303で、オペランドがニューラル計算ユニットに読み込まれる。1304で、ベクトル行列乗算が実行される。1305で、部分和が伝達される。1306で、部分和が累算される。1307で、活性化関数が計算される。1308で、結果が格納される。1309で、データが入れ替えられる。データ入れ替えフェーズは、計算動作フェーズ間で発生する。各フェーズ1211〜1214は、異なる動作である。
動作の終了時に、活性化データXが適切なコア内にない場合、その活性化データを、例えばNoCを介して、別のコアに伝達することが必要になることがある。この動作は、データの入れ替えと呼ばれることがあり、計算動作フェーズ間の追加フェーズとして発生する。並列性の構成を切り替えるときに、入れ替えが必要になることがある。さまざまな実施形態では、コアレベル(コア・マイクロコード)の命令を使用してデータ入れ替え動作が実行される。例えば、そのような命令は、コア<core_addr>上で、アドレス<rd_addr>にある長さ<block_length>のデータ・ブロックを読み取ること、およびデータ・ブロックをアドレス<wr_addr>に書き込むことを含んでよい。
したがって、システムの並列性の構成における変更のために、データが入れ替えられてよい。一部の実施形態では、NoCを経由して入れ替えが実行される。一部の実施形態では、命令を介してデータの入れ替えが開始される。
図14を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル1401が、コア配列1402に提供される。出力活性化結果1403が生成される。入れ替えフェーズで、出力活性化結果がNoCを介してコア間で伝達される。一部の実施形態では、入れ替え動作は明示的である。それによって、図示されているように、出力活性化結果が各コアに分配される。
図15を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル1501が、コア配列1502に提供される。部分和1503が生成され、伝達される。次の層の島内の各コアが、異なるブロックの部分和を累算する。このようにして、NoCを介して出力活性化結果を送信することなく、累算された最終結果が最終的に異なるコアに行く。
図16を参照すると、本開示の実施形態に従って、入れ替え動作が示されている。入力活性化テンソル1601が、コア配列1602に提供される。出力活性化結果1603が生成される。次の層の島内の各コアで、完全な出力テンソル結果が計算される。次の層では、必要なデータのみが処理される。
図17を参照すると、本開示に従って、並列計算の利用のためのデータの入れ替えが示されている。例示的なニューラル・ネットワーク内の層Lは、次元R×C×F=4×4×1を有する活性化テンソル1701を含んでいる。コア配列1702は、次元A×B=4×4を含んでいる。したがってテンソル1701は、必然的に、4×4=16個の島を含むように構成されたコア配列1702にマッピングされる。層L+1は、次元R×C×F=2×2×4の活性化テンソル1703を含んでいる。データの入れ替えがない場合、テンソル1703は、(1704に示されているように)2×2=4個のコアのみを占有する。しかし、データの入れ替えがある場合、コア配列1702が、それぞれ4つのコアを含んでいる4つの島に分割されてよい。その場合、テンソル1703が4つの島にマッピングされてよく、その結果、(1705に示されているように)100%のコア利用率が得られる。
ニューラル・ネットワークの異なる層を介して推論を実行する過程において、活性化データの構造が、より大きい空間的並列性からより大きい特徴の並列性に必然的に変わる。データが入れ替えられない場合、空間的並列性がコアレベルの並列性を下回るため、並列コアの利用率(並列に計算しているコアの数)が下がる。空間的並列性と特徴の並列性の両方をコアレベルの並列性にマッピングできるように入れ替えることによって、すべてのコアの完全な利用が維持され得る。
したがって、本開示は、コアレベルの並列性とベクトルレベルの並列性の間でデータを入れ替えることによって、並列コア配列および計算要素の利用の改善を可能にする。さまざまな実施形態では、データの入れ替えは、空間的並列性と特徴の並列性の間で提供され、コアレベルの並列性およびベクトルレベルの並列性にそれぞれマッピングされる。
ここで図18を参照すると、本開示の実施形態に従って、推論プロセッシング・ユニット(IPU)を構成する方法が示されている。1801で、複数の層を含んでいるニューラル・ネットワーク・モデルが読み取られる。各層は、少なくとも1つの次元を含み、複数のシナプスの重みを含む。ニューラル・ネットワーク・モデルの層ごとに、1802で、層の次元およびベクトル・ユニットに基づいて複数のコアが複数のパーティションに分割され、1803で、複数のコアが、層を実装するように構成され、1804で、層の入力活性化が複数のコアに提供され、1805で、層に関連付けられたシナプスの重みが入力活性化に適用されて、複数の出力活性化を生成する。
ここで図19を参照すると、コンピューティング・ノードの例の概略図が示されている。コンピューティング・ノード10は、適切なコンピューティング・ノードの一例に過ぎず、本明細書に記載された実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、コンピューティング・ノード10は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
コンピューティング・ノード10内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12での使用に適した既知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
図19に示すように、コンピューティング・ノード10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に接続するバス18を含んでよいが、これらに限定されない。
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、PCI(Peripheral Component Interconnect)バス、PCIe(Peripheral Component Interconnect Express)、およびAMBA(Advanced Microcontroller Bus Architecture)を含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下で詳細に示され、説明されているように、メモリ28は、本開示の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを含んでいる少なくとも1つのプログラム製品を含んでよい。
例えば、一連の(少なくとも1つの)プログラム・モジュール42を含んでいるプログラム/ユーティリティ40がメモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された実施形態の機能または方法あるいはその両方を実行する。
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信してもよい。そのような通信は、入出力(I/O:Input/Output)インターフェイス22を介して行うことができる。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示されているように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ12と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
さまざまな実施形態では、1つまたは複数の推論プロセッシング・ユニット(図示されていない)がバス18に結合される。そのような実施形態では、IPUがバス18を介してメモリ28からデータを受信するか、またはデータをメモリ28に書き込んでよい。同様に、IPUは、本明細書において説明されているように、バス18を介して他のコンポーネントと情報をやりとりしてよい。
本開示は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせを含んでよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続を、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行うことができる。一部の実施形態では、本開示の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズするためのコンピュータ可読プログラム命令を実行してよい。
本開示の態様は、本明細書において、本開示の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本開示のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
本開示のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。

Claims (24)

  1. 複数の層を含んでいるニューラル・ネットワーク・モデルを格納するように適合されたニューラル・ネットワーク・モデルのメモリであって、各層が少なくとも1つの次元を含んでおり、複数のシナプスの重みを含んでいる、前記ニューラル・ネットワーク・モデルのメモリと、
    複数のニューラル・コアであって、各ニューラル・コアが計算ユニットを備えており、前記計算ユニットが、複数のシナプスの重みを複数の入力活性化に適用して複数の出力活性化を生成するように適合されており、前記計算ユニットが複数のベクトル・ユニットを含んでいる、前記複数のニューラル・コアと、
    前記入力活性化および前記出力活性化を格納するように適合された活性化メモリと
    を備えているシステムであって、
    前記システムが、前記層の次元および前記ベクトル・ユニットに基づいて前記複数のコアを複数のパーティションに分割するように適合されている、
    システム。
  2. 前記ニューラル・ネットワーク・モデルのメモリおよび前記複数のコアに動作可能なように結合された少なくとも1つのコントローラをさらに備えており、前記少なくとも1つのコントローラが、前記ニューラル・ネットワーク・モデルの層ごとに、前記複数のコアを構成して前記層を実装し、
    前記層の入力活性化を前記複数のコアに提供するように適合されている、
    請求項1に記載のシステム。
  3. 前記複数のコアに結合されたネットワークをさらに備えている、請求項2に記載のシステム。
  4. 前記ネットワークを介して入力活性化が前記複数のコアに提供される、請求項3に記載のシステム。
  5. 前記複数のコアを構成することが、前記ネットワークを介してパラメータを前記複数のコアに分配することを含んでいる、請求項3に記載のシステム。
  6. 前記複数のコアを構成することが、前記ネットワークを介して命令を前記複数のコアに分配することをさらに含んでいる、請求項5に記載のシステム。
  7. 層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元に基づいてさらに決定される、請求項1に記載のシステム。
  8. 層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元および特徴の次元に基づいてさらに決定される、請求項1に記載のシステム。
  9. 層ごとの前記複数のパーティションが、前記層の前記出力活性化の空間的次元に基づいてさらに決定される、請求項1に記載のシステム。
  10. 層ごとの前記複数のパーティションが、前記層の前記出力活性化の空間的次元および特徴の次元に基づいてさらに決定される、請求項1に記載のシステム。
  11. 層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの1つまたは複数に基づいてさらに決定される、請求項1に記載のシステム。
  12. 層ごとの前記複数のパーティションが、前記複数のコアの次元によってさらに決定される、請求項11に記載のシステム。
  13. 前記複数のパーティションの各々に含まれる前記コアが部分和を計算するように構成されている、請求項1に記載のシステム。
  14. 関連付けられた層の結果を計算するために前記部分和が集計される、請求項13に記載のシステム。
  15. 集計のために、ネットワークを介して前記部分和が送信される、請求項14に記載のシステム。
  16. 前記少なくとも1つのコントローラが、層の出力活性化の計算時に、前記出力活性化を前記複数のコアに再分配するようにさら適合される、請求項2に記載のシステム。
  17. 前記再分配がネットワークを介する、請求項16に記載のシステム。
  18. 前記再分配が、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの1つまたは複数に基づいて決定される、請求項16に記載のシステム。
  19. 複数の層を含んでいるニューラル・ネットワーク・モデルを読み取ることであって、各層が少なくとも1つの次元を含んでおり、複数のシナプスの重みを含んでいる、前記読み取ることと、
    前記ニューラル・ネットワーク・モデルの層ごとに、前記層の次元およびベクトル・ユニットに基づいて複数のコアを複数のパーティションに分割することと、
    前記層を実装するように前記複数のコアを構成することと、
    前記層の入力活性化を前記複数のコアに提供することと、
    前記層に関連付けられた前記シナプスの重みを前記入力活性化に適用して複数の出力活性化を生成することと
    を含んでいる方法。
  20. 各パーティション内の部分和を計算することと、
    前記部分和を、各パーティション内の各コアに送信することと、
    前記出力活性化を計算するために前記部分和を集計することと
    をさらに含んでいる、請求項19に記載の方法。
  21. 前記複数のコアを構成することが、ネットワークを介してパラメータを前記複数のコアに分配することを含んでいる、請求項19に記載の方法。
  22. 前記複数のコアを構成することが、ネットワークを介して命令を前記複数のコアに分配することを含んでいる、請求項19に記載の方法。
  23. 層ごとの前記複数のパーティションが、前記層の前記入力活性化の空間的次元、前記入力活性化の特徴の次元、前記出力活性化の空間的次元、または前記出力活性化の特徴の次元のうちの1つまたは複数に基づいてさらに決定される、請求項19に記載の方法。
  24. 層ごとの前記複数のパーティションが、前記複数のコアの次元によってさらに決定される、請求項23に記載の方法。
JP2020557195A 2018-06-14 2019-06-05 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ Active JP7227272B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/008,949 2018-06-14
US16/008,949 US11847553B2 (en) 2018-06-14 2018-06-14 Parallel computational architecture with reconfigurable core-level and vector-level parallelism
PCT/IB2019/054669 WO2019239254A1 (en) 2018-06-14 2019-06-05 Parallel computational architecture with reconfigurable core-level and vector-level parallelism

Publications (2)

Publication Number Publication Date
JP2021528717A true JP2021528717A (ja) 2021-10-21
JP7227272B2 JP7227272B2 (ja) 2023-02-21

Family

ID=68840593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020557195A Active JP7227272B2 (ja) 2018-06-14 2019-06-05 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ

Country Status (6)

Country Link
US (1) US11847553B2 (ja)
JP (1) JP7227272B2 (ja)
CN (1) CN112219209A (ja)
DE (1) DE112019002981T5 (ja)
GB (1) GB2588719A (ja)
WO (1) WO2019239254A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
US11076210B1 (en) 2020-01-03 2021-07-27 Microsoft Technology Licensing, Llc Distributed processing architecture
US11580388B2 (en) 2020-01-03 2023-02-14 Microsoft Technology Licensing, Llc Distributed processing architecture
WO2022186763A1 (en) * 2021-03-03 2022-09-09 Agency For Science, Technology And Research Neural network processor system with reconfigurable neural processing unit, and method of operating and method of forming thereof
US11204889B1 (en) 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02306365A (ja) * 1989-05-19 1990-12-19 Sharp Corp ニューロコンピュータの負荷配分方法
JPH03100755A (ja) * 1989-09-13 1991-04-25 Nec Corp 全結合型ネットワーク並列処理方法と装置
JP2000322400A (ja) * 1999-05-10 2000-11-24 Fuji Xerox Co Ltd 情報処理装置
US20170316312A1 (en) * 2016-05-02 2017-11-02 Cavium, Inc. Systems and methods for deep learning processor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784636A (en) 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8090928B2 (en) 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US10832120B2 (en) 2015-12-11 2020-11-10 Baidu Usa Llc Systems and methods for a multi-core optimized recurrent neural network
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
CN106815636B (zh) 2016-12-30 2019-03-05 华中科技大学 一种基于忆阻器的神经元电路
US10402527B2 (en) * 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
CN107301456B (zh) 2017-05-26 2020-05-12 中国人民解放军国防科学技术大学 基于向量处理器的深度神经网络多核加速实现方法
US10803379B2 (en) * 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02306365A (ja) * 1989-05-19 1990-12-19 Sharp Corp ニューロコンピュータの負荷配分方法
JPH03100755A (ja) * 1989-09-13 1991-04-25 Nec Corp 全結合型ネットワーク並列処理方法と装置
JP2000322400A (ja) * 1999-05-10 2000-11-24 Fuji Xerox Co Ltd 情報処理装置
US20170316312A1 (en) * 2016-05-02 2017-11-02 Cavium, Inc. Systems and methods for deep learning processor

Also Published As

Publication number Publication date
CN112219209A (zh) 2021-01-12
US20190385046A1 (en) 2019-12-19
WO2019239254A1 (en) 2019-12-19
US11847553B2 (en) 2023-12-19
DE112019002981T5 (de) 2021-03-11
GB2588719A (en) 2021-05-05
JP7227272B2 (ja) 2023-02-21
GB202017726D0 (en) 2020-12-23

Similar Documents

Publication Publication Date Title
JP2021528717A (ja) 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ
JP7241771B2 (ja) 実行時再構成可能なニューラル・ネットワーク・プロセッサ・コア
US11106976B2 (en) Neural network output layer for machine learning
US20200042856A1 (en) Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
JP2021522565A (ja) 並列分散テンソル計算用のニューラル・ハードウェア・アクセラレータ
JP7332247B2 (ja) ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ
US20190138373A1 (en) Multithreaded data flow processing within a reconfigurable fabric
US20190279038A1 (en) Data flow graph node parallel update for machine learning
US20210209450A1 (en) Compressed weight distribution in networks of neural processors
US11227030B2 (en) Matrix multiplication engine using pipelining
US20190130268A1 (en) Tensor radix point calculation in a neural network
US20200117988A1 (en) Networks for distributing parameters and data to neural network compute cores
US12001953B2 (en) Neural network data computation using mixed-precision
US11663461B2 (en) Instruction distribution in an array of neural network cores
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
JP7426980B2 (ja) 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理
JP7220007B2 (ja) 並列性及びオンチップ・メモリを介した時間、空間及びエネルギー効率のよいニューラル推論
TWI804209B (zh) 在脈動陣列中利用細粒度結構化權重稀疏性
WO2019089553A1 (en) Tensor radix point calculation in a neural network
AU2020395435B2 (en) Flexible precision neural inference processing units
EP4133418B1 (en) Neural network weight distribution from a grid of memory elements
TWI829208B (zh) 用於判定用於處理串流輸入資料之硬體架構之設計參數值之方法及系統及電腦可讀儲存媒體
JP2022068117A (ja) チップ及び方法(入れ子ループの定数時間プログラム制御をサポートするチップ)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211028

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230116

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: 20230131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230209

R150 Certificate of patent or registration of utility model

Ref document number: 7227272

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150