説明

ニューラルネットワーク・シミュレーション演算方法

【課題】ニューラルネットワークのシミュレーションを、並列演算システムによって行う場合に、システムの稼働率を向上させる。
【解決手段】ニューラルネットワークのシミュレーション演算は、少なくとも一つのニューロンの演算を含む、実行順序を決められたスライスに分割されており、n+1番目に実行されるスライスの演算は、n番目に実行されるスライスの演算結果を利用するように構成されており、ノードには、実行順序を決められたスライスが割り当てられており、ノードは、他のノードによるスライスの演算結果を受け取るように構成されている。ノードがn番目のスライスの演算を実行するステップと、n+1番目のスライスのシナプス部の先行演算を実行するステップと、他のノードのn番目のスライスの演算結果を受け取った後に、実行しなおす必要があると判断した部分についてのみ、n+1番目のシナプス部の演算を実行しなおすステップとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションを、複数のノードが並列演算を行うように構成された並列演算システムによって行うニューラルネットワーク・シミュレーション演算方法に関する。
【背景技術】
【0002】
複数のノードが並列演算を行うように構成された並列演算システムによってシミュレーション演算を行う場合、あるノードの演算結果を他のノードで使用することが必要となる。そこで、所定のタイミングごとにノード間で同期をとり、ノード間の情報のやり取りが行われる。
【0003】
複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションを、並列演算システムによって行う場合には、あるニューロンの演算は、該ニューロンのシナプス部に接続されたニューロンの演算結果を利用する。したがって、あるニューロンの演算が、該ニューロンのシナプス部に接続されたニューロンの演算結果を利用することができるように、複数のニューロンのシミュレーション演算を並列演算システムの複数のノードに割り当てるとともに、所定のタイミングごとにノード間で同期をとり、ノード間の情報のやり取りが行われるように並列演算システムを構成する。
【0004】
ここで、ノードが実行する演算の単位は、スライスと呼称される。スライスにおいて、ノードは他のノードから情報を受け取った後、独立して演算を実行し、演算の結果を他のノードへ送る。すなわち、スライスは、ノードによって実行されるシミュレーション演算とノード間の情報のやり取りから構成される。上述のように、ノード間の情報のやり取りはノード間で同期をとって行われる。したがって、各ノードによって実行されるスライスには、実行順序が定められ、各ノードは、実行順序ごとにノード間で同期をとりながらスライスを実行する。その場合に、あるノードは、nが実行順序を示す正の整数として、n番目のスライスのシミュレーション演算を終了した後、他のノードによるn番目のスライスのシミュレーション演算の結果を待つ場合が生じる。このように、スライス内には待ち時間が生じうる。このスライス内の待ち時間のために、並列演算システムの稼働率が大幅に低下する可能性がある。
【0005】
一般的に、待ち時間を減少させシステムの稼働率を向上させるために、投機的処理を行うことが知られている(たとえば、特許文献1及び2)。
【0006】
しかし、複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションを並列演算システムによって行う場合に、該並列演算システムの稼働率を向上させる方法は開発されていない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−47887号公報
【特許文献2】特開2003−323304号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
したがって、複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションを、並列演算システムによって行う場合に、該並列演算システムの稼働率を向上させるニューラルネットワーク・シミュレーション演算方法に対するニーズがある。
【課題を解決するための手段】
【0009】
本発明によるニューラルネットワーク・シミュレーション演算方法において、複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションが、複数のノードが並列演算を行うように構成された並列演算システムによって実行される。ニューラルネットワークのシミュレーション演算は、ニューロンの演算からなり、該ニューロンの演算は該ニューロンのシナプス部に接続されたニューロンの演算の結果を利用するものである。ニューラルネットワークのシミュレーション演算は、少なくとも一つのニューロンの演算を含む、実行順序を決められたスライスに分割されており、nは正の整数として、n+1番目に実行されるスライスの演算は、n番目に実行されるスライスの演算結果を利用するように構成されており、ノードには、実行順序を決められたスライスが割り当てられており、ノードは、他のノードによるスライスの演算結果を受け取るように構成されている。該方法は、ノードがn番目のスライスの演算を実行するステップと、ノードが他のノードのn番目のスライスの演算結果を仮定してn+1番目のスライスのシナプス部の先行演算を実行するステップと、ノードが他のノードのn番目のスライスの演算結果を受け取った後に、該演算結果に基づいてn+1番目のスライスのシナプス部の演算を実行しなおす必要があるかどうかを判断し、実行しなおす必要があると判断した部分についてのみ、n+1番目のシナプス部の演算を実行しなおすスッテップとを含む。
【0010】
本発明によれば、ノードが他のノードのn番目のスライスの演算結果を仮定してn+1番目のスライスのシナプス部の先行演算を実行するので、n+1番目のスライスにおけるシナプス部の演算時間が短縮される。
【0011】
本発明の実施形態によるニューラルネットワーク・シミュレーション演算方法は、ノードが他のノードのn番目のスライスの演算結果を受け取る前に、他の全てのニューロンにおいて発火イベントは発生していないと仮定してn+1番目のスライスのシナプス部の演算を実行する。
【0012】
本実施形態によれば、発火イベントが発生する確率が低いので、ノードが他のノードのn番目のスライスの演算結果を受け取った後に、該演算結果に基づいてn+1番目のスライスのシナプス部の演算を実行しなおす必要がある場合が生じる確率は低い。また、発火イベントが発生しなかった場合の演算時間の平均値は、発火イベントが発生した場合の演算時間の平均値よりも大きい。したがって、n+1番目のスライスにおけるシナプス部の演算時間が大幅に短縮される。
【0013】
本発明の実施形態によるニューラルネットワーク・シミュレーション演算方法において、ノードによるシナプス部の演算結果は、ノードの記憶装置に、スライスごと及びシナプスごとに格納される。
【0014】
本実施形態によれば、シナプス部の演算結果が、ノードの記憶装置に、スライスごと及びシナプスごとに格納されているので、ノードが他のノードのn番目のスライスの演算結果を受け取った後に、実行しなおす必要があると判断した部分についてのみ、n+1番目のシナプス部の演算を実行しなおす際に、効率的に処理を実行することができる。
【0015】
本発明の実施形態によるニューラルネットワーク・シミュレーション演算方法において、ノードが、n+1番目のスライスの先行演算を実行する前に、n+1番目のスライスの演算用のデータセットを、該ノードの記憶装置に予めコピーし、該ノードが他のノードのn番目のスライスの演算結果を受け取った後に、該コピーしたデータセットに基づいて必要であると判断した部分についてn+1番目のスライスの演算を実行しなおす。
【0016】
本実施形態によれば、n+1番目のスライスの先行演算を実行する前に、n+1番目のスライスの演算用のデータセットを、該ノードの記憶装置に予めコピーしておくので、ノードが他のノードのn番目のスライスの演算結果を受け取った後に、実行しなおす必要があると判断した部分についてのみ、n+1番目のシナプス部の演算を実行しなおす際に、効率的に処理を実行することができる。
【0017】
本発明の実施形態によるニューラルネットワーク・シミュレーション演算方法において、前記並列演算システムの複数のノードは、スライスの演算を実行するサーバと、スライスの管理を行うクライアントからなり、サーバはスライスの演算結果をクライアントに送信し、クライアントは、各スライスの演算結果を各サーバに送信するように構成されている。
【0018】
本実施形態によれば、クライアントがスライスの管理を行うので、サーバによるスライスの演算時間短縮が、並列演算システムの全体の効率向上に反映される。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施形態による並列演算システムの構成を示す図である。
【図2】スライス内で実行されるサーバの動作を示す図である。
【図3】スライス内で実行されるクライアント及びサーバの動作を示す図である。
【図4】ニューラルネットワークを構成するニューロンの構成を示す図である。
【図5】ニューロンの内側の演算の構成を示す図である。
【図6】スライス内で実行されるサーバのより詳細な動作を示す図である。
【図7】連続したスライス内で実行されるサーバの動作を示す図である。
【図8】スライス内で実行されるクライアント及びサーバの動作を示す図である。
【図9】本発明の一実施形態によるニューラルネットワーク・シミュレーション演算方法において、連続したスライス内で実行されるサーバの動作を示す図である。
【図10】本発明の一実施形態によるニューラルネットワーク・シミュレーション演算方法において、連続したスライス内で実行されるクライアント及びサーバの動作を示す図である。
【図11】シナプス演算に使用されるデータセットの取り扱いを示す図である。
【図12】本実施形態による、並列演算システムの稼働率向上の効果を示す図である。
【発明を実施するための形態】
【0020】
図1は、本発明の一実施形態による並列演算システム100の構成を示す図である。並列演算システム100は、ルーティング・スイッチ101とノード103から構成される。ノード103は、x86系CPUなどを搭載した汎用計算機であってもよい。ノードは、他のノードとの通信のための通信カードを備える。ノードの通信カードは、たとえば、メタルの同軸ケーブル、ツイストペアや、光ケーブルなどの通信路を介してルーティング・スイッチ101に接続される。すなわち、全てのノードは、ルーティング・スイッチ101に接続され、ノード間の通信は、ルーティング・スイッチ101を介して行われる。ルーティング・スイッチ101は、各ノードから転送されてきたデータ・パケット(データと制御コードの列)を解析して、宛先のノードへ転送する機能を有する。
【0021】
シミュレーション演算を実行する際に、一例として、ノード105は、クライアントとして機能し、ノード107a、107b、・・・は、サーバとして機能する。各サーバ107a、107b、・・・には、実行順序を定めたスライスが割り当てられる。クライアント105は、サーバによるスライスの実行を管理する。
【0022】
図2は、スライス内で実行されるサーバの動作を示す図である。図2においてSlice(n)は、実行順序がn番目であるスライスを示す。各サーバ107a、107b、・・・によって、1スライス内で実行される動作は、以下のとおりである。
【0023】
1)スライス開始の同期信号をクライアント105から受け取る(A1)。
2)演算を実行するのに使用されるパラメータや変数をクライアント105から受け取る(A2)。
3)演算を実行する(A3)。
4)演算結果をクライアント105へ送る(A4)。
【0024】
図3は、スライス内で実行されるクライアント及びサーバの動作を示す図である。スライスにおいて、サーバによって上述の動作が実行される。他方、クライアントによって以下の動作が実行される。
【0025】
1)スライスの同期信号を作成し、サーバに送る(B1)。同期信号は、以下の手順で作成する。
クライアント105は、上述のとおり、各サーバから演算結果を受け取る。クライアント105は、スライス(n−1)についての全てのサーバの演算結果を受け取った後に、スライス(n)の同期信号を作成する。ここで、nは正の整数であり、n−1及びnは、スライスの実行順序を示す。
2)パラメータ及びデータを作成し、サーバに送る(B2)。パラメータ及びデータは、以下の手順で作成する。
スライス(n−1)についてのサーバの演算結果に基づいて、スライス(n)の演算に必要なパラメータ及びデータを作成する。
3)サーバから演算結果を受け取る(B3)。
【0026】
このように実行順序を定めたスライスを繰り返し実行することにより、ニューラルネットワークのシミュレーション演算を実行する。
【0027】
図4は、ニューラルネットワークを構成するニューロン300の構成を示す図である。ニューロン300は、複数のシナプス301a、301b、301c・・・から構成されるシナプス部301と、ソーマ部303とから構成される。各シナプスは、他のニューロンのソーマ部から信号を受け取り、この信号に基づいてシナプス部及びソーマ部が機能し、他のニューロンのシナプスへ信号を出力する。ここで、ニューラルネットワークのシミュレーション演算は、スパイキングニューロンモデルを計算するニューロンの内側の演算と、ニューロン間において発火イベントが存在するかしないかをディジタル値で表現するネットワーク(ニューロンの外側)の演算とで構成される。
【0028】
図5は、ニューロンの内側の演算の構成を示す図である。ニューロンの内側の演算は、シナプス部を演算する過程S1(図5中のs1)とソーマ部を演算する過程N1(図5中のn1)とに分けられる。
【0029】
シナプス部の演算は、シナプスごとに行われる。シナプス部の演算には、2個の関数が準備されている。シナプスが、接続された他のニューロンからの発火イベントを受け取ったか否かによって2個のうちいずれの関数を実行するかが決められる。シナプスが、発火イベントを受け取った場合には、関数Sleが実行される。シナプスが、発火イベントを受け取らなかった場合には、関数Slneが実行される。発火イベントについてのデータは、クライアントが同期信号を送った後にサーバに送るデータに含まれている。したがって、サーバは、クライアントからのデータを受け取る前に2個のうちいずれの関数を実行するか決めることはできない。シナプス部の演算結果は、ノードの記憶装置に、シナプスごとに格納される。
【0030】
ソーマ部の演算は、そのソーマ部が属しているニューロンが保持する全てのシナプスの演算結果を使用する。ソーマ部の演算は、基本的に、そのソーマ部が属しているニューロンが保持する全てのシナプスの演算が終了しないと開始できない。
【0031】
図6は、スライス内で実行されるサーバのより詳細な動作を示す図である。図6は、図2に示したサーバの動作をより詳細に示している。シミュレーション演算は、シナプス部の演算S1(図6中のs1)とソーマ部の演算N1(図6中のn1)とに分けられる。また、サーバがクライアント105へ演算結果を送信した後、サーバが次のスライスの同期信号を受け取るまでの間、サーバは演算を実行しない待機状態となる。
【0032】
図7は、連続したスライスSlice(n−1)及びSlice(n)内で実行されるサーバの動作を示す図である。図7において、c1は、スライス開始の同期信号をクライアント105から受け取る動作を示す。c2は、演算を実行するのに使用されるパラメータや変数をクライアント105から受け取る動作を示す。s1は、シナプス部の演算を示す。n1は、ソーマ部の演算を示す。c4は、演算結果をクライアント105へ送る動作を示す。c5は、サーバの待機状態を示す。c1、c2、c4及びc5の時間は、並列演算システム100の通信や同期のためのオーバーヘッドであり、これらの時間が短くなるほど並列演算システム100の稼働率が向上する。
【0033】
図8は、スライス内で実行されるクライアント及びサーバの動作を示す図である。クライアント105は、サーバに同期信号を送り(c1)、ついで、演算に必要なパラメータ・データを送る(c2)。その後、クライアント105は、サーバの演算終了を待ち続ける(c3)。クライアント105は、動作c4によってサーバから送られたデータを処理してスライスの更新処理を行う。
【0034】
ここで、発火イベントに関するニューロンの外側の演算について説明する。ニューロンの内側の演算結果に基づいて、ニューロンに発火イベントが生じたかどうかが定まる。あるニューロンに発火イベントが生じたかどうかの情報は、該ニューロンの演算を実行したサーバ及び他のサーバに伝達される必要がある。そこで、クライアント105は、各サーバから送られる演算結果に基づいて、ニューロンの発火についての情報を収集し、整理し、各サーバに伝達する。クライアント105は、表1に示すようなイベントリストによってニューロンの発火についての情報を整理してもよい。表1において、発火イベントの欄の0は発火していないことを示し、1は発火したことを示す。なお、表のフォーマットは表1に示したものに限らず、発火の有無がわかるものであればよい。
【表1】

