JP7426980B2 - 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 - Google Patents

分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 Download PDF

Info

Publication number
JP7426980B2
JP7426980B2 JP2021500263A JP2021500263A JP7426980B2 JP 7426980 B2 JP7426980 B2 JP 7426980B2 JP 2021500263 A JP2021500263 A JP 2021500263A JP 2021500263 A JP2021500263 A JP 2021500263A JP 7426980 B2 JP7426980 B2 JP 7426980B2
Authority
JP
Japan
Prior art keywords
neural
cores
output
activations
parallel
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
JP2021500263A
Other languages
English (en)
Other versions
JP2021532451A (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 JP2021532451A publication Critical patent/JP2021532451A/ja
Application granted granted Critical
Publication of JP7426980B2 publication Critical patent/JP7426980B2/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/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/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

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)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)
  • Multi Processors (AREA)

Description

本開示の実施形態はニューラル計算に関し、より詳細には、分散したニューラル・コアのネットワークにおける階層的並列処理に関する。
本開示の実施形態によれば、ニューラル計算のためのシステムが提供される。様々な実施形態において、複数のニューラル・コアが提供される。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを割り当てて、計算を行う。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、その割り当てられた出力アクティベーションの各々について部分和を計算し、少なくとも計算された部分和から、その割り当てられた出力アクティベーションを計算する。
本開示の実施形態によれば、ニューラル計算の方法およびニューラル計算用のコンピュータ・プログラム製品が提供される。様々な実施形態において、複数のニューラル・コアの各々において、ニューラル・ネットワークの層の入力アクティベーションのサブセットが受け取られる。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。ニューラル・ネットワークのある層の出力アクティベーションのサブセットが、複数のニューラル・コアの各々に割り当てられて、計算される。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、その割り当てられた出力アクティベーションの各々について部分和を計算し、少なくとも計算された部分和から、その割り当てられた出力アクティベーションを計算する。
本開示の実施形態に係るニューラル・コアを示す図である。 本開示の実施形態に係るコア間並列処理を示す例示的なニューラル・コアを示す図である。 本開示の実施形態に係るコア内並列処理を示す例示的なニューラル・コアを示す図である。 本開示の実施形態に係るニューラル計算の方法を示す図である。 本開示の実施形態に係る計算ノードを描いた図である。
人工ニューロンは、その出力がその入力の線形結合の非線形関数となる数学的関数である。一方の出力が他方への入力である場合、その2つのニューロンは結合されている。重みとは、あるニューロンの出力と別のニューロンの入力の間の結合強度を符号化するスカラ値である。
ニューロンは、その入力の重み付き和に非線形活性化関数を適用することによって、アクティベーションと呼ばれるその出力を計算する。重み付き和とは、各入力と対応する重みとを乗算しその積を累算することによって計算される中間結果である。部分和とは、入力のサブセットの重み付き和である。1つまたは複数の部分和を累算することによって、全ての入力の重み付き和が段階的に計算され得る。
ニューラル・ネットワークとは、1つまたは複数のニューロンの集合である。ニューラル・ネットワークは多くの場合、層と呼ばれるニューロンの組へと分割されている。層とは、全てが同じ層から入力を受け取り全てが同じ層へと出力を送り、典型的には同様の機能を実行する1つまたは複数のニューロンの、集合である。入力層とは、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層とは、ニューラル・ネットワークの外部のターゲットへと出力を送る層である。他の全ての層は中間処理層である。多層ニューラル・ネットワークとは、2つ以上の層を有するニューラル・ネットワークである。ディープ・ニューラル・ネットワークとは、多数の層を有する多層ニューラル・ネットワークである。
テンソルは数値の多次元のアレイである。テンソル・ブロックは、テンソル中の要素の連続的なサブアレイである。
各ニューラル・ネットワーク層は、パラメータ・テンソル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のように計算できる。
Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])
式1
Figure 0007426980000001
表記を簡単にするために、式2中の重み付き和を出力と呼ぶ場合があるが、これは線形活性化関数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k]を用いることと等価であり、異なる活性化関数が使用されるときに一般性を失うことなく同じ説明が当てはまるものと理解される。
様々な実施形態において、上記したような出力データ・テンソルの計算は、より小さい問題へと分解される。各問題は、1つもしくは複数のニューラル・コア上で、または従来のマルチコア・システムの1つもしくは複数のコア上で並列に、解かれ得る。
ニューラル・ネットワークが本来的に並列な構造であることが、上記から明らかであろう。所与の層中のニューロンは、1つまたは複数の層または他の入力から、要素xを有する入力Xを受け取る。各ニューロンは、入力および要素wを有する重みWに基づいて、その状態y∈Yを計算する。様々な実施形態において、入力の重み付き和はバイアスbによって調整され、次いでその結果が非線形処理(nonlinearity)F(・)に渡される。例えば、単一のニューロンのアクティベーションは、y=F(b+Σx)として表現できる。
所与の層中の全てのニューロンが同じ層から入力を受け取りそれらの出力を独立して計算するので、ニューロンのアクティベーションを並列に計算することができる。全体的なニューラル・ネットワークのこの態様により、並列分散型コアにおいて計算を行うことによって全体的な計算の速度が高まる。更に、各コア内で、ベクトル演算を並列に計算することができる。回帰的入力がある場合、例えばある層がそれ自体に戻るように投影される場合ですら、全てのニューロンがやはり同時に更新される。実際には、回帰的な接続は、その層への次の入力と揃うように遅延される。
ここで図1を参照すると、本開示の実施形態に係るニューラル・コアが描かれている。ニューラル・コア100は、出力テンソルの1つのブロックを計算する、タイル化可能(tileable)な計算ユニットである。ニューラル・コア100は、M個の入力およびN個の出力を有する。様々な実施形態において、M=Nである。出力テンソル・ブロックを計算するために、ニューラル・コアは、M×1の入力テンソル・ブロック101をM×Nの重みテンソル・ブロック102と乗算し、その積を累算して重み付き和を得、これが1×Nの中間テンソル・ブロック103に格納される。O×Nのパラメータ・テンソル・ブロックは、中間テンソル・ブロック103に適用されて1×Nの出力テンソル・ブロック105を生成するN個のニューロン活性化関数の各々を規定する、O個のパラメータを包含する。
複数のニューラル・コアをニューラル・コアのアレイ中でタイル化することができる。いくつかの実施形態では、アレイは2次元である。
ニューラル・ネットワーク・モデルとは、ニューロン間の結合のグラフならびにあらゆるニューロンについての重みおよび活性化関数のパラメータを含む、ニューラル・ネットワークが行う計算の全体を集合的に規定する定数のセットである。訓練とは、所望の機能を実行するようにニューラル・ネットワーク・モデルを修正するプロセスである。推論とは、ニューラル・ネットワーク・モデルを変更することなく、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサの一範疇である。ニューラル推論チップは、推論処理ユニットの具体的な物理的実例である。
アレイ中に複数のコアを含む実施形態では、各コアは全体的なニューラル・ネットワークの計算の一部を実施する。添え字i=1:NINPUTを有するxを値とするNINPUT個の入力ニューロンを有する、添え字j=1:NNEURONを有するNNEURON個の出力ニューロンを有する所与の層の場合には、その層の出力の値は、j=1:NNEURONおよびi=1:NINPUTに対して、式3によって与えられる。
=F(b+Σxji
式3
いくつかの実施形態では、各コアは、何らかの数の出力ニューロンを計算する。NCORE個のコアに関して、各コアは平均NNEURON/NCORE個の出力ニューロンを計算し、各々が全ての入力を受け取る。この場合、全てのコアが全ての入力を必要とするが、計算するのは一部の出力のみである。例えば:
コア1は以下を計算する:j=1:NNEURON/NCOREおよびi=1:NINPUTに対して、Y=F(b+Σxji
コア2は以下を計算する:j=NNEURON/NCORE+1:2NNEURON/NCOREおよびi=1:NINPUTに対して、Y=F(b+Σxji
コアkは以下を計算する:j=(k-1)NNEURON/NCORE+1:kNNEURON/NCOREおよびi=1:NINPUTに対して、Y=F(b+Σxji
コアNCOREは以下を計算する:j=(NCORE-1)NNEURON/NCORE+1:NNEURONおよびi=1:NINPUTに対して、Y=F(b+Σxji
いくつかの実施形態では、各コアは全ての出力ニューロンを計算するものの、入力のサブセットについてのみである。NCORE個のコアについて、各コアは、平均NINPUT/NCORE個の入力ニューロンについて、全ての出力ニューロンを計算する。この場合、コアは一部の入力しか必要としないが、出力は収集し加算する必要がある。例えば:
コア1は以下を計算する:j=1:NNEURONおよびi=1:NINPUT/NCOREに対して、Yj_core1=Σxji
コア2は以下を計算する:j=1:NNEURONおよびi=NINPUT/NCORE+1:2NINPUT/NCOREに対して、Yj_core2=Σxji
コアkは以下を計算する:j=1:NNEURONおよびi=(k-1)NINPUT/NCORE+1:kNNEURON/NCOREに対して、Yj_corek=Σxji
コアNCOREは以下を計算する:j=1:NNEURONおよびi=(NCORE-1)NINPUT/NCORE+1:NINPUTに対して、Yj_coreNCORE=Σxji
完全な結果に達するためには、j=1:NNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYi_corek)である。様々な実施形態において、完全な結果はコア間でまたはコア外で計算される。
いくつかの実装形態では、各コアは何らかの数の出力ニューロンを計算するが、各コアが入力ニューロンの全てにアクセスできる訳ではない。そのような実施形態では、各コアは部分的な出力を計算し、各コアがそのニューロンのセットを完全に計算するために必要な部分的出力の全てを得るまで、それらを分配する。そのような実施形態では、コアは非ゼロである情報(部分和)を渡しさえすればよく、アレイはニューラル・ネットワーク層の高レベルの構造を利用することが可能になる。例えば、畳み込みニューラル・ネットワークは、入力、出力、および部分和の計算および連絡の必要量がより少ない。例えば:
コア1は以下を計算する:j=1:NNEURONおよびi=1:NINPUT/NCOREに対して、Yj_core1=Σxji
コア2は以下を計算する:j=1:NNEURONおよびi=NINPUT/NCORE+1:2NINPUT/NCOREに対して、Yj_core2=Σxji
コアkは以下を計算する:j=1:NNEURONおよびi=(k-1)NINPUT/NCORE+1:kNNEURON/Ncoreに対して、Yj_corek=Σxji
コアNCOREは以下を計算する:j=1:NNEURONおよびi=(NCORE-1)NINPUT/NCORE+1:NINPUTに対して、Yj_coreNCORE=Σxji
次いで、完全な結果が連続的にまたはオーバーラップしてのいずれかで計算される。j=1:NNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYi_corek)である。
コア1は以下を計算する:j=1:NNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYj_corek
コア2は以下を計算する:j=NNEURON/NCORE+1:2NNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYj_corek
コアkは以下を計算する:j=(k-1)NNEURON/NCORE+1:kNNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYj_corek
コアNcoreは以下を計算する:j=(Ncore-1)NNEURON/NCORE+1:NNEURONおよびk=1:NCOREに対して、Y=F(b+ΣYj_corek
ここで図2を参照すると、コア間並列処理を示す例示的なニューラル・コアが示されている。コア201は並列ベクトル計算ユニットを備えるクロスバー202を含み、クロスバー202は入力203、
Figure 0007426980000002

を受け取り、これらにパラメータ
Figure 0007426980000003

を乗算するものであり、ここで、M=NINPUT/NCOREである。行列乗算の結果は並列和および非線形処理ユニット205に提供され、非線形処理ユニット205は、アレイ中の他のコアから部分和入力Yi_corek、206を受け取る。
上で指摘したように、アレイ中の各コアは、並列/同時ニューラル・ネットワーク計算要素を含む。例えば、所与のコアkは以下を計算する:
j=1:NNEURONおよびi=(k-1)NINPUT/NCORE+1:kNNEURON/NCOREに対して、Yj_corek=Σxji
または以下を計算する:
j=(k-1)NNEURON/NCORE+1:kNNEURON/NCOREおよびk=1:NCOREに対して、Y=F(b+ΣYj_corek
あるいはその両方を計算する。
NEURONの部分和(Yj_corek)は別個のベクトル・ユニットで同時に計算でき、各計算ベクトルは単一のニューロンjについて乗算および加算(Σxji)を行う。NNEURONの和および非線形処理(Y)は、別個の累算および非線形ユニットで同時に計算でき、各々が単一のニューロンjについて計算を行う。
ここで図3を参照すると、コア内並列処理を示す例示的なニューラル・コアが示されている。コア301は(図2のユニット202のうちの1つに対応している)ベクトル乗算/加算ユニット302を含み、ベクトル乗算/加算ユニット302は入力303、[x,・・・,x]を受け取り、これらにパラメータ304、[wj1,・・・,wj8]を乗算する。行列乗算の結果は並列和および非線形処理ユニット305に提供され、非線形処理ユニット305はアレイ中の他のコアから部分和入力306を受け取り、ニューロン出力307を提供する。このようにして、所与のベクトル・ユニットは多くの入力に対して一斉に作用して、単一の出力または複数の出力を生成する。
上で記載したように、ベクトル・ユニットは各々、並列/同時の様式で計算を行う。例えば、k番目のコアのj番目のベクトル・ユニットは、Yj_corek=Σxjiを計算する。この演算は並列で/同時に行うことができる。ベクトル・ユニットは、例えば加算ツリーを用いて並列加算を行い、これは同時性を更に高めるためにパイプライン化することができる。例えば、(図示したように)i=1:8であれば、ベクトル・ユニットは8回の並列乗算を実施し、続いて4回の2入力加算、続いて2回の2入力加算、続いて1回の2入力加算を行う。これら4回の並列演算をパイプライン化して、より高いスループットが得られるように同時に実行することができる。
表1を参照すると、コア・アレイのサイズ(列1×1・・・64×64)およびクロス・バーのサイズ(行1×1・・・1024×1024)に対して、様々なコア・アレイ並列処理の合計値が示されている。並列処理の合計は、コア・アレイのサイズとクロスバーのサイズの積である。
Figure 0007426980000004
図4を参照すると、本開示の実施形態に係るニューラル計算の方法が示されている。401では、複数のニューラル・コアの各々において、ニューラル・ネットワークの層の入力アクティベーションのサブセットが受け取られる。複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備える。複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている。402では、ニューラル・ネットワークのある層の出力アクティベーションのサブセットが、複数のニューラル・コアの各々に割り当てられて、計算される。ニューラル・ネットワークの層の入力アクティベーションのサブセットを受け取ると、複数のニューラル・コアの各々は、403において、その割り当てられた出力アクティベーションの各々について部分和を計算し、405において、少なくとも計算された部分和からその割り当てられた出力アクティベーションを計算する。いくつかの実施形態では、複数のコアの各々は、404において、複数のニューラル・コアのうちの別の1つからその割り当てられた出力アクティベーションのうちの少なくとも1つについての部分和を受け取り、405において、計算された部分和および受け取られた部分和から、その割り当てられた出力アクティベーションを計算する。
本明細書で提供されるニューラル・ネットワークが、分類器または生成器として使用され得ることが諒解されるであろう。
ここで図5を参照すると、計算ノードの例の概略図が示されている。計算ノード10は好適な計算ノードの一例に過ぎず、本明細書に記載する実施形態の使用または機能性の範囲に関してどのような限定を示唆することも意図していない。いずれにせよ、計算ノード10は実装され得る、または本明細書で上記した機能性のいずれかを実行できる、あるいはその両方である。
計算ノード10には、多数の汎用または専用計算システム環境または構成と共に動作できる、コンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12との使用に好適であり得る、よく知られた計算システム、環境、または構成あるいはその組合せの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、携帯型デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能消費者向け電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、などが挙げられるが、これらに限定されない。
コンピュータ・システム/サーバ12は、プログラム・モジュールなどの、コンピュータ・システムによって実行されるコンピュータ・システム実行可能命令の一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施されてもよい。分散型クラウド・コンピューティング環境では、プログラム・モジュールを、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスを含むコンピュータ・システム・ストレージ媒体内に配置することができる。
図5に示すように、計算ノード10中のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28からプロセッサ16までを含む様々なシステム・コンポーネントを連結するバス18を含み得るが、これらに限定されない。
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの1つまたは複数を表している。例として、限定するものではないが、そのようなアーキテクチャとしては、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、米国のビデオ電子装置規格化協会(Video Electronics Standards Association;VESA)ローカル・バス、周辺装置相互接続(Peripheral Component Interconnects;PCI)バス、周辺装置相互接続エキスプレス(Peripheral Component Interconnect Express;PCIe)、およびアドバンスト・マイクロコントローラ・バス・アーキテクチャ(Advanced Microcontroller Bus Architecture;AMBA)が挙げられる。
コンピュータ・システム/サーバ12は通常、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12がアクセス可能な任意の利用可能な媒体であってよく、これには、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体の両方が含まれる。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ・システム・ストレージ媒体を更に含み得る。単なる例として、取り外し不可能な不揮発性磁気媒体(図示しないが典型的には「ハード・ドライブ」と呼ばれる)に対する読み取りおよび書き込みを行うための、ストレージ・システム34が提供され得る。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、ならびに、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能な不揮発性光ディスクに対する読み取りおよび書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、各々が1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。以下で更に描写し記載するように、メモリ28は、本開示の実施形態の機能を実行するように構成されている1組の(例えば少なくとも1つの)プログラム・モジュールを有する、少なくとも1つのプログラム製品を含み得る。
1組の(少なくとも1つの)プログラム・モジュール42を有するプログラム/ユーティリティ40は、限定ではなく例としてメモリ28に格納され得るが、オペレーティング・システム、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)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチ・カードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の好適な組合せが含まれる。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または配線を介して伝送される電気信号などの、一時的信号そのものであると解釈されるべきではない。
本明細書に記載するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを経由して、外部のコンピュータもしくは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを備え得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に保存されるように転送する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存型命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードのいずれか、であり得る。コンピュータ可読プログラム命令は、専らユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的に遠隔のコンピュータ上で、または専ら遠隔のコンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、遠隔のコンピュータを、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよく、または、外部のコンピュータへの接続を(例えば、インターネット・サービス・プロバイダを利用してインターネットを介して)行ってもよい。いくつかの実施形態では、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本開示の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個人化することができる。
本明細書には、本開示の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本開示の態様が記載されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せを、コンピュータ可読プログラム命令によって実施できることが、理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が保存されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んだ製品を備えるように、コンピュータ可読記憶媒体に保存され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図中のフローチャートおよびブロック図には、本開示の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の、可能な実装形態のアーキテクチャ、機能性、および動作が説明されている。この関連において、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を備える、モジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替的実装形態において、ブロック内に記された機能は、図に記されたものとは異なる順序で行われ得る。例えば連続して示される2つのブロックは、実際は実質的に並行して実行され得、またはこれらのブロックは時には関わる機能に応じて、逆の順序で実行され得る。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実施され得ることも、留意されるであろう。
様々な実施形態において、1つまたは複数の推論処理ユニット(図示せず)がバス18に連結される。そのような実施形態では、IPUはバス18を介してメモリ28からデータを受け取る、またはメモリ28にデータを書き込む。同様に、IPUは本明細書に記載するように、バス18を介して他のコンポーネントと相互作用することができる。
本開示の様々な実施形態の説明は、例示の目的で提示されてきたが、網羅的であることも、開示される実施形態に限定されることも意図していない。当業者には記載される実施形態の範囲から逸脱することなく多くの修正および変更が明らかであろう。本明細書で用いられる専門用語は、実施形態の原理、実際の用途、もしくは市場で見られる技術に対する技術的な改善を最もよく説明するように、または、他の当業者が本明細書において開示される実施形態を理解できるように、選択された。

Claims (25)

  1. ニューラル推論チップであって、
    並列に動作するように構成されている複数のベクトル計算ユニットを各々備える、複数のニューラル・コアを備え、
    前記複数のニューラル・コアの各々は、その複数のベクトル計算ユニットを入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されており、
    前記複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを、前記層についての入力ニューロンの個数、前記層についての出力ニューロンの個数および前記複数のニューラル・コアについてのコアの個数により、割り当てて計算を行う、
    ニューラル推論チップ。
  2. 前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
    その割り当てられた出力アクティベーションの各々について部分和を計算し、
    少なくとも前記計算された部分和からその割り当てられた出力アクティベーションを計算する、請求項1に記載のニューラル推論チップ。
  3. 前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
    前記複数のニューラル・コアのうちの別の1つから、その割り当てられた出力アクティベーションのうちの少なくとも1つについての部分和を受け取り、
    前記計算された部分和および前記受け取られた部分和から、その割り当てられた出力アクティベーションを計算する、請求項2に記載のニューラル推論チップ。
  4. 前記ベクトル計算ユニットは乗算および加算ユニットを備える、請求項1に記載のニューラル推論チップ。
  5. 前記ベクトル計算ユニットは累算ユニットを備える、請求項1に記載のニューラル推論チップ。
  6. 前記複数のニューラル・コアは前記部分和の計算を並列に行う、請求項2に記載のニューラル推論チップ。
  7. 前記複数のニューラル・コアは前記出力アクティベーションの計算を並列に行う、請求項2に記載のニューラル推論チップ。
  8. 前記部分和を計算することは、前記複数のベクトル計算ユニットのうちの少なくとも1つを適用して、前記入力アクティベーションとシナプス重みとを乗算することを含む、請求項2に記載のニューラル推論チップ。
  9. 前記割り当てられた出力アクティベーションを計算することは、複数の加算ユニットを適用することを含む、請求項2に記載のニューラル推論チップ。
  10. 出力アクティベーションを計算することは、非線形関数を適用することを含む、請求項2に記載のニューラル推論チップ。
  11. 前記ベクトル計算ユニットは、
    複数の乗算演算を並列に行い、
    複数の加算を並列に行い、
    前記部分和を累算するように構成されている、請求項2に記載のニューラル推論チップ。
  12. 前記複数のベクトル計算ユニットは、部分和を並列に計算するように構成されている、請求項2に記載のニューラル推論チップ。
  13. 前記複数のニューラル・コアの各々による前記計算はパイプライン化されている、請求項1に記載のニューラル推論チップ。
  14. 前記複数のニューラル・コアの各々は前記計算の各段を同時に行うように構成されている、請求項13に記載のニューラル推論チップ。
  15. 前記計算は前記各段の並列乗算および加算を行う、請求項14に記載のニューラル推論チップ。
  16. 複数のニューラル・コアの各々において、前記ニューラル・コアによって、ニューラル・ネットワークのある層の入力アクティベーションのサブセットを受け取ることであって、前記複数のニューラル・コアの各々は、並列に動作するように構成されている複数のベクトル計算ユニットを備え、前記複数のニューラル・コアの各々は、その複数のベクトル乗算器を入力アクティベーションに適用することによって、出力アクティベーションを並列に計算するように構成されている、前記受け取ることと、
    前記ニューラル・コアによって、前記複数のニューラル・コアの各々にニューラル・ネットワークのある層の出力アクティベーションのサブセットを、前記層についての入力ニューロンの個数、前記層についての出力ニューロンの個数および前記複数のニューラル・コアについてのコアの個数により、割り当てて計算を行うことと、
    前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々が、
    その割り当てられた出力アクティベーションの各々について部分和を計算し、
    少なくとも前記計算された部分和からその割り当てられた出力アクティベーションを計算することと、
    を含む、方法。
  17. 前記ニューラル・ネットワークの前記層の入力アクティベーションのサブセットを受け取ると、前記複数のニューラル・コアの各々は、
    前記複数のニューラル・コアのうちの別の1つから、その割り当てられた出力アクティベーションのうちの少なくとも1つについての部分和を受け取り、
    前記計算された部分和および前記受け取られた部分和から、その割り当てられた出力アクティベーションを計算する、請求項16に記載の方法。
  18. 前記ベクトル計算ユニットは乗算および加算ユニットを備える、請求項16に記載の方法。
  19. 前記ベクトル計算ユニットは累算ユニットを備える、請求項16に記載の方法。
  20. 前記複数のニューラル・コアは前記部分和の計算を並列に行う、請求項16に記載の方法。
  21. 前記複数のニューラル・コアは前記出力アクティベーションの計算を並列に行う、請求項16に記載の方法。
  22. 前記部分和を計算することは、前記複数のベクトル計算ユニットのうちの少なくとも1つを適用して、前記入力アクティベーションとシナプス重みとを乗算することを含む、請求項16に記載の方法。
  23. 前記割り当てられた出力アクティベーションを計算することは、複数の加算ユニットを適用することを含む、請求項16に記載の方法。
  24. 出力アクティベーションを計算することは非線形関数を適用することを含む、請求項16に記載の方法。
  25. 複数の乗算演算を並列に行うことと、
    複数の加算を並列に行うことと、
    前記部分和を累算することと、
    を更に含む、請求項16に記載の方法。
JP2021500263A 2018-07-12 2019-07-11 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 Active JP7426980B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/033,926 US20200019836A1 (en) 2018-07-12 2018-07-12 Hierarchical parallelism in a network of distributed neural network cores
US16/033,926 2018-07-12
PCT/EP2019/068713 WO2020011936A1 (en) 2018-07-12 2019-07-11 Hierarchical parallelism in a network of distributed neural network cores

Publications (2)

Publication Number Publication Date
JP2021532451A JP2021532451A (ja) 2021-11-25
JP7426980B2 true JP7426980B2 (ja) 2024-02-02

Family

ID=67514576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021500263A Active JP7426980B2 (ja) 2018-07-12 2019-07-11 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理

Country Status (5)

Country Link
US (1) US20200019836A1 (ja)
EP (1) EP3821376A1 (ja)
JP (1) JP7426980B2 (ja)
CN (1) CN112384935A (ja)
WO (1) WO2020011936A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556450B2 (en) * 2019-10-11 2023-01-17 International Business Machines Corporation Hybrid data-model parallelism for efficient deep learning
CN117093871B (zh) * 2023-10-16 2024-02-13 之江实验室 一种面向深度学习分布式训练测评方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188767A (ja) 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
US20180046906A1 (en) 2016-08-11 2018-02-15 Nvidia Corporation Sparse convolutional neural network accelerator

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05346914A (ja) * 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
KR102399548B1 (ko) * 2016-07-13 2022-05-19 삼성전자주식회사 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188767A (ja) 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
US20180046906A1 (en) 2016-08-11 2018-02-15 Nvidia Corporation Sparse convolutional neural network accelerator

Also Published As

Publication number Publication date
JP2021532451A (ja) 2021-11-25
EP3821376A1 (en) 2021-05-19
US20200019836A1 (en) 2020-01-16
WO2020011936A1 (en) 2020-01-16
CN112384935A (zh) 2021-02-19

Similar Documents

Publication Publication Date Title
JP7372009B2 (ja) 並列分散テンソル計算用のニューラル・ハードウェア・アクセラレータ
JP7241771B2 (ja) 実行時再構成可能なニューラル・ネットワーク・プロセッサ・コア
JP6857286B2 (ja) ニューラルネットワークアレイの性能の改善
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
JP7227272B2 (ja) 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ
US11615307B2 (en) Neural network data computation using mixed-precision
JP7426980B2 (ja) 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理
US20200104718A1 (en) Data distribution in an array of neural network cores
JP2022552180A (ja) 大規模並列ニューラル推論エンジン用のマルチモード低精度内積計算回路
US11935271B2 (en) Neural network model compression with selective structured weight unification
JP2023505237A (ja) 柔軟な精度のニューラル推論処理ユニット
US20210201157A1 (en) Neural network model compression with quantizability regularization
US20220121901A1 (en) Gated unit for a gated recurrent neural network
EP4133418B1 (en) Neural network weight distribution from a grid of memory elements
JP2022091126A (ja) ニューラル推論チップ、少なくとも1つのニューラル推論コアを備える集積回路およびコンピュータ実装方法(有効なニューラルネットワーク活性化関数のvlsi実装のための効率的な方法)
JP2023099321A (ja) 方法、コンピュータプログラムおよび装置(ニューラルネットワークのためのモデル非依存入力変換)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231010

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240123

R150 Certificate of patent or registration of utility model

Ref document number: 7426980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150