JP2023545299A - ゲート・リカレント・ニューラル・ネットワークのためのゲート・ユニット - Google Patents
ゲート・リカレント・ニューラル・ネットワークのためのゲート・ユニット Download PDFInfo
- Publication number
- JP2023545299A JP2023545299A JP2023522341A JP2023522341A JP2023545299A JP 2023545299 A JP2023545299 A JP 2023545299A JP 2023522341 A JP2023522341 A JP 2023522341A JP 2023522341 A JP2023522341 A JP 2023522341A JP 2023545299 A JP2023545299 A JP 2023545299A
- Authority
- JP
- Japan
- Prior art keywords
- elements
- columns
- vector
- activation
- calculated
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 23
- 230000000306 recurrent effect Effects 0.000 title claims abstract description 19
- 239000013598 vector Substances 0.000 claims abstract description 243
- 230000015654 memory Effects 0.000 claims abstract description 121
- 230000004913 activation Effects 0.000 claims abstract description 91
- 239000011159 matrix material Substances 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 claims description 23
- 230000003068 static effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 13
- 230000009466 transformation Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000036992 cognitive tasks Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation 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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
ゲート・リカレント・ニューラル・ネットワーク(RNN)のための方法、コンピュータ・プログラム製品、およびコンピュータ・システムが提供される。本方法は、要素プロセッサを設けることと、隠れ状態ベクトルの1つまたは複数の要素のそれぞれのセットのための別個のメモリ・アレイを設けることと、1つまたは複数の要素のセットの計算を可能にする重み行列の列のグループをメモリ・アレイに格納することと、複数の活性化ベクトルの各々に関連付けられた列のグループのうちの1つまたは複数の列のセットを使用して、複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、要素プロセッサにより、計算された要素に対する要素ごとのゲート演算を実行して、1つまたは複数の要素のセットを得ることとを含むことができる。
Description
本発明は、デジタル・コンピュータ・システムの分野に関し、より詳細には、ゲート・リカレント・ニューラル・ネットワークのためのゲート・ユニットに関する。
ニューラル・ネットワークは、人工知能システムで使用される計算モデルである。ニューラル・ネットワークは、複数の人工ニューロンに基づく。各人工ニューロンは、1つまたは複数の他のニューロンに接続され、リンクは、隣接するニューロンの活性化状態を強化または抑制することができる。様々な認知タスクにおけるニューラル・ネットワークの精度は、ディープ・ニューラル・ネットワークの訓練または推論のためのハードウェア・アクセラレータの設計において大きな関心を集めている。ゲート・リカレント・ニューラル・ネットワーク(RNN)、例えば長短期メモリ(LSTM)・ネットワークの訓練または推論において、要素ごとの演算のセットが次元ベクトルで計算される。しかしながら、これらの計算はリソース集約的である場合がある。
例示的な実施形態は、ゲート・リカレント・ニューラル・ネットワーク(RNN)のための方法、コンピュータ・プログラム製品、およびコンピュータ・システムを開示している。例示的な実施形態は、要素プロセッサを設けることと、隠れ状態ベクトルの1つまたは複数の要素のそれぞれのセットについて別個のメモリ・アレイを設けることと、1つまたは複数の要素のセットの計算を可能にする重み行列の列のグループをメモリ・アレイに格納することと、複数の活性化ベクトルの各々に関連付けられた列のグループのうちの1つまたは複数の列のセットを使用して、複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、要素プロセッサにより、計算された要素に対する要素ごとのゲート演算を実行して、1つまたは複数の要素のセットを得ることとを含むことができる。
例として示され、例示的な実施形態をそれのみに限定するものではない、以下の詳細な説明は、添付図面と併せて最もよく理解されよう。
図面は必ずしも縮尺通りではない。図面は概略図に過ぎず、例示的な実施形態の特定のパラメータを表すことを意図していない。図面は、典型的な例示的実施形態のみを示すことを意図している。図中、同様の番号は同様の要素を示す。
本発明の様々な実施形態の説明は、例示の目的で提示されるが、網羅的であること、または開示される実施形態に限定されることは意図されていない。記載される実施形態の範囲から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するために、または当業者が本明細書に開示される実施形態を理解できるようにするために選択された。
リカレント・ニューラル・ネットワークは、ネットワークのノード間の接続が時系列に沿ってグラフ(例えば有向グラフ)を形成することができる、人工ニューラル・ネットワークであってよい。これにより、リカレント・ニューラル・ネットワークは、時間的に動的な挙動を示すことができる。リカレント・ニューラル・ネットワークは、連続層に組織化されたニューロン状ノードのネットワークであってよい。ノードは、入力ノード(ネットワーク外部からデータを受け取る)、出力ノード(結果を生み出す)、または隠れノード(データを入力から出力へ変更する)である。リカレント・ニューラル・ネットワークのノードは、1つまたは複数のゲート・ユニットを含むことができるため、ゲート・リカレント・ニューラル・ネットワークと呼ぶことができ、例えばノードのうちの各ノードがゲート・ユニットを含むことができる。ゲート・ユニットは、例えば、ゲート・リカレント・ユニット(GRU)または長短期メモリ(LSTM)・ユニットを含むことができる。
ゲート・ユニットは、lG個のゲートを含むことができる。例えば、ゲート・リカレント・ユニットの場合、lG個のゲートは3個以下(lG≦3)であってよく、例えば、最小ゲート・ユニットの場合にlG=2、完全ゲート・ユニットの場合にlG=3であってよい。lG個のゲートのうちの各ゲートは、入力ベクトルを受け取ることができ、それに応答して、活性化ベクトルと呼ばれるそれぞれのベクトルを提供することができる。ゲート・ユニットは、時間tにおける入力信号xtと前の時間ステップt-1における隠れ状態ht-1とを現在の隠れ状態htにマッピングする非線形変換を可能にすることができる。入力信号xtおよび隠れ状態htの各々は、ベクトルであってよい。ゲート・ユニットは、時間tにおけるベクトルItを入力として受け取ることができる。入力ベクトルItは、例えば、時間tの入力信号ベクトルxtと時間t-1における隠れ状態ベクトルht-1との連結であってよい。隠れ状態ベクトルhtは、活性化ベクトルの要素ごとのゲート演算によって定義され得る。lG個の活性化ベクトルの各々は、それぞれの重み行列Wの関数として定義され得る。例えば、lG個の活性化ベクトルの各々は、重み付けベクトルPjの関数であってよい。時間tにおける重み付けベクトルPjは、少なくとも、それぞれの入力ベクトルItに、活性化ベクトルに関連付けられた別個の重み行列Wjを乗算することによって得ることができる。
したがって、lG個の重み行列を使用して、本主題による隠れ状態ベクトルhtの要素のセットを計算することができる。隠れ状態ベクトルhtは、グループ
に属していてよい。入力信号xtは、グループ
に属していてよい。lG個の活性化ベクトルの各々は、グループ
に属していてよい。lG個の重み行列の各々は、グループ
に属していてよく、ここで、sは入力ベクトルItの大きさである。時間tにおける入力ベクトルItは、例えば、時間tにおける入力信号ベクトルxtの要素と前の時間ステップt-1における隠れ状態ベクトルht-1の要素とを含むことができ、したがって、s=k+dである。隠れ状態ベクトルhtは、k個の要素を含むことができる。隠れ状態ベクトルhtの要素のうちの各要素ht(i)(iはl~kの間で変化する)は、例えばインデックスiを示すそれぞれの要素位置を有することができる。
完全ゲート・ユニットの例に従って、ゲートは、リセット・ゲート、更新ゲート、および活性化ゲートを含むことができる。活性化ゲートは、候補隠れ状態ベクトルを提供することができる。リセット・ゲートの活性化ベクトルは、rt=σg(Pr)のように定義され得る。更新ゲートの活性化ベクトルは、zt=σg(Pz)のように定義され得る。活性化ゲートの活性化ベクトルは、
のように定義され得る。関数σgはシグモイド関数である。φhは双曲線正接関数である。Pr、Pz、およびPhは重み付けベクトルである。例えば、重み付けベクトルの各々は、
、および
のように得られ、ここで、Wr、Wz、およびWhは、活性化ベクトルrt、zt、および
にそれぞれ関連付けられた重み行列である。
、および
は、リセット・ゲート、更新ゲート、および活性化ゲートのそれぞれに関連付けられた入力ベクトルであり、例えば、入力ベクトル
、および
の各々は、それぞれのゲートへの入力前に重み付けされ得る。入力ベクトル
は、入力信号ベクトルxtと隠れ状態ベクトルht-1との連結であってよい。入力ベクトル
は、入力信号ベクトルxtと隠れ状態ベクトルht-1との連結であってよい。入力ベクトル
は、入力信号ベクトルxtと以下のベクトル
との連結であってよい。言い換えると、ゲートに関連付けられた入力ベクトルは、ゲート・ユニットにより変更されてよく、xtとht-1との単なる連結ではなく、xtと、1つのゲートの出力およびベクトルht-1の要素ごとの演算から得られる別のベクトルとの連結であるようになっている。別の例では、重み付けベクトルの各々が、以下のように得られる。
、および
、ここで、br、bZ、およびbhは、バイアス・ベクトルであってよい。
言い換えると、重み付けベクトルは、入力ベクトルに別個の重み行列を乗算し、バイアス・ベクトルを加算することとによって得られる。
言い換えると、重み付けベクトルは、入力ベクトルに別個の重み行列を乗算し、バイアス・ベクトルを加算することとによって得られる。
したがって、そのようなゲート・リカレント・ニューラル・ネットワークの訓練または推論は、ベクトル
、および
などの高次元ベクトルの要素ごとの演算のセットを伴うことができる。しかしながら、高次元ベクトルの要素ごとの演算の計算は、以下の理由で、ハードウェア・アクセラレータにおける、コストのかかるハードウェア実装であり得る。第1に、ハードウェア実装をベクトルの大きさに合わせてスケーリングすることは、必要面積および必要電力に関して高価になる可能性があり得る。第2に、リソースに制約のある適用において、互いに離れたメモリ・ユニットに格納された大きいベクトルにより、多重化が困難になり得る。本主題は、要素ごとの演算のスケーリング可能および多重化可能なハードウェア実装の設計を容易にすることができる計算ユニットのアレイに、ゲート・リカレント・ニューラル・ネットワークのパラメータをマッピングすることによって、この問題に対処することができる。重み行列の列をメモリ・アレイのそれぞれの位置に選択的に格納することを、マッピングと呼ぶことができる。
本主題は、隠れ状態ベクトルの1つまたは複数の要素のセットを一度に計算することができるため、隠れ状態ベクトルの効率的な計算を可能にすることができる。これは、活性化ベクトルのあらゆる要素の計算が実行された後に、隠れ状態ベクトル全体の計算が一度に実行される、従来の方法とは対照的である。本主題により一度に計算された隠れ状態ベクトルの要素のセット(SETと呼ぶ)は、n個の要素を含むことができ、ここで、nは隠れ状態ベクトルの要素の数以下である(n≦k)。n=kの場合、本主題は、従来の方法に対する代替解決策を提供することができる。要素のセットのうちの要素の数nは、例えば、構成可能なパラメータであり得、例えば、要素の数nの値は、ユーザによって定義され得る。
隠れ状態ベクトルの要素は、N個の別個の要素のセットSET1、SET2...SETNに分割され得る。要素のセットSET1、SET2...SETNは、各々同じ数nの要素を含んでいても含んでいなくてもよい。一例において、要素の数nは、隠れ状態ベクトルの要素の総数kと要素のセットSETのうちの要素の数nとの比
が整数であるように定義され得る。要素のセットSET1は、例えば、位置/インデックスi、j、lを有する隠れ状態ベクトルhtの要素がセットSET1の要素であることを示すように、ht(i:j:l)と表記され得る。
方法は、要素のセットSET1、SET2...SETNのうちの1つを一度に計算するように実行されてよい。隠れ状態ベクトルのすべての要素を計算するために、方法は、隠れ状態ベクトルの残りの計算されていない要素を計算するように繰り返されてよい。例えば、要素のセットSET1、SET2...SETNを計算するために、方法をN-1回繰り返すことができる。方法の各反復において、要素のセットSET1、SET2...SETNのうちの1つの別個のセットを、一度に計算することができる。一実施形態によれば、方法は、隠れ状態ベクトルのすべての要素が計算されるまで、隠れ状態ベクトルの要素の1つまたは複数の他の別個のセットのためのステップを繰り返すことをさらに含む。すなわち、要素のセットSET1、SET2...SETNのうちの要素の各セットSETjについて、要素プロセッサ(EPj)とメモリ・アレイ(MAj)とを設けることができ、ここでjはl~Nの間で変化する。例えば、N個の要素プロセッサとN個のメモリ・アレイとを備える電子ユニット(例えば集積回路)を設けて、要素のセットSET1、SET2...SETNの計算が同時にまたは並行して実行され得るようにしてもよい。したがって、一実施形態によれば、ステップの繰返しは同時に実行される。
あるいは、要素のセットSET1、SET2...SETNの計算の一部を連続して実行することができ、計算の別の部分を同時に実行することができる。そのために、M個の要素プロセッサを設けることができ、要素プロセッサの数Mは要素のセットの数Nよりも小さい(M<N)。この場合、各要素プロセッサを、それぞれの要素のセットに割り当てることができる。要素プロセッサが2つ以上の要素のセットに関連付けられる場合、要素プロセッサを入力全体で多重化して、要素の1つのセットを一度に計算するようにしてもよい。しかしながら、ハードウェア実装の必要面積を最小限に抑えるために、要素プロセッサの数Mをできるだけ小さく選択することができる。したがって、一実施形態によれば、方法は、隠れ状態ベクトルのすべての要素が計算されるまで、隠れ状態ベクトルの要素の1つまたは複数の他の別個のセットのためのステップを繰り返すことをさらに含み、要素の1つのセットを一度に計算するように、(単一の)要素プロセッサに多重化機能が設けられる。
以下の実施形態により、要素プロセッサは、隠れ状態ベクトルの要素のそれぞれのセットを計算することができる。要素のセットのうちの各要素は、隠れ状態ベクトルにそれぞれの要素位置を有する。活性化ベクトルの計算された要素は、複数の活性化ベクトルの1つまたは複数の計算された要素の複数のセットをそれぞれ含む。計算された要素の各セットは、それぞれの活性化ベクトルに要素位置のセットを有する。複数の活性化ベクトルのうちの各活性化ベクトルについて、計算は、重み付けベクトルの要素のセット(結果要素と呼ぶ)を、それぞれ、入力ベクトルの値をメモリ・アレイで受け取り、関連付けられた1つまたは複数の列のセットから出力することであって、結果要素の前記セットが重み付けベクトルに要素位置のセットを有する、受け取り出力することと、結果要素のセットを要素プロセッサに送ることと、結果要素のセットを使用して、活性化ベクトルの計算された要素のセットの計算を実行することとを含む。
一実施形態によれば、メモリ・アレイは、行線と、行線に交差する列線と、行線および列線によって形成された接合点で行線と列線との間に結合された計算メモリとを含む。計算メモリのうちの各計算メモリは、列のそれぞれの要素の値を表す。列を格納することは、メモリ・アレイのそれぞれの単一の列線の計算メモリに各列のすべての要素を格納することを含む。
一実施形態によれば、計算メモリは、抵抗メモリ要素、SRAM、またはフラッシュ・メモリ要素のうちのいずれか1つである。
図1は、本主題の例による電子システム100を示す図である。電子システム100は、ゲート・リカレント・ニューラル・ネットワークのゲート・ユニットであってよい。ゲート・ユニットは、隠れ状態ベクトルhtを有することができる。隠れ状態ベクトルhtは、lG個の活性化ベクトル
の要素ごとのゲート演算によって定義され得る。lG個の活性化ベクトルの各々は、それぞれの重み行列Wjの関数として定義され得る。例えば、lG個の活性化ベクトルの各々は、重み付けベクトルPjの関数であってよい。時間tにおける重み付けベクトルは、それぞれの入力ベクトルItに、活性化ベクトルに関連付けられた別個の重み行列Wjを乗算することによって得られる。しかしながら、隠れ状態ベクトルのすべての要素を一度に計算することは、ハードウェア実装にいくつかの制約を加えることがある。電子システム100は、隠れ状態ベクトルhtの単一の要素を計算するように構成されてよいため、これを解決することができる。隠れ状態ベクトルhtの要素は、インデックスまたは要素位置iを有する要素ht(i)であってよい。
電子システム100は、時間tにおける入力信号xtと前の時間ステップt-1における隠れ状態ht-1とを現在の隠れ状態htの要素ht(i)にマッピングする非線形変換を実行するように構成されてよい。隠れ状態ベクトルhtは、グループ
に属していてよい。入力信号xtは、グループ
に属していてよい。lG個の活性化ベクトルの各々は、グループ
に属していてよい。lG個の重み行列の各々は、グループ
に属していてよく、ここで、sは入力ベクトルItの大きさである。時間tの入力ベクトルItは、例えば、時間tにおける入力信号ベクトルxtの要素と前の時間ステップt-1における隠れ状態ベクトルht-1の要素とを含むことができ、したがって、s=k+dである。別の例において、ゲートに関連付けられた入力ベクトルItは、(メモリ・アレイへの入力前に)ゲート・ユニットにより変更されてよく、xtとht-1との単なる連結ではなく、xtと、要素プロセッサ103の1つのゲートの出力およびベクトルht-1の要素ごとの演算から得られる別のベクトルとの連結であるようになっている。隠れ状態ベクトルhtは、k個の要素を含むことができる。隠れ状態ベクトルhtの要素のうちの各要素ht(i)(iはl~Nで変化する)は、例えばインデックスiを示すそれぞれの要素位置を有することができる。ht(1)は、隠れ状態ベクトルhtの第1の要素である。
電子システム100は、メモリ・アレイ101と要素プロセッサ103とを備える。要素プロセッサ103は、活性化ベクトル
を時間tにおいてそれぞれ提供するlG個のゲート105を含む。例えば、最小ゲート・ユニットの場合にlG=2、LSTMの場合にlG=4である。lG個のゲート105のうちの各ゲートは、シグモイド関数σおよび双曲線正接関数φなどの活性化関数を有することができる。要素プロセッサ103は、ベクトルに対する要素ごとの演算を実行可能にし、活性化関数を適用可能にする他の電子素子106をさらに備えることができる。図1に示すように、電子素子106は、要素ごとの乗算、ベクトル加算、およびベクトル減算(負の値を用いたベクトル加算)を実行するように構成されてよい。
最小ゲート・ユニットの例に従って、要素プロセッサ103は、2つのゲートを含むことができ、対応する2つの活性化ベクトルは以下のように定義され得る。
この場合、隠れ状態ベクトルは、以下のように定義され得る。
重み付けベクトルP1、P2は、(時間tにおいて)wfxt+ufht-1+bfおよび
にそれぞれ等しくてよい。重み行列はWfおよびWhであってよい。
メモリ・アレイ101は、GRPiと呼ぶ列のグループを格納することを可能にするいくつかの行および列を含む。列のグループは、活性化ベクトル
の要素
の決定をそれぞれ可能にする重み行列
の列を含む。例えば、要素
の計算は、入力ベクトルItと重み行列W1の列番号iとを必要とし得る。重み行列W1の列番号(または位置)iは、要素W1(1,i),W1(2,i)...W1(s,i)を含むことができる。要素
の計算は、入力ベクトルItと重み行列W2の列番号iとを必要とし得る。重み行列W2の列番号iは、要素W2(1,i),W2(2,i)...W2(s,i)などを含むことができる。したがって、要素ht(i)の計算を可能にする列のグループGRPiは、重み行列
の位置iにおけるすべての列107を含むことができる。メモリ・アレイ101は、入力ベクトルItを受け取り、それぞれの重み付けベクトルPjの位置iの要素Pj(i)を各列107で出力するように構成されてよい。
最小ゲート・ユニットの例に従って、要素ht(i)を計算するために、活性化ベクトル要素
およびft(i)を計算する必要がある。要素ft(i)を計算するために、重み行列Wfの位置iの列をメモリ・アレイ101の列に格納することができる。要素
を計算するために、重み行列Whの位置iの列を、メモリ・アレイの別の連続した列に格納することができる。したがって、列のグループGRPiは2つの列によって形成される。
列107の各々の重み付けベクトルPjの要素Pj(j)は、要素プロセッサ103のそれぞれのゲート105への入力として提供され、ゲート105の各々の活性化関数をそれぞれの受け取った重み付けベクトル要素Pj(j)に適用できるようになっている。これにより、活性化ベクトル要素
が得られる。要素ht(i)を得ることを可能にする要素ごとの演算を実行するために、電子素子106を使用する要素プロセッサ103によって、活性化ベクトル要素
をさらに処理することができる。
最小ゲート・ユニットの例に従って、要素プロセッサ103は、
の計算を実行するように構成されてよい。この場合、要素ごとのゲート演算は要素ごとの乗算を含む。
図2は、本主題の例による電子システム200を示す図である。電子システム200は、現在の隠れ状態htの2つの要素ht(i1:i2)のセットを計算するように構成されてよい。電子システム200は、時間tにおける入力信号xtと前の時間ステップt-1における隠れ状態ht-1とを現在の隠れ状態htの2つの要素ht(i1:i2)のセットにマッピングする非線形変換を実行するように構成されてよい。
電子システム200は、メモリ・アレイ201と要素プロセッサ203とを備える。メモリ・アレイ201は、活性化ベクトル
の要素
の決定をそれぞれに可能にする重み行列
の列のグループGRPi1,i2を格納する。例えば、要素
の計算は、入力ベクトルItと重み行列W1の位置i1、i2の2つの列とを必要とし得る。重み行列W1の位置i1の列は、要素W1(1,i1),W1(2,i1)...W1(s,i1)を含むことができる。重み行列W1の位置i2の列は、要素W1(1,i2),W1(2,i2)...W1(s,i2)などを含むことができる。同じ重み行列の列207が、メモリ・アレイに連続して格納される。これにより、ハードウェア実装の必要面積を最小限に抑えることができる。メモリ・アレイ201は、入力ベクトルItを受け取り、それぞれの重み付けベクトルPjの位置i1、i2の要素Pj(i1:12)を各列207で出力するように構成されてよい。
列207の各々の重み付けベクトルPjの各対の要素Pj(i1:12)は、要素プロセッサ203のそれぞれのゲート205への入力として提供され、ゲート205の各々の活性化関数をそれぞれの受け取った重み付けベクトル要素Pj(i1:12)に適用できるようになっている。これにより、活性化ベクトル要素
が得られる。要素ht(i1:12)のセットを得ることを可能にする要素ごとの演算を実行するために、電子素子206を使用する要素プロセッサ203によって、活性化ベクトル要素
をさらに処理することができる。
図3は、本主題の例による電子システム300を示す図である。電子システム300は、現在の隠れ状態htのすべての要素を1つずつ計算するように構成されてよい。電子システム300は、時間tにおける入力信号xtと前の時間ステップt-1における隠れ状態ht-1とを現在の隠れ状態htにマッピングする非線形変換を実行するように構成されてよい。そのために、電子システム300は、いくつかの要素プロセッサ303.1~303.k(隠れ状態ベクトルhtの要素の数kに等しい)を備えることができ、要素プロセッサの各々が隠れ状態ベクトルhtのそれぞれの要素を提供することができるようになっている。電子システム300は、列のk個のグループGRP1,GRP2,...GRPKが格納されるメモリ・アレイ301をさらに備える。列のグループGRP1,GRP2,...GRPKが格納される領域を、別個のメモリ領域(または別個のメモリサブ領域)と呼ぶことができる。k個の列のグループのうちの列の各グループが、連続して格納される。k個の列のグループのうちの列の各グループは、隠れ状態ベクトルhtのそれぞれの要素の計算を可能にする列である。例えば、列のグループGRP1は、隠れ状態ベクトルhtの要素ht(1)の計算を可能にする列を含む。要素プロセッサ303.1~303.kの各々は、図1の要素プロセッサ103を参照して説明したように、隠れ状態ベクトルhtのそれぞれの要素を計算するように構成されてよい。
図4は、本主題の例による電子システム400を示す図である。電子システム400は、現在の隠れ状態htのすべての要素を1つずつ計算するように構成されてよい。電子システム400は、時間tにおける入力信号xtと前の時間ステップt-1における隠れ状態ht-1とを現在の隠れ状態htにマッピングする非線形変換を実行するように構成されてよい。そのために、電子システム400は、単一の要素プロセッサ403を備えることができる。電子システム400のメモリ・アレイ401は、k個の列のグループGRP1,GRP2,...GRPKが格納される図3のメモリ・アレイ303と同様であり、例えばk=128である。電子システム400は、単一の要素プロセッサ403を使用して異なるグループの出力を多重化することができるように構成されてよい。例えば、図4に示すように、単一の要素プロセッサ403は、すべてのグループにわたって多重化されて、1つの隠れ状態ベクトル要素を一度に計算する。この実装は、リソースに制約のある適用の場合に有利であり得る。
図4の実装の1つの発展は、グループの所望のセットにわたって多重化することのできる2つ以上の要素プロセッサを使用することであり得る。これは、例えば、2つの要素プロセッサ503.1、503.2が使用される図5に示されている。電子システム500は、要素プロセッサ503.1を使用することによりグループのセットの出力を多重化することができ、要素プロセッサ503.2を使用することによりグループの別のセットの出力を多重化することができるように構成されてよい。例えば、図5に示すように、要素プロセッサ503.1は、グループGRP1~GRP60のすべてにわたって多重化されて、隠れ状態ベクトルhtの最初の60個の要素について、1つの隠れ状態ベクトル要素を一度に計算する。要素プロセッサ503.3は、グループGRP61~GRP128のすべてにわたって多重化されて、隠れ状態ベクトルhtの後の68個の要素について、1つの隠れ状態ベクトル要素を一度に計算する。
図6Aは、本主題の例によるメモリ・アレイ600を示す図である。メモリ・アレイ600は、例えば、図1を参照して説明したものであってよい。
メモリ・アレイ600は、メモリの動作を示す電圧シーケンスと共にローカル・データ・ストレージを提供する計算メモリのクロスバー・アレイであってよい。図6Aは、例えば、行列ベクトル乗算を実行することのできる2次元(2D)クロスバー・アレイ600の図である。クロスバー・アレイ600は、行導電線602.1...602.sのセットと行導電線602.1...602.sのセットに交差する列導電線608.1...608.lGのセットとから形成される。
列導電線を列線と呼ぶことができ、行導電線を行線と呼ぶことができる。線および列の数は、計算される隠れ状態ベクトルの要素の数に基づいて定義され得る。この場合、隠れ状態ベクトルの第1の要素を計算することができる。そのために、lG個の活性化ベクトルの各々の第1の要素を計算する必要があり得るため、メモリ・アレイは少なくともlG個の列を含むことができる。線の数は、重み行列の各々の行の数、すなわちsによって定義される。
行線のセットと列線のセットとの交点は、それぞれW(i,j)として示されるそれ自体の値を各々有する計算メモリによって分離され、ここで、i=1...sおよびj=1...lGである。図示を簡単にするために、図6Aでは、1つの計算メモリ620のみに参照数字が付されている。例えば、メモリ・アレイの列608.1は、重み行列W1の位置1の列の要素を格納する。メモリ・アレイの列608.2は、重み行列W2の位置1の列の要素を格納する、などである。
入力電圧v1...vsが、行線602.1~602.sにそれぞれ加えられる。各列線608.1~608.kは、特定の列線に沿って各計算メモリにより発生する電流
を合計する。例えば、図6Aに示すように、列線608.2により発生する電流I2は、式I2=v1・W2(1,1)+v2・W2(2,1)+v3・W3(3,1)+・・・+vs・W2(s,1)による。したがって、アレイ600は、計算メモリ620に格納された値に、電圧v1-vsにより定義された行線入力を乗算することによって、行列ベクトル乗算を計算する。したがって、乗算は、メモリ・アレイ自体とアレイ600の該当する行線または列線とを使用して、アレイ600の各計算メモリ620で局所的に実行されてよい。
図6Bは、本主題によるメモリ・アレイ700を示す図である。メモリ・アレイ700は、例えば、図1を参照して説明したものであってよい。メモリ・アレイ700は、メモリスタ・デバイスのクロスバー・アレイであってよい。水平に配置されたs個の別個の平行線(S個の行)のセットおよびS個の線に垂直に配置された2lG個の別個の平行線(lG個の列)の別のセットについて、メモリスタ・デバイスがこれらの線のすべてのs×2lG個の交点に存在するように、メモリ・アレイ700はPCMデバイスのクロスバーを形成する。単一のメモリスタ・デバイスを通る電流は、メモリスタ・デバイスに加えられる電圧とそのコンダクタンス値との積である。コンダクタンスは常に正であるため、単一の列は、アレイにおいて符号付きの値を共に表す2本の縦線から構成され、それらの電流は、以下の式
から与えられる列の正味の電流を得るように減算され、ここで、
および
である。W+は重みの正部分を符号化することができ、W-は重みの負部分を符号化することができる。例えば、重み行列Wが正であれば、W+=WおよびW-=0であり、Wが負であれば、W+=0およびW-=|W|である。
行列ベクトル乗算は、クロスバーの行に沿って電圧を加え、クロスバーの列に沿って電流を合計する(キルヒホフの電流法則を使用して)ことによって計算されてよい。正味の出力電流は、通常、さらなる計算のためのアナログ・デジタル・コンバータ(ADC)を使用して測定される。ADCは、入力アナログ値が常に有界である限り、アナログ値をそのデジタル表現に変換することができるが、そうでなければADC出力が飽和する。別の例では、単一のまたはより少ないADCをクロスバー・アレイごとに使用して、列電流をサンプリングすることができる。任意のグループの出力を、区間[-4,4]に境界付けることができる。これにより、すべての列にわたって多重化することのできる単一のまたは少数のADCの使用が容易になり得る。
メモリ・アレイの別の例は、計算メモリのデジタル・シストリック・アレイであってよい。シストリック・アレイは、密に結合された計算メモリの均一なアレイであってよい。各計算メモリは、パラメータ値を格納し、通常は論理演算を乗算および加算するためのメモリを有する。シストリック・アレイでは、入力データを一度だけ読み取ることができ、入力データは、いかなる中間レジスタにも戻されて格納されることなく、複数回再利用される。シストリック・アレイの隣接するデータ処理ユニットのみを、線を使用して結合することができ、これにより配線を短くしてエネルギー効率を良くする。このような実装は、GPU/CPUと比べて行列乗算を加速することができる。特に、シストリック・アレイを使用して、ゲートRNNを実装することができる。このような実装において、本マッピング技術を使用して、ゲート演算計算ユニットの設計をスケーリング可能および多重化可能にすることができる。
図6Cは、本主題による計算メモリ800の例を示す。計算メモリ800はSRAMセルであってよい。SRAMセルは、メモリの1ビットを格納できる電子回路である。SRAMセルのメモリ状態を変化させる能力により、SRAMセルは計算メモリの適切な候補になる。図6Cは6-トランジスタのSRAMセルを示す。
図6Dは、本主題による計算メモリ810の例を示す。計算メモリ810はフラッシュ・メモリであってよい。フラッシュ・メモリ・デバイスは、メモリの1ビットを格納できる電子デバイスである。フラッシュ・デバイスのメモリ状態を変化させる能力により、フラッシュ・デバイスは計算メモリの適切な候補になる。
図7は、ゲート・リカレント・ニューラル・ネットワークの隠れ状態ベクトルの1つまたは複数の要素のセットを計算するための方法のフローチャートである。図1~図6を参照して説明したように、ゲートRNNは少なくとも1つのゲート・ユニットを備える。
「要素のセット」という用語は、ベクトルにそれぞれの位置を有する、ベクトルの一定の数の要素を指す。説明を簡単にするために、要素のセットが3つの要素、例えば、位置1、2、3をそれぞれ有する要素を含むと仮定する。この場合、要素のセットは、位置1、2、3を有する3つの要素を指し、例えば、「ベクトルXの要素のセット」という表現は、ベクトルXに位置1、2、3を有する3つの要素を指す。すなわち、方法は、隠れ状態ベクトルhtの要素ht(1)、ht(2)、ht(3)(ht(1:2:3)と表記する)を計算することを可能にし得る。説明を簡単にするために、ゲート・ユニットがLSTMユニットであるとさらに仮定する。すなわち、隠れ状態ベクトルhtは、以下のように定義され得る。
ステップ901で、要素ht(1:2:3)のセットの計算を可能にする重み行列の列のグループを、メモリ・アレイに格納することができる。要素のセットを計算するために、式Eq1~Eq4により定義される活性化ベクトルの対応する要素が必要とされ得る。すなわち、要素ht(1:2:3)を計算するために、活性化ベクトル要素ot(1:2:3)、ft(1:2:3)、it(1:2:3)および
を計算することができる。例えば、要素ft(1:2:3)を計算するために、重み行列Wfの位置1、2、3の列のサブグループsb1を使用することができる。要素it(1:2:3)を計算するために、重み行列Wiの位置1、2、3の列のサブグループsb2を使用することができる。要素ot(1:2:3)を計算するために、重み行列Woの位置1、2、3の列のサブグループsb3を使用することができる。要素
を計算するために、重み行列Wcの位置1、2、3の列のサブグループsb4を使用することができる。したがって、列のグループは、サブグループsb1、sb2、ab3、sb4によって形成され得る。列のグループは、重み行列Wfの3つの列、重み行列Wiの3つの列、重み行列Woの3つの列、および重み行列Wcの3つの列を含むことができる。グループの各列は、メモリ・アレイのそれぞれの列に格納され得る。サブグループsb1、sb2、ab3、sb4のうちの各サブグループの列は、連続して格納され得る。図6Aのクロスバー・アレイを使用して、列のサブグループsb1は、連続した列608.1、608.2、608.3にそれぞれ格納され得る。列のサブグループsb2は、連続した列608.4、608.5、608.6にそれぞれ格納され得る。列のサブグループsb3は、連続した列608.7、608.8、608.9にそれぞれ格納され得る。列のサブグループsb4は、連続した列608.10、608.11、608.12にそれぞれ格納され得る。
ステップ903で、活性化ベクトルのうちの各活性化ベクトルの要素のセットを、列のサブグループsb1、sb2、ab3、sb4のうちのそれぞれの列のサブグループを使用して計算することができる。例えば、要素ft(1:2:3)は、式Eq1によりサブグループsb1を使用して計算することができる。要素it(1:2:3)は、式Eq2によりサブグループsb2を使用して計算することができる。要素ot(1:2:3)は、(式Eq3によりサブグループsb3を使用して計算することができる。要素
は、式Eq4によりサブグループsb4を使用して計算することができる。
ステップ905で、要素プロセッサは、式Eq5、Eq6により、計算された要素ft(1:2:3)、it(1:2:3)、ot(1:2:3)、および
に対する要素ごとのゲート演算を実行することができる。これにより、要素ht(1:2:3)のセットが得られる。この例では、要素ごとのゲート演算は、要素ごとの乗算と活性化関数の適用とを含む。
図8は、例示的な実施形態による、ハードウェア・デバイスのブロック図を示す。図8は、一実装形態の例示を提供するものに過ぎず、異なる実施形態が実装され得る環境に関するいかなる限定も示唆するものではないことが理解されるべきである。図示する環境に対する多くの修正を行ってもよい。
本明細書で使用されるデバイスは、1つまたは複数のプロセッサ02と、1つまたは複数のコンピュータ可読RAM04と、1つまたは複数のコンピュータ可読ROM06と、1つまたは複数のコンピュータ可読記憶媒体08と、デバイス・ドライバ12と、読出し/書込みドライブまたはインターフェース14と、ネットワーク・アダプタまたはインターフェース16とを含むことができ、これらはすべて通信ファブリック18を通じて相互接続される。通信ファブリック18は、データまたは制御情報あるいはその両方を、プロセッサ(マイクロプロセッサ、通信およびネットワークプロセッサなど)、システムメモリ、周辺デバイス、ならびにシステム内の他の任意のハードウェア・コンポーネントの間で渡すように設計された、任意のアーキテクチャで実装されてもよい。
1つまたは複数のオペレーティング・システム10および1つまたは複数のアプリケーション・プログラム11は、それぞれのRAM04(一般的に、キャッシュ・メモリを含む)のうちの1つまたは複数を介して、プロセッサ02のうちの1つまたは複数によって実行するために、コンピュータ可読記憶媒体08のうちの1つまたは複数に格納される。図示の実施形態において、コンピュータ可読記憶媒体08の各々は、内部ハード・ドライブの磁気ディスク記憶デバイス、CD-ROM、DVD、メモリ・スティック、磁気テープ、磁気ディスク、光学ディスク、RAM、ROM、EPROM、フラッシュ・メモリなどの半導体記憶デバイス、あるいはコンピュータ・プログラムおよびデジタル情報を格納することができる、他の任意のコンピュータ可読有形記憶デバイスであってよい。
本明細書で使用されるデバイスは、1つまたは複数の携帯型コンピュータ可読記憶媒体26から読み出す、またはそれに書き込む、R/Wドライブまたはインターフェース14を含んでもよい。前記デバイスのアプリケーション・プログラム11は、携帯型コンピュータ可読記憶媒体26のうちの1つまたは複数に格納され、それぞれのR/Wドライブまたはインターフェース14を介して読み取られ、それぞれのコンピュータ可読記憶媒体08にロードされてもよい。
本明細書で使用されるデバイスは、TCP/IPアダプタ・カードまたは無線通信アダプタ(OFDMA技術を使用する4G無線通信アダプタなど)などの、ネットワーク・アダプタまたはインターフェース16を含むこともできる。前記コンピューティング・デバイスのアプリケーション・プログラム11は、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、もしくは他のワイド・エリア・ネットワーク、もしくは無線ネットワーク)およびネットワーク・アダプタまたはインターフェース16を介して、外部コンピュータまたは外部記憶デバイスからコンピューティング・デバイスにダウンロードされてもよい。ネットワーク・アダプタまたはインターフェース16から、プログラムがコンピュータ可読記憶媒体08にロードされてもよい。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。
本明細書で使用されるデバイスは、表示画面20と、キーボードまたはキーパッド22と、コンピュータ・マウスまたはタッチパッド24とを含むこともできる。デバイス・ドライバ12は、画像形成する表示画面20に、キーボードもしくはキーパッド22に、コンピュータ・マウスもしくはタッチパッド24に、または英数文字エントリおよびユーザ選択を圧力感知する表示画面20に、あるいはそれらの組み合わせに、インターフェース接続する。デバイス・ドライバ12、R/Wドライブまたはインターフェース14、およびネットワーク・アダプタまたはインターフェース16は、ハードウェアおよびソフトウェア(コンピュータ可読記憶媒体08、もしくはROM06、またはその両方に格納される)を含むことができる。
本明細書に記載のプログラムは、それらが例示的な実施形態のうちの特定の1つに実装されるアプリケーションに基づいて識別される。しかしながら、本明細書における任意の特定のプログラムの名称は、便宜上使用されるものに過ぎず、したがって、例示的な実施形態は、そのような名称によって識別もしくは示唆またはその両方がなされる、任意の特定のアプリケーションにおける使用のみに限定されるべきではないことを理解すべきである。
上記に基づいて、コンピュータ・システム、方法、およびコンピュータ・プログラム製品が開示されている。しかしながら、例示的な実施形態の範囲から逸脱することなく、多数の修正および置換を行うことができる。したがって、例示的な実施形態は、限定ではなく例として開示されている。
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装はクラウド・コンピューティング環境に限定されるものではないことを理解されたい。むしろ、例示的な実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と共に実装することができる。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話によって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの配備モデルとを含むことができる。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人的対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広帯域ネットワーク・アクセス:機能はネットワークを介して利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:マルチテナント・モデルを使用して複数の消費者に対応するために、プロバイダのコンピューティング・リソースがプールされ、需要に応じて異なる物理リソースおよび仮想リソースが動的に割り当てられ、再割当てされる。消費者は一般に、提供されるリソースの正確な場所について制御することができないかまたは知ることができないが、より高い抽象化レベルの場所(例えば、国、州、またはデータセンタ)を指定できるという点で、場所の独立感がある。
迅速な順応性:機能は、迅速かつ順応的に、場合によっては自動的にプロビジョニングされて、迅速にスケール・アウトすることができ、かつ迅速にリリースされて、迅速にスケール・インすることができる。消費者にとって、プロビジョニングのために利用可能な機能は、多くの場合、無制限であるように見え、いつでも任意の量を購入することができる。
従量制サービス:クラウド・システムが、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適切な何らかの抽象化レベルの計量機能を活用することによって、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視、制御、および報告して、利用サービスのプロバイダおよび消費者の両方に透明性を提供することができる。
サービス・モデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。消費者は、限られたユーザ固有アプリケーション構成設定を、可能な例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能も含む、基礎となるクラウド・インフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成アプリケーションまたは消費者取得アプリケーションを配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備および実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションを制御することができ、場合によっては選択されたネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行うことができる。
配備モデルは以下の通りである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。これは、組織または第3者によって管理されてよく、オンプレミスまたはオフプレミスで存在してよい。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事(例えば、任務、セキュリティ要件、ポリシ、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。これは、組織または第3者によって管理されてよく、オンプレミスまたはオフプレミスで存在してよい。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般人または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、それらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化技術または専有技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって共に結合される。
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図9を参照して、例示的なクラウド・コンピューティング環境50を示す。図示のように、クラウド・コンピューティング環境50は、1つまたは複数のクラウド・コンピューティング・ノード40を含み、この1つまたは複数のクラウド・コンピューティング・ノード40と、例えば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスとが、通信することができる。ノード40は相互に通信することができる。ノード40は、前述したプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(図示せず)され得る。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提供することができる。図9に示すコンピューティング・デバイス54A~54Nの種類は、単なる例示であり、コンピューティング・ノード40およびクラウド・コンピューティング環境50が、(例えば、ウェブ・ブラウザを使用して)任意の種類のネットワークまたはネットワーク・アドレス可能接続あるいはその両方を介して任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
次に図10を参照して、クラウド・コンピューティング環境50(図9)によって提供される1組の機能抽象化層を示す。図10に示すコンポーネント、層、および機能は、単なる例示であり、例示的な実施形態はこれらに限定されないことを予め理解すべきである。図示のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61、縮小命令セット・コンピュータ(RISC)・アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態において、ソフトウェア・コンポーネントとして、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
仮想化層70は抽象化層を提供し、この抽象化層から、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75を提供することができる。
一例において、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を行う。計量および価格設定82は、リソースがクラウド・コンピューティング環境内で利用されるときの費用追跡、およびこれらのリソースの消費に対する請求書発行すなわち代金請求を行う。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド消費者およびタスクの本人確認と、データおよび他のリソースの保護とを行う。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割当ておよび管理を行う。サービス品質保証契約(SLA)の計画および履行85は、将来の要件がSLAに従って予測されるクラウド・コンピューティング・リソースの事前手配および調達を行う。
作業負荷層90は、クラウド・コンピューティング環境をそのために利用することができる機能の例を提供する。この層から提供できる作業負荷および機能の例として、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、およびニューラル・ネットワーク計算96が挙げられる。
例示的な実施形態は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに例示的な実施形態の態様を実行させるためのコンピュータ可読プログラム命令を有する1つまたは複数のコンピュータ可読記憶媒体を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し格納することができる有形デバイスであってよい。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のもの、すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ(R)・ディスク、パンチカードもしくは命令が記録されている溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を伝搬する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、または電線を介して伝送される電気信号などの、一過性の信号であるとは解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して、外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
例示的な実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上および一部がリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続することができる。一部の実施形態において、例示的な実施形態の態様を実行するために、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
例示的な実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら、例示的な実施形態の態様について本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されるだろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んだ製品を含むべく、コンピュータ可読記憶媒体に格納されて、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図におけるフローチャートおよびブロック図は、様々な例示的実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された1つ(または複数の)論理機能を実施するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。一部の代替実装形態において、ブロックに記載された機能は、図に記載された順序以外で生じる場合がある。例えば、連続して示す2つのブロックは、実際には、実質的に同時に実行することができ、またはそれらのブロックは、時には、関与する機能に応じて、逆の順序で実行することができる。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実施することができることにも留意されたい。
Claims (20)
- 隠れ状態ベクトルを有するゲート・リカレント・ニューラル・ネットワーク(RNN)のための方法であって、
前記隠れ状態ベクトルが、複数の活性化ベクトルの要素ごとのゲート演算によって定義され、前記複数の活性化ベクトルのうちの各活性化ベクトルが、重み付けベクトルの関数であり、前記重み付けベクトルが、入力ベクトルに、前記活性化ベクトルに関連付けられた別個の重み行列を乗算することによって得られ、
前記方法が、
要素プロセッサを設けることと、
前記隠れ状態ベクトルの1つまたは複数の要素のセットのそれぞれについて別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素のセットの計算を可能にする重み行列の列のグループを、前記メモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記列のグループのうちの1つまたは複数の列のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素のセットを得ることと
を含む、方法。 - 前記隠れ状態ベクトルの1つまたは複数の要素の他のセットのそれぞれについて他の別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素の他のセットの計算を可能にする重み行列の他の列のグループを前記他のメモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記他の列のグループのうちの1つまたは複数の列の他のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素の他のセットを得ることと
をさらに含む、請求項1に記載の方法。 - 前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、同時に実行される、請求項2に記載の方法。
- 前記他の別個のメモリ・アレイを設けるここと、前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、前記隠れ状態ベクトルのすべての要素が計算されるまで繰り返され、
要素の1つのセットを一度に計算するように、前記要素プロセッサに多重化機能が設けられる、請求項2に記載の方法。 - 前記1つまたは複数の要素のセットのうちの各要素が、前記隠れ状態ベクトルにそれぞれの要素位置を有し、
前記計算された1つまたは複数の要素が、前記複数の活性化ベクトルの前記計算された1つまたは複数の要素の複数のセットをそれぞれ含み、
前記1つまたは複数の計算された要素の各セットが、前記それぞれの活性化ベクトルに1つまたは複数の要素位置のセットを含み、
前記活性化ベクトルの各々の1つまたは複数の要素を計算することが、
前記入力ベクトルの値をメモリ・アレイで受け取り、前記重み付けベクトルの結果要素のセットを、それぞれ前記関連付けられた1つまたは複数の列のセットから出力することであって、前記結果要素のセットが前記重み付けベクトルに前記1つまたは複数の要素位置のセットを含む、前記受け取り出力することと、
前記結果要素のセットを前記要素プロセッサに送ることと、
前記結果要素のセットを使用して、前記活性化ベクトルの前記計算された1つまたは複数の要素のセットの計算を実行することと
を含む、請求項1に記載の方法。 - 前記メモリ・アレイが、行線と、前記行線に交差する列線と、前記行線および前記列線によって形成された接合点で前記行線と前記列線との間に結合された計算メモリとを含み、
前記計算メモリのうちの1つの計算メモリが、前記列のグループのうちの1つまたは複数の列の要素の値を表し、
前記列のグループを格納することが、前記メモリ・アレイのそれぞれの単一の列線の計算メモリに前記列のグループのうちの各列のすべての要素を格納することを含む、請求項1に記載の方法。 - 前記計算メモリが、抵抗メモリ要素、スタティック・ランダム・アクセス・メモリ(SRAM)要素、またはフラッシュ・メモリ要素のうちのいずれか1つである、請求項6に記載の方法。
- 隠れ状態ベクトルを有するゲート・リカレント・ニューラル・ネットワーク(RNN)のためのコンピュータ・プログラム製品であって、
前記隠れ状態ベクトルが、複数の活性化ベクトルの要素ごとのゲート演算によって定義され、前記複数の活性化ベクトルのうちの各活性化ベクトルが、重み付けベクトルの関数であり、前記重み付けベクトルが、入力ベクトルに、前記活性化ベクトルに関連付けられた別個の重み行列を乗算することによって得られ、
前記コンピュータ・プログラム製品が、
1つまたは複数の非一過性コンピュータ可読記憶媒体と、
前記1つまたは複数の非一過性コンピュータ可読記憶媒体に格納された、方法を実行可能なプログラム命令と
を含み、
前記方法が、
要素プロセッサを設けることと、
前記隠れ状態ベクトルの1つまたは複数の要素のセットのそれぞれについて別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素のセットの計算を可能にする重み行列の列のグループを、前記メモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記列のグループのうちの1つまたは複数の列のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素の前記セットを得ることと
を含む、
コンピュータ・プログラム製品。 - 前記隠れ状態ベクトルの1つまたは複数の要素の他のセットのそれぞれについて他の別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素の他のセットの計算を可能にする重み行列の他の列のグループを前記他のメモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記他の列のグループのうちの1つまたは複数の列の他のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素の他のセットを得ることと
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、同時に実行される、請求項9に記載のコンピュータ・プログラム製品。
- 前記他の別個のメモリ・アレイを設けることと、前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、前記隠れ状態ベクトルのすべての要素が計算されるまで繰り返され、
要素の1つのセットを一度に計算するように、前記要素プロセッサに多重化機能が設けられる、請求項9に記載のコンピュータ・プログラム製品。 - 前記1つまたは複数の要素のセットのうちの各要素が、前記隠れ状態ベクトルにそれぞれの要素位置を有し、
前記計算された1つまたは複数の要素が、前記複数の活性化ベクトルの前記計算された1つまたは複数の要素の複数のセットをそれぞれ含み、
前記1つまたは複数の計算された要素の各セットが、前記それぞれの活性化ベクトルに1つまたは複数の要素位置のセットを含み、
前記活性化ベクトルの各々の1つまたは複数の要素を計算することが、
前記入力ベクトルの値をメモリ・アレイで受け取り、前記重み付けベクトルの結果要素のセットを、それぞれ前記関連付けられた1つまたは複数の列のセットから出力することであって、前記結果要素のセットが前記重み付けベクトルに前記1つまたは複数の要素位置のセットを含む、前記受け取り出力することと、
前記結果要素のセットを前記要素プロセッサに送ることと、
前記結果要素のセットを使用して、前記活性化ベクトルの前記計算された1つまたは複数の要素のセットの計算を実行することと
を含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記メモリ・アレイが、行線と、前記行線に交差する列線と、前記行線および前記列線によって形成された接合点で前記行線と前記列線との間に結合された計算メモリとを含み、
前記計算メモリのうちの1つの計算メモリが、前記列のグループのうちの1つまたは複数の列の要素の値を表し、
前記列のグループを格納することが、前記メモリ・アレイのそれぞれの単一の列線の計算メモリに前記列のグループのうちの各列のすべての要素を格納することを含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記計算メモリが、抵抗メモリ要素、スタティック・ランダム・アクセス・メモリ(SRAM)要素、またはフラッシュ・メモリ要素のうちのいずれか1つである、請求項13に記載のコンピュータ・プログラム製品。
- 隠れ状態ベクトルを有するゲート・リカレント・ニューラル・ネットワーク(RNN)のためのコンピュータ・システムであって、
前記隠れ状態ベクトルが、複数の活性化ベクトルの要素ごとのゲート演算によって定義され、前記複数の活性化ベクトルのうちの各活性化ベクトルが、重み付けベクトルの関数であり、前記重み付けベクトルが、入力ベクトルに、前記活性化ベクトルに関連付けられた別個の重み行列を乗算することによって得られ、
前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体のうちの1つまたは複数に格納された、方法を実行可能な前記1つまたは複数のプロセッサのうちの少なくとも1つにより実行するためのプログラム命令と
を含み、
前記方法が、
要素プロセッサを設けることと、
前記隠れ状態ベクトルの1つまたは複数の要素のセットのそれぞれについて別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素のセットの計算を可能にする重み行列の列のグループを、前記メモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記列のグループのうちの1つまたは複数の列のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素のセットを得ることと
を含む、
コンピュータ・システム。 - 前記隠れ状態ベクトルの1つまたは複数の要素の他のセットのそれぞれについて他の別個のメモリ・アレイを設けることと、
前記1つまたは複数の要素の他のセットの計算を可能にする重み行列の他の列のグループを前記他のメモリ・アレイに格納することと、
前記複数の活性化ベクトルの各々に関連付けられた前記他の列のグループのうちの1つまたは複数の列の他のセットを使用して、前記複数の活性化ベクトルの各々の1つまたは複数の要素を計算することと、
前記要素プロセッサにより、前記計算された1つまたは複数の要素に対する前記要素ごとのゲート演算を実行して、前記1つまたは複数の要素の他のセットを得ることと
をさらに含む、請求項15に記載のコンピュータ・システム。 - 前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、同時に実行される、請求項16に記載のコンピュータ・システム。
- 前記他の別個のメモリ・アレイを設けることと、前記他の列のグループを格納することと、前記複数の活性化ベクトルの各々の前記1つまたは複数の要素を計算することと、前記要素プロセッサにより、前記計算された要素に対する前記要素ごとのゲート演算を実行することとが、前記隠れ状態ベクトルのすべての要素が計算されるまで繰り返され、
要素の1つのセットを一度に計算するように、前記要素プロセッサに多重化機能が設けられる、請求項16に記載のコンピュータ・システム。 - 前記1つまたは複数の要素のセットのうちの各要素が、前記隠れ状態ベクトルにそれぞれの要素位置を有し、
前記計算された1つまたは複数の要素が、前記複数の活性化ベクトルの前記計算された1つまたは複数の要素の複数のセットをそれぞれ含み、
前記1つまたは複数の計算された要素の各セットが、前記それぞれの活性化ベクトルに1つまたは複数の要素位置のセットを含み、
前記活性化ベクトルの各々の1つまたは複数の要素を計算することが、
前記入力ベクトルの値をメモリ・アレイで受け取り、前記重み付けベクトルの結果要素のセットを、それぞれ前記関連付けられた1つまたは複数の列のセットから出力することであって、前記結果要素のセットが前記重み付けベクトルに前記1つまたは複数の要素位置のセットを含む、前記受け取り出力することと、
前記結果要素のセットを前記要素プロセッサに送ることと、
前記結果要素のセットを使用して、前記活性化ベクトルの前記計算された1つまたは複数の要素のセットの計算を実行することと
を含む、請求項15に記載のコンピュータ・システム。 - 前記メモリ・アレイが、行線と、前記行線に交差する列線と、前記行線および前記列線によって形成された接合点で前記行線と前記列線との間に結合された計算メモリとを含み、
前記計算メモリのうちの1つの計算メモリが、前記列のグループのうちの1つまたは複数の列の要素の値を表し、
前記列のグループを格納することが、前記メモリ・アレイのそれぞれの単一の列線の計算メモリに前記列のグループのうちの各列のすべての要素を格納することを含む、請求項15に記載のコンピュータ・システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/074,797 US12093802B2 (en) | 2020-10-20 | 2020-10-20 | Gated unit for a gated recurrent neural network |
US17/074,797 | 2020-10-20 | ||
PCT/IB2021/059271 WO2022084794A1 (en) | 2020-10-20 | 2021-10-10 | Gated unit for gated recurrent neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023545299A true JP2023545299A (ja) | 2023-10-27 |
Family
ID=81186290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023522341A Pending JP2023545299A (ja) | 2020-10-20 | 2021-10-10 | ゲート・リカレント・ニューラル・ネットワークのためのゲート・ユニット |
Country Status (6)
Country | Link |
---|---|
US (1) | US12093802B2 (ja) |
JP (1) | JP2023545299A (ja) |
CN (1) | CN116267023A (ja) |
DE (1) | DE112021004664T5 (ja) |
GB (1) | GB2615911A (ja) |
WO (1) | WO2022084794A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093802B2 (en) | 2020-10-20 | 2024-09-17 | International Business Machines Corporation | Gated unit for a gated recurrent neural network |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595637B (zh) * | 2021-09-27 | 2022-01-25 | 清华大学 | 全光感算一体光场智能处理系统及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4169063B2 (ja) * | 2006-04-06 | 2008-10-22 | ソニー株式会社 | データ処理装置、データ処理方法、及びプログラム |
US10380481B2 (en) * | 2015-10-08 | 2019-08-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs concurrent LSTM cell calculations |
KR102271262B1 (ko) | 2015-11-12 | 2021-06-30 | 구글 엘엘씨 | Cgr 신경망들 |
US11216722B2 (en) | 2016-12-31 | 2022-01-04 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
US20190138887A1 (en) * | 2017-11-01 | 2019-05-09 | Board Of Trustees Of Michigan State University | Systems, methods, and media for gated recurrent neural networks with reduced parameter gating signals and/or memory-cell units |
US10795678B2 (en) | 2018-04-21 | 2020-10-06 | Microsoft Technology Licensing, Llc | Matrix vector multiplier with a vector register file comprising a multi-port memory |
US11120328B1 (en) * | 2019-03-15 | 2021-09-14 | Facebook, Inc. | Systems and methods for reducing power consumption of convolution operations for artificial neural networks |
US11347477B2 (en) | 2019-09-27 | 2022-05-31 | Intel Corporation | Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations |
US11568228B2 (en) * | 2020-06-23 | 2023-01-31 | Sandisk Technologies Llc | Recurrent neural network inference engine with gated recurrent unit cell and non-volatile memory arrays |
US12093802B2 (en) | 2020-10-20 | 2024-09-17 | International Business Machines Corporation | Gated unit for a gated recurrent neural network |
-
2020
- 2020-10-20 US US17/074,797 patent/US12093802B2/en active Active
-
2021
- 2021-10-10 JP JP2023522341A patent/JP2023545299A/ja active Pending
- 2021-10-10 GB GB2306468.6A patent/GB2615911A/en active Pending
- 2021-10-10 WO PCT/IB2021/059271 patent/WO2022084794A1/en active Application Filing
- 2021-10-10 CN CN202180068128.XA patent/CN116267023A/zh active Pending
- 2021-10-10 DE DE112021004664.0T patent/DE112021004664T5/de active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093802B2 (en) | 2020-10-20 | 2024-09-17 | International Business Machines Corporation | Gated unit for a gated recurrent neural network |
Also Published As
Publication number | Publication date |
---|---|
GB202306468D0 (en) | 2023-06-14 |
US12093802B2 (en) | 2024-09-17 |
CN116267023A (zh) | 2023-06-20 |
WO2022084794A1 (en) | 2022-04-28 |
GB2615911A (en) | 2023-08-23 |
DE112021004664T5 (de) | 2023-06-29 |
US20220121901A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7087079B2 (ja) | 深層学習アプリケーションのための堅牢な勾配重み圧縮方式 | |
JP2023545299A (ja) | ゲート・リカレント・ニューラル・ネットワークのためのゲート・ユニット | |
JP2022547395A (ja) | メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 | |
WO2022121569A1 (en) | Worst case noise and bound management for rpu crossbar arrays | |
US20220391681A1 (en) | Extraction of weight values in resistive processing unit array | |
US20220366005A1 (en) | Hardware acceleration for computing eigenpairs of a matrix | |
US20220366230A1 (en) | Markov processes using analog crossbar arrays | |
US20230306118A1 (en) | Federated Generative Models for Website Assessment | |
US12112200B2 (en) | Pipeline parallel computing using extended memory | |
US20230099608A1 (en) | Training convolution neural network on analog resistive processing unit system | |
US11488664B2 (en) | Distributing device array currents across segment mirrors | |
JP7556653B2 (ja) | 柔軟な精度のニューラル推論処理ユニット | |
KR20230019819A (ko) | 아날로그 크로스바 아키텍처를 이용한 매트릭스 스케치 | |
US11741946B2 (en) | Multiplicative integration in neural network transducer models for end-to-end speech recognition | |
US20210279386A1 (en) | Multi-modal deep learning based surrogate model for high-fidelity simulation | |
US11461645B2 (en) | Initialization of memory networks | |
JP2023524407A (ja) | ハイブリッド・メモリ・ベースのデータ構造の最適配置方法、システム | |
CN114424216A (zh) | 域特定模型压缩 | |
US11366876B2 (en) | Eigenvalue decomposition with stochastic optimization | |
US20230385599A1 (en) | Parallel and distributed processing of propositional logical neural networks | |
US20220207376A1 (en) | Matrix inversion using analog resistive crossbar array hardware | |
US11966708B2 (en) | Dynamic contraction and expansion of heuristic beam width based on predicted probabilities | |
WO2022121644A1 (en) | Bias scheme for single-device synaptic element | |
JP2023099321A (ja) | 方法、コンピュータプログラムおよび装置(ニューラルネットワークのためのモデル非依存入力変換) | |
JP2024536975A (ja) | ビット・スキッピングを用いたアナログ対デジタル変換装置、デバイス、および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20230501 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230511 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20230430 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240307 |