(57)【要約】【課題】通信ネットワークに接続された多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理をより高速に行うことができる分散深層学習システムを提供することを目的とする。【解決手段】  分散深層学習システムは、１方向に通信可能なリング型の通信ネットワーク３を介して互いに接続された複数のコンピューティングインタコネクト装置１と、複数のコンピューティングインタコネクト装置１のそれぞれと一対一に接続された複数の学習ノード２とを備え、コンピューティングインタコネクト装置１は、各学習ノード２間の通信パケットの送受信処理とＡｌｌ−ｒｅｄｕｃｅ処理とを同時並行して実行する。【選択図】  図１
2020003848.tif 000002
【特許請求の範囲】
【請求項１】
１方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、
前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備え、
各コンピューティングインタコネクト装置は、
自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信部と、
自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信部と、
この第２受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信部によって取得された前記転送データを振り分ける第１振分部と、
前記第１受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信部によって取得された前記ノードデータを振り分ける第２振分部と、
前記第２振分部によって振り分けられた前記ノードデータ、または前記第１振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信部と、
前記第１振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信部とを備え、
前記第１振分部は、
前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第１送信部および前記第２送信部に振り分け、
前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、
前記第２振分部は、
前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第１送信部に振り分け、
各学習ノードは、
学習データの入力に対して演算結果を出力するニューラルネットワークと、
データをパケット化して、自ノードと接続されたコンピューティングインタコネクト装置に送信する第３送信部と、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第３受信部と、
この第３受信部が取得した前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新部と
を備えることを特徴とする分散深層学習システム。
【請求項２】
請求項１に記載の分散深層学習システムにおいて、
前記コンピューティングインタコネクト装置は、
前記第１振分部によって振り分けられた前記転送データと、前記第２振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、
前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、
前記第２振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、
前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第１送信部に出力する
ことを特徴とする分散深層学習システム。
【請求項３】
請求項１または請求項２に記載の分散深層学習システムにおいて、
前記コンピューティングインタコネクト装置は、
前記ノードデータを記憶する機能をもつ構成パラメータメモリと、
前記第１振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算部と、
をさらに備え、
前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、
前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第１送信部および前記第２送信部に出力し、
前記第１送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、
前記第２送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信する
ことを特徴とする分散深層学習システム。
【請求項４】
１方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、
前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備える分散深層学習システムにおける分散深層学習方法であって、
各コンピューティングインタコネクト装置が、
自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信ステップと、
自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信ステップと、
この第２受信ステップで受信された前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信ステップで取得された前記転送データを振り分ける第１振分ステップと、
前記第１受信ステップで受信された前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信ステップで取得された前記ノードデータを振り分ける第２振分ステップと、
前記第２振分ステップで振り分けられた前記ノードデータ、または前記第１振分ステップで振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信ステップと、
前記第１振分ステップで振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信ステップとを備え、
各学習ノードが、
ニューラルネットワークに学習データを入力して演算結果を出力するニューラルネットワーク演算ステップと、
データをパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第３送信ステップと、
自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第３受信ステップと、
この第３受信ステップで取得された前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新ステップと
を備えることを特徴とする分散深層学習方法。
【請求項５】
請求項４に記載の分散深層学習方法において、
前記コンピューティングインタコネクト装置が、
前記ノードデータを構成パラメータメモリに記憶する構成パラメータ記憶ステップと、
前記第１振分ステップで振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算ステップと、
をさらに備えることを特徴とする分散深層学習方法。
【請求項６】
１方向に通信可能なリング型の通信ネットワークを介して互いに接続され、かつ、複数の学習ノードのそれぞれと一対一に接続された複数のコンピューティングインタコネクト装置であって、
自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信部と、
自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信部と、
この第２受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信部によって取得された前記転送データを振り分ける第１振分部と、
前記第１受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信部によって取得された前記ノードデータを振り分ける第２振分部と、
前記第２振分部によって振り分けられた前記ノードデータ、または前記第１振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信部と、
前記第１振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信部と
を備え、
前記第１振分部は、
前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第１送信部および前記第２送信部に振り分け、
前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、
前記第２振分部は、
記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第１送信部に振り分ける
ことを特徴とするコンピューティングインタコネクト装置。
【請求項７】
請求項６に記載のコンピューティングインタコネクト装置において、
前記第１振分部によって振り分けられた前記転送データと、前記第２振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、
前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、
前記第２振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、
前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第１送信部に出力する
ことを特徴とするコンピューティングインタコネクト装置。
【請求項８】
請求項６または請求項７に記載のコンピューティングインタコネクト装置において、
前記ノードデータを記憶する機能をもつ構成パラメータメモリと、
前記第１振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されているデータを更新する構成パラメータ更新演算部と
をさらに備え、
前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、
前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第１送信部および前記第２送信部に出力し、
前記第１送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、
前記第２送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信する
ことを特徴とするコンピューティングインタコネクト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを用いた機械学習である深層学習を複数の学習ノードで分散協調して実行する分散学習システム、分散学習方法、およびコンピューティングインタコネクト装置に関する。
【背景技術】
【０００２】
様々な情報、データに対する機械学習の活用により、サービスの高度化・付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要である場合が多い。特に、深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習用データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが１つの解決法になる。
【０００３】
例えば、非特許文献１には、図２６のように、４台の学習ノード３００−１〜３００−４と、インフィニバンドスイッチ３０１と、ヘッドノード３０２とがインフィニバンドネットワーク（ＩｎｆｉｎｉＢａｎｄ  ｎｅｔｗｏｒｋ）を介して接続された分散深層学習システムが開示されている。各学習ノード３００−１〜３００−４には、それぞれ４台のＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が搭載されている。この非特許文献１に開示された分散深層学習システムでは、４台の学習ノード３００−１〜３００−４によって、学習演算を並列処理することによって高速化を図っている。
【０００４】
非特許文献２には、８台のＧＰＵを搭載した学習ノード（ＧＰＵサーバ）とイーサネット（登録商標）スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献２には、学習ノードを１台、２台、４台、８台、１６台、３２台、４４台用いた場合の例がそれぞれ開示されている。非特許文献２に開示されたシステム上で、分散同期確率的勾配降下法（Ｄｉｓｔｒｉｂｕｔｅｄ  ｓｙｎｃｈｒｏｎｏｕｓ  ＳＧＤ（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ））を用いて機械学習を行う。具体的には、以下の手順で行う。
【０００５】
（Ｉ）学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。
（ＩＩ）ミニバッチをＧＰＵの台数分に分けて、各ＧＰＵに割り当てる。
（ＩＩＩ）各ＧＰＵにおいて、（ＩＩ）で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解（教師データと呼ぶ）からどれだけ乖離しているかの指標となる損失関数Ｌ（ｗ）を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬（ｆｏｒｗａｒｄ  ｐｒｏｐａｇａｔｉｏｎ）と呼ぶ。
【０００６】
（ＩＶ）各ＧＰＵにおいて、（ＩＩＩ）で求めた損失関数値に対するニューラルネットワークの各構成パラメータ（ニューラルネットワークの重み等）による偏微分値（勾配）を求める。この工程では、ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この工程を逆伝搬（ｂａｃｋ  ｐｒｏｐａｇａｔｉｏｎ）と呼ぶ。
（Ｖ）各ＧＰＵ毎に計算した勾配の平均を計算する。
【０００７】
（ＶＩ）各ＧＰＵにおいて、（Ｖ）で計算した勾配の平均値を用いて、確率的勾配降下法（ＳＧＤ：Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ）を用いて、損失関数Ｌ（ｗ）がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数Ｌ（ｗ）を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数Ｌ（ｗ）が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
【０００８】
また、非特許文献３には、８台のＧＰＵを搭載した学習ノード１２８台がインフィニバンドネットワーク（ＩｎｆｉｎｉＢａｎｄ  ｎｅｔｗｏｒｋ）を介して接続された構成の分散深層学習システムが開示されている。
【０００９】
非特許文献１〜３のいずれの分散深層学習システムにおいても、学習ノード数が増えるに従い、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各学習ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを学習ノード間で送受信するか、あるいは学習ノードと非特許文献１のヘッドノードとの間で送受信することにより、平均値算出等の計算を行う必要がある。
【００１０】
一方、並列処理数を増やすために、ノード数を増やすにつれ、必要な通信処理は急速に増大する。従来技術のように、学習ノードやヘッドノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバーヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。
【００１１】
非特許文献３には、学習処理を１００サイクル行うのにかかる所要時間とこのうちの通信にかかる時間と、ＧＰＵ数との関係が開示されている。この関係によると、ＧＰＵ数が増えるにつれて通信にかかる時間が増えており、特にＧＰＵ数が５１２以上のところで急激に増加している。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Ｒｅｎｇａｎ  Ｘｕ  ａｎｄ  Ｎｉｓｈａｎｔｈ  Ｄａｎｄａｐａｎｔｈｕ．，“ＮＶＩＤＩＡ（登録商標）  Ｔｅｓｌａ（登録商標）  Ｐ１００  ＧＰＵによるディープラーニングのパフォーマンス”，デル株式会社，２０１６年，インターネット＜ｈｔｔｐ：／／ｊａ．ｃｏｍｍｕｎｉｔｙ．ｄｅｌｌ．ｃｏｍ／ｔｅｃｈｃｅｎｔｅｒ／ｍ／ｍｅｄｉａｇａｌｌｅｒｙ／３７６５／ｄｏｗｎｌｏａｄ＞
【非特許文献２】Ｐｒｉｙａ  Ｇｏｙａｌ，Ｐｉｏｔｒ  Ｄｏｌｌａｒ，Ｒｏｓｓ  Ｇｉｒｓｈｉｃｋ，Ｐｉｅｔｅｒ  Ｎｏｏｒｄｈｕｉｓ，Ｌｕｋａｓｚ  Ｗｅｓｏｌｏｗｓｋｉ，Ａａｐｏ  Ｋｙｒｏｌａ，Ａｎｄｒｅｗ  Ｔｕｌｌｏｃｈ，Ｙａｎｇｑｉｎｇ  Ｊｉａ，Ｋａｉｍｉｎｇ  Ｈｅ，“Ａｃｃｕｒａｔｅ，Ｌａｒｇｅ  Ｍｉｎｉｂａｔｃｈ  ＳＧＤ：Ｔｒａｉｎｉｎｇ  ＩｍａｇｅＮｅｔ  ｉｎ  １  Ｈｏｕｒ”，米国コーネル大学ライブラリー，ａｒＸｉｖ：１７０６．０２６７７，２０１７，インターネット＜ｈｔｔｐｓ：／／ａｒｘｉｖ．ｏｒｇ／ａｂｓ／１７０６．０２６７７＞
【非特許文献３】Ｔａｋｕｙａ  Ａｋｉｂａ，Ｓｈｕｊｉ  Ｓｕｚｕｋｉ，Ｋｅｉｓｕｋｅ  Ｆｕｋｕｄａ，“Ｅｘｔｒｅｍｅｌｙ  Ｌａｒｇｅ  Ｍｉｎｉｂａｔｃｈ  ＳＧＤ：  Ｔｒａｉｎｉｎｇ  ＲｅｓＮｅｔ−５０  ｏｎ  ＩｍａｇｅＮｅｔ  ｉｎ  １５  Ｍｉｎｕｔｅｓ”，米国コーネル大学ライブラリー，ａｒＸｉｖ：１７１１．０４３２５，２０１７，インターネット＜ｈｔｔｐｓ：／／ａｒｘｉｖ．ｏｒｇ／ａｂｓ／１７１１．０４３２５＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明は、上述した課題を解決するためになされたものであり、通信ネットワークに接続された多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理をより高速に行うことができる分散深層学習システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決するために、本発明に係る分散深層学習システムは、１方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備え、各コンピューティングインタコネクト装置は、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信部と、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信部と、この第２受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信部によって取得された前記転送データを振り分ける第１振分部と、前記第１受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信部によって取得された前記ノードデータを振り分ける第２振分部と、前記第２振分部によって振り分けられた前記ノードデータ、または前記第１振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信部と、前記第１振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信部とを備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第１送信部および前記第２送信部に振り分け、前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、前記第２振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第１送信部に振り分け、各学習ノードは、学習データの入力に対して演算結果を出力するニューラルネットワークと、データをパケット化して、自ノードと接続されたコンピューティングインタコネクト装置に送信する第３送信部と、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第３受信部と、この第３受信部が取得した前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新部とを備えることを特徴とする。
【００１５】
また、本発明に係る分散深層学習システムにおいて、前記コンピューティングインタコネクト装置は、前記第１振分部によって振り分けられた前記転送データと、前記第２振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、前記第２振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第１送信部に出力してもよい。
【００１６】
また、本発明に係る分散深層学習システムにおいて、前記コンピューティングインタコネクト装置は、前記ノードデータを記憶する機能をもつ構成パラメータメモリと、前記第１振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算部と、をさらに備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第１送信部および前記第２送信部に出力し、前記第１送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、前記第２送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信してもよい。
【００１７】
また、本発明に係る分散深層学習方法は、１方向に通信可能なリング型の通信ネットワークを介して互いに接続された複数のコンピューティングインタコネクト装置と、前記複数のコンピューティングインタコネクト装置のそれぞれと一対一に接続された複数の学習ノードとを備える分散深層学習システムにおける分散深層学習方法であって、各コンピューティングインタコネクト装置が、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信ステップと、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信ステップと、この第２受信ステップで受信された前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信ステップで取得された前記転送データを振り分ける第１振分ステップと、前記第１受信ステップで受信された前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信ステップで取得された前記ノードデータを振り分ける第２振分ステップと、前記第２振分ステップで振り分けられた前記ノードデータ、または前記第１振分ステップで振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信ステップと、前記第１振分ステップで振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信ステップとを備え、各学習ノードが、ニューラルネットワークに学習データを入力して演算結果を出力するニューラルネットワーク演算ステップと、データをパケット化して、自ノードと接続された前記コンピューティングインタコネクト装置に送信する第３送信ステップと、自ノードと接続された前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された前記転送データを取得する第３受信ステップと、この第３受信ステップで取得された前記転送データに基づいて前記ニューラルネットワークの構成パラメータデータを更新する構成パラメータ更新ステップとを備えることを特徴とする。
【００１８】
また、本発明に係る分散深層学習方法において、前記コンピューティングインタコネクト装置が、前記ノードデータを構成パラメータメモリに記憶する構成パラメータ記憶ステップと、前記第１振分ステップで振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として、更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されたデータを更新する構成パラメータ更新演算ステップと、をさらに備えていてもよい。
【００１９】
また、本発明に係るコンピューティングインタコネクト装置は、１方向に通信可能なリング型の通信ネットワークを介して互いに接続され、かつ、複数の学習ノードのそれぞれと一対一に接続された複数のコンピューティングインタコネクト装置であって、自装置に接続された学習ノードから送信されたパケットを受信して、このパケットに格納されたノードデータを取得する第１受信部と、自装置に隣接する前記通信ネットワークの上流側のコンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された転送データを取得する第２受信部と、この第２受信部が受信した前記パケットに含まれるパケットの受信の完了または未了を示す受信完了フラグと自装置に対して予め割り当てられた役割とに応じて、前記第２受信部によって取得された前記転送データを振り分ける第１振分部と、前記第１受信部が受信した前記パケットに含まれる前記受信完了フラグと前記役割とに応じて、前記第１受信部によって取得された前記ノードデータを振り分ける第２振分部と、前記第２振分部によって振り分けられた前記ノードデータ、または前記第１振分部により振り分けられた前記転送データをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信する第１送信部と、前記第１振分部によって振り分けられた前記転送データをパケット化して自装置と接続された前記学習ノードに送信する第２送信部とを備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記第１送信部および前記第２送信部に振り分け、前記受信完了フラグがパケットの受信の完了を示し、かつ、前記役割が親である場合には、前記転送データを廃棄し、前記第２振分部は、記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記ノードデータを前記第１送信部に振り分けることを特徴とする。
【００２０】
また、本発明に係るコンピューティングインタコネクト装置において、前記第１振分部によって振り分けられた前記転送データと、前記第２振分部によって振り分けられた前記ノードデータとを入力とする演算を行う演算器をさらに備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記転送データを前記演算器に振り分け、前記第２振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が子である場合には、前記ノードデータを前記演算器に振り分け、前記演算器は、前記転送データおよび前記ノードデータを入力とする演算結果を前記第１送信部に出力してもよい。
【００２１】
また、本発明に係るコンピューティングインタコネクト装置において、前記ノードデータを記憶する機能をもつ構成パラメータメモリと、前記第１振分部によって振り分けられた前記転送データと前記構成パラメータメモリに記憶されたデータを入力として更新後の構成パラメータデータを計算して、前記構成パラメータメモリに記憶されているデータを更新する構成パラメータ更新演算部とをさらに備え、前記第１振分部は、前記受信完了フラグがパケットの受信の未了を示し、かつ、前記役割が親である場合には、前記転送データを前記構成パラメータ更新演算部に振り分け、前記構成パラメータ更新演算部は、算出した前記更新後の構成パラメータデータを前記第１送信部および前記第２送信部に出力し、前記第１送信部は、前記更新後の構成パラメータデータをパケット化して、自装置に隣接する前記通信ネットワークの下流側のコンピューティングインタコネクト装置に送信し、前記第２送信部は、前記更新後の構成パラメータデータをパケット化して、自装置と接続された前記学習ノードに送信してもよい。
【発明の効果】
【００２２】
本発明によれば、コンピューティングインタコネクト装置が各学習ノードで計算された勾配の値の和を計算し、計算した結果を各学習ノードに返送する処理を行い、この処理と各学習ノード間の通信パケットの送受信処理とが同時並行して実行される。そのため、通信ネットワークに接続された多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理をより高速に行うことができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の第１の実施の形態に係る分散深層学習システムの構成を示すブロック図である。
【図２】図２は、２層ニューラルネットワークの構成を示すブロック図である。
【図３】図３は、従来の分散深層学習処理の手順を説明する図である。
【図４】図４は、本発明の第１の実施の形態に係る学習ノードの構成を示すブロック図である。
【図５】図５は、本発明の第１の実施の形態に係る分散学習処理の手順を説明する図である。
【図６】図６は、本発明の第１の実施の形態に係る分散学習処理の手順を説明する図である。
【図７Ａ】図７Ａは、本発明の第１の実施の形態に係る分散深層学習処理システムの動作を説明する図である。
【図７Ｂ】図７Ｂは、本発明の第１の実施の形態に係る分散深層学習処理システムの動作を説明する図である。
【図７Ｃ】図７Ｃは、本発明の第１の実施の形態に係る分散深層学習処理システムの動作を説明する図である。
【図７Ｄ】図７Ｄは、図７Ａから図７Ｃの演算情報テーブルを示す図である。
【図８Ａ】図８Ａは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｂ】図８Ｂは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｃ】図８Ｃは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｄ】図８Ｄは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｅ】図８Ｅは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｆ】図８Ｆは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図８Ｇ】図８Ｇは、本発明の第１の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図９】図９は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置の構成を示すブロック図である。
【図１０】図１０は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０）の動作を説明する図である。
【図１１】図１１は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿１）の動作を説明する図である。
【図１２】図１２は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿２）の動作を説明する図である。
【図１３】図１３は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０）の動作を説明する図である。
【図１４】図１４は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿１）の動作を説明する図である。
【図１５】図１５は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿２）の動作を説明する図である。
【図１６】図１６は、本発明の第１の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０）の動作を説明する図である。
【図１７Ａ】図１７Ａは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｂ】図１７Ｂは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｃ】図１７Ｃは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｄ】図１７Ｄは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｅ】図１７Ｅは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｆ】図１７Ｆは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１７Ｇ】図１７Ｇは、本発明の第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
【図１８】図１８は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置の構成を示すブロック図である。
【図１９】図１９は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０’）の動作を説明する図である。
【図２０】図２０は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿１’）の動作を説明する図である。
【図２１】図２１は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿２’）の動作を説明する図である。
【図２２】図２２は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０’）の動作を説明する図である。
【図２３】図２３は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿１’）の動作を説明する図である。
【図２４】図２４は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿２’）の動作を説明する図である。
【図２５】図２５は、本発明の第２の実施の形態に係るコンピューティングインタコネクト装置（１ＣＩ＿０’）の動作を説明する図である。
【図２６】図２６は、従来の分散深層学習システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２４】
以下、本発明の好適な実施の形態について、図１から図２５を参照して詳細に説明する。
【００２５】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る分散深層学習システムの構成を示すブロック図である。本実施の形態に係る分散深層学習システムは、複数のコンピューティングインタコネクト（Ｃｏｍｐｕｔｉｎｇ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＣＩ）装置１ＣＩ＿０〜１ＣＩ＿３がリング型の通信ネットワーク３で互いに接続され、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３のそれぞれに学習ノード２−０〜２−３のそれぞれが一対一となるように接続された構造を有する。
【００２６】
なお、本発明において、コンピューティングインタコネクト装置とは、ネットワーク上に分散配置されている機器を意味する。以下、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３を総称してコンピューティングインタコネクト１ということがある。同様に、学習ノード２−０〜２−３を総称して学習ノード２ということがある。
【００２７】
学習ノード２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算資源、記憶装置およびインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現してもよいし、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）に形成したＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）回路で実現してもよい。
【００２８】
コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３間は、イーサネット（登録商標）や、インフィニバンド（ＩｎｆｉｎｉＢａｎｄ、登録商標）などの、通信パケットをやりとりすることで通信を行う通信ネットワークで互いに接続されている。
【００２９】
コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３と学習ノード２−０〜２−３との間は、イーサネットや、インフィニバンド（ＩｎｆｉｎｉＢａｎｄ）などの通信ネットワークで互いに接続されていてもよい。あるいは、学習ノード２−０〜２−３内のＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）などのＩ／Ｏインタフェースにコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３を直に挿入する接続構成を採用してもよい。
【００３０】
［学習ノードの説明］
学習ノード２は、数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ装置である。ニューラルネットワークは、各学習ノード２−０〜２−３内に構築される。なお、学習ノード２−０〜２−３が備える各機能ブロックの詳細については後述する。
【００３１】
［学習についての説明］
学習ノード２におけるニューラルネットワークの学習処理について、教師データ付き学習を例に説明する。図２にニューラルネットワークの例として入力層（第１層）、中間層（第２層）、出力層（第３層）からなるごく単純な２層ニューラルネットワークを示す。図２のＮｋ（ｉ）は第ｋ層、ｉ番目のニューロンである。ｘ１，ｘ２は入力、ｙ１，ｙ２は出力、ｗ１（１１），ｗ１（１２），・・・，ｗ１（２３）は第１層目の重みパラメータ、ｗ２（１１），ｗ２（１２），・・・，ｗ２（３２）は第２層目の重みパラメータである。
【００３２】
教師データ付き学習の場合、各学習データには対応する教師データ（正解データ）が予め用意されており、ニューラルネットワークの出力値が教師データに近くなるように、ニューラルネットワークの構成パラメータを更新していく。図２の例の場合のニューラルネットワークの構成パラメータは、重みｗ１（１１），ｗ１（１２），・・・，ｗ１（２３），ｗ２（１１），ｗ２（１２），・・・，ｗ２（３２）である。これらの構成パラメータを最適化していくことにより、ニューラルネットワークの精度を上げていく。
【００３３】
具体的には、ニューラルネットワークの出力値が教師データとどれだけ乖離しているかの指標となる損失関数を定め、この損失関数が小さくなるように構成パラメータを更新していく。この例では、入力学習データｘ１，ｘ２に対応する出力値をｙ１，ｙ２、教師データをｔ１，ｔ２とすると、損失関数Ｌは、例えば次式のようになる。
【００３４】
【数１】
2020003848.tif 000003
【００３５】
次に、この損失関数Ｌに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル（これを勾配と呼ぶ）を求める。この例では、勾配は以下のようになる。
【００３６】
【数２】
2020003848.tif 000004
【００３７】
次に、勾配を用いて、損失関数Ｌがより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。更新の方法はいろいろあるが、例えば勾配降下法を用いて、それぞれの重みパラメータを以下のように更新する。
【００３８】
【数３】
2020003848.tif 000005
【００３９】
ここで、ηは学習率と呼ばれる定数である。式（３）により、各重みパラメータを、勾配と逆の方向、すなわち、損失関数Ｌを減少させる方向に学習率ηに比例する量だけ変化させている。そのため、更新後のニューラルネットワークの損失関数Ｌは更新前より小さくなる。
【００４０】
このように、１組の入力学習データに対して、損失関数Ｌの計算、勾配の計算、構成パラメータの更新の処理を行う。そして、この構成パラメータの更新されたニューラルネットワークに対して、次の入力学習データを入力して同じ処理を行い、構成パラメータを更新する。このサイクルを繰り返すことにより、損失関数Ｌが小さいニューラルネットワークに更新していくことで、ニューラルネットワークの学習を行う。
【００４１】
ここで、損失関数Ｌを求める工程では、ニューラルネットワークの入力層から出力層に向かって順番に出力値を計算していくことから、この工程を順伝搬（ｆｏｒｗａｒｄ  ｐｒｏｐａｇａｔｉｏｎ）と呼ぶ。一方、勾配を求める工程では、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータに対する勾配を計算していく逆伝搬（ｂａｃｋ  ｐｒｏｐａｇａｔｉｏｎ）と呼ぶ手法を用いることが多い。
【００４２】
［複数の学習ノードによる分散学習処理］
以上のようなニューラルネットワークの学習で十分な精度を達成するには、大量の学習データをニューラルネットワークに入力して学習処理を繰り返す必要があり、長い時間を要する。この学習にかかる所要時間を短縮することは大きなメリットがある。
【００４３】
学習にかかる所要時間を短縮するため、同じニューラルネットワークの学習ノード２を複数用意して、学習データをそれぞれの学習ノード２に分けて並列で学習させることにより、トータルの学習時間を短縮する分散協調学習の手法がとられる。
【００４４】
以下、従来の分散学習処理の手順を図３を用いて説明する。
最初に、学習データｘを学習ノード４００−０〜４００−３の台数分に分けて、各学習ノード４００−０〜４００−３に割り当てる。なお、図３では、各学習ノード４００−０〜４００−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１または複数の学習データの集合からなる。
【００４５】
次に、各学習ノード４００−０〜４００−３は、それぞれ学習データｘ０〜ｘ３をニューラルネットワークに入力して順伝搬（ｆｏｒｗａｒｄ  ｐｒｏｐａｇａｔｉｏｎ）の手法によりそれぞれ損失関数Ｌを求める（図３ステップＳ１００）。なお、得られる損失関数Ｌは、各学習ノード４００−０〜４００−３（各ニューラルネットワーク）につき１つである。
【００４６】
続いて、各学習ノード４００−０〜４００−３は、ステップＳ１００で求めた損失関数Ｌの勾配を逆伝搬（ｂａｃｋ  ｐｒｏｐａｇａｔｉｏｎ）の手法により求める（図３ステップＳ１０１）。損失関数Ｌの勾配とは、式（２）に示すように構成パラメータ毎の成分を含むベクトルである。
【００４７】
次に、各学習ノード４００−０〜４００−３でそれぞれ計算した勾配の平均を例えばヘッドノード４０２において計算して、計算した結果をヘッドノード４０２から各学習ノード４００−０〜４００−３に返送する（図３ステップＳ１０２）。この処理を「Ａｌｌ−ｒｅｄｕｃｅ処理」と呼ぶ。
なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。
さらに、勾配の平均の代わりに、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、各勾配の二乗の和をとるようにしてもよい。
【００４８】
最後に、各学習ノード４００−０〜４００−３は、ステップＳ１０２で計算された勾配の平均値を用いて、ニューラルネットワークの重みパラメータを更新する（図３ステップＳ１０３）。
以上で、分散学習の１サイクルが終了する。
【００４９】
［学習ノードの機能ブロック］
次に、本実施の形態に係る分散深層学習システムの動作の概要についての説明に先立って学習ノード２の機能構成を説明する。図４は学習ノード２の構成例を示すブロック図である。
学習ノード２は、入力部２０、損失関数計算部２１、勾配計算部２２、送信部２３、受信部２４、構成パラメータ更新部２５、およびニューラルネットワーク２６を備える。なお、学習ノード２−０〜２−３はそれぞれ同様の構成を有する。
【００５０】
入力部２０は、学習データを受け取る。
損失関数計算部２１は、学習データが入力されたときに、損失関数Ｌをニューラルネットワーク２６の構成パラメータ毎および学習データ毎に計算する。
勾配計算部２２は、損失関数Ｌの勾配を学習データ毎に計算した後に、勾配を集計した値を構成パラメータ毎に生成する。
【００５１】
送信部２３（第３送信部）は、勾配計算部２２によって計算された勾配の値をパケット化してコンピューティングインタコネクト装置１に送信する。より詳細には、送信部２３は、勾配計算部２２によって計算された勾配の計算結果と、この計算結果に対応する構成パラメータに固有のシーケンシャル番号と対応する演算ＩＤとを後述する通信パケットのデータペイロードに書き込んで、自ノードと接続されているコンピューティングインタコネクト装置１に送信する。
【００５２】
受信部２４（第３受信部）は、コンピューティングインタコネクト装置１から送信された通信パケットを受信する。より詳細には、学習ノードの受信部２４は、自ノードと接続されているコンピューティングインタコネクト装置１から受信した通信パケットのデータペイロードから勾配の和（転送データ）の計算結果とシーケンシャル番号と演算ＩＤとを取り出す。
【００５３】
構成パラメータ更新部２５は、コンピューティングインタコネクト装置１から送信された通信パケットに格納されている勾配の和を用いてニューラルネットワークの構成パラメータ（重みパラメータ）を更新する。より詳細には、構成パラメータ更新部２５は、勾配の和の計算結果を基に、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを更新する。
【００５４】
ニューラルネットワーク２６は、数学モデルであるニューラルネットワークの出力値を計算する。本実施の形態では、１つの演算ＩＤの演算対象となっている各学習ノード２のニューラルネットワーク２６の構成は同一であるものとし、以下の他の実施の形態でも同様とする。
【００５５】
［本実施の形態の分散処理］
次に、本実施の形態に係る学習ノード２−０〜２−３とコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３とで行われる分散学習処理の手順を図５を用いて説明する。本実施の形態では、各学習ノード２−０〜２−３は、従来例と同様に、それぞれ学習データｘ０〜ｘ３をニューラルネットワーク２６に入力して損失関数Ｌをそれぞれ計算する（図５ステップＳ２００）。
【００５６】
より詳細には、入力部２０に学習データが入力される。その後、損失関数計算部２１は、学習データが入力されると、損失関数Ｌをニューラルネットワーク２６の構成パラメータ毎および学習データ毎に計算する。
【００５７】
続いて、勾配計算部２２は、算出された損失関数Ｌの勾配を計算する（図５ステップＳ２０１）。より詳細には、勾配計算部２２は、損失関数Ｌの勾配を学習データ毎に計算した後に、勾配を集計した値を構成パラメータ毎に生成する。
【００５８】
そして、各学習ノード２−０〜２−３の送信部２３は、それぞれ算出された勾配の値を、各学習ノード２−０〜２−３とそれぞれ接続されたコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３に送信する（図５ステップＳ２０２）。
【００５９】
なお、図３の従来例と同様に、図５では、各学習ノード２−０〜２−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１または複数の学習データの集合からなる。
【００６０】
次に、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３は、各学習ノード２−０〜２−３の送信部２３から送信された各勾配の計算値を、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３間の通信ネットワーク３を使って順番に加算していく。この結果得られる全勾配の平均値を各学習ノード２−０〜２−３に送信する（図５ステップＳ２０３，Ｓ２０４）。このように本実施の形態では、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３を用いてＡｌｌ−ｒｅｄｕｃｅ処理を行う。
【００６１】
最後に、各学習ノード２−０〜２−３の受信部２４は、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３から送信された勾配の平均値を受信する。構成パラメータ更新部２５は、受信された勾配の平均値を用いて、ニューラルネットワーク２６の構成パラメータを更新する（図５ステップＳ２０５）。
【００６２】
なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。また、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、勾配の二乗平均平方根をとるようにしてもよい。
以上で、本実施の形態の分散学習の１サイクルが終了する。
【００６３】
通常、勾配計算は逆伝搬の手法に従って、ニューラルネットワーク２６の出力層から入力層に向かって順番に各層の構成パラメータ（重みパラメータ）に対する勾配の成分を計算していく。したがって、各学習ノード２−０〜２−３の勾配計算結果をコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３に送信するにあたっては、全ての層の勾配計算が終わるまで待つ必要はない。
【００６４】
そこで、図６に示すように、各学習ノード２−０〜２−３の損失関数計算部２１は、まず上記と同様に損失関数Ｌを計算し（図６ステップＳ２００）、損失関数Ｌの勾配を計算する（図６ステップＳ２０１）。その後、ステップＳ２０１において勾配計算部２２がすべての構成パラメータに対する勾配成分の計算が終了するのを待つことなく、送信部２３は計算が終わった構成パラメータに対する勾配成分からコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３に送信することができる（図６ステップＳ２０６）。
【００６５】
コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３は、各学習ノード２−０〜２−３から送信された勾配成分の平均値を計算し（図６ステップＳ２０７）、計算が終わった勾配成分の平均値を各学習ノード２−０〜２−３に送信する（図６ステップＳ２０８）。
【００６６】
各学習ノード２−０〜２−３の受信部２４は、コンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３から計算結果を受信すると、構成パラメータ更新部２５は、すべての計算結果を受信するまで待つことなく、受信した勾配成分の平均値を用いて、対応する構成パラメータを更新する（図６ステップＳ２０９）。
こうして、本実施の形態では勾配計算とＡｌｌ−ｒｅｄｕｃｅ処理と構成パラメータ更新とをパイプライン式に処理できるので、学習処理の更なる高速化が可能である。
【００６７】
［分散深層学習システムの動作の概要］
図７Ａ、図７Ｂ、図７Ｃは、本実施の形態の分散深層学習システムの典型的な動作例を説明する図である。
分散深層学習システムでは、ニューラルネットワークモデル、入力学習データがそれぞれ異なる４つの学習演算（演算１〜４）を順番に処理している。
【００６８】
図７Ａに示すように、まず、演算１が学習ノード２−０〜２−３の４台の学習ノード２−０〜２−３で並列演算される。これを終了後、図７Ｂに示すように、演算２が学習ノード２−０、学習ノード２−１、学習ノード２−３の３台の学習ノードで並列演算される。
【００６９】
最後に、図７Ｃに示すように演算３と演算４が同時に処理されている。このとき、演算３は学習ノード２−０および学習ノード２−１で、演算４は学習ノード２−２および学習ノード２−３で並列処理されている。
【００７０】
本発明の分散深層学習システムでは、並列学習演算している学習ノード２に接続するコンピューティングインタコネクト装置１ＣＩ＿０〜１ＣＩ＿３のうち、１台が親として動作し、それ以外は子として動作する。図７Ａの例では、コンピューティングインタコネクト装置１ＣＩ＿０が親、コンピューティングインタコネクト装置１ＣＩ＿１〜１ＣＩ＿３が子として動作している。
【００７１】
また、図７Ｂでは、コンピューティングインタコネクト装置１ＣＩ＿０が親、コンピューティングインタコネクト装置１ＣＩ＿１，１ＣＩ＿３が子として動作している。学習データの規模が大きくない場合やそれほど高速に処理する必要がない場合は、図７Ｂのように、リング型の通信ネットワーク３に接続される学習ノード２−０〜２−３の一部だけを使うことも想定される。
【００７２】
図７Ｃでは、演算３に対しては、コンピューティングインタコネクト装置１ＣＩ＿０を親、コンピューティングインタコネクト装置１ＣＩ＿１を子としている。また、演算４に対しては、コンピューティングインタコネクト装置１ＣＩ＿２を親、コンピューティングインタコネクト装置１ＣＩ＿３を子として動作させている。
【００７３】
このような動作を進めるにあたって、各演算ごとに、各コンピューティングインタコネクト装置１が、「親」、「子」、「対象外」のいずれの役割を割り当てられているか示す演算情報テーブル（図７Ｄ）を用いる。各学習ノード２−０〜２−３およびコンピューティングインタコネクト装置１ＣＩ＿１〜１ＣＩ＿３はこの演算情報テーブルを共有し、この内容に従って、各演算ごとに指定された動作を行う。
【００７４】
［分散深層学習システムの動作の具体例］
以下、図７Ｂの場合（演算ＩＤ＝２の場合）を例にとって、図８Ａから図８Ｇを用いて本実施の形態の分散深層学習システムの動作を説明する。
【００７５】
図８Ａに示すように、コンピューティングインタコネクト装置１ＣＩ＿０に接続された学習ノード２−０から勾配の計算結果Ｇ０をコンピューティングインタコネクト装置１ＣＩ＿０に送信する。コンピューティングインタコネクト装置１ＣＩ＿０は、勾配の計算結果Ｇ０を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿１に転送する。
【００７６】
図８Ｂに示すように、コンピューティングインタコネクト装置１ＣＩ＿１は、コンピューティングインタコネクト装置１ＣＩ＿０から送信された勾配の計算結果Ｇ０と、コンピューティングインタコネクト装置１ＣＩ＿１の直下の学習ノード２−１から送信された勾配の計算結果Ｇ１との和Ｇ０＋Ｇ１を計算する。コンピューティングインタコネクト装置１ＣＩ＿１は、この計算結果Ｇ０＋Ｇ１を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２に送信する。
【００７７】
図８Ｃに示すように、本演算では、学習ノード２−２は演算対象外なので、コンピューティングインタコネクト装置１ＣＩ＿２は、コンピューティングインタコネクト装置１ＣＩ＿１から送信された勾配の計算結果Ｇ０＋Ｇ１に対して和演算を行わない。コンピューティングインタコネクト装置１ＣＩ＿２は、計算結果Ｇ０＋Ｇ１をそのまま通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿３へ送信する。
【００７８】
図８Ｄに示すように、コンピューティングインタコネクト装置１ＣＩ＿３では、コンピューティングインタコネクト装置１ＣＩ＿１と同様の演算を行う。コンピューティングインタコネクト装置１ＣＩ＿３は、コンピューティングインタコネクト装置１ＣＩ＿２から送信された勾配の和の計算結果Ｇ０＋Ｇ１と、コンピューティングインタコネクト装置１ＣＩ＿３の直下の学習ノード２−３から送信された勾配の計算結果Ｇ３との和ΣＧ＝Ｇ０＋Ｇ１＋Ｇ３を計算する。コンピューティングインタコネクト装置１ＣＩ＿３は、この計算結果ΣＧを通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿０に送信する。
【００７９】
また、図８Ｄに示すように、勾配の和の計算結果ΣＧを受信したコンピューティングインタコネクト装置１ＣＩ＿０は、受信した勾配の和ΣＧを直下の学習ノード２−０とコンピューティングインタコネクト装置１ＣＩ＿１とに送信する。
【００８０】
図８Ｅに示すように、勾配の和ΣＧを受信したコンピューティングインタコネクト装置１ＣＩ＿１は、勾配の和ΣＧを直下の学習ノード２−１とコンピューティングインタコネクト装置１ＣＩ＿２とに送信する。
【００８１】
図８Ｆに示すように、勾配の和ΣＧを受信したコンピューティングインタコネクト装置１ＣＩ＿２は、勾配の和ΣＧを直下の学習ノード２−２へは送信せず、コンピューティングインタコネクト装置１ＣＩ＿３のみに通信ネットワーク３を介して送信する。
【００８２】
図８Ｇに示すように、コンピューティングインタコネクト装置１ＣＩ＿３は、コンピューティングインタコネクト装置１ＣＩ＿２から送信された勾配の和ΣＧを直下の学習ノード２−３とコンピューティングインタコネクト装置１ＣＩ＿０とに送信する。
【００８３】
最後に、図８Ｇに示すように、勾配の和ΣＧを受信したコンピューティングインタコネクト装置１ＣＩ＿０は、勾配の和ΣＧを廃棄する。
以上の動作により、各学習ノード２−０，２−１，２−３に勾配の和ΣＧが送信される。
【００８４】
［コンピューティングインタコネクト装置の構成］
図９は、コンピューティングインタコネクト装置１の構成例を示すブロック図である。
コンピューティングインタコネクト装置１は、受信部１００，１０３、振分部１０１，１０４、バッファメモリ１０２，１０５、加算器１０６、送信部１０７，１０８、および制御部１０９を備える。
【００８５】
受信部１００（第２受信部）は、１方向（本実施の形態では反時計回りの方向）に限定して通信を行うリング型の通信ネットワーク３において隣接する上流側のコンピューティングインタコネクト装置１（例えば、図１においてそれぞれ左隣のコンピューティングインタコネクト装置１）からの通信パケットを受信し、このパケットに格納されたデータ（転送データ）を取得する。
【００８６】
振分部１０１（第１振分部）は、通信パケットに含まれるデータの受信が完了されたか否かを示す受信完了フラグ（完了／未了）とそのコンピューティングインタコネクト装置１に割り当てられた役割（親／子／計算対象外（非親子））に応じて受信部１００からのデータを振り分ける。
バッファメモリ１０２は、振分部１０１からのデータを一時的に記憶する。
【００８７】
受信部１０３（第１受信部）は、コンピューティングインタコネクト装置１の直下に設けられている学習ノード２からの通信パケットを受信し、このパケットに格納されたデータ（ノードデータ）を取得する。
振分部１０４（第２振分部）は、自装置であるコンピューティングインタコネクト装置１に割り当てられた役割に応じて受信部１０３からのデータを振り分ける。
【００８８】
バッファメモリ１０５は、振分部１０４からのデータを一時的に記憶する。
加算器１０６（演算器）は、バッファメモリ１０２，１０５に一時的に記憶された勾配の値を読み出して勾配の和を計算する。
送信部１０７（第１送信部）は、リング型のネットワーク３において隣接する下流側のコンピューティングインタコネクト装置１（右隣のコンピューティングインタコネクト装置１）へ、振分部１０１または振分部１０４によって振り分けられたデータをパケット化した通信パケットを送信する。
【００８９】
送信部１０８（第２送信部）は、コンピューティングインタコネクト１の直下に設けられている学習ノード２に、振分部１０１によって振り分けられたデータをパケット化した通信パケットを送信する。
制御部１０９は、バッファメモリ１０２，１０５を制御する。
【００９０】
［コンピューティングインタコネクト装置の動作の具体例］
図１０は、図８Ａにおけるコンピューティングインタコネクト装置１ＣＩ＿０の動作を説明する図である。図１０に示すように、通信パケットは、通信ヘッダとデータペイロードとからなる。
【００９１】
学習ノード２−０から送信される通信パケットＲＰ０のデータペイロードには、学習ノード２−０で計算された勾配値「Ｇ０」と、演算ＩＤ「００２」と、勾配値のシーケンシャル番号「００３」と、コンピューティングインタコネクト装置１ＣＩ＿０で勾配の和の取得完了または未了を示す受信完了フラグ（図１０の例では「未了」）とが格納されている。
【００９２】
コンピューティングインタコネクト装置１ＣＩ＿０の受信部１０３は、受信した通信パケットＲＰ０のデータペイロードから勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０４に渡す。
【００９３】
振分部１０４では、受信部１０３から受け取った演算ＩＤと演算情報テーブルをつきあわせて、この演算ＩＤ＝２に対しては、コンピューティングインタコネクト装置１ＣＩ＿０は「親」として動作すべきことを識別する。これにより、振分部１０４は勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に渡す。
【００９４】
送信部１０７は、振分部１０４から受け取った勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ１を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿０に隣接する下流側のコンピューティングインタコネクト装置（図８Ａの例ではコンピューティングインタコネクト装置１ＣＩ＿１）へ送信する。
【００９５】
図１１は、図８Ｂにおけるコンピューティングインタコネクト装置１ＣＩ＿１の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿１の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０から受信した通信パケットＴＰＣ１のデータペイロードから勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【００９６】
振分部１０１は、受信部１００から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿１は「子」として動作すべきことを識別する。これにより、振分部１０１は、勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとをバッファメモリ１０２に格納する。
【００９７】
一方、コンピューティングインタコネクト装置１ＣＩ＿１の受信部１０３は、直下に接続されている学習ノード２−１から受信した通信パケットＲＰ１のデータペイロードから勾配値Ｇ１と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０４に渡す。
【００９８】
コンピューティングインタコネクト装置１ＣＩ＿１の振分部１０４では、受信部１０３から受け取った演算ＩＤと演算情報テーブルをつきあわせて、この演算ＩＤ＝２に対しては、コンピューティングインタコネクト装置１ＣＩ＿１は「子」として動作すべきことを識別する。これにより、振分部１０４は、勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとをバッファメモリ１０５に格納する。
【００９９】
コンピューティングインタコネクト装置１ＣＩ＿１の制御部１０９は、バッファメモリ１０２とバッファメモリ１０５に同一のシーケンシャル番号の勾配値「Ｇ０」と「Ｇ１」とが揃った時点で、バッファメモリ１０２から勾配値「Ｇ０」とシーケンシャル番号と受信完了フラグとを読み出す。これと同時に、制御部１０９は、バッファメモリ１０５から勾配値「Ｇ１」とシーケンシャル番号と受信完了フラグとを読み出し、勾配値「Ｇ０」と「Ｇ１」とを加算器１０６に渡す。
【０１００】
加算器１０６は、勾配値「Ｇ０」と「Ｇ１」とを加算する。また、制御部１０９は、バッファメモリ１０２から読み出した演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に渡す。
【０１０１】
コンピューティングインタコネクト装置１ＣＩ＿１の送信部１０７は、加算器１０６によって計算された勾配の和「Ｇ０＋Ｇ１」、および制御部１０９から受け取った演算ＩＤとシーケンシャル番号と受信完了フラグを通信パケットＴＰＣ２のデータペイロードに格納する。そして送信部１０７は、通信パケットＴＰＣ２を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿１に隣接する下流側のコンピューティングインタコネクト装置（図８Ｂの例ではコンピューティングインタコネクト装置１ＣＩ＿２）へ送信する。
【０１０２】
図１２は、図８Ｃにおけるコンピューティングインタコネクト装置１ＣＩ＿２の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿２の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿１から受信した通信パケットＴＰＣ２のデータペイロードから勾配値「Ｇ０＋Ｇ１」と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１０３】
振分部１０１は、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対しては、コンピューティングインタコネクト装置１ＣＩ＿２は「演算対象外（非親子）」として動作すべきことを識別する。これにより、振分部１０１は、勾配値「Ｇ０＋Ｇ１」と演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に送信する。
【０１０４】
送信部１０７は、振分部１０１から受け取った勾配値「Ｇ０＋ＧＩ」と演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ３のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ３を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２に隣接する下流側のコンピューティングインタコネクト装置（図８Ｃの例ではコンピューティングインタコネクト装置１ＣＩ＿３）へ送信する。
【０１０５】
図１３は、図８Ｄにおけるコンピューティングインタコネクト装置１ＣＩ＿０の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿０の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０に隣接する上流側のコンピューティングインタコネクト装置（図８Ｄの例ではコンピューティングインタコネクト装置１ＣＩ＿３）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧ（＝Ｇ０＋Ｇ１＋Ｇ３）と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１０６】
振分部１０１は、受信部１００から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿０は「親」として動作すべきことを識別する。これにより、振分部１０１は、勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７、および送信部１０８に渡す。
【０１０７】
このとき、「親」であるコンピューティングインタコネクト装置１ＣＩ＿０が隣接する上流側のコンピューティングインタコネクト装置１ＣＩ＿３から受信完了フラグが「未了」である通信パケットを受信したということは、通信パケットがリング型の通信ネットワーク３を一巡し、勾配の和の計算が完了したことを意味する。そこで、コンピューティングインタコネクト装置１ＣＩ＿０の振分部１０１は、受信部１００から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上で送信部１０７と送信部１０８とにデータを渡す。
【０１０８】
コンピューティングインタコネクト装置１ＣＩ＿０の送信部１０７は、振分部１０１から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ１を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿０に隣接する下流側のコンピューティングインタコネクト装置（図８Ｄの例ではコンピューティングインタコネクト装置１ＣＩ＿１）へ送信する。
【０１０９】
コンピューティングインタコネクト装置１ＣＩ＿０の送信部１０８は、振分部１０１から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ０のデータペイロードに格納して、通信パケットＴＰ０を学習ノード２−０へ送信する。
【０１１０】
図１４は、図８Ｅにおけるコンピューティングインタコネクト装置１ＣＩ＿１の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿１の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０から受信した通信パケットＴＰＣ１のデータペイロードから勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１１１】
振分部１０１は、受信部１００から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿１は「子」として動作すべきことを識別する。これにより、振分部１０１は、勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７、および送信部１０８に渡す。
【０１１２】
送信部１０７は、振分部１０４から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納する。そして送信部１０７は、通信パケットＴＰＣ２を、コンピューティングインタコネクト装置１ＣＩ＿１に隣接する下流側のコンピューティングインタコネクト装置（図８Ｅの例ではコンピューティングインタコネクト装置１ＣＩ＿２）へ送信する。
【０１１３】
コンピューティングインタコネクト装置１ＣＩ＿１の送信部１０８は、振分部１０１から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ１のデータペイロードに格納して、通信パケットＴＰ１を学習ノード２−１へ送信する。
【０１１４】
図１５は、図８Ｆにおけるコンピューティングインタコネクト装置１ＣＩ＿２の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿２の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿１から受信した通信パケットＴＰＣ２のデータペイロードから勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１１５】
振分部１０１は、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対しては「演算対象外（非親子）」として動作すべきことを識別する。これにより、振分部１０１は、勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に送信する。
【０１１６】
送信部１０７は、振分部１０１から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ３のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ３を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２に隣接する下流側のコンピューティングインタコネクト装置（図８Ｆの例ではコンピューティングインタコネクト装置１ＣＩ＿３）へ送信する。
【０１１７】
図１６は、図８Ｇにおけるコンピューティングインタコネクト装置１ＣＩ＿０の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿０の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０に隣接する上流側のコンピューティングインタコネクト装置（図８Ｇの例ではコンピューティングインタコネクト装置１ＣＩ＿３）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１１８】
振分部１０１は、受信部１００から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿０は「親」として動作すべきことを識別する。そして、振分部１０１は、受信部１００から受け取った勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを廃棄する。
【０１１９】
なお、ここでは、各勾配の和を用いて重みパラメータの更新処理を行う場合を例に説明したが、各勾配の和の代わりに各勾配の重み付き和を用いる場合は、加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌに対する重み付き和演算器を用いてもよい。また、各勾配の和の代わりに各勾配の二乗和を用いる場合は、加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌに対する二乗和演算器を用いてもよい。すなわち、加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌを入力とする任意の演算器を用いた場合も本発明を適用することが出来る。
【０１２０】
以上の動作により、演算対象の学習ノード２−０〜２−１，２−３に勾配の和ΣＧが送信され、各学習ノード２−０〜２−１，２−３は、勾配の和ΣＧを用いてニューラルネットワークの構成パラメータを更新し、分散学習の１サイクルが終了する。
【０１２１】
以上説明したように、第１の実施の形態によれば、コンピューティングインタコネクト装置１が各学習ノード２間の通信パケットの送受信処理とＡｌｌ−ｒｅｄｕｃｅ処理とを同時並行して実行する。そのため、ヘッドノードで通信処理やＡｌｌ−ｒｅｄｕｃｅ処理を実行する場合に比べて学習を高速化でき、通信ネットワーク３で接続された各学習ノード２間での協調処理をより高速に行うことができる。
【０１２２】
また、第１の実施の形態によれば、各学習ノード２が対になって接続されたコンピューティングインタコネクト装置１を通じてリング型の通信ネットワーク３に接続される構成であるので、接続される学習ノード２の数が増えた場合でも、リング型の通信ネットワーク３の通信帯域は、学習ノード２の数によらず一定でよいという利点がある。
【０１２３】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。なお、以下の説明では、上述した第１の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１２４】
第１の実施の形態では、コンピューティングインタコネクト装置１がＡｌｌ−ｒｅｄｕｃｅ処理のみを行う場合について説明した。これに対し、第２の実施の形態に係る分散深層学習システムでは、コンピューティングインタコネクト装置１’においてニューラルネットワークの構成パラメータの更新演算についてもさらに行う点で第１の実施の形態とは異なる。
【０１２５】
［分散深層学習システムの動作］
図１７Ａ〜図１７Ｇは、第２の実施の形態に係る分散深層学習システムの動作を説明する図である。
まず、図１７Ａに示すように、コンピューティングインタコネクト装置１ＣＩ＿０’に接続された学習ノード２−０から勾配の計算結果Ｇ０をコンピューティングインタコネクト装置１ＣＩ＿０’に送信する。そして、コンピューティングインタコネクト装置１ＣＩ＿０’は、勾配の計算結果Ｇ０をコンピューティングインタコネクト装置１ＣＩ＿１’に転送する。
【０１２６】
図１７Ｂに示すように、コンピューティングインタコネクト装置１ＣＩ＿１’は、コンピューティングインタコネクト装置１ＣＩ＿０’から送信された勾配の計算結果Ｇ０と、コンピューティングインタコネクト装置１ＣＩ＿１’の直下の学習ノード２−１から送信された勾配の計算結果Ｇ１との和Ｇ０＋Ｇ１を計算する。コンピューティングインタコネクト装置１ＣＩ＿１’はこの計算結果Ｇ０＋Ｇ１を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２’に送信する。
【０１２７】
図１７Ｃに示すように、本演算では、学習ノード２−２は演算対象外なので、コンピューティングインタコネクト装置１ＣＩ＿２’は、コンピューティングインタコネクト装置１ＣＩ＿１’から送信された勾配の計算結果Ｇ０＋Ｇ１に対して和演算を行わない。コンピューティングインタコネクト装置１ＣＩ＿２’は、計算結果Ｇ０＋Ｇ１をそのまま通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿３’へ送信する。
【０１２８】
図１７Ｄに示すように、コンピューティングインタコネクト装置１ＣＩ＿３’では、コンピューティングインタコネクト装置１ＣＩ＿１’と同様の演算を行う。より詳細には、コンピューティングインタコネクト装置１ＣＩ＿３’は、コンピューティングインタコネクト装置１ＣＩ＿２’から送信された勾配の和の計算結果Ｇ０＋Ｇ１と、コンピューティングインタコネクト装置１ＣＩ＿３’の直下の学習ノード２−３から送信された勾配の計算結果Ｇ３との和ΣＧ＝Ｇ０＋Ｇ１＋Ｇ３を計算する。
【０１２９】
コンピューティングインタコネクト装置１ＣＩ＿３’は、この計算結果ΣＧを通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿０’に送信する。
【０１３０】
また、図１７Ｄに示すように、勾配の和の計算結果ΣＧを受信したコンピューティングインタコネクト装置１ＣＩ＿０’は、勾配の和ΣＧを用いてニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを計算する。コンピューティングインタコネクト装置１ＣＩ＿０’は、その計算結果をコンピューティングインタコネクト装置１ＣＩ＿０’の直下の学習ノード２−０とコンピューティングインタコネクト装置１ＣＩ＿１’とに通信ネットワーク３を介して送信する。
【０１３１】
図１７Ｅに示すように、構成パラメータの更新後の値ｗ＿ｎｅｗを受信したコンピューティングインタコネクト装置１ＣＩ＿１’は、構成パラメータの更新後の値ｗ＿ｎｅｗをコンピューティングインタコネクト装置１ＣＩ＿１’の直下の学習ノード２−１とコンピューティングインタコネクト装置１ＣＩ＿２’とに送信する。
【０１３２】
図１７Ｆに示すように、構成パラメータの更新後の値ｗ＿ｎｅｗを受信したコンピューティングインタコネクト装置１ＣＩ＿２’は、構成パラメータの更新後の値ｗ＿ｎｅｗを直下の学習ノード２−２へは送信せず、コンピューティングインタコネクト装置１ＣＩ＿３’のみに通信ネットワーク３を介して送信する。
【０１３３】
図１７Ｆに示すように、コンピューティングインタコネクト装置１ＣＩ＿３’は、コンピューティングインタコネクト装置１ＣＩ＿２’から送信された構成パラメータの更新後の値ｗ＿ｎｅｗをコンピューティングインタコネクト装置１ＣＩ＿３’の直下の学習ノード２−３とコンピューティングインタコネクト装置１ＣＩ＿０’とに送信する。
【０１３４】
最後に、図１７Ｇに示すように構成パラメータの更新後の値ｗ＿ｎｅｗを受信したコンピューティングインタコネクト装置１ＣＩ＿０’は、構成パラメータの更新後の値ｗ＿ｎｅｗを廃棄する。
以上の動作により、演算対象の学習ノード２−０〜２に構成パラメータの更新後の値ｗ＿ｎｅｗが送信される。
【０１３５】
［コンピューティングインタコネクト装置の構成］
次に、本実施の形態に係るコンピューティングインタコネクト装置１’の構成について、図１８を参照して説明する。なお、本実施の形態に係る学習ノード２の構成は、第１の実施の形態と同様である。
【０１３６】
コンピューティングインタコネクト装置１’は、ニューラルネットワーク（ＮＮ）構成パラメータ更新演算部１１０と構成パラメータメモリ１１１とをさらに備える点以外は、第１の実施の形態に係るコンピューティングインタコネクト装置１の構成（図９）と同様である。
【０１３７】
ＮＮ構成パラメータ更新演算部１１０は、ニューラルネットワークの構成パラメータの更新演算を行う。
更新パラメータメモリ１１１は、受信部１０３によってコンピューティングインタコネクト装置１’の直下に接続されている学習ノード２から受信された構成パラメータを記憶する。
【０１３８】
［コンピューティングインタコネクト装置の動作の具体例］
図１９は、図１７Ａにおけるコンピューティングインタコネクト装置１ＣＩ＿０’の動作を示している。
学習ノード２−０から送信される通信パケットＲＰ０のデータペイロードには、学習ノード２−０で計算された勾配値「Ｇ０」と、演算ＩＤ「００２」と、勾配値のシーケンシャル番号「００３」と、受信完了フラグ「未了」とが格納されている。
【０１３９】
コンピューティングインタコネクト装置１ＣＩ＿０’の受信部１０３は、受信した通信パケットＲＰ０のデータペイロードから勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０４に渡す。
【０１４０】
振分部１０４では、受信部１０３から受け取った演算ＩＤと演算情報テーブルをつきあわせて、この演算ＩＤ＝２に対しては、コンピューティングインタコネクト装置１ＣＩ＿０’は「親」として動作すべきことを識別する。これにより、振分部１０４は、勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に渡す。
【０１４１】
送信部１０７は、振分部１０４から受け取った勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納して、通信パケットＴＰＣ１を通信ネットワーク３を介して、隣接する下流側のコンピューティングインタコネクト装置（図１７Ａの例ではコンピューティングインタコネクト装置１ＣＩ＿１’）へ送信する。
【０１４２】
図２０は、図１７Ｂにおけるコンピューティングインタコネクト装置１ＣＩ＿１’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿１’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０’から受信した通信パケットＴＰＣ１のデータペイロードから勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１４３】
振分部１０１は、受信部１００から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿１’は「子」として動作すべきことを識別する。これにより、振分部１０１は、勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとをバッファメモリ１０２に格納する。
【０１４４】
一方、コンピューティングインタコネクト装置１ＣＩ＿１’の受信部１０３は、コンピューティングインタコネクト装置１ＣＩ＿１’の直下の学習ノード２−１から受信した通信パケットＲＰ１のデータペイロードから勾配値Ｇ１と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０４に渡す。
【０１４５】
振分部１０４では、受信部１０３から受け取った演算ＩＤと演算情報テーブルをつきあわせて、この演算ＩＤ＝２に対しては、コンピューティングインタコネクト装置１ＣＩ＿１’は「子」として動作すべきことを識別する。これにより、振分部１０４は勾配値Ｇ０と演算ＩＤとシーケンシャル番号と受信完了フラグとをバッファメモリ１０５に格納する。
【０１４６】
コンピューティングインタコネクト装置１ＣＩ＿１’の制御部１０９は、バッファメモリ１０２とバッファメモリ１０５に同一のシーケンシャル番号の勾配値「Ｇ０」と「Ｇ１」が揃った時点で、バッファメモリ１０２から勾配値Ｇ０とシーケンシャル番号と受信完了フラグとを読み出す。これと共に、制御部１０９は、バッファメモリ１０５から勾配値Ｇ１とシーケンシャル番号と受信完了フラグとを読み出し、勾配値「Ｇ０」と「Ｇ１」とを加算器に渡す。
【０１４７】
加算器１０６は、勾配値「Ｇ０」と「Ｇ１」とを加算する。また、制御部１０９は、バッファメモリ１０２から読み出した演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に渡す。
【０１４８】
コンピューティングインタコネクト装置１ＣＩ＿１’の送信部１０７は、加算器１０６によって計算された勾配の和「Ｇ０＋Ｇ１」、および制御部１０９から受け取った演算ＩＤとシーケンシャル番号と受信完了フラグを通信パケットＴＰＣ２のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ２を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿１’に隣接する下流側のコンピューティングインタコネクト装置（図１７Ｂの例ではコンピューティングインタコネクト装置１ＣＩ＿２’）へ送信する。
【０１４９】
図２１は、図１７Ｃにおけるコンピューティングインタコネクト装置１ＣＩ＿２’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿２’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿１’から受信した通信パケットＴＰＣ２のデータペイロードから勾配値Ｇ０＋Ｇ１と演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１５０】
振分部１０１は、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿２’は「演算対象外（非親子）」として動作すべきことを識別する。これにより、振分部１０１は、勾配値Ｇ０＋Ｇ１と演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に送信する。
【０１５１】
送信部１０７は、振分部１０１から受け取った勾配値Ｇ０＋ＧＩと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ３のデータペイロードに格納する。送信部１０７は、通信パケットＴＰＣ３を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２’に隣接する下流側のコンピューティングインタコネクト装置（図１７Ｃの例ではコンピューティングインタコネクト装置１ＣＩ＿３’）へ送信する。
【０１５２】
図２２は、図１７Ｄにおけるコンピューティングインタコネクト装置１ＣＩ＿０’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿０’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０’に隣接する上流側のコンピューティングインタコネクト装置（図１７Ｄの例ではコンピューティングインタコネクト装置１ＣＩ＿３’）から受信した通信パケットＴＰＣ０のペイロードから勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１５３】
振分部１０１は、受信部１００から受け取った受信完了フラグが「未了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿０’は「親」として動作すべきことを識別する。
【０１５４】
これにより、振分部１０１は、勾配の和ΣＧと演算ＩＤとシーケンシャル番号と受信完了フラグとをＮＮ構成パラメータ更新演算部１１０に渡す。このとき、振分部１０１は、受信部１００から受け取った受信完了フラグを、「未了」から「完了」を示す値に変更した上でＮＮ構成パラメータ更新演算部１１０に渡す。
【０１５５】
一方、学習開始時点において、演算対象の学習ノード２−０，２−１，２−３のニューラルネットワークは、同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値をコンピューティングインタコネクト装置１ＣＩ＿０’の構成パラメータメモリ１１１に記憶しておく。
【０１５６】
ＮＮ構成パラメータ更新演算部１１０は、振分部１０１から受け取った勾配の和ΣＧと、構成パラメータメモリ１１１に記憶されている構成パラメータの値ｗ＿ｏｌｄとを基に、ニューラルネットワークの構成パラメータの更新後の値ｗ＿ｎｅｗを構成パラメータ毎に計算する。
【０１５７】
ＮＮ構成パラメータ更新演算部１１０は、この計算結果と振分部１０１から受け取った演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７，１０８に出力する。ＮＮ構成パラメータ更新演算部１１０は、更新方法として例えば、勾配降下法を用いる場合は式（３）のような計算を行う。
【０１５８】
また、ＮＮ構成パラメータ更新演算部１１０は、構成パラメータの更新後の値ｗ＿ｎｅｗを送信部１０７，１０８に出力すると同時に、構成パラメータメモリ１１１に格納されている構成パラメータの値を、更新後の値ｗ＿ｎｅｗによって上書きする。
【０１５９】
送信部１０７は、ＮＮ構成パラメータ更新演算部１１０から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ１のデータペイロードに格納する。送信部１０７は、通信パケットＴＰＣ１を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿０’に隣接する下流側のコンピューティングインタコネクト装置（図１７Ｄの例ではコンピューティングインタコネクト装置１ＣＩ＿１’）へ送信する。
【０１６０】
コンピューティングインタコネクト装置１ＣＩ＿０’の送信部１０８は、ＮＮ構成パラメータ更新演算部１１０から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ０のデータペイロードに格納して、通信パケットＴＰ０を学習ノード２−０へ送信する。
【０１６１】
図２３は、図１７Ｅにおけるコンピューティングインタコネクト装置１ＣＩ＿１’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿１’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０’から受信した通信パケットＴＰＣ１のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１６２】
振分部１０１は、受信部１００から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿１’は「子」として動作すべきことを識別する。これにより、振分部１０１は、構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７、および送信部１０８に渡す。
【０１６３】
送信部１０７は、振分部１０１から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ２のデータペイロードに格納する。そして、送信部１０７は、通信パケットＴＰＣ２を、通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿１’に隣接する下流側のコンピューティングインタコネクト装置（図１７Ｅの例ではコンピューティングインタコネクト装置１ＣＩ＿２’）へ送信する。
【０１６４】
送信部１０８は、振分部１０１から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰ１のデータペイロードに格納して、通信パケットＴＰ１を学習ノード２−１へ送信する。
【０１６５】
図２４は、図１７Ｆにおけるコンピューティングインタコネクト装置１ＣＩ＿２’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿２’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿１’から受信した通信パケットＴＰＣ２のデータペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１６６】
振分部１０１は、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿２’は「演算対象外（非親子）」として動作すべきことを識別する。これにより、振分部１０１は、構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを送信部１０７に送信する。
【０１６７】
送信部１０７は、振分部１０１から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを通信パケットＴＰＣ３のデータペイロードに格納する。その後、送信部１０７は、通信パケットＴＰＣ３を通信ネットワーク３を介してコンピューティングインタコネクト装置１ＣＩ＿２’に隣接する下流側のコンピューティングインタコネクト装置（図１７Ｆの例ではコンピューティングインタコネクト装置１ＣＩ＿３’）へ送信する。
【０１６８】
図２５は、図１７Ｇにおけるコンピューティングインタコネクト装置１ＣＩ＿０’の動作を示している。
コンピューティングインタコネクト装置１ＣＩ＿０’の受信部１００は、コンピューティングインタコネクト装置１ＣＩ＿０’に隣接する上流側のコンピューティングインタコネクト装置（図１７Ｇの例ではコンピューティングインタコネクト装置１ＣＩ＿３’）から受信した通信パケットＴＰＣ０のペイロードから構成パラメータの更新後の値ｗ＿ｎｅｗとシーケンシャル番号と受信完了フラグとを取り出して振分部１０１に渡す。
【０１６９】
振分部１０１は、受信部１００から受け取った受信完了フラグが「完了」を示していること、また、受け取った演算ＩＤと演算情報テーブルをつきあわせてこの演算ＩＤ＝２に対してはコンピューティングインタコネクト装置１ＣＩ＿０’は「親」として動作すべきことを識別する。その後、振分部１０１は、受信部１００から受け取った構成パラメータの更新後の値ｗ＿ｎｅｗと演算ＩＤとシーケンシャル番号と受信完了フラグとを廃棄する。
【０１７０】
以上の動作により、演算対象の学習ノード２−０，２−１，２−３に構成パラメータの更新後の値ｗ＿ｎｅｗが送信される。演算対象の学習ノード２−０，２−１，２−３は、シーケンシャル番号で特定される、ニューラルネットワーク２６の構成パラメータを、構成パラメータの更新後の値ｗ＿ｎｅｗによって上書きすることにより、ニューラルネットワーク２６を更新する。
【０１７１】
なお、ここでは、各勾配の和を用いて重みパラメータの更新処理を行う場合を例に説明したが、各勾配の和の代わりに各勾配の重み付き和を用いる場合は、第１の実施の形態と同様に加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌに対する重み付き和演算器を用いてもよい。また、各勾配の和の代わりに各勾配の二乗和を用いる場合は、加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌに対する二乗和演算器を用いてもよい。すなわち、加算器１０６の代わりにＧｉｎとＧ＿ｌｏｃａｌを入力とする任意の演算器を用いた場合も本発明を適用することが出来る。
【０１７２】
以上説明したように、第２の実施の形態によれば、ニューラルネットワークの構成パラメータの更新演算処理を行うＮＮパラメータ更新演算部１１０による専用演算回路を備えるので、学習処理をより高速化することができる。また、勾配の和演算も、構成パラメータの更新演算も、学習ノード２が有するニューラルネットワーク２６の構成に依らず、構成パラメータ毎に独立して同じ演算を行えばよい。そのため、学習ノード２−０〜２−３が備えるニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置１’の演算器には同じ専用演算回路を用いることができるというメリットがある。
【０１７３】
また、第２の実施の形態によれば、コンピューティングインタコネクト装置１’が各学習ノード２間の通信パケットの送受信処理とＡｌｌ−ｒｅｄｕｃｅ処理とを同時並行して高速にハードウェア処理できる。そのため、従来技術のようにヘッドノードで通信処理やＡｌｌ−ｒｅｄｕｃｅ処理をソフトウェア処理する場合に比べて、学習を高速化でき、通信ネットワーク３で接続された各学習ノード２間での協調処理をより高速に行うことができる。
【０１７４】
また、第２の実施の形態によれば、各学習ノード２が対になって接続されたコンピューティングインタコネクト装置１を通じてリング型の通信ネットワーク３に接続される構成であるので、接続される学習ノード２の数が増えた場合でも、リング型の通信ネットワーク３の通信帯域は、学習ノード２の数によらず一定でよいという利点がある。
【０１７５】
以上、本発明の分散深層学習システム、分散深層学習方法、およびコンピューティングインタコネクト装置における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【符号の説明】
【０１７６】
１，１’，１ＣＩ＿０〜１ＣＩ＿３…コンピューティングインタコネクト装置、２，２−０〜２−３…学習ノード、３…通信ネットワーク、２０…入力部、２１…損失関数計算部、２２…勾配計算部、２３…送信部、２４…受信部、２５…構成パラメータ更新部、２６…ニューラルネットワーク、１００，１０３…受信部、１０１，１０４…振分部、１０２，１０５…バッファメモリ、１０６…加算器、１０７，１０８…送信部、１０９…制御部、１１０…ＮＮパラメータ更新演算部、１１１…構成パラメータメモリ。
【図１】
2020003848.tif 000006
【図２】
2020003848.tif 000007
【図３】
2020003848.tif 000008
【図４】
2020003848.tif 000009
【図５】
2020003848.tif 000010
【図６】
2020003848.tif 000011
【図７Ａ】
2020003848.tif 000012
【図７Ｂ】
2020003848.tif 000013
【図７Ｃ】
2020003848.tif 000014
【図７Ｄ】
2020003848.tif 000015
【図８Ａ】
2020003848.tif 000016
【図８Ｂ】
2020003848.tif 000017
【図８Ｃ】
2020003848.tif 000018
【図８Ｄ】
2020003848.tif 000019
【図８Ｅ】
2020003848.tif 000020
【図８Ｆ】
2020003848.tif 000021
【図８Ｇ】
2020003848.tif 000022
【図９】
2020003848.tif 000023
【図１０】
2020003848.tif 000024
【図１１】
2020003848.tif 000025
【図１２】
2020003848.tif 000026
【図１３】
2020003848.tif 000027
【図１４】
2020003848.tif 000028
【図１５】
2020003848.tif 000029
【図１６】
2020003848.tif 000030
【図１７Ａ】
2020003848.tif 000031
【図１７Ｂ】
2020003848.tif 000032
【図１７Ｃ】
2020003848.tif 000033
【図１７Ｄ】
2020003848.tif 000034
【図１７Ｅ】
2020003848.tif 000035
【図１７Ｆ】
2020003848.tif 000036
【図１７Ｇ】
2020003848.tif 000037
【図１８】
2020003848.tif 000038
【図１９】
2020003848.tif 000039
【図２０】
2020003848.tif 000040
【図２１】
2020003848.tif 000041
【図２２】
2020003848.tif 000042
【図２３】
2020003848.tif 000043
【図２４】
2020003848.tif 000044
【図２５】
2020003848.tif 000045
【図２６】
2020003848.tif 000046