【0035】
各ノードは、ニューラルネットワークの接続情報を記憶装置に予め保持する。このニューラルネットワークの接続情報及びクライアントから受け取ったイベントリストに基づいて、サーバは、シナプス部の演算を実行するときに、そのシナプス部の接続先(入力先)のニューロンで発火イベントが生じたかどうかを判断する。上述のように、発火イベントが生じた場合には、関数Sleが実行され、発火イベントが生じなかった場合には、関数Slneが実行される。
【0036】
ここで、ニューロンが発火する頻度について検討する。仮にニューロンの平均発火頻度を400Hzとすると、2.5msecに一回発火することになる。スライス1つを100usec相当と仮定すると、スライス25個に相当する時間で1回発火することになる。このように、ニューロンが発火する平均頻度はかなり低い。
【0037】
また、関数Slneの演算時間の平均値は、関数Sleの演算時間の平均値よりも大きい。
【0038】
そこで、本発明によるニューラルネットワーク・シミュレーション演算方法においては、図7に示した、n−1番目のスライスの待機時間c5において、n番目のスライスの、発火イベントが生じなかった場合の関数Slne(n)の演算を実行する。この演算を先行演算と呼称する。先行演算の対象は全てのシナプス部である。n番目のスライスで発火イベントを受け取ることとなるシナプス部の演算も、一旦、発火イベントを受け取らないものとして先行演算を実行する。
【0039】
図9は、本発明の一実施形態によるニューラルネットワーク・シミュレーション演算方法において、連続したスライス内で実行されるサーバの動作を示す図である。図9(b)は、本実施形態によるサーバの動作を示し、図9(a)は、従来技術によるサーバの動作を示す。サーバによって実行される動作は、以下のとおりである。
【0040】
1)n−1番目のスライスにおいて、演算結果をクライアント105へ送る動作c4が終了した後、待機時間c5において、n番目のスライスの、全てのシナプス部の、発火イベントが生じなかった場合の関数Slne(n)の演算の実行を開始する。
2)クライアント105からの同期信号を受け取る動作c1が終了し、n番目のスライスが開始された後、発火イベントリストをクライアント105から受け取る動作c2の終了を待って、発火イベントリストに基づいて、発火イベントを受け取るシナプス部のみを対象として、関数Sle(n)の演算を実行する。
【0041】
図9に示したように、n-1番目のスライスにおいて、待機時間c5に対応する時間において全てのシナプス部の関数Slne(n)の演算が実行される。したがって、n番目のスライスにおいて、シナプス部の関数Slne(n)の演算を実行する必要がなく、n番目のスライスにおけるシナプス部の演算時間は大幅に短縮される。このように本実施形態によれば、各サーバの各スライスにおいてシナプスの演算時間が大幅に短縮されるので、並列演算システム100の稼働率が大幅に向上する。
【0042】
図10は、本発明の一実施形態によるニューラルネットワーク・シミュレーション演算方法において、連続したスライス内で実行されるクライアント及びサーバの動作を示す図である。
【0043】
クライアント105は、サーバに同期信号を送り(c1)、ついで、演算に必要なパラメータ・データを送る(c2)。その後、クライアント105は、サーバの演算終了を待ち続ける(c3b)。クライアント105は、動作c4によってサーバから送られたデータを処理してスライスの更新処理を行う。
【0044】
サーバは、n番目のスライスにおいて、演算に必要なパラメータ・データを受け取った(c2)後、発火が生じたシナプスについてのみ、関数Sle(n)の演算を実行する。その後、ソーマ部の演算N1を実行する。ニューロンの演算終了後、演算結果をクライアント105へ送る(c4)。その後、サーバは、(n+1)番目のスライスにおける、全てのシナプス部の関数Slne(n+1)の演算を実行する。その後、サーバは待機する(c5b)。
【0045】
図11は、シナプス演算に使用されるデータセット211の取り扱いを示す図である。n−1番目のスライスにおいて、サーバの記憶装置に格納されたn番目のスライス用のデータセット211を予め、該記憶装置の別の場所にコピーし、データセット213を作成しておく(A)。データセット211を使用して、n番目のスライスの、全てのシナプス部の、発火イベントが生じなかった場合の関数Slne(n)の演算を実行し、データセット215を得る(B)。n番目のスライスにおいて、データセット213を使用して、発火イベントを受け取るシナプス部のみを対象として、関数Sle(n)の演算を実行し、その結果をデータセット215に上書きし、データセット217を得る(C)。上述の処理によってn番目のスライスにおけるシナプス部の演算が終了する。
【0046】
図12は、本実施形態による、並列演算システム100の稼働率向上の効果を示す図である。10万スライスを計算するのに必要とされる時間は、従来技術の方法によれば、49.76秒であるのに対し、本実施形態の方法によれば33.58秒である。このように本実施形態による計算時間は、従来技術の計算時間の約3分の2に短縮され、稼働率が大幅に向上される。
【符号の説明】
【0047】
101…ルーティング・スイッチ、103…ノード、105…クライアント、107…サーバ

