【文献】
Felix Weninger, et al.,Introducting CURRENNT: The Munich Open-Source CUDA RecurREnt Neural Network Toolkit,Journal of Machine Learning Research,2015年 1月,Volume 16, Issue 1,pp.547-551
(58)【調査した分野】(Int.Cl.,DB名)
プロセッサメモリの各レベルに対して、前記所定条件はモジュール内の結合およびモジュール間の結合に関連する帯域幅コストと遅延コストとのうちの少なくとも一方が前記ニューロンを評価する計算コストに等しいことを含む請求項1に記載の方法。
前記結合を配置するステップには、次の時間ステップにおいて1つのモジュールの出力をほかのモジュールの入力のサブセットに結合することにより、疎結合を形成して通信帯域幅を減少させ、そしてオンチップメモリにロードされた前記モジュールのすべての重みをすべての時間ステップで再使用可能になるステップを含む
請求項1に記載の方法。
時間遅延に応じてモジュール間の結合を更新するステップをさらに含み、前記時間遅延によって、モジュール間の通信帯域幅および同期のうちの少なくとも一方を改善するためにニューロンが同期を実行しなければならない時間を増加する
請求項1に記載の方法。
計算装置のプロセッサマイクロアーキテクチャ上で動作して前記計算装置の計算性能を向上させるように構成されるリカレントニューラルネットワーク(RNN)アーキテクチャであって、
ニューロンと、
前記ニューロンを含むモジュールと、
モジュール間の双方向結合と、を備え、
前記モジュールは、ロジックユニットを表し、プロセッサマイクロアーキテクチャの階層構造のレベルに応じて配置され、そしてプロセッサを含む個別計算リソースの階層構造を模擬し、それにより階層構造の各レベルは、プロセッサメモリの少なくとも1つのレベルに関連付けられ、且つ第1のRNN層および第2のRNN層を含み、前記階層構造の各レベルは記憶容量、プロセッサコア数、メモリ帯域幅、計算帯域幅およびメモリ遅延のうちの少なくとも2つで記述され、
前記モジュール間の双方向結合によって、前記第1のRNN層と前記第2のRNN層とが通信でき、それにより、記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも2つに関連する前記RNNアーキテクチャの所定条件を満たす
RNNアーキテクチャ。
モジュール間の同期頻度と結合性の量が前記プロセッサのマルチバルク同期並列(MBSP)パラメータに基づいて設定され、それにより、RNNアーキテクチャが計算、通信および同期動作のうちの少なくとも2つを実行することに必要な時間をバランシングする
請求項10に記載のRNNアーキテクチャ。
階層構造の同一レベルにおいて、減少した速度で前記モジュール間の結合を更新してデータ交換の量を減少させることにより、モジュールの出力を低頻度で次のモジュールの入力として伝送する
請求項11に記載のRNNアーキテクチャ。
連続時間セグメントにおけるモジュールが相互に通信しないことにより、時間ステップ間に伝送されたデータの頻度および量を減少させ、そして通信時間を減少させ、並列動作数を増加させる
請求項11に記載のRNNアーキテクチャ。
高速モジュールをさらに備え、前記高速モジュールの結合が低速モジュールの結合よりも頻繁に更新され、前記高速モジュールが並列動作し、前記低速モジュールを経由して相互に通信して高速モジュール間の通信を増加させる
請求項10に記載のRNNアーキテクチャ。
前記高速モジュールと前記低速モジュールは、選択的に置換モジュールを経由して通信し、前記置換モジュールは、前記高速モジュールの計算出力の順序を再設定することにより、高速モジュールにおけるニューロンの出力を、低速モジュールにおけるニューロンの出力にマッピングし、そして2つの層におけるモジュール間の通信パターンを変更する
請求項15に記載のRNNアーキテクチャ。
プロセッサのマイクロアーキテクチャの記述を基礎とした、メモリレベルに関連付けられた値に基づき、RNNアーキテクチャの階層構造の最下位レベルから最上位レベルの各レベルを前記プロセッサのマイクロアーキテクチャに関連付け、当該各レベルを記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの少なくとも2つで記述するステップと、
ニューロンを、前記RNNアーキテクチャのRNN層におけるロジックユニットをそれぞれ表すモジュールにグループ化するステップと、
前記モジュールがメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも2つに関連する前記RNNアーキテクチャの所定条件を満たすように、前記モジュール間の結合を配置するステップと、を含む
計算装置のプロセッサのマイクロアーキテクチャ上でリカレントニューラルネットワーク(RNN)アーキテクチャを動作させて前記計算装置の計算性能を向上させる方法。
【発明を実施するための形態】
【0014】
以下、本発明をよく理解するために、その詳細を説明する。なお、当業者は、これらの詳細なしに本発明を実施できることが明らかである。当業者は、後述する本発明の実施形態を様々な方式、様々な手段で実行できると理解できる。当業者は、さらに、本発明の適用可能な他の分野としてもほかの変更、使用や実施形態のいずれも本発明の範囲に属すると理解できる。従って、後述する実施形態は、本発明の具体的な実施形態についての説明であり、本発明を明確化するためのものである。
【0015】
本明細書では、「一実施形態」または「実施形態」は、実施形態を参照して説明される具体的な特徴、構造、特性または機能が本発明の少なくとも1つの実施形態に含まれることを表す。語句「一実施形態では」、「実施形態では」等は、本明細書の様々な場所に現れるが、必ずしも同一実施形態ではない。
【0016】
また、図面に示される構成要素間、または方法ステップ間の結合は、直接に影響を受ける結合に限定されない。一方、本発明の教示を逸脱せずに、図面に示される構成要素間、または方法ステップ間の結合は、中間構成要素、または中間方法ステップを追加するように変更されてもよく、ほかの方式によって変更されてもよい。本明細書では、用語「アーキテクチャ」と「ネットワークアーキテクチャ」とは、RNN層のニューロン間の結合性の特定パターンである。「グローバル通信」とは、遅延および帯域幅要求を最小化するとともに、ニューロンがネットワークにおけるすべてのほかのニューロンとを通信する能力である。
【0017】
図1は、本発明の様々な実施形態に係る、計算効率の向上を図るためにRNNを備えた計算システムの簡略ブロック図を示す。なお、システム1000に対して示される機能は、情報処理システムの様々な実施形態をサポートできるが、情報処理システムは異なる形態で構成されてもよく、異なる構成要素を備えてもよいと理解できる。
図1に示すように、システム1000は、計算リソースを提供し、コンピュータを制御する中央処理ユニット(CPU)1001を備える。CPU1001は、マイクロプロセッサ等を備えてもよく、グラフィックプロセッサ(GPU)1017および/または数学計算用の浮動小数点コプロセッサを備えてもよい。システム1000は、ランダムアクセスメモリ(RAM)、または読み出し専用メモリ(ROM)のシステムメモリ1002をさらに備えてもよい。
【0018】
図1に示すように、複数のコントローラおよび周辺装置をさらに提供してもよい。入力コントローラ1003は、様々な入力装置1004へのインターフェースを示し、例えば、キーボード、マウスまたはスタイラスが挙げられる。スキャナ1006と通信するスキャナコントローラ1005をさらに備えてもよい。システム1000は、記憶媒体(例えば、磁気テープや磁気ディスク)、または光学媒体(オペレーティングシステム、ユーティリティまたはアプリケーション用の命令のプログラムを記録することに用いられ、前記プログラムは、本発明の各態様を実施するプログラムの実施形態を含んでもよい)を含む1つまたは複数の記憶装置1008に結合される記憶コントローラ1007を備えてもよい。本発明では、記憶装置1008は、さらに、処理されたデータまたは処理対象データを記憶することに用いられる。システム1000は、表示装置1011にインターフェースを提供する表示コントローラ1009をさらに備えてもよく、表示装置1011は、陰極線管(CRT)ディスプレイ、薄膜トランジスタ(TFT)ディスプレイ、またはほかのタイプのディスプレイであってもよい。計算システム1000は、プリンター1013と通信するプリンターコントローラ1012をさらに備えてもよい。通信コントローラ1014が1つまたは複数の通信装置1015に結合可能であることにより、システム1000は、様々なネットワーク(インターネット、イーサネット(登録商標)クラウド、FCoE/DCBクラウド、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ストレージエリアネットワーク(SAN))のうちのいずれかのネットワーク、または任意の適切な電磁搬送波信号(赤外線信号を含む))を介して遠隔装置に結合される。
【0019】
例示されたシステムでは、すべての主要な構成要素は、1つ以上の物理バスを示すバス1016に結合されてもよい。しかしながら、各種のシステム構成要素は、物理的に相互に近接してもよく、近接しなくてもよい。例えば、入力データおよび/または出力データは、1つの物理位置から別の物理位置へ遠隔に伝送されてもよい。また、発明の様々な態様を実施するプログラムは、ネットワークを介して遠隔位置(例えば、サーバ)からアクセスされてもよい。このようなデータおよび/またはプログラムは、複数種の機械可読媒体のいずれかによって伝送されてもよく、機械可読媒体は、ハードディスク、フロッピーディスクおよびテープのような磁気媒体と、CD−ROM、ホログラフィック装置のような光学媒体と、磁気光学媒体と、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フラッシュメモリ装置、ROMおよびRAM装置のようなプログラムコードを記憶したり、記憶して実行したりするように具体的に配置されるハードウェア装置とを備えるが、それらに限定されない。
【0020】
本発明の実施形態は、1つまたは複数のプロセッサまたは処理ユニットにステップを実行させる命令を使用して1つまたは複数の非一時的なコンピュータ可読媒体でコーディングしてもよい。なお、当該1つまたは複数の非一時的なコンピュータ可読媒体は、揮発性メモリおよび不揮発性メモリを備えるべきである。なお、ハードウェアの実施形態またはソフトウェア/ハードウェアの実施形態を含む代替的な実施形態も可能である。ハードウェアで実施される機能は、ASIC、プログラマブルアレイ、デジタル信号処理回路等で実現されてもよい。従って、いずれかの請求項における用語「手段」は、ソフトウェアの実施形態とハードウェアの実施形態との両方を含むことを意味する。同様に、本明細書で使用される用語「コンピュータ可読媒体またはメディア」は、命令プログラムを実施するソフトウェアおよび/またはハードウェアあるいはそれらの組み合わせを含む。これらの想到された代替的な実施形態を利用して、図面およびその説明によって、当業者がプログラムコード(すなわち、ソフトウェア)を作成しおよび/または回路(すなわち、ハードウェア)を製造して必要な処理を実行することに必要な機能情報を提供すると理解すべきである。
【0021】
なお、本発明の実施形態は、さらに、各種のコンピュータが実施する動作を実行するためのコンピュータコードを有する非一時的な物理的コンピュータ可読媒体を有するコンピュータ製品に関してもよい。媒体およびコンピュータコードは、本発明の目的のために専門に設計して構成される媒体およびコンピュータコードであってもよく、当業者が公知または使用可能な媒体およびコンピュータコードであってもよい。物理的コンピュータ可読媒体の例は、ハードディスク、フロッピーディスクおよびテープのような磁気媒体と、CD−ROM、ホログラフィック装置のような光学媒体と、磁気光学媒体と、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フラッシュメモリ装置、ROMおよびRAM装置のようなプログラムコードを記憶したり記憶して実行したりするように具体的に配置されるハードウェア装置とを備えるが、それらに限定されない。コンピュータコードの例は、マシンコード(例えばコンパイラで生じたコード)およびコンピュータがインタプリタで実行可能なさらに高いレベルのコードを含むファイルを含有する。本発明の実施形態は、処理装置が実行するプログラムモジュールにおける機械実行可能命令として部分的に、または完全に実施されてもよい。プログラムモジュールの例は、ベース、プログラム、ルーチン、オブジェクト、構成要素およびデータ構造を含む。分散型コンピューティング環境において、プログラムモジュールは、ローカル、遠隔または両方の機器に物理的に位置してもよい。
【0022】
当業者は、計算システムもプログラミング言語も本発明の実施に対して重要ではないと理解できる。当業者は、さらに、複数の上記構成要素が物理的に、および/または機能的にサブモジュールに分割されてもよく、物理的および/または機能的に組み合わせられてもよいと理解できる。
【0023】
人工ニューラルネットワークにおけるニューロンは、N次元入力列ベクトルxを処理し、関数f(W
T x)を出力する計算ユニットである(式中、WはN次元入力行ベクトルであり、f(実際範囲および定義域の関数)は活性化関数と呼ばれる)。一般的な活性化関数としてsigmoid関数、補正線形関数、およびtanh関数が挙げられる。ニューラルネットワークは、複数の「ニューロン」を含むことにより、所定の「ニューロン」の入力がネットワークへの入力であってもよく、別のニューロンの出力であってもよい。ニューロン間の結合性の特定パターンは、当該ネットワークの「アーキテクチャ」と呼ばれる。
【0024】
ネットワークアーキテクチャとして全結合層のスタックが一般的に使用されている。全結合層は、N個の入力値を受信し、N個の入力値のそれぞれが全結合層のM個のニューロンのそれぞれに直接結合され、各ニューロンに対して1つずつM個の出力値を生成する。
【0025】
ソフトウェアで実施される場合、およびプロセッサで実行される場合、これらのニューラルネットワークアーキテクチャは、常に各層に対する浮動小数点数の二次元行列(重み行列、またはWと呼ばれる)で表され、ここで、一方の次元は層におけるニューロンを表し、他方の次元は当該層への入力を表す。次に、ネットワークの入力と出力は、密な一次元ベクトル(dense single−dimensional vector)で表される。それにより、ネットワークは、一連の行列−ベクトル積として評価でき、各層あたりに1つであり、次に各層に活性化関数を応用する。行列−ベクトルおよび行列−行列積演算を提供する、高度にチューニングされた密線形代数ライブラリがほとんどの汎用プロセッサに容易に適用できるため、この方法の実現方式は簡単で効果的である。
【0026】
当該演算を現代の汎用プロセッサにマッピングする際の主要コストは、各層に重み行列Wをロードすることである。それは、現代の汎用プロセッサが記憶帯域幅より高い演算帯域幅を有するからである。当該コストは、複数のネットワーク入力に割り当てられ、通常、「バッチング」と呼ばれる。バッチングによって複数の入力ベクトルをより大きな行列に効率的にパッケージすることにより、行列−ベクトル積ではなく、行列−行列積を使用してネットワークを評価することが可能になる。十分なバッチサイズを確保するために、当該演算は、プロセッサの記憶帯域幅ではなく、その浮動小数点演算帯域幅の制約を受ける可能性がある。
【0027】
全結合層を有するリカレントニューラルネットワークは、正常全結合層を開始とし、現在の時間ステップにおける各ニューロンの出力から次の時間ステップにおけるすべてのほかのニューロンへの追加結合を使用してこれらの正常全結合層を強化する。
【0028】
単一入力シーケンスxと対応する出力シーケンスyに、訓練集合X={(x
(1);y
(1));(x
(2);y
(2))、...}からサンプリングされると仮定する。各入力シーケンスx
(i)は長さT
(i)の時系列であり、その中で、各タイムスライスは専用特徴(例えば、オーディオサンプル)のベクトルであり、x
(i)t、t=0、...、T
(i)−1である。
【0029】
フォワード・イン・タイム(forward−in−time)h
lリカレント層活性化は、
【数1】
として計算され、
関数fは、
【数2】
として標準リカレント演算されてもよい。
ただし、W
lは入力非表示重み行列、U
lはリカレント重み行列、b
lはバイアス項である。
【0030】
RNNの実現方式は、通常、時間ステップごとに、計算を2つの段階に分ける。第1の段階(W
lh
l−1t)において、各時間ステップにおける各ニューロンの出力への貢献は、当該時間ステップにおけるニューロン入力を使用して計算される。フィードフォワード(feed−forward)ネットワークのように、第1の段階では、層におけるすべてのニューロンの入力重みを密な二次元行列として表し、各時間ステップにおける層への入力を一次元密ベクトルとして表す。一般的な最適化は、時間次元を展開し、複数の一次元入力ベクトルとともにパッケージして単一二次元行列とすることである。重み行列がすべての時間ステップで共有されるため、実現可能である。
【0031】
第2の段階(U
lh
lt−1)において、所定の時間ステップにおける層ニューロンの出力と次の時間ステップにおける層ニューロンの入力との結合は、二次元行列で表われ、リカレント重み行列と呼ばれる。この場合に、次の時間ステップの出力が現在の時間ステップの出力に決められるため、各時間ステップの順序に応じて処理し、従って行列−ベクトル積を使用して当該演算を実行し、次に活性化関数を応用することとする。
【0032】
図2Aは一般的な全結合ベースラインRNN層アーキテクチャを示す。118〜124と記すブロックは、入力データの集合を含むベクトルを表し、入力データとして、特定時間に測定した電気信号、例えば、時間t=0秒の時にサンプリングしたオーディオ波形信号の振幅データが挙げられる。各ベクトル118〜124は、個別値116を含み、入力時系列102中の各ベクトル118〜124をサンプリング時間に関連付ける時間スケールに配置される。なお、サンプル間の時間間隔が等しくなくてもよく、ベクトル中の値が変換値に等しくてもよい。
【0033】
入力ベクトル118〜124と同様に、出力ベクトル136〜138中のデータは出力時系列104中に配置される。出力ベクトル136〜138は複数のサンプルの出力データの集合を含む。出力ベクトル136中の各個別値134は、入力データベクトル118〜124からの少なくとも1つの入力値に関連付けられた文字に対応する。各文字134は、測定されたオーディオ信号から取得された値116に対応付けられた予測値を表す。例えば、ベクトル136中の値134は例えば文字「b」を表してもよい。各文字は、確率として解釈される値、例えば0.2が割り当てられてもよい。ここで、RNN 150は、出力ベクトル136に関連付けられた時間ステップで出力された文字のうちの一つの文字が確率20%で文字「b」であると予測する。
【0034】
中間層106における計算は、変換を許容する線形および非線形ネットワーク構成要素の機能構造によって実行されてもよい。線形変換は行列108で表され、行列108はさらに層106中の等価図形を表す。例えば、
図2Aに示される行列108は行列の形態でネットワークパラメータを記憶し、行列108中の行は単一ニューロンを表し、列は単一ニューロンを出入りする結合を表す。層106および108のそれぞれの機能を時間ステップごとに繰り返して、RNN 100全体を定義する。
【0035】
図2Aに示される中間層106は、入力値145を含むモジュール140、非線形変換モジュール148および線形変換モジュール152(例えば、加算モジュール)を備える。モジュール140は、入力値145に結合され且つ線形および/または非線形変換を許容する出力値146を生成する単一ニューロン142のサブグループを含む。
【0036】
動作の際には、RNN 150におけるすべてのニューロンが相互に通信する。ニューロン142に結合される1つまたは複数の入力値145が出力値146を生成し、特定の点156でニューロン142自体に結合してもよい。それは、ニューロン142はそれ自体に戻るループを有してもよいからである。当該ループは要素142〜156を含む。実施形態では、加算要素152により加算した後、ニューロン142がRNN 150におけるすべてのほかのニューロンに結合される。出力は、さらに後続の時間ステップの入力シーケンス102中のベクトル120に対応付けられたベクトル120の出力と加算する。同期動作では、後続の時間ステップでは、ニューロン143の出力はニューロン142に使用される。
【0037】
なお、第2の段階において、計算コストは最も高い。リカレント重み行列は、各時間ステップを再使用しても、時間ステップ間のシーケンシャル依存性が時間ステップ間の明確な同期に関わり、且つ行列が大きすぎてオンチップメモリにマッチングしにくい場合、各時間ステップでメモリからリカレント重み行列をリロードする。
【0038】
マルチバルク同期並列(MBSP)抽象機械モデルは、プロセッサの特性を記述するための高レベルの性能モデルであり、限られた記憶容量および計算リソースを有する複数のプロセッサコアの物理的実体およびプロセッサコア数につれて増加する通信コストおよび同期コストを配慮する。これらのコストは、プロセッサコアの物理的特性およびプロセッサコア間の物理的距離に由来するものである。
【0039】
MBSPモデルは任意数のレベルに適応する階層モデルである。各レベルにおいて、モデルは、オンチップメモリ容量とキャッシュ容量の点からプロセッサコア集合を説明する。具体的には、記憶量の物理的な限界は、固定量の時間内に物理的プロセッサコアから取得でき、各コア用のメモリの物理領域と、より多くのコア間の基本的なトレードオフにより、メモリ階層への要求を形成する。MBSPモデル中の階層における各レベルは、1)サブ構成要素/コアの数、2)通信帯域幅、3)同期コスト、および4)キャッシュ/メモリサイズの4つのパラメータで記述される。
【0040】
特定問題用の最適MBSPアルゴリズムは、i)並列計算動作、ii)並列通信コスト、およびiii)定数乗算因子への同期コストの点においても最適である。計算上で密行列乗算に等価し、且つMBSO最適アルゴリズムを密行列乗算に直接適用できるため、MBSPモデルをRNNの第1の段階に直接適用できる。しかしながら、第2の段階では難しくなる。一連の行列−ベクトル乗算を使用した直接アルゴリズムは、並列計算動作に対して最適である。しかしながら、リカレント重み行列がMBSP階層の特定レベルでメモリにマッチングしないと、計算コストを影響する通信動作によって階層の下位レベルからアクセスしなければならない。同様に、時間ステップ間のシーケンシャル依存性と、ニューロン間のオールツーオール結合性との共同作用で、各時間ステップ間、すべてのプロセッサ間でグローバル同期動作を行う。通信コストが計算コストより80倍程度高くグローバル同期コストが計算コストより6百万倍程度高い現代のプロセッサは、通信コストまたは同期コストが主要コストであり、プロセッサの利用可能な計算リソースがほとんど十分に利用されていないと予測できる。現代のプロセッサ(例えば、
図1に示されるCPUまたはGPU)では、通信動作と同期動作のスループットが算術演算のスループットよりほぼ低いため、頻繁な通信ステップとオールツーオールの同期ステップによって効率が大幅に低下してしまう。
【0041】
データ集合の増大に伴う層サイズの継続的な増加につれて、時間ステップ間のシーケンシャル依存性によって層が次の時間ステップに移動する前、時間ステップ全体を評価することが求められるため、大型ネットワークはロード重みのコストを分散させることが不能になる。また、オンチップメモリ、特に最も高速で最も効率的なもの(例えば、L1キャッシュやレジスタ)は、通常、サイズが不十分であるため、すべての層を完全に記憶できない。
【0042】
また、複数のサンプル計算に対する更新(「小型バッチ」と呼ばれる)(データ集合全体を使用したバッチング方法と単一サンプルを使用した純粋なランダム方法と反対である)は、以下の方式によって通信問題のうちのいくつかを緩和する。複数の入力ベクトルを組み合わせてより大きな行列を形成し、行列−ベクトル乗算ではなく行列−行列積を使用してRNN 150を評価し、異なる時間ステップに対応する複数の入力データ要素に同数の重みを再使用する。しかしながら、この方法の主要な欠点の1つは、処理されたすべての異なるサンプル、およびそれらの中間計算段階をバッチサイズに等しい因子で記憶しなければならないことにより、現代のプロセッサで高効率を実現するには大きなバッチサイズ(例えば、128〜256)を要求するため、RNN 100を評価するメモリ要求が大幅に増加してしまうことである。もう1つの主要な欠陥は、RNN 100訓練のみに有用であり、訓練終了後、使用しないことである。また、小型バッチ方法は、更新速度ではなく、各回の更新作業量のみを増加させるため、モデル訓練時間を改善できない。
【0043】
一言すれば、RNNに要求されるオールツーオール結合性によって、それらを評価することに必要な帯域幅および遅延が増加されてしまう。従って、公知のRNN設計固有の同期遅延および帯域幅の制限を受けずに、RNNアーキテクチャがシーケンス−シーケンス変換を提供できる方法および構造が望まれている。
【0044】
図2Bは、時系列において高速モジュールおよび低速モジュールを使用した一般的なRNN層アーキテクチャにおけるモジュール間の結合性を示す。
図2Aのベースラインネットワーク150に示すように、
図2Bのネットワーク200は、単一ニューロンを含むモジュールの概念を使用する。ネットワーク200は、高速モジュール254〜260の単一層252および低速モジュール204〜206の2つ以上の層202を含む。動作の際には、それぞれ適切な結合220および270を介して、ネットワーク200の高速モジュール254〜260が相互に通信し、低速モジュール204〜206が相互に通信する。高速層252中の高速モジュール254〜260と低速層202中の低速モジュール204〜206との通信が頻繁ではない。また、このような通信は、低速層202から高速層252への単方向通信222のみに限られる。換言すれば、高速層252中の高速モジュール254〜260は、低速層202中の低速モジュール204〜206にフィードされない。
【0045】
なお、前記設計は、ネットワーク200が複数の解像度で信号を処理できることを主な目的とする。この目的は、ネットワーク200の構造における通信モデルのタイプ、例えば全結合モデル(例えば、
図2Aに示されるベースラインモデル)が特定タイプの関数によりよく類似することに基づいたものである。オーディオ応用では、例えば、入力オーディオデータの周波数成分が通常異なる速度で変化し高速に変化した成分と低速に変化した成分を生成する場合、ネットワーク200のマッピング関数のほうは、当該関数によりモデリングされる下位層サンプリングプロセスを自然に模擬できる可能性がある。
【0046】
図2Cはマルチバルク同期並列(MBSP)機械モデルの階層の単一レベルにおけるモジュールを示す。
図2Dは6つの時間ステップにわたって展開した最下位レベルの階層MBSPモジュールの例を示す。各モジュールは4つのニューロンを含む。
【0047】
図2Cでは、モジュール282における階層のレベルは、関連付けられた遅延および帯域幅を有するメモリ、および6つのサブレベルを含む。最後のサブレベルは
図2Cの右側に拡大図で示される。各モジュール282はM(m,n)(mは階層のレベル(最下位から最上位)であり、nは階層の特定レベルにおけるモジュールのインデクス番号である)で表される。モジュール282は人工ニューラルネットワークユニットの全結合集合を含む。ユニットは簡単な線形閾値ユニットであってもよく、さらに複雑なユニット、例えば、長期短期記憶(LSTM)ユニットまたは閾値リカレントユニット(GRU)であってもよい。
【0048】
本発明の実施形態に係るMBSP−RNNは、モジュールの階層を含んでもよい。階層の最下位レベルにおいて、MBSP−RNNモジュールは簡単なRNN層であってもよい。階層のすべてのほかのレベルにおいて、モジュールは、MBSP−RNN層の例として再帰的に定義される。
図3Aは本発明の複数の実施形態に係る、RNN階層の第2のレベルにおける2つのMBSPモジュール間の相互結合性を示す。ネットワーク300は単一ニューロン303を含み、単一ニューロン303は戦略的にグループ化され且つサブグループまたはロジックモジュール(例えば、304)では結合され、データはサブグループまたはロジックモジュールに分割される。実施形態では、ネットワーク300は、高速モジュールや遠隔モジュール(例えば、310〜312)の1つまたは複数の層352、および低速モジュールやローカルモジュール(例えば、304〜308)の1つまたは複数の層302を含む。実施形態では、層302における各モジュールが層302におけるすべてのほかのモジュールに結合される。同様に、実施形態では、層352における各モジュールが層352におけるすべてのほかのモジュールに結合される。また、任意数のモジュールは、モジュール間の結合を示す結合330を介して通信できるように結合されてもよい。
【0049】
動作の際には、階層の特定レベルにおいて、モジュールが疎に結合され、低頻度で更新され、時間遅延につれて更新するようにしてもよい。実施形態では、疎結合332は、所定モジュールの出力をほかのモジュールの入力のみに結合するサブセットとして設計される。例えば、階層の特定レベルが4つのモジュールを含むと、各モジュールが、すべてのほかのモジュールではなく、その2つの最も近い隣接モジュールに結合される。疎結合によって、モジュールに要求される通信帯域幅を低減させる。モジュールに記憶される重み数を減少させることにより、モジュールのオンチップメモリの要求を低減させるようにしてもよい。
【0050】
実施形態では、ネットワーク300は3である時間遅延(t
d)を有し、モジュール間の結合330が前へ3つの時間ステップにスキップすることを意味する。時間遅延の結合が各時間ステップでデータを送信するが、前記データが別の複数の時間ステップ内に宛先に到達する必要がない。換言すれば、出力が次のモジュールの入力に到達する前に、D個の時間ステップだけ遅延する。この時間遅延によってニューロンの同期実行時間が長くなり、時間遅延結合に沿った同期総数を減少させる。
【0051】
実施形態では、MBSP−RNNの第1のレベル用の活性化は、階層のM個のレベルおよび各レベルのN個のモジュールで式(3)として表現されてもよい。
【数3】
ただし、W
lh
l−1t,n+b
lnは、前の層からの正常フィードフォワード貢献であり、U
l0,n,nh
lt−1,M−1,nは、単一モジュールの貢献であり、当該モジュール自体の前の時間ステップからの出力のみを入力として使用する。
【0052】
階層の各連続レベルの活性化への貢献は、式(4)として表現される。
【数4】
ただし、h
lt,m−1,nは、式3からの貢献であり、残りの項目は、階層の当該レベルにおけるほかのモジュールの貢献の和である。su
m,n,j(t,x)は、一対のモジュール間の結合性であり、su
m,n,j(t,x)は、低速更新結合用の選択関数
【数5】
であり、
なお、U
lm,n,jにおけるいくつかの項目は、モジュールnとjの疎の結合性を実現するために、ゼロに強制的に設定される。
【0053】
階層の最上位レベルにおける各モジュールの完全活性化は、式(5)として表現されてもよい。
【数6】
最後、階層の最上位レベルにおける各モジュールの連結のすべての層の完全活性化は、
【数7】
として表現される。
【0054】
図3AにおけるRNN 300は、2である低速更新因子を有することにより、モジュール間の結合370が一時間ステップのみおきに適用される。関数S(x)372は、疎なモジュール間結合性を表し、例えば、遠隔モジュール352におけるニューロン311の出力がローカルモジュール302におけるニューロンのサブセットのみに結合される。低速更新結合は正常結合低より低い頻度でサンプリングする。低速更新は疎な結合性(結合を完全に省略する)と各時間ステップ後に更新した規則的結合との折衷と見なすことができる。
【0055】
実施形態では、入力シーケンスから変換した出力シーケンスは、次の層(図示せず)の入力シーケンスとして使用する。このように、任意数の層をスタックして階層のステージまたはレベルのスタックを生成することができ、それにより、RNN 300は、さらに複雑な関数にモデリングすることができる。サブグループ304内(例えば、階層の最下位層の位置に位置する)のニューロン303は、規則的な層におけるニューロンと同様な機能を実行できる。
【0056】
なお、
図3Aに示されるRNN 300の要素の数とサイズ(例えば、ニューロンの数、結合、および結合間の時間ステップ)は、パラメータであり、限定的なものではないと理解できるだろう。任意数の要素をRNN 300に追加したり、RNN 300から削除したりすることができ、例えば、動作前および動作期間にネットワークサイズを変更する。また、非線形機能の異なる組合せは異なるタイプの応用に適用できる。
【0057】
実施形態では、通信の間隔時間が増加し通信データ量が減少するという特性を維持するとともに、2つ以上のモジュールは、階層のさらに高いレベルに関連付けられた、個別モジュール304のユニットより大きいユニットを形成することができる。実際に、RNN 300はプロセッサを構成する個別計算リソースの構造を模擬することが求められる。
【0058】
実施形態では、RNN 300はターゲットプロセッサまたはプロセッサファミリーで実行されるように設計される。ターゲットプロセッサに対して、実施形態では、RNN 300は、パラメータ(サブモジュールまたはプロセッサコア、通信帯域幅、同期コスト、およびキャッシュ/メモリ容量)セットリストが設定され、各パラメータセットは、
図2Cと類似するプロセッサメモリ階層のレベルを表す。しかしながら、任意数のレベルまたはサブレベルを選択できると理解できるだろう。プロセッサについての当該説明によれば、実施形態では、階層の最下位レベルを開始とし最上位レベルまで動作する場合、単一ニューロンの集合がロジックモジュールに分けられ、以下の制約のうちの1つまたは複数を満たすようにモジュール間の結合を削除する。
【0059】
・所定モジュールに対して選択したニューロンを表すパラメータはメモリ階層の当該レベルのキャッシュ/メモリ容量に完全に適合し、例えば、キャッシュ/メモリ容量がモジュールサイズを決定する。
【0060】
・モジュール内の結合とモジュール間の結合を実行することに必要な通信コストは、評価モジュールのニューロンの計算コストにほぼ等しい。帯域幅が結合数を決定することによりモジュール間の結合数を減少させる。単一ニューロンは、モジュールの最下位層と見なすことができる。
【0061】
・モジュール間の結合を実行することに必要な同期コストは、評価モジュールのニューロンの計算コストにほぼ等しい。
【0062】
遅延は、データがモジュール間の結合を介して送信される時間に対する、データが受信される時間の遅延量として定義できる。モジュール間の結合を介した通信データの時間遅延を増加させることにより、所要の同期動作数を減少させることができる。ローカル通信は各時間ステップで行われるが、グローバル通信は遅延して行われてもよい。これらの変更によりRNNの計算、通信、同期およびメモリ容量要求をバランシングし、あるリソースに顕著な支障が生じることがなく、それにより帯域幅を向上させ、あまり厳しくない遅延要求を実現できる。
【0063】
実施形態では、複数の時間ステップにMBSP−RNN重みパラメータを再使用することにより制約をバランシングすることにより、オフチップメモリ(例えば、DRAM)から重みを繰り返してロードすることを回避し、同期およびオフチップメモリのアクセスを減少させ、浮動小数点演算に比べて、コストが遥かに高い。なお、実際の実現方式では、要求量の重み再使用を実現するように2つ以上の戦略を組み合わせてもよく、計算動作と通信動作との間でRNNの評価のバランスを実現する。
【0064】
実施形態では、各時間ステップにおいて、対応する結合を介して、高速モジュール(例えば、RNN 300の310〜312)のすべての結合が相互に通信し、且つ低速モジュール(例えば、304〜308)のすべての結合が相互に通信する。実施形態では、高速層352の高速モジュール(例えば、310〜312)と低速層302の低速モジュール(例えば、304〜308)とのモジュール間の通信330が頻繁ではないため、データ交換が減少する。
【0065】
なお、モジュール間の通信330は、単方向通信に限定されるものではなく、各層302、352間の双方向通信も可能である。実施形態では、階層の最下位レベルにおいて、モジュール(例えば、304〜312)が単一RNN層を形成し、各モジュール304〜312が人工ニューラルネットワークユニットの全結合集合を含む。ユニットは簡単線形閾値ユニットであってもよく、さらに複雑なユニット、例えば、LSTMユニットまたはGRUであってもよい。実施形態では、階層のすべてのほかのレベルにおいて、モジュールは簡単RNN層の例として再帰的に定義できる。実施形態では、階層の特定レベルにおいて、モジュール(例えば、304〜312)は、疎に結合され、低頻度で更新され、時間遅延につれて更新する。
【0066】
実施形態では、階層の特定レベル内におけるモジュール(例えば、モジュール310)の出力は、すべてのほかのモジュールではなくほかのモジュール(ここで、310および308)の入力のサブセットのみに結合される。従って、疎結合を形成することにより、所要の通信帯域幅を減少させる。また、いくつかの結合を完全に省略することにより、疎結合性がモジュールに記憶される必要のある重み数を減少してモジュール304〜312に要求されるオンチップメモリを減少させる。実施形態では、RNN 300は、各時間ステップ後に更新した正常RNN結合より低い頻度でサンプリングできる低速更新結合(例えば、320〜322)を含む。
【0067】
図6を参照してより詳細に説明するように、特定の実施形態では、階層の特定レベルにおいて、モジュールの次の時間ステップにおけるほかのモジュールの入力に出力されない。代替的には、出力が低頻度で送信され(P個の時間ステップごとに1回)、次のモジュールの入力に到達する前にD個の時間ステップだけ遅延する。モジュール間の時間遅延の結合性によって、モジュール間の同期動作と将来の時間ステップにおける計算とのオーバーラップを許容する。
【0068】
実施形態では、単一グローバルバリア多層構造がマルチレベルの後に位置しているが、RNNサイズは、当該モジュールのすべての重みがオンチップメモリ(例えば、レジスタ、L2キャッシュやL3キャッシュ)に適合するように設定される。それにより、重みが1回のみロードされ、次にすべての時間ステップに再使用される。実施形態では、各時間ステップの後、プロセッサコアにおけるすべての交換出力が活性化して同期する。モジュール数、モジュール間の結合性の量および同期の頻度はプロセッサのMBSPパラメータに応じて設定できる。従って、MBSP−RNNが計算動作、通信動作および同期動作を実行することに必要な時間がほぼバランシングされる。このアーキテクチャは所定層で最大パラメータ数の制約が存在するが、実施形態では、複数の層をスタックしてさらに大きなネットワークを形成することにより、制約が克服される。層を垂直または水平にスタックすることにより、ネットワーク深さおよびパラメータ数をトレードオフする。
【0069】
実施形態では、疎な時間遅延のMBSP−RNNアーキテクチャは、相対的に完全な階層を使用して単一層における任意数のパラメータをサポートする。このアーキテクチャは、
図3Aに示されるアーキテクチャと類似する。実施形態では、階層の第1のレベル(例えば、最下位レベル)は、RNNモジュールをプロセッサコア(例えば、スレッド)に直接マッチングし、後続のレベルをメモリ階層のほかのレベル(例えば、レジスタ、L2キャッシュ、L3キャッシュ、DRAM、分散型共有メモリ等)にマッチングし、オンチップメモリのすべてのレベルが対応するメモリ要素にマッチングするまで繰り返し、それによりすべてのネットワークパラメータを記憶できる。実施形態では、メモリレベルは別のプロセッサ(例えば、オフチッププロセッサ)を含むように拡張してもよく、前記別のプロセッサは相互に通信でき、および/または異なる特性を有する異なるタイプのメモリ(例えば、ディスク)と通信できる。
【0070】
実施形態では、フィードフォワード層RNNアーキテクチャにより分けられたMBSPは2つの層を含む。第1の層は複数の並列モジュール、例えば
図2Dに示すモジュールを含む。各モジュールは層入力の(必ずしも互いに素ではない)サブセットで動作してもよい。モジュールはターゲットプロセッサ用のMBSP階層に基づきそれらの隣接するモジュールと通信することにより、動作に限界があることを維持する。実施形態では、第1の層用のすべての重みがオンチップメモリに適合する必要がないため、当該層におけるパラメータ数を制限しない。しかしながら、多くのパラメータを有するネットワークは少ないパラメータを有するネットワークより低頻度のモジュール間の通信を実行する可能性がある。実施形態では、第2の層は純粋なフィードフォワード層であり、第1の層で実行された変換の逆変換に対応する、第1のMBSP−RNN層からのモジュールのサブセットの出力を処理し、例えば、異なるサイズまたは次元を有する中間表現を生成し、逆変換処理によって第1の層の元のフォーマットを生成する。明らかなように、第1の層におけるモジュールは、入力されたサブセットを処理し、第2の層は第1の層で強力に結合していないモジュールの結果を組み合わせる。
【0071】
なお、本明細書の開示するモジュール間の結合をグループ化し削除する戦略は、再帰的に応用でき(例えば、プロセッサの1つのセクションにマッピングするRNNのパーティションに応用し、さらにプロセッサの1つのサブセクションにマッピングするRNNのサブパーティションに応用する)、それとともに、階層の各層におけるモジュールの基礎構造を維持すると理解できるだろう。
【0072】
図3Bは本発明の様々な実施形態に係る、例示的なプロセッサ用のMBSP機械モデル階層を示す。
図3Aに述べましたように、MBSP機械モデルにおける階層の各レベルは、ターゲットプロセッサを表すパラメータ、または属性(プロセッサコア数、通信帯域幅、同期遅延およびメモリ容量を含む)の集合のリストを利用して説明する。具体的なプロセッサの詳細は、プロセッサの操作マニュアルまたはデータシートから取得できる。
【0073】
図3Bの例では、階層352〜356の各レベルは、遅延362および帯域幅364に関連付けられたメモリ容量360、およびサブレベルまたは計算ユニット368の集合を含む。
図3Bの例示的な符号GPU、コアおよびスレッドは、3つの異なる階層のレベル352〜356で生成した要素を表し、レベル352〜356は例示的なプロセッサ用のプロセッサ要素372〜376のメモリ階層370における3つの異なるレベル(例えば、レベル1〜3)に対応する。説明した例では、GPUはサブレベルコア354および最下位サブレベルスレッド356を含む最上位サブ352を表す。メモリ容量360はバイトで示されてもよい。プロセッサコアの計算能力は1秒あたりの浮動小数点演算で表されるパラメータであり、対応する計算回路の計算速度368(例えば、各スレッド2 GFLOPS/s)としてもよいが、ほかの単位または尺度も可能である。通信帯域幅364はGB/sで表され、1レベル(例えば、スレッドレベル356)ではメモリにアクセスできる時の同期遅延362はナノ秒で表されてもよい。
【0074】
図3Bの例では、プロセッサ372は24個の個別コア374を含むターゲットプロセッサを表し、各個別コア374はさらに128個の個別スレッド376を含む。実施形態では、階層のレベルまたはサブセット352〜356の数はターゲットプロセッサのメモリレベルに応じて選択される。実施形態では、このプロセッサについての説明に基づき、階層の最下位レベル356から最上位レベル352は各レベルに規則的に適用される。
【0075】
各ニューロンがある量の記憶と計算を要求する際に、例えばメモリ容量360に応じてニューロンを表すパラメータを選択してもよく、それにより各ニューロンのサイズおよびメモリ372〜376に適合するニューロン数を決定する。通信コストはメモリにおけるすべてのニューロンにアクセスすることに必要なコストであり、モジュール間のモジュール結合から読み取ることができる。実施形態では、ニューロン間の通信コストは帯域幅および遅延により決定される。帯域幅364は特定のメモリ372〜376が計算ユニットによりアクセス可能な最大速度の尺度である。帯域幅(すなわち、アクセス速度)により定義されたメモリの総量は、メモリアクセスに必要な時間総量である。実施形態では、この時間は計算の実行に必要な時間総量に等しい。実施形態では、通信コストは計算コストと比較し、計算コストにほぼ等しく設計される。計算コストは、計算速度から決定され、時間により正規化され、その方法について、すべてのニューロンの数を各ニューロンコストと乗算して計算速度を除算するとともに、単位を正規化する(例えば、秒に正規化する)。
【0076】
MBSPモデルに基づき、スレッドグリッド378における各スレッド376は、RNNにおけるすべてのニューロンのいくつかのサブセットを含む層356と見なすことができる。実施形態では、スレッドレベル356におけるニューロンのモジュールがスレッド376にマッピングすることにより、異なるモジュールが異なるスレッド376にマッピングする。グリッド378におけるスレッド376が別々に動作してメモリに記憶された任意のデータにアクセスする際に、ニューロンはモジュール内の結合を介してスレッド376内で通信し、グリッド378における異なるスレッドにアクセスするニューロンがモジュール間の結合を構成する。前者の場合、最下位レベル356に対して、遅延値が6nsであり、後者の場合、スレッド376が共同動作する際に、遅延値がプロセッサ372の階層における次のより上位レベル(ここで、コアレベル354)の遅延値、すなわち、30nsである。
【0077】
128個のスレッド376あたりに1個のコア372を有し、帯域幅が128個のスレッド376間で共有される場合、帯域幅情報(すなわち、モジュール内の結合に対して、16GB/sであり、モジュール間の結合に対して128GB/sである)とともに使用して通信時間を決定するようにしてもよい。
【0078】
実施形態では、ニューロンを表すパラメータの数は削除により減少し、すなわち、ニューロン間の結合の一部を削除することにより、パラメータをバランシングする。実施形態では、モジュール間の結合は
図3Aを参照して説明した制約のうちの1つまたは複数を満たすように削除される。実施形態では、削除はメモリを満充填し各規則との遵守性を検査することを含み、必要に応じて(すなわち、多すぎるニューロンまたはニューロン間の結合があれば)、結合を削除する。残りのニューロンおよび結合は、ターゲットプロセッサ372の性能最適化設定(例えば、行列形式)の最終数量を構成する。
【0079】
当業者は、プロセッサ要素372〜376の値が例示的なプロセッサに応じて割り当てられると理解できるだろう。同様に、ターゲットプロセッサ372用の値は、例示的なものであるため、ほかのプロセッサとプロセッサ要素は異なる値を有してもよい。
【0080】
当業者は、さらに、行列計算方法が後続でスループットのような性能特性の強化に適用できると理解できるだろう。
【0081】
図3Cは、本発明の様々な実施形態に係る、効率的なRNN層アーキテクチャを形成するプロセスのフローチャートを示す。プロセス380は、1つまたは複数のターゲットプロセッサで実行されたMBSPモデルを設計するステップ382から開始する。ステップ384では、実施形態において、最下位のプロセッサメモリ階層から最上位のプロセッサメモリ階層まで、ニューロンをロジックモジュールにグループ化する。
【0082】
ステップ386では、ニューロンをモジュール間で結合し、それにより例えばRNNの所定条件をバランシングする。例示的な条件として、RNNの計算要求、通信要求、同期要求およびメモリ容量要求が挙げられる。バランシング結果は、例えば
図5〜7を参照して説明した様々な方法でニューロン間の結合を削除(すなわち、除去)する。
【0083】
最終的に、ステップ388では、バランシングプロセスで削除されていない残りの結合を含む削除済みのRNNを1つまたは複数のターゲットプロセッサで実行する。
【0084】
図3Dは、本発明の様々な実施形態に係る、RNNの所定条件をバランシングするプロセスのフローチャートを示す。プロセス390のステップ392では、メモリ階層の特定レベルに対して、所定プロセッサに応じて選択されたニューロンを表すパラメータ数がキャッシュまたはメモリ容量に適合するように結合を配置する。
【0085】
ステップ394では、モジュール間の結合を実行することに必要な同期コストがニューロンの評価に必要な計算コストにほぼ等しいように結合を配置する。
【0086】
ステップ396では、モジュール間の結合とモジュール内の結合を実行することに必要な通信コストがニューロンの評価に必要なコストにほぼ等しく、遅延要求および帯域幅要求を低減させるように結合を配置する。
【0087】
実施形態では、ニューロン数を係数して各ニューロンのコストと乗算し、その結果をRNNモデルにおけるある閾値(例えば、計算コスト)と比較する。パラメータ閾値を超えると、閾値以下になるまで、ニューロン数を減少させる。実施形態では、すべての条件を満たすまで、閾値のそれぞれと各レベル(例えば、
図3Bに示されるすべてのレベル)に対してこのプロセス繰り返す。例えば、まずニューロン数を適合させ、続いて通信コスト、同期コストおよび遅延を適合させる。後続の適合プロセスがRNNモデルにおけるニューロン数の増加を招くことがないため、何の不都合もなく、任意の順序を選択できる。当業者は、各条件を等式に書かれる変数として定義してもよいとる理解できるだろう。
【0088】
図4は、本発明の様々な実施形態に係る、特定のプロセッサ上で実行されたRNNのモジュールの階層のレベルの概念を示す。RNN 400は、チップ設計者が回路素子を含む1種のタイプの物理的装置(例えば、あるタイプのメモリ)を同一タイプのほかの装置に密接したパーティションに位置決めすることを目的とするということを利用して、オンチップに位置する個別回路の間でメモリ階層を形成する。プロセッサのパーティション内における近傍回路は計算機能を実行するユニット(例えば、加算器または乗算器)およびキャッシュとメモリ装置を構成してもよい。
【0089】
実施形態では、RNN 400は物理的装置のメモリ階層のレベルに基づいて形成される階層のレベルを含み、RNN 400は、当該物理的装置上で動作するように設計される。例えば、階層の第1のレベルは、階層の最下位層を表すモジュール402および404から構成されてもよく、各モジュールは1組のニューロンを含む。次のより高いレベル、すなわち第2のレベルは、2つのモジュール402および404をグループ化する別のモジュール410から構成されてもよい。モジュール410の当該第2のレベルは物理的装置(例えば、2つ以上のパーティションがアクセスされる1組の共有メモリ装置)の階層の第2のレベルに対応してもよい。第3のレベルは物理的装置の階層の別のレベルに対応してもよく、例えば、プロセッサのすべてのパーティションがより大きなタイプのメモリ装置のレベルに結合される。第4のレベルは、物理的装置の階層のさらに別のレベルに対応してもよく、例えば、パーティションがより多くのメモリを提供する別の1組の装置のレベルに結合される。好ましくは、ニューロン間の結合性の階層におけるレベルの数が物理的装置の階層におけるレベルの数に正確にマッチングする。しかしながら、それを限定するものではない。階層のレベルが任意の特定の数に限定されるものではないと理解できるだろう。
【0090】
実施形態では、モジュール402は異なる時間ステップでその自体と通信する。モジュール402と404の内部通信(例えば、402から404へ)の量は、モジュール410と420間の通信より高い帯域幅を有する。
【0091】
実施形態では、階層の任意の特定レベルにおいて、
図3Aを参照して説明した制約は、以下のルールとして用いられる。1)プロセッサの利用可能メモリリソースに応じたモジュールのサイズの選択、2)プロセッサの容量(すなわち、各時間ステップで送信可能なデータ量)に基づくモジュール間の通信のデータ量、および3)プロセッサの異なる構成要素間の同期遅延に関連付けられたコスト、すなわち、1つのモジュールからもう1つのモジュールに送信されるデータ間に生じる時間ギャップ、プロセッサの一つの部分からもう1つの部分にメッセージを送信することにかかる時間。ルールを順守することにより、階層モジュールはさらに長い遅延に耐えられ、RNN 400はさらに厳しい遅延要求で動作できる。また、階層モジュールは通信量を減少させほかの層における帯域幅を増加させる。
【0092】
図5は、本発明の様々な実施形態に係る、高速モジュールおよび低速モジュールに分割されたRNNを示す。異なる頻度で更新されたモジュール間の結合を有することに加えて、実施形態では、モジュールを高速モジュール554〜576と低速モジュール504〜510に分割することにより、グローバル通信要求を低減させる。低速モジュール504〜510は、高速モジュール502〜552より低い速度で更新され、高速モジュール502〜552は、高頻度でより多くのデータを使用して更新される。実施形態では、
図5に示すように、これらのモジュールは高速モジュールを含む第1の層502および低速モジュールを含む第2の層552内に配置される。実施形態では、2つ以上の高速モジュール554〜576は並列動作し、1つの高速モジュールからもう1つの高速モジュールへの通信路径の唯一方式が低速モジュール504〜510のうちのいずれかを経由することであるように結合される。
【0093】
実施形態では、高速モジュール554〜576は頻繁に更新された結合により密に内部で結合されるが、次に高速モジュール572〜576ではなく、低速モジュール504〜510のみに結合される。低速モジュール504〜510は、内部で結合され、ほかの高速モジュールに結合され、すべての結合が高速モジュール554〜576より低い速度で更新される。明らかなように、低速モジュール504〜510は高速モジュール554〜576間の高レベル通信を許容し、高速モジュール554〜576は入力データのほぼ独立したサブセットを処理する。
【0094】
実施形態では、高速モジュール554〜576は内部通信しかできないが、低速モジュール504〜510は高速モジュール554〜576間の通信を協調する。実施形態では、例示的なソース高速モジュール554と例示的な宛先高速モジュール560との通信を確立するために、周期的な間隔において、まず高速モジュール554から低速モジュール506への通信を確立する。別のステップでは、低速モジュール506から宛先高速モジュール560への通信を確立する。
【0095】
図6は、本発明の様々な実施形態に係る結合性の並列プレフィックスパターンを示す。ネットワーク600は、さらに高速モジュールおよび低速モジュールの2つのタイプを含む。実施形態では、
図6に示されるように、RNNの通信要求と同期要求を低減させるために、入力シーケンシャルデータ時間ステップは、独立した連続サブセクションに分けられ、それらのそれぞれをRNNにより処理して各サブセクションに対して中間結果を生成する。次に、別のRNNは(より小さい)中間結果に基づいて動作し、最終的に処理された中間結果を別の入力として使用し、さらに別のRNNは、入力データのサブセクション上で再び動作する。概念上、各サブセクションにおける時系列情報は、第1のステップにより圧縮した中間表現に減少する。各サブセクションからの情報を第2のステップにより効率的に組み合わせることができる。最終的に、独立したサブセクションは、すべての時間ステップからの組み合わせたコンテキスト情報を使用して処理してもよい。当該形式は、プレフィックスツリーの形式からインスピレーションを得たものである。
【0096】
図6では、層をセグメント化するのではなく、ネットワーク600における通信に対して独立した時系列入力662〜672を生成する入力時系列660を時間セグメント680〜684に分ける。実施形態では、ネットワーク600の特定モジュール(例えば、モジュール642とモジュール644)が入力時系列660の時間セグメント(例えば、時間セグメント680)内に相互に通信するが、ネットワーク600のほかのモジュール(例えば、モジュール644およびモジュール646)が時間セグメント(例えば、時間セグメント680と682の間)間に相互通信しないことにより、頻度を低減させ、さらに時間ステップ間の通信データ量を減少させ、通信時間を減少させる。より多くの動作を同時に並列に実行することにより、遅延のすべての潜在的な悪影響を解消する。
【0097】
図7は、本発明の様々な実施形態に係る、遅延および帯域幅要求を最小化するとともにグローバル通信を可能にする別の方法を示す。ネットワーク700は、第1の層702におけるサブモジュール710〜716と、鏡像の第2の層760におけるサブモジュール762〜768、置換モジュール750、入力層(図示せず)、および出力層790を備える。
【0098】
動作の際には、層702におけるモジュール710〜716と、層760におけるモジュール762〜768は、選択的に置換モジュール752を経由して通信する。実施形態では、モジュール710〜716は、モジュール762〜768に対して独立してより高い速度で動作する。各モジュール710は、時系列の第1の時間ステップに、例えば4個の出力を生成して、層702におけるすべてのモジュール710〜716が各時間ステップに合計16個の出力730を生成する。当該通信は、プロセッサの異なるローカル部分において第1のパス(pass)で実行されてもよい。すべての出力730を取得した後、時間ステップ間の第2のパスでは、モジュール710〜716のすべての計算した利用可能な出力730の順序を乱し、次に1:1でモジュール762〜768の入力にコピーする。
【0099】
実施形態では、置換モジュール752は、出力を選択して混合することによりこれらの16個の出力の順序を再設定する。例えば、モジュール710におけるニューロン0、1、2および3の出力730がモジュール770の出力780(例えば、12、13、8および9)にマッピングされ、それにより2つの層702および760におけるモジュール間の通信パターンを変更する。置換モジュール750は、任意数の出力を自由に選択して再設定することができると理解できるだろう。実施形態では、第1のパスのプロセスは、すべての時系列に関わらないことにより、すべての出力730をプロセッサのマッピング開始前に取得する必要がない。
【0100】
なお、実施形態では、ほかまたは追加の要素を考慮してもよい。以下、MBSP−RNNを設計する時に考慮する追加の要素を例示する。
【0101】
MBSP−RNN層への入力活性化は、モジュール間に均等に分割されることにより、各入力が階層の任意のレベルで単一モジュールにより処理される。
【0102】
MBSP−RNN層は、システムにおけるプロセッサコアを完全にサブスクライブしたり、過度にサブスクライブしたりすることに十分なモジュールを有するべきである。それにより、層が十分な並列タスクを有することを確保し、したがってすべてのプロセッサリソースが利用される。
【0103】
関連結合用の重みをプロセッサメモリ階層の対応するレベルに記憶できないことを回避するために、階層の任意のレベルにおけるMBSP−RNNモジュールは、多すぎる記憶を使用しないことにすべきである。
【0104】
階層のより低いレベルにおけるニューロンをより密に結合すべきで、遅延なしに高頻度で結合を更新すべきである。階層に沿って上へ進行するほど、ニューロンがより疎に結合され、増加した遅延および低頻度で結合が更新される。階層のレベルの正確な数および結合性、時間遅延と更新頻度は、RNNをマッピングする宛先のプロセッサのMBSPパラメータを使用して決定される。具体的には、計算コスト、通信コストおよび同期コストがほぼ等しくするように値を選択すべきである。
【0105】
RNNの主要なオンチップメモリの要件は、各結合用の重みパラメータである。ネットワークの計算構成要素と通信構成要素との評価をバランシングするために、オフチップメモリからロードされた各重みパラメータを複数回再使用すべきである。重みパラメータを再使用するための3つの基本的な戦略は、時間に応じたバッチング、サンプルに応じたバッチングおよび結合に応じたバッチングを含む。
【0106】
低頻度または時間遅延だけでモジュールの出力をほかのモジュールに送信する能力は、複数の時間ステップにおいて、当該モジュールに関連付けられた重みをメモリからリロードせずに処理されることを許容する。具体的には、RNNが階層の当該レベルにおいて多すぎるモジュールを含んでオンチップメモリに適合しない場合であっても、同期間の時間ステップ(各時間ステップより低い頻度で発生する)は、重みをリロードせずに特定モジュールにより処理できる。同期点に到達したまで、1つのモジュールが評価されることができ、同期点では、プロセッサが別のモジュールに切り替えられることができる。同様な効果は、時間遅延後に同期した結合に適用される。1つのモジュールは、現在の時間ステップから次の日時(time−day)へ進行でき、当該次の日時では、プロセッサが別のモジュールに切り替え、当該別のモジュールを同一範囲の時間ステップで評価する。
【0107】
重みパラメータを再使用する別の戦略は、複数の独立した入力シーケンスに対して同一の時間ステップを同時に評価することである。多くの最適化アルゴリズムがある程度の入力に応じたバッチングを要求するため、当該方法は、RNNの訓練に特に効果的である。しかしながら、前記方法は、特定の場合に利用不能な複数の入力シーケンスを利用可能なものとして仮定するため、当該戦略は、訓練されたネットワークを使用してタスクをリアルタイムに実行する時に効果が弱い。例えば、携帯装置上で音声認識を実行するニューラルネットワークは、通常、単一ユーザーが話すことをサポートする。
【0108】
最後に、畳み込みニューラルネットワーク層と類似するように、複数の結合に同一重みパラメータを再使用することができる。この場合に、モジュールは同一重みを共有するすべての異なるほかのモジュールからの複数の入力を有してもよい。また、所定数の結合をサポートするモジュールのメモリ使用量を減少させ、各重みが各時間ステップにモジュールに使用される回数を増加させる。
【0109】
当業者は、本明細書の例および実施形態が例示的なものであり、本発明の範囲を限定するものではないと理解できるだろう。本明細書に基づき当業者が容易に想到できる本発明へのすべての置換、強化、均等物、組合せまたは改良は、本発明の趣旨および範囲内に属する。