(57)【要約】【課題】深層学習に適用した場合に効果的な分散処理を行う。【解決手段】分散処理システムは、複数の下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）と、上位集計網２とを備える。各下位集計網１［ｍ］は、リング状に配置された複数の分散処理ノード３を含む。各分散処理ノード３は、自ノードのニューラルネットワークの重み毎の分散データを生成する。各下位集計網１［ｍ］は、各分散処理ノード３により生成された分散データを下位集計網毎に集計する。上位集計網２は、各下位集計網１［ｍ］の集計結果をさらに集計した集計データを生成して各下位集計網１［ｍ］に分配する。各下位集計網１［ｍ］は、分配された集計データを同じ下位集計網に属する各分散処理ノード３に分配する。各分散処理ノード３は、分配された集計データに基づいてニューラルネットワークの重みを更新する。【選択図】  図１
2020077090.tif 000002
【特許請求の範囲】
【請求項１】
複数の下位集計網と、
この複数の下位集計網の間を接続する上位集計網とを備え、
各下位集計網は、それぞれリング状に配置された複数の分散処理ノードを少なくとも含み、
各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークの重み毎の分散データを生成し、
各下位集計網は、各下位集計網に属する各分散処理ノードにより生成された前記分散データを下位集計網毎に集計し、
前記上位集計網は、各下位集計網の集計結果をさらに集計した集計データを生成して各下位集計網に分配し、
各下位集計網は、前記上位集計網から分配された集計データを同じ下位集計網に属する各分散処理ノードに分配し、
各下位集計網に属する分散処理ノードは、分配された集計データに基づいて前記ニューラルネットワークの重みを更新することを特徴とする分散処理システム。
【請求項２】
Ｍ個（Ｍは２以上の整数）の下位集計網と、
このＭ個の下位集計網の間を接続する上位集計網とを備え、
各下位集計網は、
リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、
隣接する分散処理ノード間を接続する下位通信路とから構成され、
前記上位集計網は、
上位集計ノードと、
前記上位集計ノードと各下位集計網に属する１番目の分散処理ノードとを接続する上位通信路とから構成され、
各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成し、
各下位集計網に属する１番目の分散処理ノードは、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信し、
各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードは、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信し、
各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして前記上位集計ノードに送信し、
前記上位集計ノードは、各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて第３の集計データを生成して、この第３の集計データを各下位集計網に属する１番目の分散処理ノードに送信し、
各下位集計網に属する１番目の分散処理ノードは、前記上位集計ノードから受信した第３の集計データを同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信し、
各下位集計網に属するｋ番目の分散処理ノードは、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信し、
各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信し、
各分散処理ノードは、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新することを特徴とする分散処理システム。
【請求項３】
Ｍ個（Ｍは２以上の整数）の下位集計網と、
このＭ個の下位集計網の間を接続する上位集計網とを備え、
各下位集計網は、
リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、
隣接する分散処理ノード間を接続する下位通信路とから構成され、
前記上位集計網は、
各下位集計網に属する１番目の分散処理ノード間を接続する上位通信路から構成され、
各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成し、
各下位集計網に属する１番目の分散処理ノードは、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信し、
各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードは、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信し、
１番目の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして２番目の下位集計網に属する１番目の分散処理ノードに送信し、
ｊ番目の下位集計網（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノードは、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データと同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードから受信した第１の集計データとの和を、重みｗ［ｐ］毎に求めて更新後の第２の集計データを生成し、この第２の集計データをｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）番目の下位集計網に属する１番目の分散処理ノードに送信し、
１番目の下位集計網に属する１番目の分散処理ノードは、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとしてＭ番目の下位集計網に属する１番目の分散処理ノードに送信し、
ｊ番目の下位集計網に属する１番目の分散処理ノードは、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信すると共に、同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信し、
１番目の下位集計網に属する１番目の分散処理ノードは、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信し、
各下位集計網に属するｋ番目の分散処理ノードは、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信し、
各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信し、
各分散処理ノードは、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新することを特徴とする分散処理システム。
【請求項４】
請求項２記載の分散処理システムにおいて、
ｍ番目（ｍ＝１，・・・，Ｍ）の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノードと双方向の通信が同時に可能な第１の通信ポートと、同じ下位集計網に属するｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードと双方向の通信が同時に可能な第２の通信ポートと、前記上位集計ノードと双方向の通信が同時に可能な第３の通信ポートとを備え、
ｍ番目の下位集計網に属するｋ番目の分散処理ノードは、前記第１の通信ポートと前記第２の通信ポートとを備え、
前記上位集計ノードは、各下位集計網と双方向の通信が同時に可能なＭ個の第４の通信ポートを備え、
さらに、各分散処理ノードは、
前記分散データを生成するノード内集計処理部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属する２番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属するｋ+番目の分散処理ノードに送信する第１の送信部と、
同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから自ノードの前記第２の通信ポートを介して前記第１の集計データを受信する第１の受信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第２の集計データを自ノードの前記第３の通信ポートから前記上位集計ノードに送信する第２の送信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記上位集計ノードから自ノードの前記第３の通信ポートを介して前記第３の集計データを受信する第２の受信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記上位集計ノードから受信した第３の集計データを自ノードの第２の通信ポートを介して同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを自ノードの第２の通信ポートを介して同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第３の送信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属する２番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信する第３の受信部と、
自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを生成する第１の集計データ生成部と、
受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する重み更新処理部とを備え、
前記上位集計ノードは、
各下位集計網に属する１番目の分散処理ノードから自ノードの前記第４の通信ポートを介して前記第２の集計データを受信する第４の受信部と、
各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて前記第３の集計データを生成する第２の集計データ生成部と、
前記第３の集計データを自ノードの前記第４の通信ポートから各下位集計網に属する１番目の分散処理ノードに送信する第４の送信部とを備えることを特徴とする分散処理システム。
【請求項５】
請求項３記載の分散処理システムにおいて、
ｍ番目（ｍ＝１，・・・，Ｍ）の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノードと双方向の通信が同時に可能な第１の通信ポートと、同じ下位集計網に属するｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードと双方向の通信が同時に可能な第２の通信ポートと、ｍ+（ｍ+＝ｍ＋１、ただしｍ＝Ｍの場合はｍ+＝１）番目の下位集計網に属する１番目の分散処理ノードと双方向の通信が同時に可能な第３の通信ポートと、ｍ-（ｍ-＝ｍ−１、ただしｍ＝１の場合はｍ-＝Ｍ）番目の下位集計網に属する１番目の分散処理ノードと双方向の通信が同時に可能な第４の通信ポートとを備え、
ｍ番目の下位集計網に属するｋ番目の分散処理ノードは、前記第１の通信ポートと前記第２の通信ポートとを備え、
さらに、各分散処理ノードは、
前記分散データを生成するノード内集計処理部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属する２番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属するｋ+番目の分散処理ノードに送信する第１の送信部と、
自ノードの前記第２の通信ポートを介して前記第１の集計データを受信する第１の受信部と、
自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを生成する第１の集計データ生成部と、
自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして自ノードの前記第３の通信ポートから２番目の下位集計網に属する１番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記更新後の第２の集計データを自ノードの前記第３の通信ポートからｊ+番目の下位集計網に属する１番目の分散処理ノードに送信する第２の送信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、自ノードの前記第４の通信ポートを介して前記第２の集計データを受信する第２の受信部と、
自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記更新後の第２の集計データを生成する第２の集計データ生成部と、
自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとして自ノードの前記第４の通信ポートからＭ番目の下位集計網に属する１番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第４の通信ポートを介して（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信する第３の送信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第３の集計データを自ノードの前記第３の通信ポートを介して受信する第３の受信部と、
自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第４の送信部と、
自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属する２番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信する第４の受信部と、
受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する重み更新処理部とを備えることを特徴とする分散処理システム。
【請求項６】
複数の下位集計網と、この複数の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、それぞれリング状に配置された複数の分散処理ノードを少なくとも含むシステムにおける分散処理方法であって、
各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークの重み毎の分散データを生成する第１のステップと、
各下位集計網が、各下位集計網に属する各分散処理ノードにより生成された前記分散データを下位集計網毎に集計する第２のステップと、
前記上位集計網が、各下位集計網の集計結果をさらに集計した集計データを生成して各下位集計網に分配する第３のステップと、
各下位集計網が、前記上位集計網から分配された集計データを同じ下位集計網に属する各分散処理ノードに分配する第４のステップと、
各下位集計網に属する分散処理ノードが、分配された集計データに基づいて前記ニューラルネットワークの重みを更新する第５のステップとを含むことを特徴とする分散処理方法。
【請求項７】
Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、上位集計ノードと、前記上位集計ノードと各下位集計網に属する１番目の分散処理ノードとを接続する上位通信路とから構成されたシステムにおける分散処理方法であって、
各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成する第１のステップと、
各下位集計網に属する１番目の分散処理ノードが、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信する第２のステップと、
各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードが、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信する第３のステップと、
各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして前記上位集計ノードに送信する第４のステップと、
前記上位集計ノードが、各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて第３の集計データを生成して、この第３の集計データを各下位集計網に属する１番目の分散処理ノードに送信する第５のステップと、
各下位集計網に属する１番目の分散処理ノードが、前記上位集計ノードから受信した第３の集計データを同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信する第６のステップと、
各下位集計網に属するｋ番目の分散処理ノードが、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第７のステップと、
各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信する第８のステップと、
各分散処理ノードが、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する第９のステップとを含むことを特徴とする分散処理方法。
【請求項８】
Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、各下位集計網に属する１番目の分散処理ノード間を接続する上位通信路から構成されたシステムにおける分散処理方法であって、
各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成する第１のステップと、
各下位集計網に属する１番目の分散処理ノードが、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信する第２のステップと、
各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードが、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信する第３のステップと、
１番目の下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして２番目の下位集計網に属する１番目の分散処理ノードに送信する第４のステップと、
ｊ番目の下位集計網（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノードが、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データと同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードから受信した第１の集計データとの和を、重みｗ［ｐ］毎に求めて更新後の第２の集計データを生成し、この第２の集計データをｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）番目の下位集計網に属する１番目の分散処理ノードに送信する第５のステップと、
１番目の下位集計網に属する１番目の分散処理ノードが、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとしてＭ番目の下位集計網に属する１番目の分散処理ノードに送信する第６のステップと、
ｊ番目の下位集計網に属する１番目の分散処理ノードが、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信すると共に、同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信する第７のステップと、
１番目の下位集計網に属する１番目の分散処理ノードが、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信する第８のステップと、
各下位集計網に属するｋ番目の分散処理ノードが、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第９のステップと、
各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信する第１０のステップと、
各分散処理ノードが、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する第１１のステップとを含むことを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の分散処理ノードを備える分散処理システムに係り、特に、各分散処理ノードから数値データを集計して集計データを生成し、各分散処理ノードに集計データを分配する分散処理システムおよび分散処理方法に関するものである。
【背景技術】
【０００２】
深層学習では、多層のニューロンモデルからなる学習対象について、各ニューロンモデルの重み（前段のニューロンモデルが出力した値に乗じる係数）を、入力したサンプルデータに基づいて更新することにより、推論精度を改善する。
【０００３】
通常、推論精度を改善する手法には、ミニバッチ法が用いられている。ミニバッチ法では、サンプルデータ毎に前記重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて前記勾配を集計する（サンプルデータ毎に得られた勾配を重み別に合算する）集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理と、を繰り返す。
【０００４】
これらの処理、特に勾配計算処理は、多数回の演算を必要とするが、推論精度を向上させるために、重みの個数や入力するサンプルデータの個数が増加すると、深層学習に要する時間が増大するという、課題がある。
【０００５】
勾配計算処理を高速化するため、分散処理の手法が用いられている。具体的には、複数の分散処理ノードを設け、各ノードは、各々異なるサンプルデータについて勾配計算処理を行う。これにより、ノード数に比例して単位時間に処理できるサンプルデータ数を増加させることが可能となるため、勾配計算処理を高速化できる（非特許文献１参照）。
【０００６】
深層学習の分散処理において、集計処理を行うためには、各分散処理ノードがサンプルデータ毎に重みに対する勾配を計算する勾配計算処理およびサンプルデータ毎に得られた勾配を重み別に合算するノード内集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理との間に、分散処理ノード毎に得られたデータ（分散データ）を、集計処理を行うノードに転送するための通信（集約通信）と、集約通信により取得したデータに基づいて集計する処理（ノード間集計処理）と、各分散処理ノードから取得した集計したデータ（集計データ）を各分散処理ノードに分配するための通信（分配通信）と、が必要となる。
【０００７】
上記の集約通信や分配通信に要する時間は、深層学習を単一ノードで実施するシステムでは不要であり、深層学習の分散処理を行う上で、処理速度を低下させる要因となっている。
近年、深層学習がより複雑な問題に適用されるようになってきており、重みの総数が増加する傾向にある。このため、分散データや集計データのデータ量が増大し、集約通信時間と分配通信時間が増大している。
【０００８】
このように、深層学習の分散処理システムでは、集約通信時間と分配通信時間の増大によって、分散処理ノード数を増加させることにより、深層学習の高速化の効果が低下するという問題があった。
【０００９】
図１４は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示しており、２００は分散処理ノード数と処理性能の理想的な関係（性能∝ノード数）を示し、２０１は分散処理ノード数と処理性能の実際の関係を示している。分散処理ノード数に比例してノード間集計処理の入力である分散データの総量は増大するが、実際の処理性能が分散処理ノード数に比例して向上しない理由は、集計処理ノードの通信速度が、このノードの通信ポートの物理速度以下に制限されるため、集約通信に要する時間が増大するためである。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】秋葉 拓哉，“分散深層学習パッケージ ChainerMN 公開”，プリファードインフラストラクチャー（Preferred Infrastructure），２０１７年，インターネット＜https://research.preferred.jp/2017/05/chainermn-beta-release/＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、上記のような事情を考慮してなされたものであり、その目的は、複数の分散処理ノードを備える分散処理システムおいて、深層学習に適用した場合に効果的な分散処理を行うことができる分散処理システムおよび分散処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の分散処理システムは、複数の下位集計網と、この複数の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、それぞれリング状に配置された複数の分散処理ノードを少なくとも含み、各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークの重み毎の分散データを生成し、各下位集計網は、各下位集計網に属する各分散処理ノードにより生成された前記分散データを下位集計網毎に集計し、前記上位集計網は、各下位集計網の集計結果をさらに集計した集計データを生成して各下位集計網に分配し、各下位集計網は、前記上位集計網から分配された集計データを同じ下位集計網に属する各分散処理ノードに分配し、各下位集計網に属する分散処理ノードは、分配された集計データに基づいて前記ニューラルネットワークの重みを更新することを特徴とするものである。
【００１３】
また、本発明の分散処理システムは、Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、上位集計ノードと、前記上位集計ノードと各下位集計網に属する１番目の分散処理ノードとを接続する上位通信路とから構成され、各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成し、各下位集計網に属する１番目の分散処理ノードは、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信し、各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードは、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信し、各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして前記上位集計ノードに送信し、前記上位集計ノードは、各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて第３の集計データを生成して、この第３の集計データを各下位集計網に属する１番目の分散処理ノードに送信し、各下位集計網に属する１番目の分散処理ノードは、前記上位集計ノードから受信した第３の集計データを同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信し、各下位集計網に属するｋ番目の分散処理ノードは、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信し、各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信し、各分散処理ノードは、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新することを特徴とするものである。
【００１４】
また、本発明の分散処理システムは、Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、各下位集計網に属する１番目の分散処理ノード間を接続する上位通信路から構成され、各下位集計網に属する分散処理ノードは、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成し、各下位集計網に属する１番目の分散処理ノードは、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信し、各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードは、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信し、１番目の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして２番目の下位集計網に属する１番目の分散処理ノードに送信し、ｊ番目の下位集計網（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノードは、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データと同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードから受信した第１の集計データとの和を、重みｗ［ｐ］毎に求めて更新後の第２の集計データを生成し、この第２の集計データをｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）番目の下位集計網に属する１番目の分散処理ノードに送信し、１番目の下位集計網に属する１番目の分散処理ノードは、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとしてＭ番目の下位集計網に属する１番目の分散処理ノードに送信し、ｊ番目の下位集計網に属する１番目の分散処理ノードは、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信すると共に、同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信し、１番目の下位集計網に属する１番目の分散処理ノードは、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信し、各下位集計網に属するｋ番目の分散処理ノードは、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信し、各下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信し、各分散���理ノードは、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新することを特徴とするものである。
【００１５】
また、本発明の分散処理システムの１構成例において、ｍ番目（ｍ＝１，・・・，Ｍ）の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノードと双方向の通信が同時に可能な第１の通信ポートと、同じ下位集計網に属するｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードと双方向の通信が同時に可能な第２の通信ポートと、前記上位集計ノードと双方向の通信が同時に可能な第３の通信ポートとを備え、ｍ番目の下位集計網に属するｋ番目の分散処理ノードは、前記第１の通信ポートと前記第２の通信ポートとを備え、前記上位集計ノードは、各下位集計網と双方向の通信が同時に可能なＭ個の第４の通信ポートを備え、さらに、各分散処理ノードは、前記分散データを生成するノード内集計処理部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属する２番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属するｋ+番目の分散処理ノードに送信する第１の送信部と、同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから自ノードの前記第２の通信ポートを介して前記第１の集計データを受信する第１の受信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第２の集計データを自ノードの前記第３の通信ポートから前記上位集計ノードに送信する第２の送信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記上位集計ノードから自ノードの前記第３の通信ポートを介して前記第３の集計データを受信する第２の受信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記上位集計ノードから受信した第３の集計データを自ノードの第２の通信ポートを介して同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを自ノードの第２の通信ポートを介して同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第３の送信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属する２番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信する第３の受信部と、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを生成する第１の集計データ生成部と、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する重み更新処理部とを備え、前記上位集計ノードは、各下位集計網に属する１番目の分散処理ノードから自ノードの前記第４の通信ポートを介して前記第２の集計データを受信する第４の受信部と、各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて前記第３の集計データを生成する第２の集計データ生成部と、前記第３の集計データを自ノードの前記第４の通信ポートから各下位集計網に属する１番目の分散処理ノードに送信する第４の送信部とを備えることを特徴とするものである。
【００１６】
また、本発明の分散処理システムの１構成例において、ｍ番目（ｍ＝１，・・・，Ｍ）の下位集計網に属する１番目の分散処理ノードは、同じ下位集計網に属するｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノードと双方向の通信が同時に可能な第１の通信ポートと、同じ下位集計網に属するｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードと双方向の通信が同時に可能な第２の通信ポートと、ｍ+（ｍ+＝ｍ＋１、ただしｍ＝Ｍの場合はｍ+＝１）番目の下位集計網に属する１番目の分散処理ノードと双方向の通信が同時に可能な第３の通信ポートと、ｍ-（ｍ-＝ｍ−１、ただしｍ＝１の場合はｍ-＝Ｍ）番目の下位集計網に属する１番目の分散処理ノードと双方向の通信が同時に可能な第４の通信ポートとを備え、ｍ番目の下位集計網に属するｋ番目の分散処理ノードは、前記第１の通信ポートと前記第２の通信ポートとを備え、さらに、各分散処理ノードは、前記分散データを生成するノード内集計処理部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属する２番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを自ノードの前記第１の通信ポートから同じ下位集計網に属するｋ+番目の分散処理ノードに送信する第１の送信部と、自ノードの前記第２の通信ポートを介して前記第１の集計データを受信する第１の受信部と、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、前記更新後の第１の集計データを生成する第１の集計データ生成部と、自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして自ノードの前記第３の通信ポートから２番目の下位集計網に属する１番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記更新後の第２の集計データを自ノードの前記第３の通信ポートからｊ+番目の下位集計網に属する１番目の分散処理ノードに送信する第２の送信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、自ノードの前記第４の通信ポートを介して前記第２の集計データを受信する第２の受信部と、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記更新後の第２の集計データを生成する第２の集計データ生成部と、自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとして自ノードの前記第４の通信ポートからＭ番目の下位集計網に属する１番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第４の通信ポートを介して（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信する第３の送信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、前記第３の集計データを自ノードの前記第３の通信ポートを介して受信する第３の受信部と、自ノードが１番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信し、自ノードがｊ番目の下位集計網に属する１番目の分散処理ノードとして機能する場合に、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信し、自ノードが各下位集計網に属するｋ番目の分散処理ノードとして機能する場合に、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを自ノードの前記第２の通信ポートから同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第４の送信部と、自ノードが各下位集計網に属する１番目の分散処理ノードとして機能する場合に、同じ下位集計網に属する２番目の分散処理ノードから自ノードの前記第１の通信ポートを介して前記第３の集計データを受信する第４の受信部と、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する重み更新処理部とを備えることを特徴とするものである。
【００１７】
また、本発明は、複数の下位集計網と、この複数の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、それぞれリング状に配置された複数の分散処理ノードを少なくとも含むシステムにおける分散処理方法であって、各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークの重み毎の分散データを生成する第１のステップと、各下位集計網が、各下位集計網に属する各分散処理ノードにより生成された前記分散データを下位集計網毎に集計する第２のステップと、前記上位集計網が、各下位集計網の集計結果をさらに集計した集計データを生成して各下位集計網に分配する第３のステップと、各下位集計網が、前記上位集計網から分配された集計データを同じ下位集計網に属する各分散処理ノードに分配する第４のステップと、各下位集計網に属する分散処理ノードが、分配された集計データに基づいて前記ニューラルネットワークの重みを更新する第５のステップとを含むことを特徴とするものである。
【００１８】
また、本発明は、Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、上位集計ノードと、前記上位集計ノードと各下位集計網に属する１番目の分散処理ノードとを接続する上位通信路とから構成されたシステムにおける分散処理方法であって、各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成する第１のステップと、各下位集計網に属する１番目の分散処理ノードが、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信する第２のステップと、各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードが、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信する第３のステップと、各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして前記上位集計ノードに送信する第４のステップと、前記上位集計ノードが、各下位集計網に属する１番目の分散処理ノードから受信した第２の集計データの和を、対応する重みｗ［ｐ］毎に求めて第３の集計データを生成して、この第３の集計データを各下位集計網に属する１番目の分散処理ノードに送信する第５のステップと、各下位集計網に属する１番目の分散処理ノードが、前記上位集計ノードから受信した第３の集計データを同じ下位集計網に属するＮ［ｍ］番目の分散処理ノードに送信する第６のステップと、各下位集計網に属するｋ番目の分散処理ノードが、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−１）番目の分散処理ノードに送信する第７のステップと、各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信する第８のステップと、各分散処理ノードが、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する第９のステップとを含むことを特徴とするものである。
【００１９】
また、本発明は、Ｍ個（Ｍは２以上の整数）の下位集計網と、このＭ個の下位集計網の間を接続する上位集計網とを備え、各下位集計網は、リング状に配置されたＮ［ｍ］個（ｍ＝１，・・・，Ｍ、Ｎ［ｍ］は２以上の整数）の分散処理ノードと、隣接する分散処理ノード間を接続する下位通信路とから構成され、前記上位集計網は、各下位集計網に属する１番目の分散処理ノード間を接続する上位通信路から構成されたシステムにおける分散処理方法であって、各下位集計網に属する分散処理ノードが、それぞれ自ノードの学習対象のニューラルネットワークのＰ個（Ｐは２以上の整数）の重みｗ［ｐ］毎（ｐ＝１，・・・，Ｐ）の分散データを生成する第１のステップと、各下位集計網に属する１番目の分散処理ノードが、自ノードで生成された分散データを第１の集計データとして同じ下位集計網に属する２番目の分散処理ノードに送信する第２のステップと、各下位集計網に属するｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードが、同じ下位集計網に属する（ｋ−１）番目の分散処理ノードから受信した第１の集計データと自ノードで生成された分散データとの和を、対応する重みｗ［ｐ］毎に求めて更新後の第１の集計データを生成し、この第１の集計データを同じ下位集計網に属するｋ+番目（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）の分散処理ノードに送信する第３のステップと、１番目の下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属するＮ［１］番目の分散処理ノードから受信した第１の集計データを第２の集計データとして２番目の下位集計網に属する１番目の分散処理ノードに送信する第４のステップと、ｊ番目の下位集計網（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノードが、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データと同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードから受信した第１の集計データとの和を、重みｗ［ｐ］毎に求めて更新後の第２の集計データを生成し、この第２の集計データをｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）番目の下位集計網に属する１番目の分散処理ノードに送信する第５のステップと、１番目の下位集計網に属する１番目の分散処理ノードが、Ｍ番目の下位集計網に属する１番目の分散処理ノードから受信した第２の集計データを第３の集計データとしてＭ番目の下位集計網に属する１番目の分散処理ノードに送信する第６のステップと、ｊ番目の下位集計網に属する１番目の分散処理ノードが、ｊ+番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを、（ｊ−１）番目の下位集計網に属する１番目の分散処理ノードに送信すると共に、同じ下位集計網に属するＮ［ｊ］番目の分散処理ノードに送信する第７のステップと、１番目の下位集計網に属する１番目の分散処理ノードが、２番目の下位集計網に属する１番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属するＮ［１］番目の分散処理ノードに送信する第８のステップと、各下位集計網に属するｋ番目の分散処理ノードが、同じ下位集計網に属するｋ+番目の分散処理ノードから受信した第３の集計データを同じ下位集計網に属する（ｋ−���）番目の分散処理ノードに送信する第９のステップと、各下位集計網に属する１番目の分散処理ノードが、同じ下位集計網に属する２番目の分散処理ノードから前記第３の集計データを受信する第１０のステップと、各分散処理ノードが、受信した前記第３の集計データに基づいて前記ニューラルネットワークの重みｗ［ｐ］を更新する第１１のステップとを含むことを特徴とするものである。
【発明の効果】
【００２０】
本発明によれば、各下位集計網が、各下位集計網に属する各分散処理ノードにより生成された分散データを下位集計網毎に集計し、上位集計網が、各下位集計網の集計結果をさらに集計した集計データを生成して各下位集計網に分配し、各下位集計網が、上位集計網から分配された集計データを同じ下位集計網に属する各分散処理ノードに分配することにより、分散処理に要する時間を短縮することができ、分散処理ノード数の増大による処理速度低下の影響を抑えることができる。
【００２１】
また、本発明では、各下位集計網においてｎ番目（ｎ＝１，・・・，Ｎ［ｍ］）の分散処理ノードからｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノードに第１の集計データを送信する下位集約通信処理と、下位集計網においてｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノードが受信した第１の集計データと自ノードで生成した分散データとに基づいて更新後の第１の集計データを計算する下位ノード間集計処理と、各下位集計網においてｎ番目の分散処理ノードからｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードに第３の集計データを送信する下位分配通信処理とを、並行してほぼ同時に行うことが可能であり、効果的な分散処理を行うことができ、ニューラルネットワークの学習効率を向上させることができる。本発明では、各分散処理ノードに第１の通信ポートと第２の通信ポートとを設け、下位集約通信と下位分配通信の方向を逆にすることにより、下位集約通信が完了するまで下位分配通信の開始を待つ必要がない。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の第１の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。
【図２】図２は、本発明の第１の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。
【図３】図３は、本発明の第１の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。
【図４】図４は、本発明の第１の実施例に係る深層学習用分散処理システムの上位集計ノードの構成例を示すブロック図である。
【図５】図５は、本発明の第１の実施例に係る分散処理ノードのサンプルデータ入力処理と勾配計算処理とノード内集計処理を説明するフローチャートである。
【図６】図６は、本発明の第１の実施例に係る下位集計網と上位集計網の下位集約通信処理と下位ノード間集計処理と上位集約通信処理と上位ノード集計処理と上位分配通信処理と下位分配通信処理とを説明するフローチャートである。
【図７】図７は、本発明の第１の実施例に係る分散処理ノードの重み更新処理を説明するフローチャートである。
【図８】図８は、本発明の第２の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。
【図９】図９は、本発明の第２の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。
【図１０】図１０は、本発明の第２の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。
【図１１】図１１は、本発明の第２の実施例に係る下位集計網と上位集計網の下位集約通信処理と下位ノード間集計処理と上位集約通信処理と上位ノード集計処理と上位分配通信処理と下位分配通信処理とを説明するフローチャートである。
【図１２】図１２は、本発明の第２の実施例に係る下位集計網と上位集計網の下位集約通信処理と下位ノード間集計処理と上位集約通信処理と上位ノード集計処理と上位分配通信処理と下位分配通信処理とを説明するフローチャートである。
【図１３】図１３は、本発明の第１、第２の実施例に係る分散処理ノードと上位集計ノードとを実現するコンピュータの構成例を示すブロック図である。
【図１４】図１４は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示す図である。
【発明を実施するための形態】
【００２３】
［第１の実施例］
以下、本発明の実施例について図面を参照して説明する。図１は本発明の第１の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。図１の分散処理システムは、それぞれ複数の分散処理ノードを含むＭ個（Ｍは２以上の整数）の下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）と、Ｍ個の下位集計網１［ｍ］の間を接続する上位集計網２とを備えている。
【００２４】
下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、Ｎ［ｍ］個（Ｎ［ｍ］は２以上の整数）の分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）と、番号ｎの分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）が次の番号ｎ+（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノード３［ｎ+］と互いに双方向に通信するための下位通信路４［ｍ，ｎ］  （ｎ＝１，・・・，Ｎ［ｍ］）とから構成される。なお、任意の下位通信路４［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）には、伝送路の他に、通信を中継する中継処理ノードが任意に介在することも可能である。また、分散処理ノードの個数Ｎ［ｍ］は、少なくとも一部の下位集計網１［ｍ］で異なる個数であってもよいし、各下位集計網１［ｍ］で同一の個数であってもよい。
【００２５】
下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、下位集計網１［ｍ］に属する各分散処理ノード分散処理ノード３［ｍ，ｎ］により生成された分散データを集計して下位集計データＲｕ［ｐ，ｍ］（ｐ＝１，・・・，Ｐ）を生成する。上位集計網２は、各下位集計データＲｕ［ｐ，ｍ］を集計して集計データＲ［ｐ］を生成し、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に分配する。下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、上位集計網２から分配された集計データＲ［ｐ］を下位集計網１［ｍ］に属する各分散処理ノード３［ｍ，ｎ］に分配する。
【００２６】
上位集計網２は、上位集計ノード５と、上位集計ノード５が下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する分散処理ノード３［ｍ，１］と互いに双方向に通信するための上位通信路６［ｍ］とから構成される。なお、任意の上位通信路６［ｍ］（ｍ＝１，・・・，Ｍ）には、伝送路の他に、通信を中継する中継処理ノードが任意に介在することも可能である。
【００２７】
各分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）は、双方向の通信が同時に可能な通信ポート３０と通信ポート３１とを備える。通信ポート３０は、分散処理ノード３［ｍ，ｎ］が分散処理ノード３［ｍ，ｎ+］（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）と双方向の通信を行うための通信ポートであり、下位通信路４［ｍ，ｎ］と接続される。また、通信ポート３１は、分散処理ノード３［ｍ，ｎ］が分散処理ノード３［ｍ，ｎ-］（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）と双方向の通信を行うための通信ポートであり、下位通信路４［ｍ，ｎ-］と接続される。
【００２８】
さらに、分散処理ノード３［ｍ，１］（ｍ＝１，・・・，Ｍ）は、双方向の通信が同時に可能な通信ポート３２を備える。通信ポート３２は、分散処理ノード３［ｍ，１］が上位集計ノード５と双方向の通信を行うための通信ポートであり、上位通信路６［ｍ］と接続される。
【００２９】
図２は本実施例に係る分散処理ノード３［ｍ，１］（ｍ＝１，・・・，Ｍ）の構成例を示すブロック図、図３は本実施例に係る分散処理ノード３［ｍ，ｋ］（ｋ＝２，・・・，Ｎ［ｍ］）の構成例を示すブロック図、図４は上位集計ノード５の構成例を示すブロック図である。
【００３０】
分散処理ノード３［ｍ，１］は、通信ポート３０（第１の通信ポート）と、通信ポート３１（第２の通信ポート）と、通信ポート３２（第３の通信ポート）と、送信部３３（第１の送信部）と、受信部３４（第３の受信部）と、受信部３６（第１の受信部）と、サンプル入力部３７と、勾配計算処理部３８と、ノード内集計処理部３９と、重み更新処理部４１と、ソフトウェア的に構築された数学モデルであるニューラルネットワーク４２と、送信部４３（第２の送信部）と、受信部４４（第２の受信部）とを備えている。
【００３１】
分散処理ノード３［ｍ，ｋ］（ｋ＝２，・・・，Ｎ［ｍ］）は、通信ポート３０（第１の通信ポート）と、通信ポート３１（第２の通信ポート）と、送信部３３（第１の送信部）と、受信部３４（第３の受信部）と、送信部３５（第３の送信部）と、受信部３６（第１の受信部）と、サンプル入力部３７と、勾配計算処理部３８と、ノード内集計処理部３９と、集計データ生成部４０（第１の集計データ生成部）と、重み更新処理部４１と、ニューラルネットワーク４２とを備えている。
【００３２】
上位集計ノード５は、通信ポート５０［ｍ］（第４の通信ポート）と、受信部５１［ｍ］（第４の受信部）と、送信部５２［ｍ］（第４の送信部）と、集計データ生成部５３（第２の集計データ生成部）とを備えている。
【００３３】
図５は分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）のサンプルデータ入力処理と勾配計算処理とノード内集計処理とを説明するフローチャートである。
各分散処理ノード３［ｍ，ｎ］のサンプル入力部３７は、図示しないデータ収集ノードからそれぞれ異なるＳ個（Ｓは２以上の整数）のサンプルデータｘ［ｍ，ｎ，ｓ］（ｓ＝１，・・・，Ｓ）をミニバッチ毎に入力する（図５ステップＳ１００）。
【００３４】
なお、本発明は、データ収集ノードによるサンプルデータの収集方法、および収集したサンプルデータをＮ個の集合に振り分けて各分散処理ノード３［ｍ，ｎ］へ分配する方法に限定されるものではなく、これらの方法の如何を問わず適用が可能である。
【００３５】
各分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）の勾配計算処理部３８は、サンプルデータｘ［ｍ，ｎ，ｓ］が入力されたとき、自ノードの学習対象のニューラルネットワーク４２のＰ個（Ｐは２以上の整数）の重みｗ［ｐ］（ｐ＝１，・・・，Ｐ）の各々について、ニューラルネットワーク４２の損失関数の勾配Ｇ［ｐ，ｍ，ｎ，ｓ］をサンプルデータｘ［ｍ，ｎ，ｓ］毎に計算する（図５ステップＳ１０１）。
【００３６】
ニューラルネットワーク４２を各分散処理ノード３［ｍ，ｎ］にソフトウェアで構築する方法、ニューラルネットワーク４２の重みｗ［ｐ］、ニューラルネットワーク４２の性能の悪さを示す指標である損失関数、および損失関数の勾配Ｇ［ｐ，ｍ，ｎ，ｓ］については周知の技術であるので、詳細な説明は省略する。
【００３７】
続いて、各分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）のノード内集計処理部３９は、サンプルデータ毎の勾配Ｇ［ｐ，ｍ，ｎ，ｓ］を集計した数値である分散データＤ［ｐ，ｍ，ｎ］を、重みｗ［ｐ］毎に生成して保持する（図５ステップＳ１０２）。分散データＤ［ｐ，ｍ，ｎ］の計算式は以下のとおりである。
【００３８】
【数１】
2020077090.tif 000003
【００３９】
なお、ステップＳ１０１の勾配計算処理とステップＳ１０２のノード内集計処理とは、サンプルデータ単位でパイプライン化する（あるサンプルデータに対して勾配計算処理を行うと同時にその一つ前のサンプルデータから得た勾配を集計するノード内集計処理とを同時に実行する）ことができる。
【００４０】
さらに、各分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）が分散データＤ［ｐ，ｍ，ｎ］を生成した後、同一の下位集計網１［ｍ］に属する分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）間での通信と、各ノードでの演算とによって、分散処理ノード［ｍ，１］は下位集計データＲｕ［ｐ，ｍ］を取得する。下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）ごとに、分散処理ノード［ｍ，１］が下位集計データＲｕ［ｐ，ｍ］を取得する過程を、以下に説明する。
【００４１】
図６は下位集計網１［ｍ］と上位集計網２の下位集約通信処理と下位ノード間集計処理と上位集約通信処理と上位ノード集計処理と上位分配通信処理と下位分配通信処理とを説明するフローチャートである。
【００４２】
本実施例において、下位集約通信処理とは、下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）においてｎ番目（ｎ＝１，・・・，Ｎ［ｍ］）の分散処理ノード３［ｍ，ｎ］からｎ+番目（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノード３［ｍ，ｎ+］に下位中間集計データ（第１の集計データ）を送信する処理を言う。下位ノード間集計処理とは、下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）においてｋ番目（ｋ＝２，・・・，Ｎ［ｍ］）の分散処理ノード３ａ［ｍ，ｋ］が受信した下位中間集計データと自ノードで生成した分散データとに基づいて更新後の下位中間集計データを計算する処理を言う。上位集約通信処理とは、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）の１番目の分散処理ノード３［ｍ，１］から上位集計ノード５に下位集計データ（第２の集計データ）を送信する処理を言う。
【００４３】
また、上位ノード集計処理とは、上位集計ノード５が下位集計データの和を求めることにより、集計データ（第３の集計データ）を生成する処理を言う。上位分配通信処理とは、上位集計ノード５から各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）の１番目の分散処理ノード３［ｍ，１］に集計データを送信する処理を言う。下位分配通信処理とは、下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）においてｎ番目（ｎ＝１，・・・，Ｎ［ｍ］）の分散処理ノードからｎ-番目（ｎ-＝ｎ−１、ただしｎ＝１の場合はｎ-＝Ｎ［ｍ］）の分散処理ノードに集計データを送信する処理を言う。
【００４４】
各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する予め定められた１番目の分散処理ノード３［ｍ，１］の送信部３３は、自ノードのノード内集計処理部３９によって生成されたＰ個の分散データＤ［ｐ，ｍ，１］（ｐ＝１，・・・，Ｐ）を下位中間集計データＲｔ［ｐ，ｍ，１］として、自ノードの通信ポート３０および下位通信路４［ｍ，１］を介して、同じ下位集計網１［ｍ］に属する次の番号の分散処理ノード３［ｍ，２］に送信する（図６ステップＳ１０３，Ｓ１０４）。すなわち、このときの下位中間集計データＲｔ［ｐ，ｍ，１］は、分散データＤ［ｐ，ｍ，１］と同じである。
Ｒｔ［ｐ，ｍ，１］＝Ｄ［ｐ，ｍ，１］                            ・・・（２）
【００４５】
次に、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する、１番目を除くｋ番目の分散処理ノード３［ｍ，ｋ］（ｋ＝２，・・・，Ｎ［ｍ］）の受信部３６は、同じ下位集計網１［ｍ］に属する前の番号の分散処理ノード３［ｍ，ｋ−１］から下位中間集計データＲｔ［ｐ，ｍ，ｋ−１］を自ノードの通信ポート３１および下位通信路４［ｍ，ｋ−１］を介して受信する（図６ステップＳ１０５，Ｓ１０６）。
【００４６】
各分散処理ノード３［ｍ，ｋ］（ｍ＝１，・・・，Ｍ、ｋ＝２，・・・，Ｎ［ｍ］）の集計データ生成部４０は、自ノードの受信部３６によって受信された下位中間集計データＲｔ［ｐ，ｍ，ｋ−１］と自ノードのノード内集計処理部３９によって生成された分散データＤ［ｐ，ｍ，ｋ］との和を、対応する重みｗ［ｐ］毎（番号ｐ毎）に求めることにより、下位中間集計データＲｔ［ｐ，ｍ，ｋ］を番号ｐの順番に生成する（図６ステップＳ１０７）。すなわち、下位中間集計データＲｔ［ｐ，ｍ，ｋ］は、Ｐ個の数値から構成される。下位中間集計データＲｔ［ｐ，ｍ，ｋ］の計算式は以下のとおりである。
Ｒｔ［ｐ，ｍ，ｋ］＝Ｒｔ［ｐ，ｍ，ｋ−１］＋Ｄ［ｐ，ｍ，ｋ］    ・・・（３）
【００４７】
そして、各分散処理ノード３［ｍ，ｋ］（ｍ＝１，・・・，Ｍ、ｋ＝２，・・・，Ｎ［ｍ］）の送信部３３は、自ノードの集計データ生成部４０によって生成されたＰ個の下位中間集計データＲｔ［ｐ，ｍ，ｋ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート３０および下位通信路４［ｍ，ｋ］を介して、同じ下位集計網１［ｍ］に属する次の番号の分散処理ノード３［ｍ，ｋ+］（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）に送信する（図６ステップＳ１０８）。
【００４８】
このように、式（２）、式（３）により計算された、Ｐ個の数値から構成される下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］（ｐ＝１，・・・，Ｐ）は、各分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）で生成されたＰ個の数値から構成される分散データＤ［ｐ，ｍ，ｎ］（ｍ＝１，・・・，Ｍ）に基づいて計算される。下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］の値は以下の式により表すことができる。
【００４９】
【数２】
2020077090.tif 000004
【００５０】
次に、下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］を下位集計データとして、同一の下位集計網１［ｍ］に属する分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）に分配する下位分配通信を行う。
【００５１】
各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３［ｍ，１］の受信部３６は、同じ下位集計網１［ｍ］に属するＮ［ｍ］番目の分散処理ノード３［ｍ，Ｎ［ｍ］］から下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］を自ノードの通信ポート３１および下位通信路４［ｍ，Ｎ［ｍ］］を介して受信する（図６ステップＳ１０９，Ｓ１１０）。
【００５２】
１番目の分散処理ノード３［ｍ，１］の送信部４３は、自ノードの受信部３６によって受信された下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］を下位集計データＲｕ［ｐ，ｍ］として、自ノードの通信ポート３２および上位通信路６［ｍ］を介して上位集計ノード５に送信する（図６ステップＳ１１１）。下位集計データＲｕ［ｐ，ｍ］（ｐ＝１，・・・，Ｐ）は、下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］と同一であり、Ｐ個の数値から構成される。
【００５３】
【数３】
2020077090.tif 000005
【００５４】
下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）ごとに下位集計データＲｕ［ｐ，ｍ］を取得するが、この処理は他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）における下位集計データＲｕ［ｐ，ｍ’］を取得する過程と独立に行われる。すなわち、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、下位集約通信処理と下位ノード間集計処理と上位集約通信処理とを、他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことが可能である。
【００５５】
次に、上位集計網２の上位集計ノード５の受信部５１［ｍ］（ｍ＝１，・・・，Ｍ）は、各分散処理ノード３［ｍ，１］から下位集計データＲｕ［ｐ，ｍ］を上位通信路６［ｍ］および自ノードの通信ポート５０［ｍ］を介して受信する（図６ステップＳ１１２，Ｓ１１３）。
【００５６】
上位集計ノード５の集計データ生成部５３は、自ノードの受信部５１［ｍ］（ｍ＝１，・・・，Ｍ）によって受信された下位集計データＲｕ［ｐ，ｍ］（ｐ＝１，・・・，Ｐ）の和を、重みｗ［ｐ］毎（番号ｐ毎）に求めることにより、集計データＲ［ｐ］を番号ｐの順番に生成する（図５ステップＳ１１４）。すなわち、集計データＲ［ｐ］は、Ｐ個の数値から構成される。集計データＲ［ｐ］の計算式は以下のとおりである。
【００５７】
【数４】
2020077090.tif 000006
【００５８】
このように、集計データＲ［ｐ］は、分散処理システム内の全ての分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）について、これら分散処理ノードが生成した分散データＤ［ｐ，ｍ，ｎ］を集計した結果である。
【００５９】
上位集計ノード５の送信部５２［ｍ］（ｍ＝１，・・・，Ｍ）は、自ノードの集計データ生成部５３によって生成されたＰ個の集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート５０［ｍ］および上位通信路６［ｍ］を介して、対応する下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３［ｍ，１］に送信する（図６ステップＳ１１５）。
【００６０】
次に、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３［ｍ，１］の受信部４４は、上位集計ノード５から集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を上位通信路６［ｍ］および自ノードの通信ポート３２を介して受信する（図６ステップＳ１１６，Ｓ１１７）。
【００６１】
そして、各分散処理ノード３［ｍ，１］（ｍ＝１，・・・，Ｍ）の送信部３５は、自ノードの受信部４４によって受信された集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート３１および下位通信路４［ｍ，Ｎ［ｍ］］を介して、同じ下位集計網１［ｍ］に属するＮ［ｍ］番目の分散処理ノード３［ｍ，Ｎ［ｍ］］に送信する（図６ステップＳ１１８）。
【００６２】
各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する、１番目を除くｋ番目の分散処理ノード３［ｍ，ｋ］（ｋ＝Ｎ［ｍ］，・・・，２）の受信部３４は、同じ下位集計網１［ｍ］に属する次の番号の分散処理ノード３［ｍ，ｋ+］（ｋ+＝ｋ＋１、ただしｋ＝Ｎ［ｍ］の場合はｋ+＝１）から集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を下位通信路４［ｍ，ｋ］および自ノードの通信ポート３０を介して受信する（図６ステップＳ１１９，Ｓ１２０）。
【００６３】
そして、各分散処理ノード３［ｍ，ｋ］（ｋ＝Ｎ［ｍ］，・・・，２）の送信部３５は、自ノードの受信部３４によって受信された集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート３１および下位通信路４［ｍ，ｋ−１］を介して、同じ下位集計網１［ｍ］に属する前の番号の分散処理ノード３［ｍ，ｋ−１］に送信する（図６ステップＳ１２１）。
【００６４】
各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３［ｍ，１］（ｍ＝１，・・・，Ｍ）の受信部３４は、同じ下位集計網１［ｍ］に属する２番目の分散処理ノード３［ｍ，２］から集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を下位通信路４［ｍ，１］および自ノードの通信ポート３０を介して受信する（図６ステップＳ１２２，Ｓ１２３）。
【００６５】
以上の上位分配通信と下位分配通信とにより、全ての分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）は、同一の集計データＲ［ｐ］を取得することができる。
【００６６】
上位集計網２から下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）に集計データＲ［ｐ］を分配し、さらに下位集計網１［ｍ］ごとに集計データＲ［ｐ］を下位集計網１［ｍ］に属する各分散処理ノード３［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）に分配するが、これら上位分配通信と下位分配通信は、他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）と独立に行われる。すなわち、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、上位分配通信と下位分配通信とを、他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことが可能である。
【００６７】
図７は分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）の重み更新処理を説明するフローチャートである。各分散処理ノード３［ｍ，ｎ］の重み更新処理部４１は、自ノードの受信部３４によって集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）が受信されると（図７ステップＳ１２４においてＹＥＳ）、受信した集計データＲ［ｐ］に基づいて、自ノードのニューラルネットワーク４２の重みｗ［ｐ］を更新する重み更新処理を行う（図７ステップＳ１２５）。重み更新処理においては、集計データＲ［ｐ］が示す、損失関数の勾配に基づいて損失関数が最小になるように重みｗ［ｐ］を番号ｐ毎に更新すればよい。重みｗ［ｐ］の更新は周知の技術であるので、詳細な説明は省略する。
【００６８】
このように、重み更新処理は、重みｗ［ｐ］の番号ｐの順番に取得した集計データＲ［ｐ］に基づいて、重みｗ［ｐ］を更新する処理である。このため、各分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）重みｗ［ｐ］に対する重み更新処理を、番号ｐの順番に行うことができる。
【００６９】
重み更新処理の終了により、１回のミニバッチ学習が終了し、各分散処理ノード３［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）は、更新された重みｗ［ｐ］に基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード３［ｍ，ｎ］は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、自ノードのニューラルネットワークの推論精度を向上させる。
【００７０】
本実施例で示したように、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、下位集計データＲｕ［ｐ，ｍ］を取得する下位集約通信処理と下位ノード間集計処理と上位集約通信処理とを、他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことができる。また、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）は、集計データＲ［ｐ］を分配する上位分配通信と下位分配通信とを、他の下位集計網１［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことができる。
【００７１】
全ての分散処理ノードが１個の下位集計網に属する分散処理システムと比較すると、本実施例では、集約通信処理や集計処理や分配通信処理を各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）が並列処理しているため、これらの処理に要する時間を短縮することができ、分散処理ノード数が増加した場合にも分散処理による高速化の効果を維持することができる。
【００７２】
例えば、本実施例の分散処理システムにおいて、下位集計網１［ｍ］の個数をＭ、各下位集計網１［ｍ］に属する分散処理ノード３［ｍ，ｎ］の数をＮ［ｍ］＝Ｎ、集約通信処理または分配通信処理のために１個の分散処理ノードで生じる遅延時間をＴｄとすると、集約通信処理と分配通信処理とに要する遅延時間Ｔ２は、次式のようになる。
Ｔ２＝２×Ｔｄ＋２×Ｎ×Ｔｄ                                    ・・・（７）
【００７３】
ここでは、上位集計ノード５の遅延もＴｄとしている。式（７）の第１項は、上位集計ノード５の遅延Ｔｄと、上位集計ノード５と接続された各分散処理ノード３［ｍ，１］が上位集計ノード５とデータを送受する遅延Ｔｄと、の和を表す。また、式（７）の第２項は、下位集計データＲｕ［ｐ，ｍ］を生成するために各下位集計網１［ｍ］内の分散処理ノード３［ｍ，ｎ］をデータが一巡する遅延（Ｎ×Ｔｄ）と、集計データＲ［ｐ］を分配するために各下位集計網１［ｍ］内の分散処理ノード３［ｍ，ｎ］をデータが一巡する遅延（Ｎ×Ｔｄ）と、の和を表す。
【００７４】
一方、本実施例のようにＭ個の下位集計網１［ｍ］で並列処理するのではなく、１個の下位集計網にＭ×Ｎ個の分散処理ノードを収容する分散処理システムでは、集約通信処理と分配通信処理とに要する時間Ｔ２は、次式のようになる。
Ｔ２＝２×Ｍ×Ｎ×Ｔｄ                                          ・・・（８）
【００７５】
なお、１個の下位集計網にＭ×Ｎ個の分散処理ノードを収容する分散処理システムでは上位集計ノードを設ける必要がないため、式（８）には上位集計ノードの遅延を加えていない。
【００７６】
集計処理にかかる時間は、各ノードが集計データの取得を開始してから完了するまでの時間Ｔ１（集計データの先頭受信から末尾受信までの時間）に上記遅延時間Ｔ２を加えた値（＝Ｔ１＋Ｔ２）であり、この値が小さいほど集計処理（分散処理化のオーバヘッド）が短時間で完了する。一般的にノード数（Ｍ×Ｎ）は１より十分大きい値であるため、Ｍ個の下位集計網１［ｍ］に並列化する本実施例の分散処理システムは、１つの集計網で構成された分散処理システムよりも、分散処理ノード数の増大による速度低下の影響を１／Ｍにできるという、すぐれた効果がある。
【００７７】
［第２の実施例］
次に、本発明の第２の実施例について説明する。図８は本発明の第２の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。図８の分散処理システムは、それぞれ複数の分散処理ノードを含むＭ個（Ｍは２以上の整数）の下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）と、Ｍ個の下位集計網１ａ［ｍ］の間を接続する上位集計網２ａとを備えている。
【００７８】
下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、Ｎ［ｍ］個（Ｎ［ｍ］は２以上の整数）の分散処理ノード３ａ［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）と、番号ｎの分散処理ノード３ａ［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）が次の番号ｎ+（ｎ+＝ｎ＋１、ただしｎ＝Ｎ［ｍ］の場合はｎ+＝１）の分散処理ノード３ａ［ｎ+］と互いに双方向に通信するための下位通信路４［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）とから構成される。
【００７９】
下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、下位集計網１ａ［ｍ］に属する各分散処理ノード３ａ［ｍ，ｎ］により生成された分散データを集計して下位集計データＲｕ［ｐ，ｍ］（ｐ＝１，・・・，Ｐ）を生成する。上位集計網２ａは、各下位集計データＲｕ［ｐ，ｍ］を集計して集計データＲ［ｐ］を生成し、各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に分配する。下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、上位集計網２から分配された集計データＲ［ｐ］を下位集計網１ａ［ｍ］に属する各分散処理ノード３ａ［ｍ，ｎ］に分配する。
【００８０】
上位集計網２ａは、下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に属する分散処理ノード３ａ［ｍ，１］が次の番号ｍ+（ｍ+＝ｍ＋１、ただしｍ＝Ｍの場合はｍ+＝１）の下位集計網１ａ［ｍ’］に属する分散処理ノード３ａ［ｍ+，１］と互いに双方向に通信するための上位通信路６ａ［ｍ］から構成される。なお、任意の上位通信路６ａ［ｍ］（ｍ＝１，・・・，Ｍ）には、伝送路の他に、通信を中継する中継処理ノードが任意に介在することも可能である。
【００８１】
第１の実施例と同様に、各分散処理ノード３ａ［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）は、双方向の通信が同時に可能な通信ポート３０と通信ポート３１とを備える。
【００８２】
さらに、分散処理ノード３ａ［ｍ，１］（ｍ＝１，・・・，Ｍ）は、双方向の通信が同時に可能な通信ポート４５と通信ポート４６とを備える。通信ポート４５は、下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に属する分散処理ノード３ａ［ｍ，１］が次の番号ｍ+（ｍ+＝ｍ＋１、ただしｍ＝Ｍの場合はｍ+＝１）の下位集計網１ａ［ｍ+］に属する分散処理ノード３ａ［ｍ+，１］と双方向の通信を行うための通信ポートであり、上位通信路６［ｍ］と接続される。また、通信ポート４６は、下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に属する分散処理ノード３ａ［ｍ，１］が番号ｍ-（ｍ-＝ｍ−１、ただしｍ＝１の場合はｍ-＝Ｍ）の下位集計網１ａ［ｍ-］に属する分散処理ノード３ａ［ｍー，１］と双方向の通信を行うための通信ポートであり、上位通信路６［ｍ-］と接続される。
【００８３】
図９は本実施例に係る分散処理ノード３ａ［１，１］の構成例を示すブロック図、図１０は本実施例に係る分散処理ノード３ａ［ｊ，１］（ｊ＝２，・・・，Ｍ）の構成例を示すブロック図である。
【００８４】
分散処理ノード３ａ［１，１］は、通信ポート３０（第１の通信ポート）と、通信ポート３１（第２の通信ポート）と、送信部３３（第１の送信部）と、受信部３４（第４の受信部）と、送信部３５（第４の送信部）と、受信部３６（第１の受信部）と、サンプル入力部３７と、勾配計算処理部３８と、ノード内集計処理部３９と、重み更新処理部４１と、ニューラルネットワーク４２と、通信ポート４５（第３の通信ポート）と、通信ポート４６（第４の通信ポート）と、送信部４７（第２の送信部）と、受信部４８（第３の受信部）と、送信部４９（第３の送信部）と、受信部６０（第２の受信部）とを備えている。
【００８５】
分散処理ノード３ａ［ｊ，１］（ｊ＝２，・・・，Ｍ）は、通信ポート３０（第１の通信ポート）と、通信ポート３１（第２の通信ポート）と、送信部３３（第１の送信部）と、受信部３４（第４の受信部）と、送信部３５（第４の送信部）と、受信部３６（第１の受信部）と、サンプル入力部３７と、勾配計算処理部３８と、ノード内集計処理部３９と、重み更新処理部４１と、ニューラルネットワーク４２と、通信ポート４５（第３の通信ポート）と、通信ポート４６（第４の通信ポート）と、送信部４７（第２の送信部）と、受信部４８（第３の受信部）と、送信部４９（第３の送信部）と、受信部６０（第２の受信部）と、集計データ生成部６１（第２の集計データ生成部）とを備えている。
【００８６】
分散処理ノード３ａ［ｍ，ｋ］（ｍ＝１，・・・，Ｍ、ｋ＝２，・・・，Ｎ［ｍ］）の構成は、第１の実施例の分散処理ノード３［ｍ，ｋ］と同じである。すなわち、分散処理ノード３ａ［ｍ，ｋ］は、通信ポート３０（第１の通信ポート）と、通信ポート３１（第２の通信ポート）と、送信部３３（第１の送信部）と、受信部３４（第４の受信部）と、送信部３５（第４の送信部）と、受信部３６（第１の受信部）と、サンプル入力部３７と、勾配計算処理部３８と、ノード内集計処理部３９と、集計データ生成部４０（第１の集計データ生成部）と、重み更新処理部４１と、ニューラルネットワーク４２とを備えている。
【００８７】
各分散処理ノード３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）のサンプルデータ入力処理と勾配計算処理とノード内集計処理とは、第１の実施例の図５で説明したとおりである。
図１１、図１２は下位集計網１ａ［ｍ］と上位集計網２ａの下位集約通信処理と下位ノード間集計処理と上位集約通信処理と上位ノード集計処理と上位分配通信処理と下位分配通信処理とを説明するフローチャートである。
【００８８】
下位集約通信処理と下位ノード間集計処理と下位分配通信処理とは、第１の実施例と同じである。本実施例において、上位集約通信処理とは、ｍ番目の下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３ａ［ｍ，１］からｍ+（ｍ+＝ｍ＋１、ただしｍ＝Ｍの場合はｍ+＝１）番目の下位集計網１ａ［ｍ+］に属する分散処理ノード３ａ［ｍ+，１］に上位中間集計データ（第２の集計データ）を送信する処理を言う。上位ノード集計処理とは、ｊ番目の下位集計網１ａ［ｊ］（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノード３ａ［ｊ，１］が受信した上位中間集計データと受信した下位中間集計データに基づいて更新後の上位中間集計データを計算する処理を言う。上位分配通信処理とは、ｍ番目の下位集計網１ａ［ｍ］に属する１番目の分散処理ノード３ａ［ｍ，１］からｍ-（ｍ-＝ｍ−１、ただしｍ＝１の場合はｍ-＝Ｍ）番目の下位集計網１ａ［ｍ-］に属する分散処理ノード３ａ［ｍー，１］に集計データ（第３の集計データ）を送信する処理を言う。
【００８９】
下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）における下位集約通信処理と下位ノード間集計処理とは、図１１のステップＳ２０３〜Ｓ２０８に示す処理であり、上記のとおり第１の実施例の図６のステップＳ１０３〜Ｓ１０８の処理と同じなので、説明は省略する。
【００９０】
各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）に属する１番目の分散処理ノード３ａ［ｍ，１］の受信部３６は、同じ下位集計網１ａ［ｍ］に属するＮ［ｍ］番目の分散処理ノード３ａ［ｍ，Ｎ［ｍ］］から下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート３１および下位通信路４［ｍ，Ｎ［ｍ］］を介して受信する（図１１ステップＳ２０９，Ｓ２１０）。
【００９１】
次に、予め定められた１番目の下位集計網１ａ［１］に属する１番目の分散処理ノード３ａ［１，１］の送信部４７は、自ノードの受信部３６によって受信された下位中間集計データＲｔ［ｐ，１，Ｎ［１］］（ｐ＝１，・・・，Ｐ）を上位中間集計データＲｖ［ｐ，１］として、自ノードの通信ポート４５および上位通信路６ａ［１］を介して２番目の下位集計網１ａ［２］に属する１番目の分散処理ノード３ａ［２，１］に送信する（図１１ステップＳ２１１，Ｓ２１２）。上位中間集計データＲｖ［ｐ，１］は、下位中間集計データＲｔ［ｐ，１，Ｎ［ｍ］］（第１の実施例の下位集計データＲｕ［ｐ，１］）と同一であり、Ｐ個の数値から構成される。
Ｒｖ［ｐ，１］＝Ｒｔ［ｐ，１，Ｎ［ｍ］］＝Ｒｕ［ｐ，１］        ・・・（９）
【００９２】
次に、１番目を除くｊ番目の下位集計網１ａ［ｊ］（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノード３ａ［ｊ，１］の受信部６０は、（ｊ−１）番目の下位集計網１ａ［ｊ−１］に属する１番目の分散処理ノード３ａ［ｊ−１，１］から上位中間集計データＲｖ［ｐ，ｊ−１］を上位通信路６ａ［ｊ−１］および自ノードの通信ポート４６を介して受信する（図１１ステップＳ２１３，Ｓ２１４）。
【００９３】
ｊ番目の下位集計網１ａ［ｊ］（ｊ＝２，・・・，Ｍ）に属する１番目の分散処理ノード３ａ［ｊ，１］の集計データ生成部６１は、自ノードの受信部６０によって受信された上位中間集計データＲｖ［ｐ，ｊ−１］（ｐ＝１，・・・，Ｐ）と自ノードの受信部３６によって受信された下位中間集計データＲｔ［ｐ，ｊ，Ｎ［ｊ］］との和を、重みｗ［ｐ］毎（番号ｐ毎）に求めることにより、上位中間集計データＲｖ［ｐ，ｊ］を番号ｐの順番に生成する（図１１ステップＳ２１５）。すなわち、上位中間集計データＲｖ［ｐ，ｊ］は、Ｐ個の数値から構成される。上位中間集計データＲｖ［ｐ，ｊ］の計算式は以下のとおりである。
Ｒｖ［ｐ，ｊ］＝Ｒｖ［ｐ，ｊ−１］＋Ｒｔ［ｐ，ｊ，Ｎ［ｊ］］
＝Ｒｖ［ｐ，ｊ−１］＋Ｒｕ［ｐ，ｊ］            ・・・（１０）
【００９４】
そして、分散処理ノード３ａ［ｊ，１］（ｊ＝２，・・・，Ｍ）の送信部４７は、自ノードの集計データ生成部６１によって生成された上位中間集計データＲｖ［ｐ，ｊ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート４５および上位通信路６ａ［ｊ］を介して次の番号ｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）の下位集計網１ａ［ｊ+］に属する１番目の分散処理ノード３ａ［ｊ+，１］に送信する（図１１ステップＳ２１６）。
【００９５】
このように、式（９）、式（１０）により計算された、Ｐ個の数値から構成される上位中間集計データＲｖ［ｐ，Ｍ］（ｐ＝１，・・・，Ｐ）は、各分散処理ノード３ａ［ｍ，１］（ｍ＝１，・・・，Ｍ）で取得されたＰ個の数値から構成される下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］（＝Ｒｕ［ｐ，ｍ］）に基づいて計算される。上位中間集計データＲｖ［ｐ，Ｍ］の値は以下の式により表すことができる。
【００９６】
【数５】
2020077090.tif 000007
【００９７】
１番目の下位集計網１ａ［１］に属する１番目の分散処理ノード３ａ［１，１］の受信部６０は、Ｍ番目の下位集計網１ａ［Ｍ］に属する１番目の分散処理ノード３ａ［Ｍ，１］から上位中間集計データＲｖ［ｐ，Ｍ］（ｐ＝１，・・・，Ｐ）を上位通信路６ａ［Ｍ］および自ノードの通信ポート４６を介して受信する（図１２ステップＳ２１７，Ｓ２１８）。
【００９８】
そして、分散処理ノード３ａ［１，１］の送信部４９は、自ノードの受信部６０によって受信された上位中間集計データＲｖ［ｐ，Ｍ］（ｐ＝１，・・・，Ｐ）を集計データＲ［ｐ］として、自ノードの通信ポート４６および上位通信路６ａ［Ｍ］を介して、Ｍ番目の下位集計網１ａ［Ｍ］に属する１番目の分散処理ノード３ａ［Ｍ，１］に送信する（図１２ステップＳ２１９）。すなわち、分散処理ノード３ａ［１，１］は、分散処理ノード３ａ［Ｍ，１］からの上位中間集計データＲｖ［ｐ，Ｍ］を集計データＲ［ｐ］として分散処理ノード３ａ［Ｍ，１］に戻すことになる。集計データＲ［ｐ］は、上位中間集計データＲｖ［ｐ，Ｍ］と同じである。
【００９９】
【数６】
2020077090.tif 000008
【０１００】
下位集計データＲｕ［ｐ，ｍ］（ｐ＝１，・・・，Ｐ）は、第１の実施例の下位集計網１［ｍ］で生成された値であり、第１の実施例の式（５）に示す値となる。したがって、集計データＲ［ｐ］は、以下の式により表すことができる。
【０１０１】
【数７】
2020077090.tif 000009
【０１０２】
このように、集計データＲ［ｐ］は、分散処理システム内の全ての分散処理ノード３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）について、これら分散処理ノードが生成した分散データＤ［ｐ，ｍ，ｎ］を集計した結果である。
【０１０３】
１番目を除くｊ番目の下位集計網１ａ［ｊ］（ｊ＝Ｍ，・・・，２）に属する１番目の分散処理ノード３ａ［ｊ，１］の受信部４８は、ｊ+（ｊ+＝ｊ＋１、ただしｊ＝Ｍの場合はｊ+＝１）番目の下位集計網１ａ［ｊ+］に属する１番目の分散処理ノード３ａ［ｊ+，１］から集計データＲ［ｐ］を上位通信路６ａ［ｊ］および自ノードの通信ポート４５を介して受信する（図１２ステップＳ２２０，Ｓ２２１）。
【０１０４】
そして、分散処理ノード３ａ［ｊ，１］の送信部４９は、自ノードの受信部４８によって受信された集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）を自ノードの通信ポート４６および上位通信路６ａ［ｊ−１］を介して、（ｊ−１）番目の下位集計網１ａ［ｊ−１］に属する１番目の分散処理ノード３ａ［ｊ−１，１］に送信する（図１２ステップＳ２２２）。同時に、分散処理ノード３ａ［ｊ，１］の送信部３５は、自ノードの受信部４８によって受信された集計データＲ［ｐ］を自ノードの通信ポート３１および下位通信路４［ｊ，Ｎ［ｊ］］を介して、同じ下位集計網１［ｊ］に属するＮ［ｊ］番目の分散処理ノード３［ｊ，Ｎ［ｊ］］に送信する（ステップＳ２２２）。
【０１０５】
下位集計網１ａ［ｊ］（ｊ＝Ｍ，・・・，２）においては、ステップＳ２２３〜Ｓ２２７に示す処理が行われる。このステップＳ２２３〜Ｓ２２７は、図６のステップＳ１１９〜Ｓ１２３で説明した処理と同様なので、説明は省略する。
【０１０６】
次に、１番目の下位集計網１ａ［１］に属する１番目の分散処理ノード３ａ［１，１］の受信部４８は、２番目の下位集計網１ａ［２］に属する１番目の分散処理ノード３ａ［２，１］から集計データＲ［ｐ］を上位通信路６ａ［１］および自ノードの通信ポート４５を介して受信する（図１２ステップＳ２２８，Ｓ２２９）。
【０１０７】
そして、分散処理ノード３ａ［１，１］の送信部３５は、自ノードの受信部４８によって受信された集計データＲ［ｐ］を自ノードの通信ポート３１および下位通信路４［１，Ｎ［１］］を介して、同じ下位集計網１［１］に属するＮ［１］番目の分散処理ノード３［１，Ｎ［１］］に送信する（図１２ステップＳ２３０）。
【０１０８】
下位集計網１ａ［１］においては、ステップＳ２３１〜Ｓ２３５に示す処理が行われる。このステップＳ２３１〜Ｓ２３５は、図６のステップＳ１１９〜Ｓ１２３で説明した処理と同様なので、説明は省略する。
【０１０９】
以上の上位分配通信と下位分配通信とにより、全ての分散処理ノード３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）は、同一の集計データＲ［ｐ］を取得することができる。
【０１１０】
下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）ごとに集計データＲ［ｐ］を下位集計網１ａ［ｍ］に属する各分散処理ノード３ａ［ｍ，ｎ］（ｎ＝１，・・・，Ｎ［ｍ］）に分配するが、この下位分配通信は、他の下位集計網１ａ［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）と独立に行われる。すなわち、各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、下位分配通信を、他の下位集計網１ａ［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことが可能である。
【０１１１】
第１の実施例と同様に、各分散処理ノード３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）の重み更新処理部４１は、自ノードの受信部３４によって集計データＲ［ｐ］（ｐ＝１，・・・，Ｐ）が受信されると（図７ステップＳ１２４においてＹＥＳ）、集計データＲ［ｐ］に基づいて、自ノードのニューラルネットワーク４２の重みｗ［ｐ］を更新する重み更新処理を行う（図７ステップＳ１２５）。
【０１１２】
重み更新処理の終了により、１回のミニバッチ学習が終了し、各分散処理ノード３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）は、更新された重みｗ［ｐ］に基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード３ａ［ｍ，ｎ］は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、自ノードのニューラルネットワークの推論精度を向上させる。
【０１１３】
本実施例で示したように、各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、下位中間集計データＲｔ［ｐ，ｍ，Ｎ［ｍ］］（＝Ｒｕ［ｐ，ｍ］）を取得する下位集約通信処理と下位ノード間集計処理とを、他の下位集計網１ａ［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことができる。また、各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）は、集計データＲ［ｐ］を分配する下位分配通信を、他の下位集計網１ａ［ｍ’］（ｍ’＝１，・・・，Ｍ、ｍ’≠ｍ）で行われる同様の処理と並行して行うことができる。
【０１１４】
全ての分散処理ノードが１個の下位集計網に属する分散処理システムと比較すると、本実施例では、集約通信処理や集計処理や分配通信処理を各下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）が並列処理しているため、これらの処理に要する時間を短縮することができ、分散処理ノード数が増加した場合にも分散処理による高速化の効果を維持することができる。
【０１１５】
例えば、本実施例の分散処理システムにおいて、下位集計網１ａ［ｍ］の個数をＭ、各下位集計網１ａ［ｍ］に属する分散処理ノード３ａ［ｍ，ｎ］の数をＮ［ｍ］＝Ｎ、集約通信処理または分配通信処理のために１個の分散処理ノードで生じる遅延時間をＴｄとすると、集約通信処理と分配通信処理とに要する遅延時間Ｔ２は、次式のようになる。
Ｔ２＝２×Ｍ×Ｔｄ＋２×Ｎ×Ｔｄ                              ・・・（１４）
【０１１６】
式（１４）の第１項は、上位集計網２ａにおける集計・分配の遅延であり、式（１４）の第２項は、各下位集計網１ａ［ｍ］における集計・分配の遅延である。
一方、本実施例のようにＭ個の下位集計網１ａ［ｍ］で並列処理するのではなく、１個の下位集計網にＭ×Ｎ個の分散処理ノードを収容する分散処理システムでは、集約通信処理と分配通信処理とに要する時間Ｔ２は、式（８）のようになる。
【０１１７】
集計処理にかかる時間は、各ノードが集計データの取得を開始してから完了するまでの時間Ｔ１（集計データの先頭受信から末尾受信までの時間）に上記遅延時間Ｔ２を加えた値（＝Ｔ１＋Ｔ２）であり、この値が小さいほど集計処理（分散処理化のオーバヘッド）が短時間で完了する。ＭとＮの値は共に２以上であるため（Ｍ×Ｎ）≧（Ｍ＋Ｎ）が成立するので、Ｍ個の下位集計網１ａ［ｍ］に並列化する本実施例の分散処理システムは、１つの集計網で構成されたシステムよりも、分散処理ノード数の増大による速度低下の影響を抑制することが可能である。本実施例は、特に（Ｍ×Ｎ）≫（Ｍ＋Ｎ）となるような分散処理システム（Ｍ≫２、Ｎ≫２）において優れた効果がある。
【０１１８】
なお、第１の実施例と比較した場合に、本実施例は、分散処理ノード数の増大による速度低下の影響の抑制効果が小さい。しかし、第１の実施例では、上位集計ノード５に、各下位集計網１［ｍ］（ｍ＝１，・・・，Ｍ）と接続するための通信ポート５０［ｍ］と、これらの通信ポート５０［ｍ］で受信したデータを集計して各下位集計網１［ｍ］に分配するための受信部５１［ｍ］と送信部５２［ｍ］と集計データ生成部５３とが必要となるので、下位集計網１［ｍ］の個数Ｍを増やしてシステムの規模を拡大するときに、上位集計ノード５を、より多くの下位集計網１［ｍ］と接続できるものに取り換える必要が生じる。一方、本実施例では、既存の分散処理システムに、追加の下位集計網を加えるのみで対応できるため、システム規模の変更が容易という特長がある。
【０１１９】
本実施例では、Ｍ個の下位集計網１ａ［ｍ］（ｍ＝１，・・・，Ｍ）とこれらを接続する１個の上位集計網２ａとから構成された２段のシステムについて説明したが、上位集計網２ａを複数備えるとともに、これらと接続するさらに上位の集計網を備えることで、分散処理ノード数の増大に対して集計処理にかかる時間の増加を抑制できる、大規模な分散処理システムを構築することも可能である。
【０１２０】
第１、第２の実施例で説明した各分散処理ノード３［ｍ，ｎ］，３ａ［ｍ，ｎ］（ｍ＝１，・・・，Ｍ、ｎ＝１，・・・，Ｎ［ｍ］）と上位集計ノード５の各々は、それぞれＣＰＵ（Central Processing Unit）、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
【０１２１】
このコンピュータの構成例を図１３に示す。コンピュータは、ＣＰＵ１００と、記憶装置１０１と、インターフェース装置（以下、Ｉ／Ｆと略する）１０２とを備えている。分散処理ノード３［ｍ，ｎ］，３ａ［ｍ，ｎ］の場合、Ｉ／Ｆ１０２には、例えば通信ポート３０，３１，３２，４５，４６を含む通信回路が接続される。また、上位集計ノード５の場合、Ｉ／Ｆ１０２には、例えば通信ポート５０［ｍ］を含む通信回路が接続される。各ノードのＣＰＵ１００は、記憶装置１０１に格納されたプログラムに従って第１、第２の実施例で説明した処理を実行し、本発明の分散処理システムおよび分散処理方法を実現する。
【産業上の利用可能性】
【０１２２】
本発明は、ニューラルネットワークの機械学習を行う技術に適用することができる。
【符号の説明】
【０１２３】
１，１ａ…下位集計網、２，２ａ…上位集計網、３，３ａ…分散処理ノード、４…下位通信路、５…上位集計ノード、６，６ａ…上位通信路、３０，３１，３２，４５，４６，５０…通信ポート、３３，３５，４３，４７，４９，５２…送信部、３４，３６，４４，４８，５１，６０…受信部、３７…サンプル入力部、３８…勾配計算処理部、３９…ノード内集計処理部、４０，５３，６１…集計データ生成部、４１…重み更新処理部、４２…ニューラルネットワーク。
【図１】
2020077090.tif 000010
【図２】
2020077090.tif 000011
【図３】
2020077090.tif 000012
【図４】
2020077090.tif 000013
【図５】
2020077090.tif 000014
【図６】
2020077090.tif 000015
【図７】
2020077090.tif 000016
【図８】
2020077090.tif 000017
【図９】
2020077090.tif 000018
【図１０】
2020077090.tif 000019
【図１１】
2020077090.tif 000020
【図１２】
2020077090.tif 000021
【図１３】
2020077090.tif 000022
【図１４】
2020077090.tif 000023