【特許請求の範囲】
【請求項1】
複数のニューロンが相互に接続されているニューラルネットワークのシミュレーションを、複数のノードが並列演算を行うように構成された並列演算システムによって実行するニューラルネットワーク・シミュレーション演算方法であって、ニューラルネットワークのシミュレーション演算は、ニューロンの演算からなり、該ニューロンの演算は該ニューロンのシナプス部に接続されたニューロンの演算の結果を利用するものであり、ニューラルネットワークのシミュレーション演算は、少なくとも一つのニューロンの演算を含む、実行順序を決められたスライスに分割されており、nは正の整数として、n+1番目に実行されるスライスの演算は、n番目に実行されるスライスの演算結果を利用するように構成されており、ノードには、実行順序を決められたスライスが割り当てられており、ノードは、他のノードによるスライスの演算結果を受け取るように構成されており、該方法は、
ノードがn番目のスライスの演算を実行するステップと、
ノードが他のノードのn番目のスライスの演算結果を仮定してn+1番目のスライスのシナプス部の先行演算を実行するステップと、
ノードが他のノードのn番目のスライスの演算結果を受け取った後に、該演算結果に基づいてn+1番目のスライスのシナプス部の演算を実行しなおす必要があるかどうかを判断し、実行しなおす必要があると判断した部分についてのみ、n+1番目のシナプス部の演算を実行しなおすスッテップとを含むニューラルネットワーク・シミュレーション演算方法。
【請求項2】
ノードが他のノードのn番目のスライスの演算結果を受け取る前に、他の全てのニューロンにおいて発火イベントは発生していないと仮定してn+1番目のスライスのシナプス部の演算を実行する請求項1に記載のニューラルネットワーク・シミュレーション演算方法。
【請求項3】
所定のスライスにおいて、ノードによるシナプス部の演算結果は、ノードの記憶装置に、シナプスごとに格納される請求項1又は2に記載のニューラルネットワーク・シミュレーション演算方法。
【請求項4】
ノードが、n+1番目のスライスの先行演算を実行する前に、n+1番目のスライスの演算用のデータセットを、該ノードの記憶装置に予めコピーし、該ノードが他のノードのn番目のスライスの演算結果を受け取った後に、該コピーしたデータセットに基づいて必要であると判断した部分についてn+1番目のスライスの演算を実行しなおす請求項1から3のいずれかに記載のニューラルネットワーク・シミュレーション演算方法。
【請求項5】
前記並列演算システムの複数のノードは、スライスの演算を実行するサーバと、スライスの管理を行うクライアントからなり、サーバはスライスの演算結果をクライアントに送信し、クライアントは、各スライスの演算結果を各サーバに送信するように構成された請求項1から4のいずれかに記載のニューラルネットワーク・シミュレーション演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate