開発・改良に意欲的に取り組んでいます。ユーザの皆さまから寄せられるご意見やご感想は、改善点の優先順位などを検討する際に、貴重なご意見として役立ててまいります。技術分野[0001]本発明は、ニューラルネットワークを用いた機械学習である深層学習を複数の学習ノードで分散協調して実行する分散学習システム、分散学習方法、およびコンピューティングインタコネクト装置に関する。背景技術[0002]様々な情報、データに対する機械学習の活用により、サービスの高度化・付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要である場合が多い。深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習用データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが1つの解決法になる。network)を介して接続された分散深層学習システムが開示されている。Unit)が搭載されている。この非特許文献1に開示された分散深層学習システムでは、4台の学習ノード300-1~300-4によって、学習演算を並列処理することによって高速化を図っている。[0004]非特許文献2には、8台のGPUを搭載した学習ノード(GPUサーバ)とイーサネット(登録商標)スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献2には、学習ノードを1台、2台、4台、8台、16台、32台、44台用いた場合の例がそれぞれ開示されている。Descent))を用いて機械学習を行う。具体的には、以下の手順で行う。[0005](I)学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。(II)ミニバッチをGPUの台数分に分けて、各GPUに割り当てる。(III)各GPUにおいて、(II)で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解(教師データと呼ぶ)からどれだけ乖離しているかの指標となる損失関数L(w)を求める。propagation)と呼ぶ。[0006](IV)各GPUにおいて、(III)で求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。propagation)と呼ぶ。(V)各GPU毎に計算した勾配の平均を計算する。各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数L(w)を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数L(w)が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。network)を介して接続された構成の分散深層学習システムが開示されている。[0009]非特許文献1~3のいずれの分散深層学習システムにおいても、学習ノード数が増えるに従い、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各学習ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを学習ノード間で送受信するか、あるいは学習ノードと非特許文献1のヘッドノードとの間で送受信することにより、平均値算出等の計算を行う必要がある。[0010]一方、並列処理数を増やすために、ノード数を増やすにつれ、必要な通信処理は急速に増大する。従来技術のように、学習ノードやヘッドノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバーヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。[0011]非特許文献3には、学習処理を100サイクル行うのにかかる所要時間とこのうちの通信にかかる時間と、GPU数との関係が開示されている。発明が解決しようとする課題[0013]本発明は、上述した課題を解決するためになされたものであり、通信ネットワークに接続された多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理をより高速に行うことができる分散深層学習システムを提供することを目的とする。課題を解決するための手段[0014]上述した課題を解決するために、本発明に係る分散深層学習システムは、1方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備え、各コンピューティングインタコネクト装置は、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第1受信部と、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第2受信部と、この第2受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第2受信部によって取得された前記転送データを振り分ける第1振分部と、前記第1受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第1受信部によって取得された前記ノードデータを振り分ける第2振分部と、前記第2振分部によって振り分けられた前記ノードデータ、または前記第1振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第1送信部と、前記第1振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第2送信部とを備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第1送信部および前記第2送信部に振り分け、前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、前記第2振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第1送信部に振り分け、各学習ノードは、学習データの入力に対して演算結果を出力するニューラルネットワークと、データをパケット化して、自ノードと接続されたコンピューティングインタコネクト装置に送信する第3送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第3受信部と、この第3受信部が取得した前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新部とを備えることを特徴とする。[0015]また、本発明に係る分散深層学習システムにおいて、前記コンピューティングインタコネクト装置は、前記第1振分部によって振り分けられた前記転送データと、前記第2振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、前記第2振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第1送信部に出力してもよい。[0016]また、本発明に係る分散深層学習システムにおいて、前記コンピューティングインタコネクト装置は、前記ノードデータを記憶する機能をもつ構成パラメータメモリと、前記第1振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算部と、をさらに備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第1送信部および前記第2送信部に出力し、前記第1送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、前記第2送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信してもよい。[0017]また、本発明に係る分散深層学習方法は、1方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備える分散深層学習システムにおける分散深層学習方法であって、各コンピューティングインタコネクト装置が、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第1受信ステップと、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第2受信ステップと、この第2受信ステップで受信された前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第2受信ステップで取得された前記転送データを振り分ける第1振分ステップと、前記第1受信ステップで受信された前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第1受信ステップで取得された前記ノードデータを振り分ける第2振分ステップと、前記第2振分ステップで振り分けられた前記ノードデータ、または前記第1振分ステップで振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第1送信ステップと、前記第1振分ステップで振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第2送信ステップとを備え、各学習ノードが、ニューラルネットワークに学習データを入力して演算結果を出力するニューラルネットワーク演算ステップと、データをパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第3送信ステップと、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第3受信ステップと、この第3受信ステップで取得された前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新ステップとを備えることを特徴とする。[0018]また、本発明に係る分散深層学習方法において、前記コンピューティングインタコネクト装置が、前記ノードデータを構成パラメータメモリに記憶する構成パラメータ記憶ステップと、前記第1振分ステップで振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算ステップと、をさらに備えていてもよい。[0019]また、本発明に係るコンピューティングインタコネクト装置は、1方向に通信可能なリング型の通信ネットワークを介して互いに接続され、かつ、複数の学習ノードのそれぞれと一対一に接続された複数のコンピューティングインタコネクト装置であって、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第1受信部と、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第2受信部と、この第2受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第2受信部によって取得された前記転送データを振り分ける第1振分部と、前記第1受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第1受信部によって取得された前記ノードデータを振り分ける第2振分部と、前記第2振分部によって振り分けられた前記ノードデータ、または前記第1振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第1送信部と、前記第1振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第2送信部とを備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第1送信部および前記第2送信部に振り分け、前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、前記第2振分部は、記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第1送信部に振り分けることを特徴とする。[0020]また、本発明に係るコンピューティングインタコネクト装置において、前記第1振分部によって振り分けられた前記転送データと、前記第2振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、前記第2振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第1送信部に出力してもよい。[0021]また、本発明に係るコンピューティングインタコネクト装置において、前記ノードデータを記憶する機能をもつ構成パラメータメモリと、前記第1振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されているデータを更新する構成パラメータ更新演算部とをさらに備え、前記第1振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第1送信部および前記第2送信部に出力し、前記第1送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、前記第2送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信してもよい。発明の効果[0022]本発明によれば、コンピューティングインタコネクト装置が各学習ノードで計算された勾配の値の和を計算し、計算した結果を各学習ノードに返送する処理を行い、この処理と各学習ノード間の通信パケットの送受信処理とが同時並行して実行される。そのため、通信ネットワークに接続された多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理をより高速に行うことができる。図1は、本発明の第1の実施の形態に係る分散深層学習システムの構成を示すブロック図である。図2は、2層ニューラルネットワークの構成を示すブロック図である。図3は、従来の分散深層学習処理の手順を説明する図である。図4は、本発明の第1の実施の形態に係る学習ノードの構成を示すブロック図である。図5は、本発明の第1の実施の形態に係る分散学習処理の手順を説明する図である。図6は、本発明の第1の実施の形態に係る分散学習処理の手順を説明する図である。図7Aは、本発明の第1の実施の形態に係る分散深層学習処理システムの動作を説明する図である。図7Bは、本発明の第1の実施の形態に係る分散深層学習処理システムの動作を説明する図である。図7Cは、本発明の第1の実施の形態に係る分散深層学習処理システムの動作を説明する図である。図7Dは、図7Aから図7Cの演算情報テーブルを示す図である。図8Aは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Bは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Cは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Dは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Eは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Fは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図8Gは、本発明の第1の実施の形態に係る分散深層学習システムの動作を説明する図である。図9は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置の構成を示すブロック図である。図10は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_0)の動作を説明する図である。図11は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_1)の動作を説明する図である。図12は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_2)の動作を説明する図である。図13は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_0)の動作を説明する図である。図14は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_1)の動作を説明する図である。図15は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_2)の動作を説明する図である。図16は、本発明の第1の実施の形態に係るコンピューティングインタコネクト装置(1CI_0)の動作を説明する図である。図17Aは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Bは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Cは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Dは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Eは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Fは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Gは、本発明の第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図18は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置の構成を示すブロック図である。図19は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_0’)の動作を説明する図である。図20は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_1’)の動作を説明する図である。図21は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_2’)の動作を説明する図である。図22は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_0’)の動作を説明する図である。図23は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_1’)の動作を説明する図である。図24は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_2’)の動作を説明する図である。図25は、本発明の第2の実施の形態に係るコンピューティングインタコネクト装置(1CI_0’)の動作を説明する図である。図26は、従来の分散深層学習システムの構成を示すブロック図である。発明を実施するための形態[0024]以下、本発明の好適な実施の形態について、図1から図25を参照して詳細に説明する。[0025][第1の実施の形態]図1は、本発明の第1の実施の形態に係る分散深層学習システムの構成を示すブロック図である。Interconnect:CI)装置1CI_0~1CI_3がリング型の通信ネットワーク3で互いに接続され、コンピューティングインタコネクト装置1CI_0~1CI_3のそれぞれに学習ノード2-0~2-3のそれぞれが一対一となるように接続された構造を有する。[0026]なお、本発明において、コンピューティングインタコネクト装置とは、ネットワーク上に分散配置されている機器を意味する。以下、コンピューティングインタコネクト装置1CI_0~1CI_3を総称してコンピューティングインタコネクト1ということがある。同様に、学習ノード2-0~2-3を総称して学習ノード2ということがある。Integration)回路で実現してもよい。[0028]コンピューティングインタコネクト装置1CI_0~1CI_3間は、イーサネット(登録商標)や、インフィニバンド(InfiniBand、登録商標)などの、通信パケットをやりとりすることで通信を行う通信ネットワークで互いに接続されている。[0029]コンピューティングインタコネクト装置1CI_0~1CI_3と学習ノード2-0~2-3との間は、イーサネットや、インフィニバンド(InfiniBand)などの通信ネットワークで互いに接続されていてもよい。Express(登録商標)などのI/Oインタフェースにコンピューティングインタコネクト装置1CI_0~1CI_3を直に挿入する接続構成を採用してもよい。[0030][学習ノードの説明]学習ノード2は、数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ装置である。ニューラルネットワークは、各学習ノード2-0~2-3内に構築される。学習ノード2-0~2-3が備える各機能ブロックの詳細については後述する。[0031][学習についての説明]学習ノード2におけるニューラルネットワークの学習処理について、教師データ付き学習を例に説明する。図2にニューラルネットワークの例として入力層(第1層)、中間層(第2層)、出力層(第3層)からなるごく単純な2層ニューラルネットワークを示す。図2のNk(i)は第k層、i番目のニューロンである。x1,x2は入力、y1,y2は出力、w1(11),w1(12),・・・,w1(23)は第1層目の重みパラメータ、w2(11),w2(12),・・・,w2(32)は第2層目の重みパラメータである。[0032]教師データ付き学習の場合、各学習データには対応する教師データ(正解データ)が予め用意されており、ニューラルネットワークの出力値が教師データに近くなるように、ニューラルネットワークの構成パラメータを更新していく。図2の例の場合のニューラルネットワークの構成パラメータは、重みw1(11),w1(12),・・・,w1(23),w2(11),w2(12),・・・,w2(32)である。これらの構成パラメータを最適化していくことにより、ニューラルネットワークの精度を上げていく。[0033]具体的には、ニューラルネットワークの出力値が教師データとどれだけ乖離しているかの指標となる損失関数を定め、この損失関数が小さくなるように構成パラメータを更新していく。この例では、入力学習データx1,x2に対応する出力値をy1,y2、教師データをt1,t2とすると、損失関数Lは、例えば次式のようになる。[0034][数1][0035]次に、この損失関数Lに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル(これを勾配と呼ぶ)を求める。この例では、勾配は以下のようになる。[0036][数2][0037]次に、勾配を用いて、損失関数Lがより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。更新の方法はいろいろあるが、例えば勾配降下法を用いて、それぞれの重みパラメータを以下のように更新する。[0038][数3][0039]ここで、ηは学習率と呼ばれる定数である。式(3)により、各重みパラメータを、勾配と逆の方向、すなわち、損失関数Lを減少させる方向に学習率ηに比例する量だけ変化させている。そのため、更新後のニューラルネットワークの損失関数Lは更新前より小さくなる。[0040]このように、1組の入力学習データに対して、損失関数Lの計算、勾配の計算、構成パラメータの更新の処理を行う。この構成パラメータの更新されたニューラルネットワークに対して、次の入力学習データを入力して同じ処理を行い、構成パラメータを更新する。このサイクルを繰り返すことにより、損失関数Lが小さいニューラルネットワークに更新していくことで、ニューラルネットワークの学習を行う。propagation)と呼ぶ。propagation)と呼ぶ手法を用いることが多い。[0042][複数の学習ノードによる分散学習処理]以上のようなニューラルネットワークの学習で十分な精度を達成するには、大量の学習データをニューラルネットワークに入力して学習処理を繰り返す必要があり、長い時間を要する。この学習にかかる所要時間を短縮することは大きなメリットがある。[0043]学習にかかる所要時間を短縮するため、同じニューラルネットワークの学習ノード2を複数用意して、学習データをそれぞれの学習ノード2に分けて並列で学習させることにより、トータルの学習時間を短縮する分散協調学習の手法がとられる。[0044]以下、従来の分散学習処理の手順を図3を用いて説明する。最初に、学習データxを学習ノード400-0~400-3の台数分に分けて、各学習ノード400-0~400-3に割り当てる。図3では、各学習ノード400-0~400-3に割り当てる学習データの代表としてx0~x3を1つずつ記載しているが、学習データx0~x3はそれぞれ1または複数の学習データの集合からなる。propagation)の手法によりそれぞれ損失関数Lを求める(図3ステップS100)。得られる損失関数Lは、各学習ノード400-0~400-3(各ニューラルネットワーク)につき1つである。propagation)の手法により求める(図3ステップS101)。損失関数Lの勾配とは、式(2)に示すように構成パラメータ毎の成分を含むベクトルである。[0047]次に、各学習ノード400-0~400-3でそれぞれ計算した勾配の平均を例えばヘッドノード402において計算して、計算した結果をヘッドノード402から各学習ノード400-0~400-3に返送する(図3ステップS102)。この処理を「All-reduce処理」と呼ぶ。勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに(1/学習ノード数)を乗じれば、勾配の平均値を求めるのと同じ結果になる。勾配の平均の代わりに、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、各勾配の二乗の和をとるようにしてもよい。[0048]最後に、各学習ノード400-0~400-3は、ステップS102で計算された勾配の平均値を用いて、ニューラルネットワークの重みパラメータを更新する(図3ステップS103)。以上で、分散学習の1サイクルが終了する。[0049][学習ノードの機能ブロック]次に、本実施の形態に係る分散深層学習システムの動作の概要についての説明に先立って学習ノード2の機能構成を説明する。図4は学習ノード2の構成例を示すブロック図である。学習ノード2は、入力部20、損失関数計算部21、勾配計算部22、送信部23、受信部24、構成パラメータ更新部25、およびニューラルネットワーク26を備える。学習ノード2-0~2-3はそれぞれ同様の構成を有する。[0050]入力部20は、学習データを受け取る。損失関数計算部21は、学習データが入力されたときに、損失関数Lをニューラルネットワーク26の構成パラメータ毎および学習データ毎に計算する。勾配計算部22は、損失関数Lの勾配を学習データ毎に計算した後に、勾配を集計した値を構成パラメータ毎に生成する。[0051]送信部23(第3送信部)は、勾配計算部22によって計算された勾配の値をパケット化してコンピューティングインタコネクト装置1に送信する。詳細には、送信部23は、勾配計算部22によって計算された勾配の計算結果と、この計算結果に対応する構成パラメータに固有のシーケンシャル番号と対応する演算IDとを後述する通信パケットのデータペイロードに書き込んで、自ノードと接続されているコンピューティングインタコネクト装置1に送信する。[0052]受信部24(第3受信部)は、コンピューティングインタコネクト装置1から送信された通信パケットを受信する。詳細には、学習ノードの受信部24は、自ノードと接続されているコンピューティングインタコネクト装置1から受信した通信パケットのデータペイロードから勾配の和(転送データ)の計算結果とシーケンシャル番号と演算IDとを取り出す。[0053]構成パラメータ更新部25は、コンピューティングインタコネクト装置1から送信された通信パケットに格納されている勾配の和を用いてニューラルネットワークの構成パラメータ(重みパラメータ)を更新する。詳細には、構成パラメータ更新部25は、勾配の和の計算結果を基に、シーケンシャル番号で特定される、ニューラルネットワーク26の構成パラメータを更新する。[0054]ニューラルネットワーク26は、数学モデルであるニューラルネットワークの出力値を計算する。本実施の形態では、1つの演算IDの演算対象となっている各学習ノード2のニューラルネットワーク26の構成は同一であるものとし、以下の他の実施の形態でも同様とする。[0055][本実施の形態の分散処理]次に、本実施の形態に係る学習ノード2-0~2-3とコンピューティングインタコネクト装置1CI_0~1CI_3とで行われる分散学習処理の手順を図5を用いて説明する。本実施の形態では、各学習ノード2-0~2-3は、従来例と同様に、それぞれ学習データx0~x3をニューラルネットワーク26に入力して損失関数Lをそれぞれ計算する(図5ステップS200)。[0056]より詳細には、入力部20に学習データが入力される。21は、学習データが入力されると、損失関数Lをニューラルネットワーク26の構成パラメータ毎および学習データ毎に計算する。[0057]続いて、勾配計算部22は、算出された損失関数Lの勾配を計算する(図5ステップS201)。詳細には、勾配計算部22は、損失関数Lの勾配を学習データ毎に計算した後に、勾配を集計した値を構成パラメータ毎に生成する。[0058]そして、各学習ノード2-0~2-3の送信部23は、それぞれ算出された勾配の値を、各学習ノード2-0~2-3とそれぞれ接続されたコンピューティングインタコネクト装置1CI_0~1CI_3に送信する(図5ステップS202)。[0059]なお、図3の従来例と同様に、図5では、各学習ノード2-0~2-3に割り当てる学習データの代表としてx0~x3を1つずつ記載しているが、学習データx0~x3はそれぞれ1または複数の学習データの集合からなる。[0060]次に、コンピューティングインタコネクト装置1CI_0~1CI_3は、各学習ノード2-0~2-3の送信部23から送信された各勾配の計算値を、コンピューティングインタコネクト装置1CI_0~1CI_3間の通信ネットワーク3を使って順番に加算していく。この結果得られる全勾配の平均値を各学習ノード2-0~2-3に送信する(図5ステップS203,S204)。このように本実施の形態では、コンピューティングインタコネクト装置1CI_0~1CI_3を用いてAll-reduce処理を行う。[0061]最後に、各学習ノード2-0~2-3の受信部24は、コンピューティングインタコネクト装置1CI_0~1CI_3から送信された勾配の平均値を受信する。構成パラメータ更新部25は、受信された勾配の平均値を用いて、ニューラルネットワーク26の構成パラメータを更新する(図5ステップS205)。[0062]なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに(1/学習ノード数)を乗じれば、勾配の平均値を求めるのと同じ結果になる。各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、勾配の二乗平均平方根をとるようにしてもよい。以上で、本実施の形態の分散学習の1サイクルが終了する。[0063]通常、勾配計算は逆伝搬の手法に従って、ニューラルネットワーク26の出力層から入力層に向かって順番に各層の構成パラメータ(重みパラメータ)に対する勾配の成分を計算していく。したがって、各学習ノード2-0~2-3の勾配計算結果をコンピューティングインタコネクト装置1CI_0~1CI_3に送信するにあたっては、全ての層の勾配計算が終わるまで待つ必要はない。[0064]そこで、図6に示すように、各学習ノード2-0~2-3の損失関数計算部21は、まず上記と同様に損失関数Lを計算し(図6ステップS200)、損失関数Lの勾配を計算する(図6ステップS201)。その後、ステップS201において勾配計算部22がすべての構成パラメータに対する勾配成分の計算が終了するのを待つことなく、送信部23は計算が終わった構成パラメータに対する勾配成分からコンピューティングインタコネクト装置1CI_0~1CI_3に送信することができる(図6ステップS206)。[0065]コンピューティングインタコネクト装置1CI_0~1CI_3は、各学習ノード2-0~2-3から送信された勾配成分の平均値を計算し(図6ステップS207)、計算が終わった勾配成分の平均値を各学習ノード2-0~2-3に送信する(図6ステップS208)。[0066]各学習ノード2-0~2-3の受信部24は、コンピューティングインタコネクト装置1CI_0~1CI_3から計算結果を受信すると、構成パラメータ更新部25は、すべての計算結果を受信するまで待つことなく、受信した勾配成分の平均値を用いて、対応する構成パラメータを更新する(図6ステップS209)。して、本実施の形態では勾配計算とAll-reduce処理と構成パラメータ更新とをパイプライン式に処理できるので、学習処理の更なる高速化が可能である。[0067][分散深層学習システムの動作の概要]図7A、図7B、図7Cは、本実施の形態の分散深層学習システムの典型的な動作例を説明する図である。分散深層学習システムでは、ニューラルネットワークモデル、入力学習データがそれぞれ異なる4つの学習演算(演算1~4)を順番に処理している。[0068]図7Aに示すように、まず、演算1が学習ノード2-0~2-3の4台の学習ノード2-0~2-3で並列演算される。これを終了後、図7Bに示すように、演算2が学習ノード2-0、学習ノード2-1、学習ノード2-3の3台の学習ノードで並列演算される。[0069]最後に、図7Cに示すように演算3と演算4が同時に処理されている。このとき、演算3は学習ノード2-0および学習ノード2-1で、演算4は学習ノード2-2および学習ノード2-3で並列処理されている。[0070]本発明の分散深層学習システムでは、並列学習演算している学習ノード2に接続するコンピューティングインタコネクト装置1CI_0~1CI_3のうち、1台が親として動作し、それ以外は子として動作する。図7Aの例では、コンピューティングインタコネクト装置1CI_0が親、コンピューティングインタコネクト装置1CI_1~1CI_3が子として動作している。[0071]また、図7Bでは、コンピューティングインタコネクト装置1CI_0が親、コンピューティングインタコネクト装置1CI_1,1CI_3が子として動作している。学習データの規模が大きくない場合やそれほど高速に処理する必要がない場合は、図7Bのように、リング型の通信ネットワーク3に接続される学習ノード2-0~2-3の一部だけを使うことも想定される。[0072]図7Cでは、演算3に対しては、コンピューティングインタコネクト装置1CI_0を親、コンピューティングインタコネクト装置1CI_1を子としている。演算4に対しては、コンピューティングインタコネクト装置1CI_2を親、コンピューティングインタコネクト装置1CI_3を子として動作させている。いずれの役割を割り当てられているか示す演算情報テーブル(図7D)を用いる。各学習ノード2-0~2-3およびコンピューティングインタコネクト装置1CI_1~1CI_3はこの演算情報テーブルを共有し、この内容に従って、各演算ごとに指定された動作を行う。[0074][分散深層学習システムの動作の具体例]以下、図7Bの場合(演算ID=2の場合)を例にとって、図8Aから図8Gを用いて本実施の形態の分散深層学習システムの動作を説明する。[0075]図8Aに示すように、コンピューティングインタコネクト装置1CI_0に接続された学習ノード2-0から勾配の計算結果G0をコンピューティングインタコネクト装置1CI_0に送信する。コンピューティングインタコネクト装置1CI_0は、勾配の計算結果G0を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_1に転送する。[0076]図8Bに示すように、コンピューティングインタコネクト装置1CI_1は、コンピューティングインタコネクト装置1CI_0から送信された勾配の計算結果G0と、コンピューティングインタコネクト装置1CI_1の直下の学習ノード2-1から送信された勾配の計算結果G1との和G0+G1を計算する。コンピューティングインタコネクト装置1CI_1は、この計算結果G0+G1を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2に送信する。[0077]図8Cに示すように、本演算では、学習ノード2-2は演算対象外なので、コンピューティングインタコネクト装置1CI_2は、コンピューティングインタコネクト装置1CI_1から送信された勾配の計算結果G0+G1に対して和演算を行わない。コンピューティングインタコネクト装置1CI_2は、計算結果G0+G1をそのまま通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_3へ送信する。[0078]図8Dに示すように、コンピューティングインタコネクト装置1CI_3では、コンピューティングインタコネクト装置1CI_1と同様の演算を行う。コンピューティングインタコネクト装置1CI_3は、コンピューティングインタコネクト装置1CI_2から送信された勾配の和の計算結果G0+G1と、コンピューティングインタコネクト装置1CI_3の直下の学習ノード2-3から送信された勾配の計算結果G3との和ΣG=G0+G1+G3を計算する。コンピューティングインタコネクト装置1CI_3は、この計算結果ΣGを通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_0に送信する。[0079]また、図8Dに示すように、勾配の和の計算結果ΣGを受信したコンピューティングインタコネクト装置1CI_0は、受信した勾配の和ΣGを直下の学習ノード2-0とコンピューティングインタコネクト装置1CI_1とに送信する。[0080]図8Eに示すように、勾配の和ΣGを受信したコンピューティングインタコネクト装置1CI_1は、勾配の和ΣGを直下の学習ノード2-1とコンピューティングインタコネクト装置1CI_2とに送信する。[0081]図8Fに示すように、勾配の和ΣGを受信したコンピューティングインタコネクト装置1CI_2は、勾配の和ΣGを直下の学習ノード2-2へは送信せず、コンピューティングインタコネクト装置1CI_3のみに通信ネットワーク3を介して送信する。[0082]図8Gに示すように、コンピューティングインタコネクト装置1CI_3は、コンピューティングインタコネクト装置1CI_2から送信された勾配の和ΣGを直下の学習ノード2-3とコンピューティングインタコネクト装置1CI_0とに送信する。[0083]最後に、図8Gに示すように、勾配の和ΣGを受信したコンピューティングインタコネクト装置1CI_0は、勾配の和ΣGを廃棄する。以上の動作により、各学習ノード2-0,2-1,2-3に勾配の和ΣGが送信される。[0084][コンピューティングインタコネクト装置の構成]図9は、コンピューティングインタコネクト装置1の構成例を示すブロック図である。コンピューティングインタコネクト装置1は、受信部100,103、振分部101,104、バッファメモリ102,105、加算器106、送信部107,108、および制御部109を備える。[0085]受信部100(第2受信部)は、1方向(本実施の形態では反時計回りの方向)に限定して通信を行うリング型の通信ネットワーク3において隣接する上流側のコンピューティングインタコネクト装置1(例えば、図1においてそれぞれ左隣のコンピューティングインタコネクト装置1)からの通信パケットを受信し、このパケットに格納されたデータ(転送データ)を取得する。[0086]振分部101(第1振分部)は、通信パケットに含まれるデータの受信が完了されたか否かを示す受信完了フラグ(完了/未了)とそのコンピューティングインタコネクト装置1に割り当てられた役割(親/子/計算対象外(非親子))に応じて受信部100からのデータを振り分ける。バッファメモリ102は、振分部101からのデータを一時的に記憶する。[0087]受信部103(第1受信部)は、コンピューティングインタコネクト装置1の直下に設けられている学習ノード2からの通信パケットを受信し、このパケットに格納されたデータ(ノードデータ)を取得する。振分部104(第2振分部)は、自装置であるコンピューティングインタコネクト装置1に割り当てられた役割に応じて受信部103からのデータを振り分ける。[0088]バッファメモリ105は、振分部104からのデータを一時的に記憶する。加算器106(演算器)は、バッファメモリ102,105に一時的に記憶された勾配の値を読み出して勾配の和を計算する。送信部107(第1送信部)は、リング型のネットワーク3において隣接する下流側のコンピューティングインタコネクト装置1(右隣のコンピューティングインタコネクト装置1)へ、振分部101または振分部104によって振り分けられたデータをパケット化した通信パケットを送信する。[0089]送信部108(第2送信部)は、コンピューティングインタコネクト1の直下に設けられている学習ノード2に、振分部101によって振り分けられたデータをパケット化した通信パケットを送信する。制御部109は、バッファメモリ102,105を制御する。[0090][コンピューティングインタコネクト装置の動作の具体例]図10は、図8Aにおけるコンピューティングインタコネクト装置1CI_0の動作を説明する図である。図10に示すように、通信パケットは、通信ヘッダとデータペイロードとからなる。[0091]学習ノード2-0から送信される通信パケットRP0のデータペイロードには、学習ノード2-0で計算された勾配値「G0」と、演算ID「002」と、勾配値のシーケンシャル番号「003」と、コンピューティングインタコネクト装置1CI_0で勾配の和の取得完了または未了を示す受信完了フラグ(図10の例では「未了」)とが格納されている。[0092]コンピューティングインタコネクト装置1CI_0の受信部103は、受信した通信パケットRP0のデータペイロードから勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部104に渡す。[0093]振分部104では、受信部103から受け取った演算IDと演算情報テーブルをつきあわせて、この演算ID=2に対しては、コンピューティングインタコネクト装置1CI_0は「親」として動作すべきことを識別する。これにより、振分部104は勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを送信部107に渡す。[0094]送信部107は、振分部104から受け取った勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC1のデータペイロードに格納する。送信部107は、通信パケットTPC1を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_0に隣接する下流側のコンピューティングインタコネクト装置(図8Aの例ではコンピューティングインタコネクト装置1CI_1)へ送信する。[0095]図11は、図8Bにおけるコンピューティングインタコネクト装置1CI_1の動作を示している。コンピューティングインタコネクト装置1CI_1の受信部100は、コンピューティングインタコネクト装置1CI_0から受信した通信パケットTPC1のデータペイロードから勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0096]振分部101は、受信部100から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_1は「子」として動作すべきことを識別する。これにより、振分部101は、勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとをバッファメモリ102に格納する。[0097]一方、コンピューティングインタコネクト装置1CI_1の受信部103は、直下に接続されている学習ノード2-1から受信した通信パケットRP1のデータペイロードから勾配値G1と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部104に渡す。[0098]コンピューティングインタコネクト装置1CI_1の振分部104では、受信部103から受け取った演算IDと演算情報テーブルをつきあわせて、この演算ID=2に対しては、コンピューティングインタコネクト装置1CI_1は「子」として動作すべきことを識別する。これにより、振分部104は、勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとをバッファメモリ105に格納する。[0099]コンピューティングインタコネクト装置1CI_1の制御部109は、バッファメモリ102とバッファメモリ105に同一のシーケンシャル番号の勾配値「G0」と「G1」とが揃った時点で、バッファメモリ102から勾配値「G0」とシーケンシャル番号と受信完了フラグとを読み出す。これと同時に、制御部109は、バッファメモリ105から勾配値「G1」とシーケンシャル番号と受信完了フラグとを読み出し、勾配値「G0」と「G1」とを加算器106に渡す。[0100]加算器106は、勾配値「G0」と「G1」とを加算する。制御部109は、バッファメモリ102から読み出した演算IDとシーケンシャル番号と受信完了フラグとを送信部107に渡す。[0101]コンピューティングインタコネクト装置1CI_1の送信部107は、加算器106によって計算された勾配の和「G0+G1」、および制御部109から受け取った演算IDとシーケンシャル番号と受信完了フラグを通信パケットTPC2のデータペイロードに格納する。送信部107は、通信パケットTPC2を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_1に隣接する下流側のコンピューティングインタコネクト装置(図8Bの例ではコンピューティングインタコネクト装置1CI_2)へ送信する。[0102]図12は、図8Cにおけるコンピューティングインタコネクト装置1CI_2の動作を示している。コンピューティングインタコネクト装置1CI_2の受信部100は、コンピューティングインタコネクト装置1CI_1から受信した通信パケットTPC2のデータペイロードから勾配値「G0+G1」と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0103]振分部101は、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対しては、コンピューティングインタコネクト装置1CI_2は「演算対象外(非親子)」として動作すべきことを識別する。これにより、振分部101は、勾配値「G0+G1」と演算IDとシーケンシャル番号と受信完了フラグとを送信部107に送信する。[0104]送信部107は、振分部101から受け取った勾配値「G0+GI」と演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC3のデータペイロードに格納する。送信部107は、通信パケットTPC3を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2に隣接する下流側のコンピューティングインタコネクト装置(図8Cの例ではコンピューティングインタコネクト装置1CI_3)へ送信する。[0105]図13は、図8Dにおけるコンピューティングインタコネクト装置1CI_0の動作を示している。コンピューティングインタコネクト装置1CI_0の受信部100は、コンピューティングインタコネクト装置1CI_0に隣接する上流側のコンピューティングインタコネクト装置(図8Dの例ではコンピューティングインタコネクト装置1CI_3)から受信した通信パケットTPC0のペイロードから勾配の和ΣG(=G0+G1+G3)と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0106]振分部101は、受信部100から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_0は「親」として動作すべきことを識別する。これにより、振分部101は、勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを送信部107、および送信部108に渡す。[0107]このとき、「親」であるコンピューティングインタコネクト装置1CI_0が隣接する上流側のコンピューティングインタコネクト装置1CI_3から受信完了フラグが「未了」である通信パケットを受信したということは、通信パケットがリング型の通信ネットワーク3を一巡し、勾配の和の計算が完了したことを意味する。そこで、コンピューティングインタコネクト装置1CI_0の振分部101は、受信部100から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上で送信部107と送信部108とにデータを渡す。[0108]コンピューティングインタコネクト装置1CI_0の送信部107は、振分部101から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC1のデータペイロードに格納する。送信部107は、通信パケットTPC1を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_0に隣接する下流側のコンピューティングインタコネクト装置(図8Dの例ではコンピューティングインタコネクト装置1CI_1)へ送信する。[0109]コンピューティングインタコネクト装置1CI_0の送信部108は、振分部101から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTP0のデータペイロードに格納して、通信パケットTP0を学習ノード2-0へ送信する。[0110]図14は、図8Eにおけるコンピューティングインタコネクト装置1CI_1の動作を示している。コンピューティングインタコネクト装置1CI_1の受信部100は、コンピューティングインタコネクト装置1CI_0から受信した通信パケットTPC1のデータペイロードから勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0111]振分部101は、受信部100から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_1は「子」として動作すべきことを識別する。これにより、振分部101は、勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを送信部107、および送信部108に渡す。[0112]送信部107は、振分部104から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC2のデータペイロードに格納する。送信部107は、通信パケットTPC2を、コンピューティングインタコネクト装置1CI_1に隣接する下流側のコンピューティングインタコネクト装置(図8Eの例ではコンピューティングインタコネクト装置1CI_2)へ送信する。[0113]コンピューティングインタコネクト装置1CI_1の送信部108は、振分部101から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTP1のデータペイロードに格納して、通信パケットTP1を学習ノード2-1へ送信する。[0114]図15は、図8Fにおけるコンピューティングインタコネクト装置1CI_2の動作を示している。コンピューティングインタコネクト装置1CI_2の受信部100は、コンピューティングインタコネクト装置1CI_1から受信した通信パケットTPC2のデータペイロードから勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0115]振分部101は、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対しては「演算対象外(非親子)」として動作すべきことを識別する。これにより、振分部101は、勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを送信部107に送信する。[0116]送信部107は、振分部101から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC3のデータペイロードに格納する。送信部107は、通信パケットTPC3を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2に隣接する下流側のコンピューティングインタコネクト装置(図8Fの例ではコンピューティングインタコネクト装置1CI_3)へ送信する。[0117]図16は、図8Gにおけるコンピューティングインタコネクト装置1CI_0の動作を示している。コンピューティングインタコネクト装置1CI_0の受信部100は、コンピューティングインタコネクト装置1CI_0に隣接する上流側のコンピューティングインタコネクト装置(図8Gの例ではコンピューティングインタコネクト装置1CI_3)から受信した通信パケットTPC0のペイロードから勾配の和ΣGとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0118]振分部101は、受信部100から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_0は「親」として動作すべきことを識別する。振分部101は、受信部100から受け取った勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを廃棄する。[0119]なお、ここでは、各勾配の和を用いて重みパラメータの更新処理を行う場合を例に説明したが、各勾配の和の代わりに各勾配の重み付き和を用いる場合は、加算器106の代わりにGinとG_localに対する重み付き和演算器を用いてもよい。各勾配の和の代わりに各勾配の二乗和を用いる場合は、加算器106の代わりにGinとG_localに対する二乗和演算器を用いてもよい。加算器106の代わりにGinとG_localを入力とする任意の演算器を用いた場合も本発明を適用することが出来る。[0120]以上の動作により、演算対象の学習ノード2-0~2-1,2-3に勾配の和ΣGが送信され、各学習ノード2-0~2-1,2-3は、勾配の和ΣGを用いてニューラルネットワークの構成パラメータを更新し、分散学習の1サイクルが終了する。[0121]以上説明したように、第1の実施の形態によれば、コンピューティングインタコネクト装置1が各学習ノード2間の通信パケットの送受信処理とAll-reduce処理とを同時並行して実行する。そのため、ヘッドノードで通信処理やAll-reduce処理を実行する場合に比べて学習を高速化でき、通信ネットワーク3で接続された各学習ノード2間での協調処理をより高速に行うことができる。[0122]また、第1の実施の形態によれば、各学習ノード2が対になって接続されたコンピューティングインタコネクト装置1を通じてリング型の通信ネットワーク3に接続される構成であるので、接続される学習ノード2の数が増えた場合でも、リング型の通信ネットワーク3の通信帯域は、学習ノード2の数によらず一定でよいという利点がある。[0123][第2の実施の形態]次に、本発明の第2の実施の形態について説明する。以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。[0124]第1の実施の形態では、コンピューティングインタコネクト装置1がAll-reduce処理のみを行う場合について説明した。これに対し、第2の実施の形態に係る分散深層学習システムでは、コンピューティングインタコネクト装置1’においてニューラルネットワークの構成パラメータの更新演算についてもさらに行う点で第1の実施の形態とは異なる。[0125][分散深層学習システムの動作]図17A~図17Gは、第2の実施の形態に係る分散深層学習システムの動作を説明する図である。図17Aに示すように、コンピューティングインタコネクト装置1CI_0’に接続された学習ノード2-0から勾配の計算結果G0をコンピューティングインタコネクト装置1CI_0’に送信する。コンピューティングインタコネクト装置1CI_0’は、勾配の計算結果G0をコンピューティングインタコネクト装置1CI_1’に転送する。[0126]図17Bに示すように、コンピューティングインタコネクト装置1CI_1’は、コンピューティングインタコネクト装置1CI_0’から送信された勾配の計算結果G0と、コンピューティングインタコネクト装置1CI_1’の直下の学習ノード2-1から送信された勾配の計算結果G1との和G0+G1を計算する。コンピューティングインタコネクト装置1CI_1’はこの計算結果G0+G1を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2’に送信する。[0127]図17Cに示すように、本演算では、学習ノード2-2は演算対象外なので、コンピューティングインタコネクト装置1CI_2’は、コンピューティングインタコネクト装置1CI_1’から送信された勾配の計算結果G0+G1に対して和演算を行わない。コンピューティングインタコネクト装置1CI_2’は、計算結果G0+G1をそのまま通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_3’へ送信する。[0128]図17Dに示すように、コンピューティングインタコネクト装置1CI_3’では、コンピューティングインタコネクト装置1CI_1’と同様の演算を行う。詳細には、コンピューティングインタコネクト装置1CI_3’は、コンピューティングインタコネクト装置1CI_2’から送信された勾配の和の計算結果G0+G1と、コンピューティングインタコネクト装置1CI_3’の直下の学習ノード2-3から送信された勾配の計算結果G3との和ΣG=G0+G1+G3を計算する。[0129]コンピューティングインタコネクト装置1CI_3’は、この計算結果ΣGを通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_0’に送信する。[0130]また、図17Dに示すように、勾配の和の計算結果ΣGを受信したコンピューティングインタコネクト装置1CI_0’は、勾配の和ΣGを用いてニューラルネットワークの構成パラメータの更新後の値w_newを計算する。コンピューティングインタコネクト装置1CI_0’は、その計算結果をコンピューティングインタコネクト装置1CI_0’の直下の学習ノード2-0とコンピューティングインタコネクト装置1CI_1’とに通信ネットワーク3を介して送信する。[0131]図17Eに示すように、構成パラメータの更新後の値w_newを受信したコンピューティングインタコネクト装置1CI_1’は、構成パラメータの更新後の値w_newをコンピューティングインタコネクト装置1CI_1’の直下の学習ノード2-1とコンピューティングインタコネクト装置1CI_2’とに送信する。[0132]図17Fに示すように、構成パラメータの更新後の値w_newを受信したコンピューティングインタコネクト装置1CI_2’は、構成パラメータの更新後の値w_newを直下の学習ノード2-2へは送信せず、コンピューティングインタコネクト装置1CI_3’のみに通信ネットワーク3を介して送信する。[0133]図17Fに示すように、コンピューティングインタコネクト装置1CI_3’は、コンピューティングインタコネクト装置1CI_2’から送信された構成パラメータの更新後の値w_newをコンピューティングインタコネクト装置1CI_3’の直下の学習ノード2-3とコンピューティングインタコネクト装置1CI_0’とに送信する。[0134]最後に、図17Gに示すように構成パラメータの更新後の値w_newを受信したコンピューティングインタコネクト装置1CI_0’は、構成パラメータの更新後の値w_newを廃棄する。以上の動作により、演算対象の学習ノード2-0~2に構成パラメータの更新後の値w_newが送信される。[0135][コンピューティングインタコネクト装置の構成]次に、本実施の形態に係るコンピューティングインタコネクト装置1’の構成について、図18を参照して説明する。本実施の形態に係る学習ノード2の構成は、第1の実施の形態と同様である。[0136]コンピューティングインタコネクト装置1’は、ニューラルネットワーク(NN)構成パラメータ更新演算部110と構成パラメータメモリ111とをさらに備える点以外は、第1の実施の形態に係るコンピューティングインタコネクト装置1の構成(図9)と同様である。[0137]NN構成パラメータ更新演算部110は、ニューラルネットワークの構成パラメータの更新演算を行う。更新パラメータメモリ111は、受信部103によってコンピューティングインタコネクト装置1’の直下に接続されている学習ノード2から受信された構成パラメータを記憶する。[0138][コンピューティングインタコネクト装置の動作の具体例]図19は、図17Aにおけるコンピューティングインタコネクト装置1CI_0’の動作を示している。学習ノード2-0から送信される通信パケットRP0のデータペイロードには、学習ノード2-0で計算された勾配値「G0」と、演算ID「002」と、勾配値のシーケンシャル番号「003」と、受信完了フラグ「未了」とが格納されている。[0139]コンピューティングインタコネクト装置1CI_0’の受信部103は、受信した通信パケットRP0のデータペイロードから勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部104に渡す。[0140]振分部104では、受信部103から受け取った演算IDと演算情報テーブルをつきあわせて、この演算ID=2に対しては、コンピューティングインタコネクト装置1CI_0’は「親」として動作すべきことを識別する。これにより、振分部104は、勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを送信部107に渡す。[0141]送信部107は、振分部104から受け取った勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC1のデータペイロードに格納して、通信パケットTPC1を通信ネットワーク3を介して、隣接する下流側のコンピューティングインタコネクト装置(図17Aの例ではコンピューティングインタコネクト装置1CI_1’)へ送信する。[0142]図20は、図17Bにおけるコンピューティングインタコネクト装置1CI_1’の動作を示している。コンピューティングインタコネクト装置1CI_1’の受信部100は、コンピューティングインタコネクト装置1CI_0’から受信した通信パケットTPC1のデータペイロードから勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0143]振分部101は、受信部100から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_1’は「子」として動作すべきことを識別する。これにより、振分部101は、勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとをバッファメモリ102に格納する。[0144]一方、コンピューティングインタコネクト装置1CI_1’の受信部103は、コンピューティングインタコネクト装置1CI_1’の直下の学習ノード2-1から受信した通信パケットRP1のデータペイロードから勾配値G1と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部104に渡す。[0145]振分部104では、受信部103から受け取った演算IDと演算情報テーブルをつきあわせて、この演算ID=2に対しては、コンピューティングインタコネクト装置1CI_1’は「子」として動作すべきことを識別する。これにより、振分部104は勾配値G0と演算IDとシーケンシャル番号と受信完了フラグとをバッファメモリ105に格納する。[0146]コンピューティングインタコネクト装置1CI_1’の制御部109は、バッファメモリ102とバッファメモリ105に同一のシーケンシャル番号の勾配値「G0」と「G1」が揃った時点で、バッファメモリ102から勾配値G0とシーケンシャル番号と受信完了フラグとを読み出す。これと共に、制御部109は、バッファメモリ105から勾配値G1とシーケンシャル番号と受信完了フラグとを読み出し、勾配値「G0」と「G1」とを加算器に渡す。[0147]加算器106は、勾配値「G0」と「G1」とを加算する。制御部109は、バッファメモリ102から読み出した演算IDとシーケンシャル番号と受信完了フラグとを送信部107に渡す。[0148]コンピューティングインタコネクト装置1CI_1’の送信部107は、加算器106によって計算された勾配の和「G0+G1」、および制御部109から受け取った演算IDとシーケンシャル番号と受信完了フラグを通信パケットTPC2のデータペイロードに格納する。送信部107は、通信パケットTPC2を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_1’に隣接する下流側のコンピューティングインタコネクト装置(図17Bの例ではコンピューティングインタコネクト装置1CI_2’)へ送信する。[0149]図21は、図17Cにおけるコンピューティングインタコネクト装置1CI_2’の動作を示している。コンピューティングインタコネクト装置1CI_2’の受信部100は、コンピューティングインタコネクト装置1CI_1’から受信した通信パケットTPC2のデータペイロードから勾配値G0+G1と演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0150]振分部101は、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_2’は「演算対象外(非親子)」として動作すべきことを識別する。これにより、振分部101は、勾配値G0+G1と演算IDとシーケンシャル番号と受信完了フラグとを送信部107に送信する。[0151]送信部107は、振分部101から受け取った勾配値G0+GIと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC3のデータペイロードに格納する。送信部107は、通信パケットTPC3を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2’に隣接する下流側のコンピューティングインタコネクト装置(図17Cの例ではコンピューティングインタコネクト装置1CI_3’)へ送信する。[0152]図22は、図17Dにおけるコンピューティングインタコネクト装置1CI_0’の動作を示している。コンピューティングインタコネクト装置1CI_0’の受信部100は、コンピューティングインタコネクト装置1CI_0’に隣接する上流側のコンピューティングインタコネクト装置(図17Dの例ではコンピューティングインタコネクト装置1CI_3’)から受信した通信パケットTPC0のペイロードから勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0153]振分部101は、受信部100から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_0’は「親」として動作すべきことを識別する。[0154]これにより、振分部101は、勾配の和ΣGと演算IDとシーケンシャル番号と受信完了フラグとをNN構成パラメータ更新演算部110に渡す。このとき、振分部101は、受信部100から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上でNN構成パラメータ更新演算部110に渡す。おいて、演算対象の学習ノード2-0,2-1,2-3のニューラルネットワークは、同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値をコンピューティングインタコネクト装置1CI_0’の構成パラメータメモリ111に記憶しておく。[0156]NN構成パラメータ更新演算部110は、振分部101から受け取った勾配の和ΣGと、構成パラメータメモリ111に記憶されている構成パラメータの値w_oldとを基に、ニューラルネットワークの構成パラメータの更新後の値w_newを構成パラメータ毎に計算する。[0157]NN構成パラメータ更新演算部110は、この計算結果と振分部101から受け取った演算IDとシーケンシャル番号と受信完了フラグとを送信部107,108に出力する。NN構成パラメータ更新演算部110は、更新方法として例えば、勾配降下法を用いる場合は式(3)のような計算を行う。[0158]また、NN構成パラメータ更新演算部110は、構成パラメータの更新後の値w_newを送信部107,108に出力すると同時に、構成パラメータメモリ111に格納されている構成パラメータの値を、更新後の値w_newによって上書きする。[0159]送信部107は、NN構成パラメータ更新演算部110から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC1のデータペイロードに格納する。送信部107は、通信パケットTPC1を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_0’に隣接する下流側のコンピューティングインタコネクト装置(図17Dの例ではコンピューティングインタコネクト装置1CI_1’)へ送信する。[0160]コンピューティングインタコネクト装置1CI_0’の送信部108は、NN構成パラメータ更新演算部110から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTP0のデータペイロードに格納して、通信パケットTP0を学習ノード2-0へ送信する。[0161]図23は、図17Eにおけるコンピューティングインタコネクト装置1CI_1’の動作を示している。コンピューティングインタコネクト装置1CI_1’の受信部100は、コンピューティングインタコネクト装置1CI_0’から受信した通信パケットTPC1のデータペイロードから構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0162]振分部101は、受信部100から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_1’は「子」として動作すべきことを識別する。これにより、振分部101は、構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを送信部107、および送信部108に渡す。[0163]送信部107は、振分部101から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC2のデータペイロードに格納する。送信部107は、通信パケットTPC2を、通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_1’に隣接する下流側のコンピューティングインタコネクト装置(図17Eの例ではコンピューティングインタコネクト装置1CI_2’)へ送信する。[0164]送信部108は、振分部101から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTP1のデータペイロードに格納して、通信パケットTP1を学習ノード2-1へ送信する。[0165]図24は、図17Fにおけるコンピューティングインタコネクト装置1CI_2’の動作を示している。コンピューティングインタコネクト装置1CI_2’の受信部100は、コンピューティングインタコネクト装置1CI_1’から受信した通信パケットTPC2のデータペイロードから構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0166]振分部101は、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_2’は「演算対象外(非親子)」として動作すべきことを識別する。これにより、振分部101は、構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを送信部107に送信する。[0167]送信部107は、振分部101から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを通信パケットTPC3のデータペイロードに格納する。その後、送信部107は、通信パケットTPC3を通信ネットワーク3を介してコンピューティングインタコネクト装置1CI_2’に隣接する下流側のコンピューティングインタコネクト装置(図17Fの例ではコンピューティングインタコネクト装置1CI_3’)へ送信する。[0168]図25は、図17Gにおけるコンピューティングインタコネクト装置1CI_0’の動作を示している。コンピューティングインタコネクト装置1CI_0’の受信部100は、コンピューティングインタコネクト装置1CI_0’に隣接する上流側のコンピューティングインタコネクト装置(図17Gの例ではコンピューティングインタコネクト装置1CI_3’)から受信した通信パケットTPC0のペイロードから構成パラメータの更新後の値w_newとシーケンシャル番号と受信完了フラグとを取り出して振分部101に渡す。[0169]振分部101は、受信部100から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算IDと演算情報テーブルをつきあわせてこの演算ID=2に対してはコンピューティングインタコネクト装置1CI_0’は「親」として動作すべきことを識別する。その後、振分部101は、受信部100から受け取った構成パラメータの更新後の値w_newと演算IDとシーケンシャル番号と受信完了フラグとを廃棄する。[0170]以上の動作により、演算対象の学習ノード2-0,2-1,2-3に構成パラメータの更新後の値w_newが送信される。演算対象の学習ノード2-0,2-1,2-3は、シーケンシャル番号で特定される、ニューラルネットワーク26の構成パラメータを、構成パラメータの更新後の値w_newによって上書きすることにより、ニューラルネットワーク26を更新する。[0171]なお、ここでは、各勾配の和を用いて重みパラメータの更新処理を行う場合を例に説明したが、各勾配の和の代わりに各勾配の重み付き和を用いる場合は、第1の実施の形態と同様に加算器106の代わりにGinとG_localに対する重み付き和演算器を用いてもよい。各勾配の和の代わりに各勾配の二乗和を用いる場合は、加算器106の代わりにGinとG_localに対する二乗和演算器を用いてもよい。加算器106の代わりにGinとG_localを入力とする任意の演算器を用いた場合も本発明を適用することが出来る。[0172]以上説明したように、第2の実施の形態によれば、ニューラルネットワークの構成パラメータの更新演算処理を行うNNパラメータ更新演算部110による専用演算回路を備えるので、学習処理をより高速化することができる。勾配の和演算も、構成パラメータの更新演算も、学習ノード2が有するニューラルネットワーク26の構成に依らず、構成パラメータ毎に独立して同じ演算を行えばよい。そのため、学習ノード2-0~2-3が備えるニューラルネットワーク26の構成を変えた場合でも、コンピューティングインタコネクト装置1’の演算器には同じ専用演算回路を用いることができるというメリットがある。[0173]また、第2の実施の形態によれば、コンピューティングインタコネクト装置1’が各学習ノード2間の通信パケットの送受信処理とAll-reduce処理とを同時並行して高速にハードウェア処理できる。そのため、従来技術のようにヘッドノードで通信処理やAll-reduce処理をソフトウェア処理する場合に比べて、学習を高速化でき、通信ネットワーク3で接続された各学習ノード2間での協調処理をより高速に行うことができる。[0174]また、第2の実施の形態によれば、各学習ノード2が対になって接続されたコンピューティングインタコネクト装置1を通じてリング型の通信ネットワーク3に接続される構成であるので、接続される学習ノード2の数が増えた場合でも、リング型の通信ネットワーク3の通信帯域は、学習ノード2の数によらず一定でよいという利点がある。コンピューティングインタコネクト装置における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。符号の説明[0176]1,1’,1CI_0~1CI_3...コンピューティングインタコネクト装置、2,2-0~2-3...学習ノード、3...通信ネットワーク、20...入力部、21...損失関数計算部、22...勾配計算部、23...送信部、24...受信部、25...構成パラメータ更新部、26...ニューラルネットワーク、100,103...受信部、101,104...振分部、102,105...バッファメモリ、106...加算器、107,108...送信部、109...制御部、110...NNパラメータ更新演算部、111...構成パラメータメモリ。自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第3受信部と、この第3受信部が取得した前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新部とを備えることを特徴とする分散深層学習システム。前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第1送信部に出力することを特徴とする分散深層学習システム。前記第2送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信することを特徴とする分散深層学習システム。記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第1送信部に振り分けることを特徴とするコンピューティングインタコネクト装置。前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第1送信部に出力することを特徴とするコンピューティングインタコネクト装置。前記第2送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信することを特徴とするコンピューティングインタコネクト装置。