(57)【要約】【課題】分散深層学習を高速に行う。【解決手段】各学習ノード２−０〜２−３は、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算し、計算結果をパケット化してコンピューティングインタコネクト装置１に送信する。コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信されたパケットを受信して、このパケットに格納された勾配の値を取得し、勾配の和を計算して、計算結果をパケット化して各学習ノード２−０〜２−３に送信する。各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から送信されたパケットを受信して、このパケットに格納された値に基づいてニューラルネットワークの構成パラメータを更新する。【選択図】  図１
2019144642.tif 000002
【特許請求の範囲】
【請求項１】
複数の学習ノードと、
これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して前記コンピューティングインタコネクト装置に送信する第１の送信部と、
前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記コンピューティングインタコネクト装置は、
各学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、
この第２の受信部が取得した前記勾配の値を入力として計算処理を行う演算器と、
この演算器の計算結果をパケット化して各学習ノードに送信する第２の送信部とを備えることを特徴とする分散深層学習システム。
【請求項２】
複数の学習ノードと、
これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して前記コンピューティングインタコネクト装置に送信する第１の送信部と、
前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記コンピューティングインタコネクト装置は、
各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、
各学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、
この第２の受信部が取得した前記勾配の値を入力として計算処理を行う演算器と、
この演算器の計算結果と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、
前記構成パラメータの更新後の値をパケット化して各学習ノードに送信する第２の送信部とを備え、
各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とする分散深層学習システム。
【請求項３】
複数の学習ノードと、
これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、最上位に位置するコンピューティングインタコネクト装置は、
直下位の前記コンピューティングインタコネクト装置から送信されたパケット、および自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第２の受信部と、
この第２の受信部が取得した前記勾配の値を入力として計算処理を行う第１の演算器と、
この第１の演算器の計算結果をパケット化して、直下位の前記コンピューティングインタコネクト装置、および自装置と接続された前記学習ノードに送信する第２の送信部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、下位の前記コンピューティングインタコネクト装置または下位の前記学習ノードと上位の前記コンピューティングインタコネクト装置との間に位置するコンピューティングインタコネクト装置は、
直下位の前記コンピューティングインタコネクト装置から送信されたパケット、または自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第３の受信部と、
この第３の受信部が取得した前記勾配の値を入力として計算処理を行う第２の演算器と、
この第２の演算器の計算結果をパケット化して直上位の前記コンピューティングインタコネクト装置に送信する第３の送信部と、
直上位の前記コンピューティングインタコネクト装置から送信されたパケットを、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに転送するか、あるいは直上位の前記コンピューティングインタコネクト装置から送信されたパケットを受信してパケットに格納された値を取得し、この取得した値を再度パケット化して、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに送信する転送部とを備えることを特徴とする分散深層学習システム。
【請求項４】
複数の学習ノードと、
これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、最上位に位置するコンピューティングインタコネクト装置は、
各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、
直下位の前記コンピューティングインタコネクト装置から送信されたパケット、および自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第２の受信部と、
この第２の受信部が取得した前記勾配の値を入力として計算処理を行う第１の演算器と、
この第１の演算器の計算結果と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、
前記構成パラメータの更新後の値をパケット化して直下位の前記コンピューティングインタコネクト装置、および自装置と接続された前記学習ノードに送信する第２の送信部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、下位の前記コンピューティングインタコネクト装置または下位の前記学習ノードと上位の前記コンピューティングインタコネクト装置との間に位置するコンピューティングインタコネクト装置は、
直下位の前記コンピューティングインタコネクト装置から送信されたパケット、または自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第３の受信部と、
この第３の受信部が取得した前記勾配の値を入力として計算処理を行う第２の演算器と、
この第２の演算器の計算結果をパケット化して直上位の前記コンピューティングインタコネクト装置に送信する第３の送信部と、
直上位の前記コンピューティングインタコネクト装置から送信されたパケットを、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに転送するか、あるいは直上位の前記コンピューティングインタコネクト装置から送信されたパケットを受信してパケットに格納された値を取得し、この取得した値を再度パケット化して、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに送信する転送部とを備え、
各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とする分散深層学習システム。
【請求項５】
複数の学習ノードと、
これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、
前記複数のコンピューティングインタコネクト装置は、１方向に限定して通信を行うリング型の通信ネットワークによって接続され、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、第１のコンピューティングインタコネクト装置は、
自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、
隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第３の受信部と、
この第３の受信部が取得した前記勾配の値を出力し、既に取得した値を再度取得した場合には廃棄する第１の振分部と、
前記第２の受信部が取得した前記勾配の値、または前記第１の振分部から出力された前記勾配の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第２の送信部と、
前記第１の振分部から出力された前記勾配の値をパケット化して、自装置と接続された前記学習ノードに送信する第３の送信部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、前記第１のコンピューティングインタコネクト装置以外の第２のコンピューティングインタコネクト装置は、
隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第４の受信部と、
自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第５の受信部と、
前記第４の受信部が取得した値を、勾配に対する計算処理の未了の値と完了の値とに振り分ける第２の振分部と、
前記第２の振分部から出力された前記未了の値と前記第５の受信部が取得した前記勾配の値とを入力として計算処理を行う演算器と、
この演算器の計算結果、または前記第２の振分部から出力された前記完了の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第４の送信部と、
前記第２の振分部から出力された前記完了の値をパケット化して、自装置と接続された前記学習ノードに送信する第５の送信部とを備えることを特徴とする分散深層学習システム。
【請求項６】
複数の学習ノードと、
これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、
前記複数のコンピューティングインタコネクト装置は、１方向に限定して通信を行うリング型の通信ネットワークによって接続され、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、
この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、
この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、第１のコンピューティングインタコネクト装置は、
各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、
自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、
隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第３の受信部と、
この第３の受信部が取得した前記勾配の値を出力し、既に取得した値を再度取得した場合には廃棄する第１の振分部と、
前記第１の振分部から出力された前記勾配の値と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、
前記第２の受信部が取得した前記勾配の値、または前記構成パラメータの更新後の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第２の送信部と、
前記構成パラメータの更新後の値をパケット化して、自装置と接続された前記学習ノードに送信する第３の送信部とを備え、
前記複数のコンピューティングインタコネクト装置のうち、前記第１のコンピューティングインタコネクト装置以外の第２のコンピューティングインタコネクト装置は、
隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第４の受信部と、
自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第５の受信部と、
前記第４の受信部が取得した値を、勾配に対する計算処理の未了の値と前記構成パラメータの更新後の値とに振り分ける第２の振分部と、
前記第２の振分部から出力された前記未了の値と前記第５の受信部が取得した前記勾配の値とを入力として計算処理を行う演算器と、
この演算器の計算結果、または前記第２の振分部から出力された前記構成パラメータの更新後の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第４の送信部と、
前記第２の振分部から出力された前記構成パラメータの更新後の値をパケット化して、自装置と接続された前記学習ノードに送信する第５の送信部とを備え、
各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とする分散深層学習システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを用いた機械学習である深層学習を複数の学習ノードで分散協調して実行する分散深層学習システムに関するものである。
【背景技術】
【０００２】
様々な情報、データに対する機械学習の活用により、サービスの高度化・付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要である場合が多い。特に、深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習用データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが１つの解決法になる。
【０００３】
例えば、非特許文献１には、図３６のように、４台の学習ノード１００−１〜１００−４と、インフィニバンドスイッチ１０１と、ヘッドノード１０２とがインフィニバンドネットワーク（InfiniBand network）を介して接続された分散深層学習システムが開示されている。各学習ノード１００−１〜１００−４には、それぞれ４台のＧＰＵ（Graphics Processing Unit）が搭載されている。この非特許文献１に開示された分散深層学習システムでは、４台の学習ノード１００−１〜１００−４によって、学習演算を並列処理することによって高速化を図っている。
【０００４】
非特許文献２には、８台のＧＰＵを搭載した学習ノード（ＧＰＵサーバ）とイーサネット（登録商標）スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献２には、学習ノードを１台、２台、４台、８台、１６台、３２台、４４台用いた場合の例がそれぞれ開示されている。非特許文献２に開示されたシステム上で、分散同期確率的勾配降下法（Distributed synchronous SGD（Stochastic Gradient Descent））を用いて機械学習を行う。具体的には、以下の手順で行う。
【０００５】
（I）学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。
（II）ミニバッチをＧＰＵの台数分に分けて、各ＧＰＵに割り当てる。
（III）各ＧＰＵにおいて、（II）で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解（教師データと呼ぶ）からどれだけ乖離しているかの指標となる損失関数Ｌ（ｗ）を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬（forward propagation）と呼ぶ。
【０００６】
（IV）各ＧＰＵにおいて、（III）で求めた損失関数値に対するニューラルネットワークの各構成パラメータ（ニューラルネットワークの重み等）による偏微分値（勾配）を求める。この工程では、ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この工程を逆伝搬（back propagation）と呼ぶ。
（V）各ＧＰＵ毎に計算した勾配の平均を計算する。
【０００７】
（VI）各ＧＰＵにおいて、（V）で計算した勾配の平均値を用いて、確率的勾配降下法（SGD:Stochastic Gradient Descent）を用いて、損失関数Ｌ（ｗ）がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数Ｌ（ｗ）を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数Ｌ（ｗ）が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
【０００８】
また、非特許文献３には、８台のＧＰＵを搭載した学習ノード１２８台がインフィニバンドネットワーク（InfiniBand network）を介して接続された構成の分散深層学習システムが開示されている。
【０００９】
非特許文献１〜３のいずれの分散深層学習システムにおいても、学習ノード数が増えるに従い、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各学習ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを学習ノード間で送受信するか、あるいは学習ノードと非特許文献１のヘッドノードとの間で送受信することにより、平均値算出等の計算を行う必要がある。
【００１０】
一方、並列処理数を増やすために、ノード数を増やすにつれ、必要な通信処理は急速に増大する。従来技術のように、学習ノードやヘッドノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバーヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。
【００１１】
非特許文献３には、学習処理を１００サイクル行うのにかかる所要時間とこのうちの通信にかかる時間と、ＧＰＵ数との関係が開示されている。この関係によると、ＧＰＵ数が増えるにつれて通信にかかる時間が増えており、特にＧＰＵ数が５１２以上のところで急激に増加している。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Rengan Xu and Nishanth Dandapanthu.，“NVIDIA（登録商標） Tesla（登録商標） P100 GPUによるディープラーニングのパフォーマンス”，デル株式会社，２０１６年，インターネット＜http://ja.community.dell.com/techcenter/m/mediagallery/3765/download＞
【非特許文献２】Priya Goyal，Piotr Dollar，Ross Girshick，Pieter Noordhuis，Lukasz Wesolowski，Aapo Kyrola，Andrew Tulloch，Yangqing Jia，Kaiming He，“Accurate，Large Minibatch SGD:Training ImageNet in 1 Hour”，米国コーネル大学ライブラリー，arXiv:1706.02677，2017，インターネット＜https://arxiv.org/abs/1706.02677＞
【非特許文献３】Takuya Akiba，Shuji Suzuki，Keisuke Fukuda，“Extremely Large Minibatch SGD:Training ResNet-50 on ImageNet in 15 Minutes”，米国コーネル大学ライブラリー，arXiv:1711.04325，2017，インターネット＜https://arxiv.org/abs/1711.04325＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、通信ネットワークに接続した多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理を高速に行うことができる分散深層学習システムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の分散深層学習システム（第１の実施例）は、複数の学習ノードと、これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して前記コンピューティングインタコネクト装置に送信する第１の送信部と、前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記コンピューティングインタコネクト装置は、各学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、この第２の受信部が取得した前記勾配の値を入力として計算処理を行う演算器と、この演算器の計算結果をパケット化して各学習ノードに送信する第２の送信部とを備えることを特徴とするものである。
【００１５】
また、本発明の分散深層学習システム（第２の実施例）は、複数の学習ノードと、これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して前記コンピューティングインタコネクト装置に送信する第１の送信部と、前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記コンピューティングインタコネクト装置は、各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、各学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、この第２の受信部が取得した前記勾配の値を入力として計算処理を行う演算器と、この演算器の計算結果と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、前記構成パラメータの更新後の値をパケット化して各学習ノードに送信する第２の送信部とを備え、各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とするものである。
【００１６】
また、本発明の分散深層学習システム（第３の実施例）は、複数の学習ノードと、これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記複数のコンピューティングインタコネクト装置のうち、最上位に位置するコンピューティングインタコネクト装置は、直下位の前記コンピューティングインタコネクト装置から送信されたパケット、および自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第２の受信部と、この第２の受信部が取得した前記勾配の値を入力として計算処理を行う第１の演算器と、この第１の演算器の計算結果をパケット化して、直下位の前記コンピューティングインタコネクト装置、および自装置と接続された前記学習ノードに送信する第２の送信部とを備え、前記複数のコンピューティングインタコネクト装置のうち、下位の前記コンピューティングインタコネクト装置または下位の前記学習ノードと上位の前記コンピューティングインタコネクト装置との間に位置するコンピューティングインタコネクト装置は、直下位の前記コンピューティングインタコネクト装置から送信されたパケット、または自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第３の受信部と、この第３の受信部が取得した前記勾配の値を入力として計算処理を行う第２の演算器と、この第２の演算器の計算結果をパケット化して直上位の前記コンピューティングインタコネクト装置に送信する第３の送信部と、直上位の前記コンピューティングインタコネクト装置から送信されたパケットを、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに転送するか、あるいは直上位の前記コンピューティングインタコネクト装置から送信されたパケットを受信してパケットに格納された値を取得し、この取得した値を再度パケット化して、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに送信する転送部とを備えることを特徴とするものである。
【００１７】
また、本発明の分散深層学習システム（第４の実施例）は、複数の学習ノードと、これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記複数のコンピューティングインタコネクト装置のうち、最上位に位置するコンピューティングインタコネクト装置は、各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、直下位の前記コンピューティングインタコネクト装置から送信されたパケット、および自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第２の受信部と、この第２の受信部が取得した前記勾配の値を入力として計算処理を行う第１の演算器と、この第１の演算器の計算結果と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、前記構成パラメータの更新後の値をパケット化して直下位の前記コンピューティングインタコネクト装置、および自装置と接続された前記学習ノードに送信する第２の送信部とを備え、前記複数のコンピューティングインタコネクト装置のうち、下位の前記コンピューティングインタコネクト装置または下位の前記学習ノードと上位の前記コンピューティングインタコネクト装置との間に位置するコンピューティングインタコネクト装置は、
直下位の前記コンピューティングインタコネクト装置から送信されたパケット、または自装置と接続された前記学習ノードから送信されたパケットを受信して、受信したパケットに格納された前記勾配の値を取得する第３の受信部と、この第３の受信部が取得した前記勾配の値を入力として計算処理を行う第２の演算器と、この第２の演算器の計算結果をパケット化して直上位の前記コンピューティングインタコネクト装置に送信する第３の送信部と、直上位の前記コンピューティングインタコネクト装置から送信されたパケットを、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに転送するか、あるいは直上位の前記コンピューティングインタコネクト装置から送信されたパケットを受信してパケットに格納された値を取得し、この取得した値を再度パケット化して、直下位の前記コンピューティングインタコネクト装置、若しくは自装置と接続された前記学習ノードに送信する転送部とを備え、各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とするものである。
【００１８】
また、本発明の分散深層学習システム（第５の実施例）は、複数の学習ノードと、これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、前記複数のコンピューティングインタコネクト装置は、１方向に限定して通信を行うリング型の通信ネットワークによって接続され、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記複数のコンピューティングインタコネクト装置のうち、第１のコンピューティングインタコネクト装置は、自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第３の受信部と、この第３の受信部が取得した前記勾配の値を出力し、既に取得した値を再度取得した場合には廃棄する第１の振分部と、前記第２の受信部が取得した前記勾配の値、または前記第１の振分部から出力された前記勾配の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第２の送信部と、前記第１の振分部から出力された前記勾配の値をパケット化して、自装置と接続された前記学習ノードに送信する第３の送信部とを備え、前記複数のコンピューティングインタコネクト装置のうち、前記第１のコンピューティングインタコネクト装置以外の第２のコンピューティングインタコネクト装置は、隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第４の受信部と、自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第５の受信部と、前記第４の受信部が取得した値を、勾配に対する計算処理の未了の値と完了の値とに振り分ける第２の振分部と、前記第２の振分部から出力された前記未了の値と前記第５の受信部が取得した前記勾配の値とを入力として計算処理を行う演算器と、この演算器の計算結果、または前記第２の振分部から出力された前記完了の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第４の送信部と、前記第２の振分部から出力された前記完了の値をパケット化して、自装置と接続された前記学習ノードに送信する第５の送信部とを備えることを特徴とするものである。
【００１９】
また、本発明の分散深層学習システム（第６の実施例）は、複数の学習ノードと、これら複数の学習ノードまたは他の装置と通信ネットワークを介して接続された複数のコンピューティングインタコネクト装置とを備え、前記複数のコンピューティングインタコネクト装置は、１方向に限定して通信を行うリング型の通信ネットワークによって接続され、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算する勾配計算部と、この勾配計算部の計算結果をパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第１の送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第１の受信部と、この第１の受信部が取得した値に基づいて前記ニューラルネットワークの構成パラメータを更新する構成パラメータ更新部とを備え、前記複数のコンピューティングインタコネクト装置のうち、第１のコンピューティングインタコネクト装置は、各学習ノードの前記ニューラルネットワークの構成パラメータを記憶する構成パラメータメモリと、自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第２の受信部と、隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第３の受信部と、この第３の受信部が取得した前記勾配の値を出力し、既に取得した値を再度取得した場合には廃棄する第１の振分部と、前記第１の振分部から出力された前記勾配の値と前記構成パラメータメモリに記憶されている構成パラメータの値とを基に、この構成パラメータの更新後の値を計算して、前記構成パラメータメモリに記憶されている当該構成パラメータの値を更新する構成パラメータ更新演算部と、前記第２の受信部が取得した前記勾配の値、または前記構成パラメータの更新後の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第２の送信部と、前記構成パラメータの更新後の値をパケット化して、自装置と接続された前記学習ノードに送信する第３の送信部とを備え、前記複数のコンピューティングインタコネクト装置のうち、前記第１のコンピューティングインタコネクト装置以外の第２のコンピューティングインタコネクト装置は、隣接する上流の前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された値を取得する第４の受信部と、自装置と接続された前記学習ノードから送信されたパケットを受信して、このパケットに格納された前記勾配の値を取得する第５の受信部と、前記第４の受信部が取得した値を、勾配に対する計算処理の未了の値と前記構成パラメータの更新後の値とに振り分ける第２の振分部と、前記第２の振分部から出力された前記未了の値と前記第５の受信部が取得した前記勾配の値とを入力として計算処理を行う演算器と、この演算器の計算結果、または前記第２の振分部から出力された前記構成パラメータの更新後の値をパケット化して、隣接する下流の前記コンピューティングインタコネクト装置に送信する第４の送信部と、前記第２の振分部から出力された前記構成パラメータの更新後の値をパケット化して、自装置と接続された前記学習ノードに送信する第５の送信部とを備え、各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの構成パラメータを、前記第１の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とするものである。
【発明の効果】
【００２０】
本発明によれば、コンピューティングインタコネクト装置と各学習ノードとの間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、分散深層学習を高速に処理することが可能になる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の第１の実施例に係る分散深層学習システムの構成を示すブロック図である。
【図２】図２は、２層ニューラルネットワークの構成を示すブロック図である。
【図３】図３は、従来の分散学習処理の手順を説明する図である。
【図４】図４は、本発明の第１の実施例に係る分散学習処理の手順を説明する図である。
【図５】図５は、本発明の第１の実施例に係る分散学習処理の別の手順を説明する図である。
【図６】図６は、本発明の第１の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の構成を示すブロック図である。
【図７】図７は、本発明の第１の実施例に係る分散深層学習システムの学習ノードの構成例を示すブロック図である。
【図８】図８は、本発明の第２の実施例に係る分散深層学習システムの構成を示すブロック図である。
【図９】図９は、本発明の第２の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の構成を示すブロック図である。
【図１０】図１０は、本発明の第２の実施例に係る分散深層学習システムの学習ノードの構成例を示すブロック図である。
【図１１】図１１は、本発明の第３の実施例に係る分散深層学習システムの構成を示すブロック図である。
【図１２】図１２は、本発明の第３の実施例に係る分散深層学習システムの別の構成を示すブロック図である。
【図１３】図１３は、本発明の第３の実施例に係る分散深層学習システムの動作を説明する図である。
【図１４】図１４は、本発明の第３の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の構成を示すブロック図である。
【図１５】図１５は、本発明の第３の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の構成を示すブロック図である。
【図１６】図１６は、本発明の第４の実施例に係る分散深層学習システムの動作を説明する図である。
【図１７】図１７は、本発明の第４の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の構成を示すブロック図である。
【図１８】図１８は、本発明の第５の実施例に係る分散深層学習システムの構成を示すブロック図である。
【図１９】図１９は、本発明の第５の実施例に係る分散深層学習システムの動作を説明する図である。
【図２０】図２０は、本発明の第５の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の構成を示すブロック図である。
【図２１】図２１は、本発明の第５の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の構成を示すブロック図である。
【図２２】図２２は、本発明の第５の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図２３】図２３は、本発明の第５の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の動作を説明する図である。
【図２４】図２４は、本発明の第５の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図２５】図２５は、本発明の第５の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の動作を説明する図である。
【図２６】図２６は、本発明の第５の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図２７】図２７は、本発明の第６の実施例に係る分散深層学習システムの構成を示すブロック図である。
【図２８】図２８は、本発明の第６の実施例に係る分散深層学習システムの動作を説明する図である。
【図２９】図２９は、本発明の第６の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の構成を示すブロック図である。
【図３０】図３０は、本発明の第６の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の構成を示すブロック図である。
【図３１】図３１は、本発明の第６の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図３２】図３２は、本発明の第６の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の動作を説明する図である。
【図３３】図３３は、本発明の第６の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図３４】図３４は、本発明の第６の実施例に係る分散深層学習システムの子コンピューティングインタコネクト装置の動作を説明する図である。
【図３５】図３５は、本発明の第６の実施例に係る分散深層学習システムの親コンピューティングインタコネクト装置の動作を説明する図である。
【図３６】図３６は、従来の分散深層学習システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
［第１の実施例］
以下、本発明の実施例について図面を参照して説明する。図１は本発明の第１の実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、１台のコンピューティングインタコネクト（ＣＩ：Computing Interconnect）装置１と、４台の学習ノード２−０〜２−３とを備えている。本実施例では、スター型のネットワーク構成が採用されている。
なお、本発明において、コンピューティングインタコネクト装置あるいは学習ノードとは、ネットワーク上に分散配置されている機器を意味する。
【００２３】
コンピューティングインタコネクト装置１は、４つの通信ポートを持ち、その各通信ポートと、各学習ノード２−０〜２−３の通信ポートとが通信ネットワーク３を介して接続されている。この通信ネットワーク３としては、イーサネットや、インフィニバンド（InfiniBand）などの、通信パケットをやりとりすることで通信を行うネットワークを用いる。
【００２４】
＜学習ノードの説明＞
学習ノード２−０〜２−３は、ソフトウェア的に構築された数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ装置である。ニューラルネットワークは、各学習ノード２−０〜２−３内に構築される。
【００２５】
学習ノード２−０〜２−３の実現方法としては、ＣＰＵやＧＰＵ上のソフトウェアで実現してもよいし、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）に形成したＬＳＩ（Large Scale Integration）回路で実現してもよい。
【００２６】
＜学習についての説明＞
学習ノード２−０〜２−３におけるニューラルネットワークの学習処理について、教師データ付き学習を例に説明する。図２にニューラルネットワークの例として入力層（第１層）、中間層（第２層）、出力層（第３層）からなるごく単純な２層ニューラルネットワークを示す。図２のＮｋ（ｉ）は第ｋ層、ｉ番目のニューロンである。ｘ１，ｘ２は入力、ｙ１，ｙ２は出力、ｗ１（１１），  ｗ１（１２），・・・，ｗ１（２３）は第１層目の重みパラメータ、ｗ２（１１），  ｗ２（１２），・・・，ｗ２（３２）は第２層目の重みパラメータである。
【００２７】
教師データ付き学習の場合、各学習データには対応する教師データ（正解データ）が予め用意されており、ニューラルネットワークの出力値が教師データに近くなるように、ニューラルネットワークの構成パラメータを更新していく。図２の例の場合のニューラルネットワークの構成パラメータは、重みｗ１（１１），  ｗ１（１２），・・・，ｗ１（２３），ｗ２（１１），ｗ２（１２），・・・，ｗ２（３２）である。これらの構成パラメータを最適化していくことにより、ニューラルネットワークの精度を上げていく。
【００２８】
具体的には、ニューラルネットワークの出力値が教師データとどれだけ乖離しているかの指標となる損失関数を定め、この損失関数が小さくなるように構成パラメータを更新していく。この例では、入力学習データｘ１，ｘ２に対応する教師データをｔ１，ｔ２とすると、損失関数Ｌは、例えば次式のようになる。
【００２９】
【数１】
2019144642.tif 000003
【００３０】
次に、この損失関数Ｌに対するニューラルネットワークの各構成パラメータによる偏微分値（これを勾配と呼ぶ）を求める。この例では、勾配は以下のようになる。
【００３１】
【数２】
2019144642.tif 000004
【００３２】
次に、勾配を用いて、損失関数Ｌがより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。更新の方法はいろいろあるが、例えば勾配降下法を用いて、それぞれの重みパラメータを以下のように更新する。
【００３３】
【数３】
2019144642.tif 000005
【００３４】
ここで、ηは学習率と呼ばれる定数である。式（３）により、各重みパラメータを、勾配と逆の方向、すなわち、損失関数Ｌを減少させる方向に学習率ηに比例する量だけ変化させている。そのため、更新後のニューラルネットワークの損失関数Ｌは更新前より小さくなる。
【００３５】
このように、１組の入力学習データに対して、損失関数Ｌの計算、勾配の計算、構成パラメータの更新の処理を行なう。そして、この構成パラメータの更新されたニューラルネットワークに対して、次の入力学習データを入力して同じ処理を行い、構成パラメータを更新する。このサイクルを繰り返すことにより、損失関数Ｌが小さいニューラルネットワークに更新していくことで、ニューラルネットワークの学習を行う。
【００３６】
ここで、損失関数Ｌを求める工程では、ニューラルネットワークの入力層から出力層に向かって順番に出力値を計算していくことから、この工程を順伝搬（forward propagation）と呼ぶ。一方、勾配を求める工程では、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータに対する勾配を計算していく逆伝搬（back propagation）と呼ぶ手法を用いることが多い。
【００３７】
＜複数学習ノードによる分散学習処理＞
以上のようなニューラルネットワークの学習で十分な精度を達成するには、大量の学習データをニューラルネットワークに入力して学習処理を繰り返す必要があり、長い時間を要する。この学習にかかる所要時間を短縮することは大きなメリットがある。
【００３８】
学習にかかる所要時間を短縮するため、同じニューラルネットワークの学習ノードを複数用意して、学習データをそれぞれの学習ノードに分けて並列で学習させることにより、トータルの学習時間を短縮する分散協調学習の手法がとられる。従来の分散学習処理の手順を図３を用いて説明する。
【００３９】
最初に、学習データｘを学習ノード１００−０〜１００−３の台数分に分けて、各学習ノード１００−０〜１００−３に割り当てる。なお、図３では、各学習ノード１００−０〜１００−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１乃至複数の学習データの集合からなる。
【００４０】
次に、各学習ノード１００−０〜１００−３は、それぞれ学習データｘ０〜ｘ３をニューラルネットワークに入力して順伝搬（forward propagation）の手法によりそれぞれ損失関数Ｌを求める（図３ステップＳ１００）。なお、得られる損失関数Ｌは、各学習ノード１００−０〜１００−３（各ニューラルネットワーク）につき１つである。
【００４１】
続いて、各学習ノード１００−０〜１００−３は、ステップＳ１００で求めた損失関数Ｌの勾配を逆伝搬（back propagation）の手法により求める（図３ステップＳ１０１）。損失関数Ｌの勾配とは、式（２）に示すように構成パラメータ毎の成分を含むベクトルであるが、本発明ではこのような勾配ベクトルを単に勾配と呼ぶ。
【００４２】
次に、各学習ノード１００−０〜１００−３でそれぞれ計算した勾配の平均を例えばヘッドノード１０２において計算して、計算した結果をヘッドノード１０２から各学習ノード１００−０〜１００−３に返送する（図３ステップＳ１０２）。この処理をＡｌｌ−ｒｅｄｕｃｅ処理と呼ぶ。なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。
【００４３】
最後に、各学習ノード１００−０〜１００−３は、ステップＳ１０２で計算された勾配の平均値を用いて、ニューラルネットワークの重みパラメータを更新する（図３ステップＳ１０３）。
以上で、分散学習の１サイクルが終了する。
【００４４】
＜本実施例の分散処理＞
次に、本実施例の分散学習処理の手順を図４を用いて説明する。本実施例では、各学習ノード２−０〜２−３は、従来と同様に、それぞれ学習データｘ０〜ｘ３をニューラルネットワークに入力して損失関数Ｌをそれぞれ計算する（図４ステップＳ２００）。続いて、この損失関数Ｌの勾配を計算する（図４ステップＳ２０１）。そして、各学習ノード２−０〜２−３はそれぞれ計算した勾配の計算値を、各学習ノード２−０〜２−３と通信ネットワークで接続されたコンピューティングインタコネクト装置１に送信する（図４ステップＳ２０２）。
【００４５】
なお、図３と同様に、図４では、各学習ノード２−０〜２−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１乃至複数の学習データの集合からなる。
【００４６】
次に、コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信された各勾配の平均値を計算し、その計算した結果を各学習ノード２−０〜２−３に送信する（図４ステップＳ２０４）Ａｌｌ−ｒｅｄｕｃｅ処理を行なう（図４ステップＳ２０３）。  
【００４７】
最後に、各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から送信された勾配の平均値を用いて、ニューラルネットワークの構成パラメータを更新する（図４ステップＳ２０５）。
なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。また、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、勾配の二乗平均平方根をとるようにしてもよい。
以上で、本実施例の分散学習の１サイクルが終了する。
【００４８】
通常、勾配計算は逆伝搬の手法に従って、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータ（重みパラメータ）に対する勾配を計算していく。したがって、各学習ノード２−０〜２−３の勾配計算結果をコンピューティングインタコネクト装置１に送信するにあたっては、全ての層の勾配計算が終わるまで待つ必要はない。
【００４９】
そこで、各学習ノード２−０〜２−３は、上記と同様に損失関数Ｌを計算し（図５ステップＳ２００）、損失関数Ｌの勾配を学計算するが（図５ステップＳ２０１）、ステップＳ２０１においてすべての構成パラメータに対する勾配の計算が終了するのを待つことなく、計算が終わった構成パラメータに対する勾配値からコンピューティングインタコネクト装置１に送信することができる（図５ステップＳ２０６）。
【００５０】
コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信された勾配の平均値を計算し（図５ステップＳ２０７）、計算が終わった勾配平均値を各学習ノード２−０〜２−３に送信する（図５ステップＳ２０８）。
【００５１】
各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から計算結果を受信すると、全ての計算結果を受信するまで待つことなく、受信した勾配平均値を用いて、対応する構成パラメータを更新する（図５ステップＳ２０９）。
こうして、勾配計算とＡｌｌ−ｒｅｄｕｃｅ処理と構成パラメータ更新とをパイプライン式に処理できるので、更なる高速化が可能である。
【００５２】
なお、上記のとおり、コンピューティングインタコネクト装置１において、勾配の平均の代わりに勾配の和を構成パラメータ毎に計算するようにしてもよい。以下のコンピューティングインタコネクト装置１の構成では、勾配の和を計算する例について説明する。
【００５３】
＜コンピューティングインタコネクト装置の構成＞
図６に本実施例のコンピューティングインタコネクト装置１の構成を示す。コンピューティングインタコネクト装置１は、学習ノード２−０〜２−３のそれぞれと通信ネットワーク３で接続された送受信用のポートＰ０〜Ｐ３と、学習ノード２−０〜２−３毎に設けられ、学習ノード２−０〜２−３から送信された通信パケットから勾配の計算結果を取り出す受信部１０−０〜１０−３と、学習ノード２−０〜２−３毎に設けられ、各学習ノード２−０〜２−３の勾配の計算結果を一旦格納するバッファメモリ１１−０〜１１−３と、勾配の和を計算する加算器１２（演算器）と、学習ノード２−０〜２−３毎に設けられ、加算器１２によって計算された勾配の和を通信パケットに書き込んで対応する学習ノード２−０〜２−３に送信する送信部１３−０〜１３−３と、学習ノード２−０〜２−３毎に設けられ、バッファメモリ１１−０〜１１−３および送信部１３−０〜１３−３を制御する制御部１４−０〜１４−３とを備えている。
【００５４】
周知のとおり、通信パケットは、ヘッダ２００とデータペイロード２０１とからなる。各学習ノード２−０〜２−３から送信され、ポートＰ０〜Ｐ３で受信される通信パケットＲＰ０〜ＲＰ３のデータペイロードには、それぞれ学習ノード２−０〜２−３で計算された勾配値（図６のＧ０〜Ｇ３）と、各学習ノードごとにふられた通信パケットのシーケンシャル番号（図６の例では“００３”）とが格納されている。
【００５５】
コンピューティングインタコネクト装置１の受信部１０−０〜１０−３は、それぞれ受信した通信パケットＲＰ０〜ＲＰ３のデータペイロードから勾配値Ｇ０〜Ｇ３とシーケンシャル番号とを取り出してバッファメモリ１１−０〜１１−３に格納する。バッファメモリ１１−０〜１１−３に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケット（すなわち、同一の構成パラメータに対応する通信パケット）であっても、各学習ノード２−０〜２−３から完全に同一のタイミングで到着するとは限らないためである。
【００５６】
コンピューティングインタコネクト装置１の制御部１４−０〜１４−３は、対応する全ての学習ノード２−０〜２−３からの、同一のシーケンシャル番号が付与された勾配値Ｇ０〜Ｇ３がバッファメモリ１１−０〜１１−３に書き込まれた場合、これら勾配値Ｇ０〜Ｇ３をバッファメモリ１１−０〜１１−３から読み出して加算器１２に渡す。このように、各学習ノード２−０〜２−３からのシーケンシャル番号が同一である通信パケットに格納された勾配同士の和を計算するように制御することで、各学習ノード２−０〜２−３の対応する勾配値同士を加算演算できるように保証する。
【００５７】
コンピューティングインタコネクト装置１の加算器１２は、勾配の和ΣＧを次式のように計算して、この計算結果を出力する。
ΣＧ＝Ｇ０＋Ｇ１＋Ｇ２＋Ｇ３                                    ・・・（４）
なお、上記のとおり、勾配は構成パラメータ毎の成分を含むベクトルであるので、勾配の加算演算は同一の構成パラメータに対応する成分を加算する演算となる。
【００５８】
制御部１４−０〜１４−３は、バッファメモリ１１−０〜１１−３から読み出した、勾配値Ｇ０〜Ｇ３に対応するシーケンシャル番号（図６の例では“００３”）を送信部１３−０〜１３−３に渡す。送信部１３−０〜１３−３は、加算器１２によって計算された勾配の和の計算結果ΣＧと制御部１４−０〜１４−３から受け取ったシーケンシャル番号とを通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。制御部１４−０〜１４−３は、通信パケットＴＰ０〜ＴＰ３を送信部１３−０〜１３−３から各学習ノード２−０〜２−３へ同時に送信させる。
【００５９】
以上のようなコンピューティングインタコネクト装置１は、ＦＰＧＡやＡＳＩＣに形成したＬＳＩ回路で実現することができる。以下の実施例のコンピューティングインタコネクト装置についても同様である。
【００６０】
図７は学習ノード２−０の構成例を示すブロック図である。学習ノード２−０は、学習データを受け取る入力部２０と、学習データが入力されたときに、損失関数Ｌを計算する損失関数計算部２１と、損失関数Ｌの勾配を計算する勾配計算部２２と、勾配計算部２２によって計算された勾配値をパケット化してコンピューティングインタコネクト装置１に送信する送信部２３と、コンピューティングインタコネクト装置１から送信された通信パケットを受信する受信部２４と、コンピューティングインタコネクト装置１から送信された通信パケットに格納されている勾配の和を用いてニューラルネットワークの構成パラメータ（重みパラメータ）を更新する構成パラメータ更新部２５と、数学モデルであるニューラルネットワークの出力値を計算する機能をもつニューラルネットワーク２６とを備えている。
【００６１】
図７の例では、学習ノード２−０の構成を示しているが、他の学習ノード２−１〜２−３の構成も学習ノード２−０と同様である。
各学習ノード２−０〜２−３の送信部２３は、勾配計算部２２によって計算された勾配の計算結果と、シーケンシャル番号とを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１に送信する。
【００６２】
各学習ノード２−０〜２−３の受信部２４は、コンピューティングインタコネクト装置１から受信した通信パケットＴＰ０〜ＴＰ３のデータペイロードから勾配の和の計算結果とシーケンシャル番号とを取り出す。
【００６３】
各学習ノード２−０〜２−３の構成パラメータ更新部２５は、勾配の和の計算結果を基に、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを更新する。
なお、本発明では、各学習ノード２−０〜２−３のニューラルネットワーク２６の構成が同一であるものを想定している。以下の他の実施例でも同様である。
【００６４】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理にコンピューティングインタコネクト装置１を用いることで、各学習ノード２−０〜２−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２−０〜２−３との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【００６５】
［第２の実施例］
次に、本発明の第２の実施例について説明する。第１の実施例では、コンピューティングインタコネクト装置１で勾配の和の演算を行い、各学習ノード２−０〜２−３でニューラルネットワークの構成パラメータの更新演算を行うが、本実施例では、勾配の和の演算に加えて、ニューラルネットワークの構成パラメータの更新演算もコンピューティングインタコネクト装置で行なう。
【００６６】
図８は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、１台のコンピューティングインタコネクト装置１ａと、４台の学習ノード２ａ−０〜２ａ−３と、コンピューティングインタコネクト装置１ａと学習ノード２ａ−０〜２ａ−３とを接続する通信ネットワーク３とから構成されている。
【００６７】
図９は本実施例のコンピューティングインタコネクト装置１ａの構成を示すブロック図であり、図６と同一の構成には同一の符号を付してある。本実施例のコンピューティングインタコネクト装置１ａは、学習ノード２ａ−０〜２ａ−３のそれぞれと通信ネットワーク３で接続された送受信用のポートＰ０〜Ｐ３と、受信部１０−０〜１０−３と、バッファメモリ１１−０〜１１−３と、加算器１２と、送信部１３ａ−０〜１３ａ−３と、制御部１４ａ−０〜１４ａ−３と、各学習ノード２ａ−０〜２ａ−３の学習対象のニューラルネットワーク２６の構成パラメータを記憶する構成パラメータメモリ１５と、ニューラルネットワークの構成パラメータ（重みパラメータ）の更新後の値を計算するＮＮ（ニューラルネットワーク）構成パラメータ更新演算部１６とを備えている。
【００６８】
学習開始時点において、各学習ノード２ａ−０〜２ａ−３のニューラルネットワーク２６は、全ての学習ノード２ａ−０〜２ａ−３で同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値を、例えば学習ノード２ａ−０〜２ａ−３から通信パケットを用いてコンピューティングインタコネクト装置１に送信する。構成パラメータの初期値を受信したコンピューティングインタコネクト装置１ａでは、この構成パラメータの初期値を構成パラメータメモリ１５に格納する。
【００６９】
第１の実施例と同様に、各学習ノード２ａ−０〜２ａ−３は、この構成パラメータの初期値が設定されたニューラルネットワーク２６のそれぞれに学習データを入力し、損失関数Ｌを計算する。次に、その損失関数Ｌの勾配を計算する。そして、各学習ノード２ａ−０〜２ａ−３の送信部２３は、勾配計算部２２によって計算された勾配の計算結果と、シーケンシャル番号とを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１ａに送信する。
【００７０】
したがって、コンピューティングインタコネクト装置１ａの受信部１０−０〜１０−３で受信する通信パケットＴＰ０〜ＴＰ３のデータペイロードには、それぞれ学習ノード２ａ−０〜２ａ−３で計算された勾配値（図９のＧ０〜Ｇ３）と、シーケンシャル番号（図９の例では“００３”）とが格納されている。
【００７１】
第１の実施例と同様に、コンピューティングインタコネクト装置１ａの制御部１４ａ−０〜１４ａ−３は、全ての学習ノード２ａ−０〜２ａ−３からの、同一のシーケンシャル番号が付与された勾配値Ｇ０〜Ｇ３がバッファメモリ１１−０〜１１−３に書き込まれた場合、これら勾配値Ｇ０〜Ｇ３をバッファメモリ１１−０〜１１−３から読み出して加算器１２に渡す。
加算器１２は、勾配の和ΣＧを式（４）のように構成パラメータ毎に計算して、この計算結果を出力する。
【００７２】
ＮＮ構成パラメータ更新演算部１６は、加算器１２によって計算された勾配の和ΣＧと、構成パラメータメモリ１５に記憶されている構成パラメータの値ｗ＿ｏｌｄとを基に、ニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを構成パラメータ毎に計算して送信部１３ａ−０〜１３ａ−３に出力する。更新方法として例えば、勾配降下法を用いる場合は以下のような計算を行う。
ｗ＿ｎｅｗ←ｗ＿ｏｌｄ−η×ΣＧ                                ・・・（５）
【００７３】
また、ＮＮ構成パラメータ更新演算部１６は、構成パラメータの更新後の値ｗ＿ｎｅｗを送信部１３ａ−０〜１３ａ−３に出力すると同時に、構成パラメータメモリ１５に格納されている当該構成パラメータの値を、更新後の値ｗ＿ｎｅｗによって上書きする。
【００７４】
制御部１４ａ−０〜１４ａ−３は、バッファメモリ１１−０〜１１−３から読み出した、勾配値Ｇ０〜Ｇ３に対応するシーケンシャル番号（図６の例では“００３”）を送信部１３ａ−０〜１３ａ−３に渡す。送信部１３−０〜１３−３は、ＮＮ構成パラメータ更新演算部１６によって計算された構成パラメータの更新後の値ｗ＿ｎｅｗと制御部１４ａ−０〜１４ａ−３から受け取ったシーケンシャル番号とを通信パケットＴＰ０〜ＴＰ３に格納する。制御部１４ａ−０〜１４ａ−３は、通信パケットＴＰ０〜ＴＰ３を送信部１３ａ−０〜１３ａ−３から各学習ノード２ａ−０〜２ａ−３へ同時に送信させる。
【００７５】
以上のようなコンピューティングインタコネクト装置１ａは、ＦＰＧＡやＡＳＩＣに形成したＬＳＩ回路で実現することができる。
【００７６】
図１０は学習ノード２ａ−０の構成例を示すブロック図であり、図７と同一の構成には同一の符号を付してある。学習ノード２ａ−０は、入力部２０と、損失関数計算部２１と、勾配計算部２２と、送信部２３と、受信部２４ａと、コンピューティングインタコネクト装置１ａから送信された通信パケットに格納されている構成パラメータの更新後の値ｗ＿ｎｅｗを用いてニューラルネットワーク２６の構成パラメータを更新する構成パラメータ更新部２５ａと、ニューラルネットワーク２６とを備えている。
【００７７】
図１０の例では、学習ノード２ａ−０の構成を示しているが、他の学習ノード２ａ−１〜２ａ−３の構成も学習ノード２ａ−０と同様である。
各学習ノード２ａ−０〜２ａ−３の受信部２４ａは、コンピューティングインタコネクト装置１ａから受信した通信パケットＴＰ０〜ＴＰ３のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号とを取り出す。
【００７８】
各学習ノード２ａ−０〜２ａ−３の構成パラメータ更新部２５ａは、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを、構成パラメータの更新後の値ｗ＿ｎｅｗによって上書きすることにより、ニューラルネットワーク２６を更新する。
【００７９】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置１ａを用いることで、各学習ノード２ａ−０〜２ａ−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２ａ−０〜２ａ−３との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【００８０】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配の和演算も、構成パラメータの更新演算も、ニューラルネットワーク２６の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード２ａ−０〜２ａ−３でのニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置１ａの演算器は同じ専用演算回路を用いることができるというメリットもある。
【００８１】
［第３の実施例］
次に、本発明の第３の実施例について説明する。本実施例の分散深層学習システムの構成を図１１に示す。本実施例の分散深層学習システムは、１台の親コンピューティングインタコネクト装置４と、複数の子コンピューティングインタコネクト装置５−０〜５−３と、複数の学習ノード２−０〜２−１５と、親コンピューティングインタコネクト装置４と子コンピューティングインタコネクト装置５−０〜５−３とを接続する通信ネットワーク６と、子コンピューティングインタコネクト装置５−０〜５−３と学習ノード２−０〜２−１５とを接続する通信ネットワーク７とから構成されている。
【００８２】
本実施例では、図１１のように親コンピューティングインタコネクト装置４と子コンピューティングインタコネクト装置５−０〜５−３と学習ノード２−０〜２−１５とをツリー状に接続する。ツリーの最上位（ルート）に親コンピューティングインタコネクト装置４を接続し、ツリーの葉の部分に学習ノード２−０〜２−１５を接続し、その中間の節の部分に子コンピューティングインタコネクト装置５−０〜５−３を配置する。
【００８３】
また、図１２のように子コンピューティングインタコネクト装置５−０〜５−１１を多段に配置したり、親コンピューティングインタコネクト装置４の直下に学習ノード２−１２を接続したツリー構造にすることも可能である。
【００８４】
本実施例では、親コンピューティングインタコネクト装置４と子コンピューティングインタコネクト装置５−０〜５−３とが協調してＡｌｌ−ｒｅｄｕｃｅ処理を行う。
図１３（Ａ）、図１３（Ｂ）に本実施例の分散深層学習システムの動作を示す。各学習ノード２−０〜２−１５は、それぞれ勾配を計算すると、図１３（Ａ）のように自身が接続している子コンピューティングインタコネクト装置５−０〜５−３に勾配の計算結果Ｇ０〜Ｇ１５を送信する。
【００８５】
子コンピューティングインタコネクト装置５−０〜５−３は、それぞれ自身に接続されている各学習ノード２−０〜２−１５から送信された勾配の和を計算して、勾配の和の計算結果を上位のコンピューティングインタコネクト装置（図１３（Ａ）、図１３（Ｂ）の例では親コンピューティングインタコネクト装置４）に送信する。
【００８６】
図１３（Ａ）の例では、例えば子コンピューティングインタコネクト装置５−０は、学習ノード２−０〜２−３から送信された勾配Ｇ０〜Ｇ３の和ΣＧ０＝Ｇ０＋Ｇ１＋Ｇ２＋Ｇ３を計算して、上位の親コンピューティングインタコネクト装置４に送信する。また、子コンピューティングインタコネクト装置５−３は、学習ノード２−１２〜２−１５から送信された勾配Ｇ１２〜Ｇ１５の和ΣＧ３＝Ｇ１２＋Ｇ１３＋Ｇ１４＋Ｇ１５を計算して、上位の親コンピューティングインタコネクト装置４に送信する。
【００８７】
図１３（Ｂ）の例では、親コンピューティングインタコネクト装置４は、直下に接続されている子コンピューティングインタコネクト装置５−０〜５−３から送信された勾配の和ΣＧ０〜ΣＧ３を合計した和ΣＧ＝ΣＧ０＋ΣＧ１＋ΣＧ２＋ΣＧ３を計算して、計算した勾配の和ΣＧを直下の子コンピューティングインタコネクト装置５−０〜５−３に送信する。
【００８８】
また、図１２に示したようなツリー構造の場合には、親コンピューティングインタコネクト装置４は、直下に接続されている子コンピューティングインタコネクト装置５−０〜５−２から送信された勾配の和と直下に接続されている学習ノード２−１２から送信された勾配とを合計した和を計算して、計算した勾配の和を直下の子コンピューティングインタコネクト装置５−０〜５−２と学習ノード２−１２とに送信する。
【００８９】
直上の親コンピューティングインタコネクト装置４から勾配の和ΣＧを受信した子コンピューティングインタコネクト装置５−０〜５−３は、それぞれ受信した勾配の和ΣＧをさらに直下の学習ノード２−０〜２−１５に送信する。この勾配の和ΣＧを受信した各学習ノード２−０〜２−１５は、勾配の和ΣＧを用いてニューラルネットワークの構成パラメータを更新する。
【００９０】
図１４に本実施例の親コンピューティングインタコネクト装置４の構成を示す。親コンピューティングインタコネクト装置４は、子コンピューティングインタコネクト装置５−０〜５−３のそれぞれと通信ネットワーク６で接続された送受信用のポートＰ０〜Ｐ３と、子コンピューティングインタコネクト装置５−０〜５−３毎に設けられ、子コンピューティングインタコネクト装置５−０〜５−３から送信された通信パケットから勾配の和の計算結果を取り出す受信部４０−０〜４０−３と、子コンピューティングインタコネクト装置５−０〜５−３毎に設けられ、各子コンピューティングインタコネクト装置５−０〜５−３の勾配の和の計算結果を一旦格納するバッファメモリ４１−０〜４１−３と、勾配の和をさらに合計した和を計算する加算器４２（演算器）と、子コンピューティングインタコネクト装置５−０〜５−３毎に設けられ、加算器４２によって計算された勾配の和を通信パケットに書き込んで対応する子コンピューティングインタコネクト装置５−０〜５−３に送信する送信部４３−０〜４３−３と、子コンピューティングインタコネクト装置５−０〜５−３毎に設けられ、バッファメモリ４１−０〜４１−３および送信部４３−０〜４３−３を制御する制御部４４−０〜４４−３とを備えている。
【００９１】
上記で説明したとおり、通信パケットは、ヘッダ２００とデータペイロード２０１とからなる。子コンピューティングインタコネクト装置５−０〜５−３から送信され、ポートＰ０〜Ｐ３で受信される通信パケットＲＰＣ０〜ＲＰＣ３のデータペイロードには、それぞれ子コンピューティングインタコネクト装置５−０〜５−３で計算された勾配の和（図１４のΣＧ０〜ΣＧ３）と、シーケンシャル番号（図１４の例では“００３”）とが格納されている。
【００９２】
親コンピューティングインタコネクト装置４の受信部４０−０〜４０−３は、それぞれ受信した通信パケットＲＰＣ０〜ＲＰＣ３のデータペイロードから勾配の和ΣＧ０〜ΣＧ３とシーケンシャル番号とを取り出してバッファメモリ４１−０〜４１−３に格納する。バッファメモリ４１−０〜４１−３に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケット（すなわち、同一の構成パラメータに対応する通信パケット）であっても、各子コンピューティングインタコネクト装置５−０〜５−３から完全に同一のタイミングで到着するとは限らないためである。
【００９３】
親コンピューティングインタコネクト装置４の制御部４４−０〜４４−３は、対応する全ての子コンピューティングインタコネクト装置５−０〜５−３からの、同一のシーケンシャル番号が付与された勾配の和ΣＧ０〜ΣＧ３がバッファメモリ４１−０〜４１−３に書き込まれた場合、これら勾配の和ΣＧ０〜ΣＧ３をバッファメモリ４１−０〜４１−３から読み出して加算器４２に渡す。このように、各子コンピューティングインタコネクト装置５−０〜５−３からのシーケンシャル番号が同一である通信パケットに格納された勾配の和同士の合計を計算するように制御することで、各子コンピューティングインタコネクト装置５−０〜５−３の対応する勾配の和同士を加算演算できるように保証する。
【００９４】
親コンピューティングインタコネクト装置４の加算器４２は、勾配の和をさらに合計した和ΣＧを次式のように計算して、この計算結果を出力する。
ΣＧ＝ΣＧ０＋ΣＧ１＋ΣＧ２＋ΣＧ３                            ・・・（６）
【００９５】
制御部４４−０〜４４−３は、バッファメモリ４１−０〜４１−３から読み出した、勾配の和ΣＧ０〜ΣＧ３に対応するシーケンシャル番号（図１４の例では“００３”）を送信部４３−０〜４３−３に渡す。送信部４３−０〜４３−３は、加算器４２によって計算された勾配の和の計算結果ΣＧと制御部４４−０〜４４−３から受け取ったシーケンシャル番号とを通信パケットＴＰＣ０〜ＴＰＣ３のデータペイロードに格納する。制御部４４−０〜４４−３は、通信パケットＴＰＣ０〜ＴＰＣ３を送信部４３−０〜４３−３から各子コンピューティングインタコネクト装置５−０〜５−３へ同時に送信させる。
【００９６】
なお、図１４の例では、親コンピューティングインタコネクト装置４の直下に子コンピューティングインタコネクト装置５−０〜５−３が接続されている例で説明しているが、図１２の例のように親コンピューティングインタコネクト装置４の直下に学習ノードが接続されていてもよい。
【００９７】
図１５に子コンピューティングインタコネクト装置５−０の構成を示す。子コンピューティングインタコネクト装置５−０は、学習ノード２−０〜２−３のそれぞれと通信ネットワーク７で接続された送受信用のポートＰ０〜Ｐ３と、学習ノード２−０〜２−３毎に設けられ、学習ノード２−０〜２−３から送信された通信パケットから勾配の計算結果を取り出す受信部５０−０〜５０−３と、学習ノード２−０〜２−３毎に設けられ、各学習ノード２−０〜２−３の勾配の計算結果を一旦格納するバッファメモリ５１−０〜５１−３と、勾配の和を計算する加算器５２（演算器）と、学習ノード２−０〜２−３毎に設けられ、親コンピューティングインタコネクト装置４から送信された勾配の和の計算結果を通信パケットに書き込んで対応する学習ノード２−０〜２−３に送信する送信部５３−０〜５３−３と、学習ノード２−０〜２−３毎に設けられ、バッファメモリ５１−０〜５１−３および送信部５３−０〜５３−３を制御する制御部５４−０〜５４−３と、加算器５２によって計算された勾配の和を通信パケットに書き込んで親コンピューティングインタコネクト装置４に送信する送信部５５と、親コンピューティングインタコネクト装置４から勾配の和の計算結果を受信する受信部５６とを備えている。受信部５６と送信部５３−０〜５３−３とは、転送部５７を構成している。
【００９８】
子コンピューティングインタコネクト装置５−０の受信部５０−０〜５０−３とバッファメモリ５１−０〜５１−３の動作は、コンピューティングインタコネクト装置１の受信部１０−０〜１０−３とバッファメモリ１１−０〜１１−３の動作と同じなので、説明は省略する。
【００９９】
子コンピューティングインタコネクト装置５−０の制御部５４−０〜５４−３は、対応する全ての学習ノード２−０〜２−３からの、同一のシーケンシャル番号が付与された勾配値Ｇ０〜Ｇ３がバッファメモリ５１−０〜５１−３に書き込まれた場合、これら勾配値Ｇ０〜Ｇ３をバッファメモリ５１−０〜５１−３から読み出して加算器５２に渡す。また、制御部５４−０〜５４−３は、バッファメモリ５１−０〜５１−３から読み出した、勾配値Ｇ０〜Ｇ３に対応するシーケンシャル番号（図１５の例では“００３”）を送信部５５に渡す。
【０１００】
子コンピューティングインタコネクト装置５−０の加算器５２は、勾配の和ΣＧを式（４）により計算して、この計算結果を送信部５５に出力する。
送信部５５は、加算器５２によって計算された勾配の和の計算結果ΣＧと制御部５４−０〜５４−３から受け取ったシーケンシャル番号とを通信パケットＴＰＣ０のデータペイロードに格納して、直上の親コンピューティングインタコネクト装置４へ送信する。なお、制御部５４−０〜５４−３から渡されるシーケンシャル番号は全て同一の値なので、１つの値を通信パケットＴＰＣ０に格納すればよい。
【０１０１】
子コンピューティングインタコネクト装置５−０の受信部５６は、親コンピューティングインタコネクト装置４から受信した通信パケットＴＰＣ０のデータペイロードから勾配の和ΣＧとシーケンシャル番号とを取り出す。
【０１０２】
子コンピューティングインタコネクト装置５−０の送信部５３−０〜５３−３は、受信部５６から受け取った勾配の和ΣＧとシーケンシャル番号とを通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。制御部５４−０〜５４−３は、通信パケットＴＰ０〜ＴＰ３を送信部５３−０〜５３−３から各学習ノード２−０〜２−３へ同時に送信させる。なお、受信部５６と送信部５３−０〜５３−３とは、親コンピューティングインタコネクト装置４から受信した通信パケットをそのまま直下の各学習ノード２−０〜２−３へ転送するようにしてもよい。
【０１０３】
図１５の例では、子コンピューティングインタコネクト装置５−０の構成を示しているが、他の子コンピューティングインタコネクト装置の構成も子コンピューティングインタコネクト装置５−０と同様である。
また、図１５の例では、子コンピューティングインタコネクト装置５−０の直下に学習ノード２−０〜２−３が接続されている例で説明しているが、図１２の例のように子コンピューティングインタコネクト装置５−０の直下に別の子コンピューティングインタコネクト装置が接続されていてもよい。
学習ノード２−０〜２−１５の構成は、第１の実施例で説明したとおりである。
【０１０４】
以上のように、本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理にコンピューティングインタコネクト装置４，５を用いることで、各学習ノード２−０〜２−１５からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２−０〜２−１５との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。さらに本実施例のように学習ノード２−０〜２−１５とコンピューティングインタコネクト装置４，５とをツリー上に接続することにより、更に多くの学習ノード２−０〜２−１５によって分散処理することができるようになる。
【０１０５】
［第４の実施例］
次に、本発明の第４の実施例について説明する。本実施例も第３の実施例と同じく、親コンピューティングインタコネクト装置と子コンピューティングインタコネクト装置と学習ノードとをツリー状に接続するシステムである。すなわち、図１１と同様に最上位に位置する親コンピューティングインタコネクト装置と子コンピューティングインタコネクト装置と学習ノードとをツリー状に接続する。本実施例では、親コンピューティングインタコネクト装置において、ニューラルネットワークの構成パラメータの更新演算も行うところが第３の実施例と異なる。
【０１０６】
図１６（Ａ）、図１６（Ｂ）に本実施例の分散深層学習システムの動作を示す。各学習ノード２ａ−０〜２ａ−１５は、それぞれ勾配を計算すると、図１６（Ａ）のように自身が接続している子コンピューティングインタコネクト装置５ａ−０〜５ａ−３に勾配の計算結果Ｇ０〜Ｇ１５を送信する。
【０１０７】
子コンピューティングインタコネクト装置５ａ−０〜５ａ−３は、それぞれ自身に接続されている各学習ノード２ａ−０〜２ａ−１５から送信された勾配の和を計算して、勾配の和の計算結果を上位のコンピューティングインタコネクト装置（図１６（Ａ）、図１６（Ｂ）の例では親コンピューティングインタコネクト装置４ａ）に送信する。
【０１０８】
図１６（Ａ）の例では、例えば子コンピューティングインタコネクト装置５ａ−０は、学習ノード２ａ−０〜２ａ−３から送信された勾配Ｇ０〜Ｇ３の和ΣＧ０＝Ｇ０＋Ｇ１＋Ｇ２＋Ｇ３を計算して、上位の親コンピューティングインタコネクト装置４ａに送信する。また、子コンピューティングインタコネクト装置５ａ−３は、学習ノード２ａ−１２〜２ａ−１５から送信された勾配Ｇ１２〜Ｇ１５の和ΣＧ３＝Ｇ１２＋Ｇ１３＋Ｇ１４＋Ｇ１５を計算して、上位の親コンピューティングインタコネクト装置４ａに送信する。
【０１０９】
図１６（Ｂ）の例では、親コンピューティングインタコネクト装置４ａは、直下に接続されている子コンピューティングインタコネクト装置５ａ−０〜５ａ−３から送信された勾配の和ΣＧ０〜ΣＧ３を合計した和ΣＧ＝ΣＧ０＋ΣＧ１＋ΣＧ２＋ΣＧ３を計算する。
【０１１０】
さらに親コンピューティングインタコネクト装置４ａは、勾配の和ΣＧを用いてニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを計算し、その計算結果を直下の子コンピューティングインタコネクト装置５ａ−０〜５ａ−３に送信する。
【０１１１】
直上の親コンピューティングインタコネクト装置４ａから構成パラメータの更新後の値ｗ＿ｎｅｗを受信した子コンピューティングインタコネクト装置５ａ−０〜５ａ−３は、それぞれ構成パラメータの更新後の値ｗ＿ｎｅｗをさらに直下の学習ノード２ａ−０〜２ａ−１５に送信する。
【０１１２】
各学習ノード２ａ−０〜２ａ−１５は、ニューラルネットワーク２６の構成パラメータを、構成パラメータの更新後の値ｗ＿ｎｅｗによって上書きすることにより、ニューラルネットワークを更新する。
【０１１３】
図１７は本実施例の親コンピューティングインタコネクト装置４ａの構成を示すブロック図であり、図１４と同一の構成には同一の符号を付してある。親コンピューティングインタコネクト装置４ａは、子コンピューティングインタコネクト装置５ａ−０〜５ａ−３のそれぞれと通信ネットワークで接続された送受信用のポートＰ０〜Ｐ３と、受信部４０−０〜４０−３と、バッファメモリ４１−０〜４１−３と、加算器４２と、送信部４３ａ−０〜４３ａ−３と、制御部４４ａ−０〜４４ａ−３と、各学習ノード２ａ−０〜２ａ−１５の学習対象のニューラルネットワークの構成パラメータを記憶する構成パラメータメモリ４５と、ニューラルネットワークの構成パラメータ（重みパラメータ）の更新後の値を計算するＮＮ（ニューラルネットワーク）構成パラメータ更新演算部４６とを備えている。
【０１１４】
学習開始時点において、各学習ノード２ａ−０〜２ａ−１５のニューラルネットワークは、全ての学習ノード２ａ−０〜２ａ−１５で同じ構成パラメータの初期値が設定されている。このニューラルネットワークの構成パラメータの初期値を親コンピューティングインタコネクト装置４ａの構成パラメータメモリ４５に記憶する。この構成パラメータの初期値を、例えば学習ノード２ａ−０〜２ａ−１５から通信パケットを用いて、子コンピューティングインタコネクト装置５ａ−０〜５ａ−３を経由して親コンピューティングインタコネクト装置４ａに送信する。構成パラメータの初期値を受信した親コンピューティングインタコネクト装置４ａでは、この構成パラメータの初期値を構成パラメータメモリ４５に格納する。
【０１１５】
第３の実施例と同様に、親コンピューティングインタコネクト装置４ａの制御部４４−０〜４４−３は、対応する全ての子コンピューティングインタコネクト装置５ａ−０〜５ａ−３からの、同一のシーケンシャル番号が付与された勾配の和ΣＧ０〜ΣＧ３がバッファメモリ４１−０〜４１−３に書き込まれた場合、これら勾配の和ΣＧ０〜ΣＧ３をバッファメモリ４１−０〜４１−３から読み出して加算器４２に渡す。
親コンピューティングインタコネクト装置４ａの加算器４２は、勾配の和をさらに合計した和ΣＧを式（６）のように計算する。
【０１１６】
ＮＮ構成パラメータ更新演算部４６は、加算器４２によって計算された勾配の和ΣＧと、構成パラメータメモリ４５に記憶されている構成パラメータの値ｗ＿ｏｌｄとを基に、ニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを構成パラメータ毎に計算して送信部４３ａ−０〜４３ａ−３に出力する。更新方法として例えば、勾配降下法を用いる場合は式（５）のような計算を行う。
【０１１７】
また、ＮＮ構成パラメータ更新演算部４６は、構成パラメータの更新後の値ｗ＿ｎｅｗを送信部４３ａ−０〜４３ａ−３に出力すると同時に、構成パラメータメモリ４５に格納されている当該構成パラメータの値を、更新後の値ｗ＿ｎｅｗによって上書きする。
【０１１８】
制御部４４ａ−０〜４４ａ−３は、バッファメモリ４１−０〜４１−３から読み出した、勾配の和ΣＧ０〜ΣＧ３に対応するシーケンシャル番号（図１７の例では“００３”）を送信部４３ａ−０〜４３ａ−３に渡す。送信部４３ａ−０〜４３ａ−３は、ＮＮ構成パラメータ更新演算部４６によって計算された構成パラメータの更新後の値ｗ＿ｎｅｗと制御部４４ａ−０〜４４ａ−３から受け取ったシーケンシャル番号とを通信パケットＴＰＣ０〜ＴＰＣ３のペイロードに格納する。制御部４４ａ−０〜４４ａ−３は、通信パケットＴＰＣ０〜ＴＰＣ３を送信部４３ａ−０〜４３ａ−３から各子コンピューティングインタコネクト装置５ａ−０〜５ａ−３へ同時に送信させる。
【０１１９】
なお、図１７の例では、親コンピューティングインタコネクト装置４ａの直下に子コンピューティングインタコネクト装置５ａ−０〜５ａ−３が接続されている例で説明しているが、図１２の例のように親コンピューティングインタコネクト装置４ａの直下に学習ノードが接続されていてもよい。
【０１２０】
子コンピューティングインタコネクト装置５ａ−０〜５ａ−３の構成は、第３の実施例の子コンピューティングインタコネクト装置５−０〜５−３と同様であるので、図１５の符号を用いて第３の実施例との違いを説明する。
【０１２１】
各子コンピューティングインタコネクト装置５ａ−０〜５ａ−３の受信部５６は、親コンピューティングインタコネクト装置４ａから受信した通信パケットＴＰＣ０〜ＴＰＣ３のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号とを取り出す。
【０１２２】
各子コンピューティングインタコネクト装置５ａ−０〜５ａ−３の送信部５３−０〜５３−３は、受信部５６から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号とを通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。制御部５４−０〜５４−３は、通信パケットＴＰ０〜ＴＰ３を送信部５３−０〜５３−３から直下の各学習ノード２ａ−０〜２ａ−１５へ同時に送信させる。第３の実施例で説明したとおり、受信部５６と送信部５３−０〜５３−３とは、親コンピューティングインタコネクト装置４ａから受信した通信パケットをそのまま直下の各学習ノード２ａ−０〜２ａ−１５へ転送するようにしてもよい。
【０１２３】
なお、図１５の例では、子コンピューティングインタコネクト装置の直下に学習ノードが接続されているが、図１２の例と同様に子コンピューティングインタコネクト装置５ａ−０〜５ａ−３の直下に別の子コンピューティングインタコネクト装置が接続されていてもよい。
【０１２４】
学習ノード２ａ−０〜２ａ−１５の構成は、第２の実施例で説明したとおりである。各学習ノード２ａ−０〜２ａ−１５の受信部２４ａは、直上の子コンピューティングインタコネクト装置５ａ−０〜５ａ−３から受信した通信パケットＴＰ０〜ＴＰ３のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号とを取り出す。
【０１２５】
各学習ノード２ａ−０〜２ａ−１５の構成パラメータ更新部２５ａは、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを、構成パラメータの更新後の値ｗ＿ｎｅｗによって上書きすることにより、ニューラルネットワーク２６を更新する。
【０１２６】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置４ａ，５ａを用いることで、各学習ノード２ａ−０〜２ａ−１５からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２ａ−０〜２ａ−１５との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【０１２７】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配の和演算も、構成パラメータの更新演算も、ニューラルネットワーク２６の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード２ａ−０〜２ａ−１５でのニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置４ａの演算器は同じ専用演算回路を用いることができるというメリットもある。
【０１２８】
［第５の実施例］
次に、本発明の第５の実施例について説明する。図１８は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例では、図１８のように１台の親コンピューティングインタコネクト装置４ｂと複数の子コンピューティングインタコネクト装置５ｂ−１〜５ｂ−３とがリング型の通信ネットワーク８で接続され、親コンピューティングインタコネクト装置４ｂと子コンピューティングインタコネクト装置５ｂ−１〜５ｂ−３のそれぞれに通信ネットワーク９を介して学習ノード２−０〜２−３が接続されている。
【０１２９】
親コンピューティングインタコネクト装置４ｂと学習ノード２−０との間、および子コンピューティングインタコネクト装置５ｂ−１〜５ｂ−２と学習ノード２−１〜２−３との間は、通信ケーブルで結んでもよいし、学習ノード２−０〜２−３内のＰＣＩ  ＥｘｐｒｅｓｓなどのＩ／Ｏインタフェースにコンピューティングインタコネクト装置４ｂ，５ｂ−１〜５ｂ−２を直に挿入するようにしてもよい。
【０１３０】
図１９（Ａ）〜図１９（Ｅ）に本実施例の分散深層学習システムの動作を示す。まず、親コンピューティングインタコネクト装置４ｂに接続された学習ノード２−０から勾配の計算結果Ｇ０を親コンピューティングインタコネクト装置４ｂに送信し、親コンピューティングインタコネクト装置４ｂは、勾配の計算結果Ｇ０を子コンピューティングインタコネクト装置５ｂ−１に転送する（図１９（Ａ））。
【０１３１】
子コンピューティングインタコネクト装置５ｂ−１は、親コンピューティングインタコネクト装置４ｂから送信された勾配の計算結果Ｇ０と、直下の学習ノード２−１から送信された勾配の計算結果Ｇ１との和Ｇ０＋Ｇ１を計算し、この計算結果Ｇ０＋Ｇ１を子コンピューティングインタコネクト装置５ｂ−２に送信する（図１９（Ｂ））。
【０１３２】
同様の処理を子コンピューティングインタコネクト装置５ｂ−２，５ｂ−３の各々で行う。子コンピューティングインタコネクト装置５ｂ−２は、子コンピューティングインタコネクト装置５ｂ−１から送信された勾配の和の計算結果Ｇ０＋Ｇ１と、直下の学習ノード２−２から送信された勾配の計算結果Ｇ２との和Ｇ０＋Ｇ１＋Ｇ２を計算し、この計算結果Ｇ０＋Ｇ１＋Ｇ２を子コンピューティングインタコネクト装置５ｂ−３に送信する。子コンピューティングインタコネクト装置５ｂ−３は、子コンピューティングインタコネクト装置５ｂ−２から送信された勾配の和の計算結果Ｇ０＋Ｇ１＋Ｇ２と、直下の学習ノード２−３から送信された勾配の計算結果Ｇ３との和ΣＧ＝Ｇ０＋Ｇ１＋Ｇ２＋Ｇ３を計算し、この計算結果ΣＧを親コンピューティングインタコネクト装置４ｂに送信する。
【０１３３】
勾配の和の計算結果ΣＧを受信した親コンピューティングインタコネクト装置４ｂは、受信した勾配の和ΣＧを直下の学習ノード２−０と子コンピューティングインタコネクト装置５ｂ−１とに送信する（図１９（Ｃ））。
【０１３４】
勾配の和ΣＧを受信した子コンピューティングインタコネクト装置５ｂ−１は、勾配の和ΣＧを直下の学習ノード２−１と子コンピューティングインタコネクト装置５ｂ−２とに送信する（図１９（Ｄ））。
【０１３５】
同様の処理を子コンピューティングインタコネクト装置５ｂ−２，５ｂ−３の各々で行う。子コンピューティングインタコネクト装置５ｂ−２は、子コンピューティングインタコネクト装置５ｂ−１から送信された勾配の和ΣＧを直下の学習ノード２−２と子コンピューティングインタコネクト装置５ｂ−３とに送信する。子コンピューティングインタコネクト装置５ｂ−３は、子コンピューティングインタコネクト装置５ｂ−２から送信された勾配の和ΣＧを直下の学習ノード２−３と親コンピューティングインタコネクト装置４ｂとに送信する。
【０１３６】
最後に、勾配の和ΣＧを受信した親コンピューティングインタコネクト装置４ｂは、これを廃棄する（図１９（Ｅ））。
以上の動作により、各学習ノード２−０〜２−３に勾配の和ΣＧが送信される。
【０１３７】
図２０に子コンピューティングインタコネクト装置５ｂ−１の構成を示す。子コンピューティングインタコネクト装置５ｂ−１は、１方向（本実施例では反時計回りの方向）に限定して通信を行うリング型のネットワーク構成における隣接する上流のコンピューティングインタコネクト装置（左隣の親コンピューティングインタコネクト装置４ｂまたは子コンピューティングインタコネクト装置）からの通信パケットを受信する受信部６０と、通信パケットの受信完了フラグ（完了／未了）に応じて受信部６０からのデータを振り分ける振分部６１と、振分部６１からのデータを一時的に記憶するバッファメモリ６２と、直下の学習ノード２−１からの通信パケットを受信する受信部６３と、直下の学習ノード２−１に通信パケットを送信する送信部６４と、受信部６３からのデータを一時的に記憶するバッファメモリ６５と、勾配の和を計算する加算器６６（演算器）と、リング型のネットワーク構成における隣接する下流のコンピューティングインタコネクト装置（右隣の親コンピューティングインタコネクト装置４ｂまたは子コンピューティングインタコネクト装置）へ通信パケットを送信する送信部６７と、バッファメモリ６２，６５を制御する制御部６８とを備えている。
【０１３８】
図２０の例では、子コンピューティングインタコネクト装置５ｂ−１の構成を示しているが、他の子コンピューティングインタコネクト装置の構成も子コンピューティングインタコネクト装置５ｂ−１と同様である。
【０１３９】
図２１に親コンピューティングインタコネクト装置４ｂの構成を示す。親コンピューティングインタコネクト装置４ｂは、リング型のネットワーク構成における隣接する上流のコンピューティングインタコネクト装置（左隣の子コンピューティングインタコネクト装置）からの通信パケットを受信する受信部７０と、直下の学習ノード２−０からの通信パケットを受信する受信部７１と、直下の学習ノード２−０に通信パケットを送信する送信部７２と、通信パケットの受信完了フラグ（完了／未了）に応じて受信部７０からのデータを振り分ける振分部７３と、リング型のネットワーク構成における隣接する下流のコンピューティングインタコネクト装置（右隣の子コンピューティングインタコネクト装置）へ通信パケットを送信する送信部７４とを備えている。
【０１４０】
図２２は、図１９（Ａ）における親コンピューティングインタコネクト装置４ｂの動作を示している。第１の実施例で説明したとおり、通信パケットは、ヘッダ２００とデータペイロード２０１とからなる。学習ノード２−０から送信される通信パケットＲＰ０のデータペイロードには、学習ノード２−０で計算された勾配値（図２２のＧ０）と、勾配値のシーケンシャル番号（図２２の例では“００３”）と、親コンピューティングインタコネクト装置４ｂで勾配の和の取得完了／未了を示す受信完了フラグ（図２２の例では未了）とが格納されている。なお、子コンピューティングインタコネクト装置５ｂ−１〜５ｂ−３においては、受信完了フラグは、勾配の和の計算の完了／未了を意味する。
【０１４１】
親コンピューティングインタコネクト装置４ｂの受信部７１は、受信した通信パケットＲＰ０のデータペイロードから勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを取り出して送信部７４に渡す。
送信部７４は、受信部７１から受け取った勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納して、通信パケットＴＰＣ１を、隣接する下流のコンピューティングインタコネクト装置（図１９（Ａ）では子コンピューティングインタコネクト装置５ｂ−１）へ送信する。
【０１４２】
図２３は、図１９（Ｂ）における子コンピューティングインタコネクト装置５ｂ−１の動作を示している。
子コンピューティングインタコネクト装置５ｂ−１の受信部６０は、親コンピューティングインタコネクト装置４ｂから受信した通信パケットＴＰＣ１のデータペイロードから勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを取り出して振分部６１に渡す。
【０１４３】
振分部６１は、受信部６０から受け取った受信完了フラグが「未了」を示しているので、受信部６０から受け取った勾配値Ｇ０とシーケンシャル番号と受信完了フラグとをバッファメモリ６２に格納する。
【０１４４】
一方、子コンピューティングインタコネクト装置５ｂ−１の受信部６３は、直下の学習ノード２−１から受信した通信パケットＲＰ１のデータペイロードから勾配値Ｇ１とシーケンシャル番号と受信完了フラグとを取り出してバッファメモリ６５に格納する。
【０１４５】
子コンピューティングインタコネクト装置５ｂ−１の制御部６８は、バッファメモリ６２とバッファメモリ６５に同一のシーケンシャル番号の勾配値Ｇ０とＧ１が揃った時点で、バッファメモリ６２から勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを読み出すと共に、バッファメモリ６５から勾配値Ｇ１とシーケンシャル番号と受信完了フラグとを読み出し、勾配値Ｇ０とＧ１を加算器６６に渡す。
【０１４６】
加算器６６は、勾配値Ｇ０とＧ１を加算する。また、制御部６８は、バッファメモリ６２から読み出したシーケンシャル番号と受信完了フラグとを送信部６７に渡す。
【０１４７】
子コンピューティングインタコネクト装置５ｂ−１の送信部６７は、加算器６６によって計算された勾配の和Ｇ０＋Ｇ１と制御部６８から受け取ったシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納して、通信パケットＴＰＣ２を、隣接する下流のコンピューティングインタコネクト装置（図１９（Ｂ）では子コンピューティングインタコネクト装置５ｂ−２）へ送信する。
【０１４８】
図２４は、図１９（Ｃ）における親コンピューティングインタコネクト装置４ｂの動作を示している。
親コンピューティングインタコネクト装置４ｂの受信部７０は、隣接する上流のコンピューティングインタコネクト装置（図１９（Ｃ）では子コンピューティングインタコネクト装置５ｂ−３）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを取り出して振分部７３に渡す。
【０１４９】
振分部７３は、受信部７０から受け取った受信完了フラグが「未了」を示しているので、受信部７０から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを送信部７２と送信部７４とに渡す。このとき、親コンピューティングインタコネクト装置４ｂが隣接する上流の子コンピューティングインタコネクト装置５ｂ−３から通信パケットＴＰＣ０を受信することは、通信パケットがリング型の通信ネットワーク８を一巡し、勾配の和の計算が完了したことを意味する。そこで、振分部７３は、受信部７０から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上で送信部７２と送信部７４とに渡す。
【０１５０】
送信部７２は、振分部７３から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ０のデータペイロードに格納して、通信パケットＴＰ０を学習ノード２−０へ送信する。
送信部７４は、振分部７３から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納して、通信パケットＴＰＣ１を、隣接する下流のコンピューティングインタコネクト装置（図１９（Ｃ）では子コンピューティングインタコネクト装置５ｂ−１）へ送信する。
【０１５１】
図２５は、図１９（Ｄ）における子コンピューティングインタコネクト装置５ｂ−１の動作を示している。
子コンピューティングインタコネクト装置５ｂ−１の受信部６０は、親コンピューティングインタコネクト装置４ｂから受信した通信パケットＴＰＣ１のデータペイロードから勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを取り出して振分部６１に渡す。
【０１５２】
振分部６１は、受信部６０から受け取った受信完了フラグが「完了」を示しているので、受信部６０から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを送信部６４と送信部６７とに渡す。
【０１５３】
送信部６４は、振分部６１から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ１のデータペイロードに格納して、通信パケットＴＰ１を学習ノード２−１へ送信する。
送信部６７は、振分部６１から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納して、通信パケットＴＰＣ２を、隣接する下流のコンピューティングインタコネクト装置（図１９（Ｄ）では子コンピューティングインタコネクト装置５ｂ−２）へ送信する。
【０１５４】
図２６は、図１９（Ｅ）における親コンピューティングインタコネクト装置４ｂの動作を示している。
親コンピューティングインタコネクト装置４ｂの受信部７０は、隣接する上流のコンピューティングインタコネクト装置（図１９（Ｅ）では子コンピューティングインタコネクト装置５ｂ−３）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを取り出して振分部７３に渡す。
【０１５５】
振分部７３は、受信部７０から受け取った受信完了フラグが「完了」を示しているので、受信部７０から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを廃棄する。
【０１５６】
以上の動作により、各学習ノード２−０〜２−３に勾配の和ΣＧが送信され、各学習ノード２−０〜２−３は、勾配の和ΣＧを用いてニューラルネットワーク２６の構成パラメータを更新し、分散学習の１サイクルが終了する。
【０１５７】
学習ノード２−０〜２−３の構成は、図７に示した第１の実施例の構成と同様である。第１の実施例との相違点は、各学習ノード２−０〜２−３の送信部２３が、勾配計算部２２によって計算された勾配の計算結果とシーケンシャル番号の他に、「未了」を示す受信完了フラグを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、通信パケットＲＰ０〜ＲＰ３を直上の親コンピューティングインタコネクト装置４ｂ、子コンピューティングインタコネクト装置５ｂ−１〜５ｂ−３に送信する点である。
【０１５８】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理にコンピューティングインタコネクト装置４ｂ，５ｂ−１〜５ｂ−３を用いることで、各学習ノード２−０〜２−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２−０〜２−３の間の通信パケットの送受信処理と勾配の加算等の演算処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【０１５９】
さらに、本実施例のようにコンピューティングインタコネクト装置４ｂ，５ｂ−１〜５ｂ−３をリング状に接続することにより、コンピューティングインタコネクト装置４ｂ，５ｂ−１〜５ｂ−３に多くの学習ノード２−０〜２−３を接続した場合でも、リング型の通信ネットワーク８の通信帯域は学習ノード２−０〜２−３の数によらず一定でよいという利点もある。
【０１６０】
［第６の実施例］
次に、本発明の第６の実施例について説明する。図２７は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例では、図２７のように１台の親コンピューティングインタコネクト装置４ｃと複数の子コンピューティングインタコネクト装置５ｃ−１〜５ｃ−３とがリング型の通信ネットワーク８で接続され、親コンピューティングインタコネクト装置４ｃと子コンピューティングインタコネクト装置５ｃ−１〜５ｃ−３のそれぞれに学習ノード２ａ−０〜２ａ−３が接続されている。本実施例では、親コンピューティングインタコネクト装置４ｃにおいて、ニューラルネットワークの構成パラメータの更新演算も行うところが第５の実施例と異なる。
【０１６１】
図２８（Ａ）〜図２８（Ｅ）に本実施例の分散深層学習システムの動作を示す。まず、親コンピューティングインタコネクト装置４ｃに接続された学習ノード２ａ−０から勾配の計算結果Ｇ０を親コンピューティングインタコネクト装置４ｃに送信し、親コンピューティングインタコネクト装置４ｃは、勾配の計算結果Ｇ０を子コンピューティングインタコネクト装置５ｃ−１に転送する（図２８（Ａ））。
【０１６２】
子コンピューティングインタコネクト装置５ｃ−１は、親コンピューティングインタコネクト装置４ｃから送信された勾配の計算結果Ｇ０と、直下の学習ノード２ａ−１から送信された勾配の計算結果Ｇ１との和Ｇ０＋Ｇ１を計算し、この計算結果Ｇ０＋Ｇ１を子コンピューティングインタコネクト装置５ｂ−２に送信する（図２８（Ｂ））。
【０１６３】
同様の処理を子コンピューティングインタコネクト装置５ｃ−２，５ｃ−３の各々で行う。子コンピューティングインタコネクト装置５ｃ−２は、子コンピューティングインタコネクト装置５ｃ−１から送信された勾配の和の計算結果Ｇ０＋Ｇ１と、直下の学習ノード２ａ−２から送信された勾配の計算結果Ｇ２との和Ｇ０＋Ｇ１＋Ｇ２を計算し、この計算結果Ｇ０＋Ｇ１＋Ｇ２を子コンピューティングインタコネクト装置５ｂ−３に送信する。子コンピューティングインタコネクト装置５ｃ−３は、子コンピューティングインタコネクト装置５ｃ−２から送信された勾配の和の計算結果Ｇ０＋Ｇ１＋Ｇ２と、直下の学習ノード２ａ−３から送信された勾配の計算結果Ｇ３との和ΣＧ＝Ｇ０＋Ｇ１＋Ｇ２＋Ｇ３を計算し、この計算結果ΣＧを親コンピューティングインタコネクト装置４ｃに送信する。
【０１６４】
勾配の和の計算結果ΣＧを受信した親コンピューティングインタコネクト装置４ｃは、勾配の和ΣＧを用いてニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを計算し、その計算結果を直下の学習ノード２ａ−０と子コンピューティングインタコネクト装置５ｃ−１とに送信する（図２８（Ｃ））。
【０１６５】
構成パラメータの更新後の値ｗ＿ｎｅｗを受信した子コンピューティングインタコネクト装置５ｃ−１は、構成パラメータの更新後の値ｗ＿ｎｅｗを直下の学習ノード２ａ−１と子コンピューティングインタコネクト装置５ｃ−２とに送信する（図２８（Ｄ））。
【０１６６】
同様の処理を子コンピューティングインタコネクト装置５ｃ−２，５ｃ−３の各々で行う。子コンピューティングインタコネクト装置５ｃ−２は、子コンピューティングインタコネクト装置５ｃ−１から送信された構成パラメータの更新後の値ｗ＿ｎｅｗを直下の学習ノード２ａ−２と子コンピューティングインタコネクト装置５ｃ−３とに送信する。子コンピューティングインタコネクト装置５ｃ−３は、子コンピューティングインタコネクト装置５ｃ−２から送信された構成パラメータの更新後の値ｗ＿ｎｅｗを直下の学習ノード２ａ−３と親コンピューティングインタコネクト装置４ｃとに送信する。
【０１６７】
最後に、構成パラメータの更新後の値ｗ＿ｎｅｗを受信した親コンピューティングインタコネクト装置４ｃは、これを廃棄する（図２８（Ｅ））。
以上の動作により、各学習ノード２ａ−０〜２ａ−３に構成パラメータの更新後の値ｗ＿ｎｅｗが送信される。
【０１６８】
図２９に子コンピューティングインタコネクト装置５ｃ−１の構成を示す。子コンピューティングインタコネクト装置５ｃ−１は、受信部６０と、振分部６１と、バッファメモリ６２と、受信部６３と、送信部６４と、バッファメモリ６５と、加算器６６と、送信部６７と、制御部６８とを備えている。
【０１６９】
図２９の例では、子コンピューティングインタコネクト装置５ｃ−１の構成を示しているが、他の子コンピューティングインタコネクト装置の構成も子コンピューティングインタコネクト装置５ｃ−１と同様である。
【０１７０】
図３０に親コンピューティングインタコネクト装置４ｃの構成を示す。親コンピューティングインタコネクト装置４ｃは、受信部７０と、受信部７１と、送信部７２と、振分部７３と、送信部７４と、ＮＮ（ニューラルネットワーク）構成パラメータ更新演算部７５と、構成パラメータメモリ７６とを備えている。第５の実施例との違いは、ＮＮ構成パラメータ更新演算部７５と構成パラメータメモリ７６とを追加した点である。
【０１７１】
図３１は、図２８（Ａ）における親コンピューティングインタコネクト装置４ｃの動作を示している。学習ノード２ａ−０から送信される通信パケットＲＰ０のデータペイロードには、学習ノード２ａ−０で計算された勾配値（図３１のＧ０）と、勾配値のシーケンシャル番号（図３１の例では“００３”）と、受信完了フラグ（図３１の例では未了）とが格納されている。
【０１７２】
親コンピューティングインタコネクト装置４ｃの受信部７１は、受信した通信パケットＲＰ０のデータペイロードから勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを取り出して送信部７４に渡す。
送信部７４は、受信部７１から受け取った勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納して、通信パケットＴＰＣ１を、隣接する下流のコンピューティングインタコネクト装置（図２８（Ａ）では子コンピューティングインタコネクト装置５ｃ−１）へ送信する。
【０１７３】
図３２は、図２８（Ｂ）における子コンピューティングインタコネクト装置５ｃ−１の動作を示している。
子コンピューティングインタコネクト装置５ｃ−１の受信部６０は、親コンピューティングインタコネクト装置４ｃから受信した通信パケットＴＰＣ１のデータペイロードから勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを取り出して振分部６１に渡す。
【０１７４】
振分部６１は、受信部６０から受け取った受信完了フラグが「未了」を示しているので、受信部６０から受け取った勾配値Ｇ０とシーケンシャル番号と受信完了フラグとをバッファメモリ６２に格納する。
【０１７５】
一方、子コンピューティングインタコネクト装置５ｃ−１の受信部６３は、直下の学習ノード２ａ−１から受信した通信パケットＲＰ１のデータペイロードから勾配値Ｇ１とシーケンシャル番号と受信完了フラグとを取り出してバッファメモリ６５に格納する。
【０１７６】
子コンピューティングインタコネクト装置５ｃ−１の制御部６８は、バッファメモリ６２とバッファメモリ６５に同一のシーケンシャル番号の勾配値Ｇ０とＧ１が揃った時点で、バッファメモリ６２から勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを読み出すと共に、バッファメモリ６５から勾配値Ｇ１とシーケンシャル番号と受信完了フラグとを読み出し、勾配値Ｇ０とＧ１を加算器６６に渡す。
【０１７７】
加算器６６は、勾配値Ｇ０とＧ１を加算する。また、制御部６８は、バッファメモリ６２から読み出したシーケンシャル番号と受信完了フラグとを送信部６７に渡す。
【０１７８】
子コンピューティングインタコネクト装置５ｃ−１の送信部６７は、加算器６６によって計算された勾配の和Ｇ０＋Ｇ１と制御部６８から受け取ったシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納して、通信パケットＴＰＣ２を、隣接する下流のコンピューティングインタコネクト装置（図２８（Ｂ）では子コンピューティングインタコネクト装置５ｃ−２）へ送信する。
【０１７９】
図３３は、図２８（Ｃ）における親コンピューティングインタコネクト装置４ｃの動作を示している。
親コンピューティングインタコネクト装置４ｃの受信部７０は、隣接する上流のコンピューティングインタコネクト装置（図２８（Ｃ）では子コンピューティングインタコネクト装置５ｃ−３）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを取り出して振分部７３に渡す。
【０１８０】
振分部７３は、受信部７０から受け取った受信完了フラグが「未了」を示しているので、受信部７０から受け取った勾配の和ΣＧとシーケンシャル番号と受信完了フラグとをＮＮ構成パラメータ更新演算部７５に渡す。このとき、振分部７３は、受信部７０から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上でＮＮ構成パラメータ更新演算部７５に渡す。
【０１８１】
第２の実施例と同様に、学習開始時点において、各学習ノード２ａ−０〜２ａ−３のニューラルネットワーク２６は、全ての学習ノード２ａ−０〜２ａ−３で同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値が親コンピューティングインタコネクト装置４ｃの構成パラメータメモリ７６に記憶されている。
【０１８２】
ＮＮ構成パラメータ更新演算部７５は、振分部７３から受け取った勾配の和ΣＧと、構成パラメータメモリ７６に記憶されている構成パラメータの値ｗ＿ｏｌｄとを基に、ニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを構成パラメータ毎に計算して、この計算結果と振分部７３から受け取ったシーケンシャル番号と受信完了フラグとを送信部７２，７４に出力する。更新方法として例えば、勾配降下法を用いる場合は式（５）のような計算を行う。
【０１８３】
また、ＮＮ構成パラメータ更新演算部７５は、構成パラメータの更新後の値ｗ＿ｎｅｗを送信部７２，７４に出力すると同時に、構成パラメータメモリ７６に格納されている当該構成パラメータの値を、更新後の値ｗ＿ｎｅｗによって上書きする。
【０１８４】
送信部７２は、ＮＮ構成パラメータ更新演算部７５から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ０のデータペイロードに格納して、通信パケットＴＰ０を学習ノード２ａ−０へ送信する。
送信部７４は、ＮＮ構成パラメータ更新演算部７５から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納して、通信パケットＴＰＣ１を、隣接する下流のコンピューティングインタコネクト装置（図２８（Ｃ）では子コンピューティングインタコネクト装置５ｃ−１）へ送信する。
【０１８５】
図３４は、図２８（Ｄ）における子コンピューティングインタコネクト装置５ｃ−１の動作を示している。
子コンピューティングインタコネクト装置５ｃ−１の受信部６０は、親コンピューティングインタコネクト装置４ｃから受信した通信パケットＴＰＣ１のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを取り出して振分部６１に渡す。
【０１８６】
振分部６１は、受信部６０から受け取った受信完了フラグが「完了」を示しているので、受信部６０から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを送信部６４と送信部６７とに渡す。
【０１８７】
送信部６４は、振分部６１から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ１のデータペイロードに格納して、通信パケットＴＰ１を学習ノード２ａ−１へ送信する。
送信部６７は、振分部６１から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納して、通信パケットＴＰＣ２を、隣接する下流のコンピューティングインタコネクト装置（図２８（Ｄ）では子コンピューティングインタコネクト装置５ｃ−２）へ送信する。
【０１８８】
図３５は、図２８（Ｅ）における親コンピューティングインタコネクト装置４ｃの動作を示している。
親コンピューティングインタコネクト装置４ｃの受信部７０は、隣接する上流のコンピューティングインタコネクト装置（図２８（Ｅ）では子コンピューティングインタコネクト装置５ｃ−３）から受信した通信パケットＴＰＣ０のペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを取り出して振分部７３に渡す。
【０１８９】
振分部７３は、受信部７０から受け取った受信完了フラグが「完了」を示しているので、受信部７０から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを廃棄する。
【０１９０】
以上の動作により、各学習ノード２ａ−０〜２ａ−３に構成パラメータの更新後の値ｗ＿ｎｅｗが送信される。各学習ノード２ａ−０〜２ａ−３は、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを、構成パラメータの更新後の値ｗ＿ｎｅｗによって上書きすることにより、ニューラルネットワーク２６を更新する。
【０１９１】
学習ノード２ａ−０〜２ａ−３の構成は、図１０に示した第２の実施例の構成と同様である。第２の実施例との相違点は、各学習ノード２ａ−０〜２ａ−３の送信部２３が、勾配計算部２２によって計算された勾配の計算結果とシーケンシャル番号の他に、「未了」を示す受信完了フラグを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、通信パケットＲＰ０〜ＲＰ３を直上の親コンピューティングインタコネクト装置４ｃ、子コンピューティングインタコネクト装置５ｃ−１〜５ｃ−３に送信する点である。
【０１９２】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置４ｃ，５ｃ−１〜５ｃ−３を用いることで、各学習ノード２ａ−０〜２ａ−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２ａ−０〜２ａ−３の間の通信パケットの送受信処理と勾配の加算や構成パラメータの更新演算等の演算処理とを同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【０１９３】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配の和演算も、構成パラメータの更新演算も、ニューラルネットワーク２６の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード２ａ−０〜２ａ−３でのニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置４ｃ，５ｃ−１〜５ｃ−３の演算器は同じ専用演算回路を用いることができるというメリットもある。
【０１９４】
さらに、本実施例のようにコンピューティングインタコネクト装置４ｃ，５ｃ−１〜５ｃ−３をリング状に接続することにより、コンピューティングインタコネクト装置４ｃ，５ｃ−１〜５ｃ−３に多くの学習ノード２ａ−０〜２ａ−３を接続した場合でも、リング型の通信ネットワーク８の通信帯域は学習ノード２ａ−０〜２ａ−３の数によらず一定でよいという利点もある。
【０１９５】
第１〜第６の実施例で説明した学習ノードの各々は、ＣＰＵ（Central Processing Unit）、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。学習ノードの各々のＣＰＵは、各々の記憶装置に格納されたプログラムに従って第１〜第６の実施例で説明した処理を実行する。
【産業上の利用可能性】
【０１９６】
本発明は、ニューラルネットワークの機械学習を行う技術に適用することができる。
【符号の説明】
【０１９７】
１，１ａ…コンピューティングインタコネクト装置、２−０〜２−１５，２ａ−０〜２ａ−１５…学習ノード、３，６〜９…通信ネットワーク、４，４ａ〜４ｃ…親コンピューティングインタコネクト装置、５−０〜５−３，５ａ−０〜５ａ−３，５ｂ−１〜５ｂ−３，５ｃ−１〜５ｃ−３…子コンピューティングインタコネクト装置、１０−０〜１０−３，２４，２４ａ，４０−０〜４０−３，５０−０〜５０−３，５６，６０，６３，７０，７１…受信部、１１−０〜１１−３，４１−０〜４１−３，５１−０〜５１−３，６２，６５…バッファメモリ、１２，４２，５２，６６…加算器、１３−０〜１３−３，１３ａ−０〜１３ａ−３，２３，４３−０〜４３−３，４３ａ−０〜４３ａ−３，５３−０〜５３−３，５５，６４，６７，７２，７４…送信部、１４−０〜１４−３，１４ａ−０〜１４ａ−３，４４−０〜４４−３，４４ａ−０〜４４ａ−３，５４−０〜５４−３，６８…制御部、１５，４５，７６…構成パラメータメモリ、１６，４６，７５…ＮＮ構成パラメータ更新演算部、２０…入力部、２１…損失関数計算部、２２…勾配計算部、２５，２５ａ…構成パラメータ更新部、２６…ニューラルネットワーク、５７…転送部、６１，７３…振分部。
【図１】
2019144642.tif 000006
【図２】
2019144642.tif 000007
【図３】
2019144642.tif 000008
【図４】
2019144642.tif 000009
【図５】
2019144642.tif 000010
【図６】
2019144642.tif 000011
【図７】
2019144642.tif 000012
【図８】
2019144642.tif 000013
【図９】
2019144642.tif 000014
【図１０】
2019144642.tif 000015
【図１１】
2019144642.tif 000016
【図１２】
2019144642.tif 000017
【図１３】
2019144642.tif 000018
【図１４】
2019144642.tif 000019
【図１５】
2019144642.tif 000020
【図１６】
2019144642.tif 000021
【図１７】
2019144642.tif 000022
【図１８】
2019144642.tif 000023
【図１９】
2019144642.tif 000024
【図２０】
2019144642.tif 000025
【図２１】
2019144642.tif 000026
【図２２】
2019144642.tif 000027
【図２３】
2019144642.tif 000028
【図２４】
2019144642.tif 000029
【図２５】
2019144642.tif 000030
【図２６】
2019144642.tif 000031
【図２７】
2019144642.tif 000032
【図２８】
2019144642.tif 000033
【図２９】
2019144642.tif 000034
【図３０】
2019144642.tif 000035
【図３１】
2019144642.tif 000036
【図３２】
2019144642.tif 000037
【図３３】
2019144642.tif 000038
【図３４】
2019144642.tif 000039
【図３５】
2019144642.tif 000040
【図３６】
2019144642.tif 000041