(57)【要約】【課題】分散深層学習を高速に行う。【解決手段】各学習ノード２−０〜２−３は、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の勾配を計算し、複数の勾配成分の値をパケット化してコンピューティングインタコネクト装置１に送信する。コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信されたパケットに格納された複数の勾配成分の値を取得し、ニューラルネットワークの同一の構成パラメータに対する勾配成分の値を入力とする計算処理を、複数の勾配の成分の値各々について並列に行い、計算結果をパケット化して各学習ノード２−０〜２−３に送信する。各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から送信されたパケットに格納された値に基づいてニューラルネットワークの構成パラメータを更新する。【選択図】  図１
2019168895.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）などの、通信パケットをやりとりすることで通信を行うネットワークを用いる。
【００２４】
＜学習ノードの説明＞
学習ノード２−０〜２−３は、数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ装置である。ニューラルネットワークは、各学習ノード２−０〜２−３内に構築される。
【００２５】
学習ノード２−０〜２−３の実現方法としては、ＣＰＵ（Central Processing Unit）やＧＰＵ上のソフトウェアで実現してもよいし、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）に形成したＬＳＩ（Large Scale Integration）回路で実現してもよい。
【００２６】
＜学習についての説明＞
学習ノード２−０〜２−３におけるニューラルネットワークの学習処理について、教師データ付き学習を例に説明する。図２にニューラルネットワークの例として入力層（第１層）、中間層（第２層）、出力層（第３層）からなるごく単純な２層ニューラルネットワークを示す。図２のＮｋ（ｉ）は第ｋ層、ｉ番目のニューロンである。ｘ１，ｘ２は入力、ｙ１，ｙ２は出力、ｗ１（１１），  ｗ１（１２），・・・，ｗ１（２３）は第１層目の重みパラメータ、ｗ２（１１），  ｗ２（１２），・・・，ｗ２（３２）は第２層目の重みパラメータである。
【００２７】
教師データ付き学習の場合、各学習データには対応する教師データ（正解データ）が予め用意されており、ニューラルネットワークの出力値が教師データに近くなるように、ニューラルネットワークの構成パラメータを更新していく。図２の例の場合のニューラルネットワークの構成パラメータは、重みｗ１（１１），  ｗ１（１２），・・・，ｗ１（２３），ｗ２（１１），ｗ２（１２），・・・，ｗ２（３２）である。これらの構成パラメータを最適化していくことにより、ニューラルネットワークの精度を上げていく。
【００２８】
具体的には、ニューラルネットワークの出力値が教師データとどれだけ乖離しているかの指標となる損失関数を定め、この損失関数が小さくなるように構成パラメータを更新していく。この例では、入力学習データｘ１，ｘ２に対応する出力値をｙ１，ｙ２、教師データをｔ１，ｔ２とすると、損失関数Ｌは、例えば次式のようになる。
【００２９】
【数１】
2019168895.tif 000003
【００３０】
次に、この損失関数Ｌに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル（これを勾配と呼ぶ）を求める。この例では、勾配は以下のようになる。
【００３１】
【数２】
2019168895.tif 000004
【００３２】
次に、勾配を用いて、損失関数Ｌがより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。更新の方法はいろいろあるが、例えば勾配降下法を用いて、それぞれの重みパラメータを以下のように更新する。
【００３３】
【数３】
2019168895.tif 000005
【００３４】
ここで、ηは学習率と呼ばれる定数である。式（３）により、各重みパラメータを、勾配と逆の方向、すなわち、損失関数Ｌを減少させる方向に学習率ηに比例する量だけ変化させている。そのため、更新後のニューラルネットワークの損失関数Ｌは更新前より小さくなる。
【００３５】
このように、１組の入力学習データに対して、損失関数Ｌの計算、勾配の計算、構成パラメータの更新の処理を行なう。そして、この構成パラメータの更新されたニューラルネットワークに対して、次の入力学習データを入力して同じ処理を行い、構成パラメータを更新する。このサイクルを繰り返すことにより、損失関数Ｌが小さいニューラルネットワークに更新していくことで、ニューラルネットワークの学習を行う。
【００３６】
ここで、損失関数Ｌを求める工程では、ニューラルネットワークの入力層から出力層に向かって順番に出力値を計算していくことから、この工程を順伝搬（forward propagation）と呼ぶ。一方、勾配を求める工程では、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータに対する勾配を計算していく逆伝搬（back propagation）と呼ぶ手法を用いることが多い。
【００３７】
＜複数学習ノードによる分散学習処理＞
以上のようなニューラルネットワークの学習で十分な精度を達成するには、大量の学習データをニューラルネットワークに入力して学習処理を繰り返す必要があり、長い時間を要する。この学習にかかる所要時間を短縮することは大きなメリットがある。
【００３８】
学習にかかる所要時間を短縮するため、同じニューラルネットワークの学習ノードを複数用意して、学習データをそれぞれの学習ノードに分けて並列で学習させることにより、トータルの学習時間を短縮する分散協調学習の手法がとられる。従来の分散学習処理の手順を図３を用いて説明する。
【００３９】
最初に、学習データｘを学習ノード１００−０〜１００−３の台数分に分けて、各学習ノード１００−０〜１００−３に割り当てる。なお、図３では、各学習ノード１００−０〜１００−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１乃至複数の学習データの集合からなる。
【００４０】
次に、各学習ノード１００−０〜１００−３は、それぞれ学習データｘ０〜ｘ３をニューラルネットワークに入力して順伝搬（forward propagation）の手法によりそれぞれ損失関数Ｌを求める（図３ステップＳ１００）。なお、得られる損失関数Ｌは、各学習ノード１００−０〜１００−３（各ニューラルネットワーク）につき１つである。
【００４１】
続いて、各学習ノード１００−０〜１００−３は、ステップＳ１００で求めた損失関数Ｌの勾配を逆伝搬（back propagation）の手法により求める（図３ステップＳ１０１）。損失関数Ｌの勾配とは、式（２）に示すように構成パラメータ毎の成分を含むベクトルである。
【００４２】
次に、各学習ノード１００−０〜１００−３でそれぞれ計算した勾配の平均を例えばヘッドノード１０２において計算して、計算した結果をヘッドノード１０２から各学習ノード１００−０〜１００−３に返送する（図３ステップＳ１０２）。この処理をＡｌｌ−ｒｅｄｕｃｅ処理と呼ぶ。なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。
【００４３】
最後に、各学習ノード１００−０〜１００−３は、ステップＳ１０２で計算された勾配の平均値を用いて、ニューラルネットワークの重みパラメータを更新する（図３ステップＳ１０３）。
以上で、分散学習の１サイクルが終了する。
【００４４】
＜本実施例の分散処理＞
次に、本実施例の分散学習処理の手順を図４を用いて説明する。本実施例では、各学習ノード２−０〜２−３は、従来と同様に、それぞれ学習データｘ０〜ｘ３をニューラルネットワークに入力して損失関数Ｌをそれぞれ計算する（図４ステップＳ２００）。続いて、この損失関数Ｌの勾配を計算する（図４ステップＳ２０１）。そして、各学習ノード２−０〜２−３はそれぞれ計算した勾配の計算値を、各学習ノード２−０〜２−３と通信ネットワークで接続されたコンピューティングインタコネクト装置１に送信する（図４ステップＳ２０２）。
【００４５】
なお、図３と同様に、図４では、各学習ノード２−０〜２−３に割り当てる学習データの代表としてｘ０〜ｘ３を１つずつ記載しているが、学習データｘ０〜ｘ３はそれぞれ１乃至複数の学習データの集合からなる。
【００４６】
次に、コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信された各勾配の平均値を計算し、その計算した結果を各学習ノード２−０〜２−３に送信するＡｌｌ−ｒｅｄｕｃｅ処理を行なう（図４ステップＳ２０３，Ｓ２０４）。
【００４７】
最後に、各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から送信された勾配の平均値を用いて、ニューラルネットワークの構成パラメータを更新する（図４ステップＳ２０５）。
なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに（１／学習ノード数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。また、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、勾配の二乗平均平方根をとるようにしてもよい。
以上で、本実施例の分散学習の１サイクルが終了する。
【００４８】
通常、勾配計算は逆伝搬の手法に従って、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータ（重みパラメータ）に対する勾配の成分を計算していく。したがって、各学習ノード２−０〜２−３の勾配計算結果をコンピューティングインタコネクト装置１に送信するにあたっては、全ての層の勾配計算が終わるまで待つ必要はない。
【００４９】
そこで、各学習ノード２−０〜２−３は、上記と同様に損失関数Ｌを計算し（図５ステップＳ２００）、損失関数Ｌの勾配を計算するが（図５ステップＳ２０１）、ステップＳ２０１においてすべての構成パラメータに対する勾配成分の計算が終了するのを待つことなく、計算が終わった構成パラメータに対する勾配成分からコンピューティングインタコネクト装置１に送信することができる（図５ステップＳ２０６）。
【００５０】
コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３から送信された勾配成分の平均値を計算し（図５ステップＳ２０７）、計算が終わった勾配成分の平均値を各学習ノード２−０〜２−３に送信する（図５ステップＳ２０８）。
【００５１】
各学習ノード２−０〜２−３は、コンピューティングインタコネクト装置１から計算結果を受信すると、全ての計算結果を受信するまで待つことなく、受信した勾配成分の平均値を用いて、対応する構成パラメータを更新する（図５ステップＳ２０９）。
こうして、勾配計算とＡｌｌ−ｒｅｄｕｃｅ処理と構成パラメータ更新とをパイプライン式に処理できるので、更なる高速化が可能である。
【００５２】
＜コンピューティングインタコネクト装置の動作の概要＞
図６（Ａ）、図６（Ｂ）はコンピューティングインタコネクト装置１の動作の概要を説明する図である。周知のとおり、通信パケットは、ヘッダ２００とデータペイロード２０１とからなる。
【００５３】
各学習ノード２−０〜２−３は、各構成パラメータに対する勾配成分を計算すると、その計算結果を通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納してコンピューティングインタコネクト装置１に送信する。例えば、図６（Ａ）の例では、学習ノード２−０が３つの勾配成分値Ｇ０＿０，Ｇ０＿１，Ｇ０＿２を通信パケットＲＰ０のデータペイロードに格納してコンピューティングインタコネクト装置１に送信している。このとき、データペイロードには、この通信パケットのシーケンシャル番号（図６（Ａ）の例では“００３”）も格納される。
【００５４】
各学習ノード２−０〜２−３からの、シーケンシャル番号が同一の通信パケットに格納された勾配成分同士の和を計算するように制御することで、各学習ノード２−０〜２−３の対応する勾配成分同士を加算演算できるように保証する。
【００５５】
本発明では、同一のニューラルネットワークを、同一構成の複数の学習ノード２−０〜２−３に構築して、学習データをそれぞれの学習ノード２−０〜２−３に分けて並列で学習させることを想定している。各学習ノード２−０〜２−３において行われる処理の順番や通信パケットの仕様は、全ての学習ノード２−０〜２−３で同一である。したがって、各学習ノード２−０〜２−３から送信される、シーケンシャル番号が同一の通信パケットには、同一の構成パラメータに対する勾配成分が各通信パケット内の同じ位置に格納される。
【００５６】
図６（Ａ）の例では、通信パケットＲＰ０〜ＲＰ３に格納された勾配値Ｇ０〜Ｇ３のうち、「＿」以降の符号が同一の値は、ニューラルネットワークの同一の構成パラメータについての勾配成分値であることを示している。例えばＧ０＿０，Ｇ１＿０，Ｇ２＿０，Ｇ３＿０は、同一の構成パラメータについて各学習ノード２−０〜２−３が計算した勾配成分である。また、Ｇ０＿１，Ｇ１＿１，Ｇ２＿１，Ｇ３＿１は、ニューラルネットワークの別の構成パラメータについて各学習ノード２−０〜２−３が計算した勾配成分である。
【００５７】
コンピューティングインタコネクト装置１は、全ての学習ノード２−０〜２−３から同一のシーケンシャル番号の通信パケットＲＰ０〜ＲＰ３を受信すると、ニューラルネットワークの同一の構成パラメータに対する勾配成分値同士の和を次式のように計算する。
ΣＧ＿０＝Ｇ０＿０＋Ｇ１＿０＋Ｇ２＿０＋Ｇ３＿０                ・・・（４）
ΣＧ＿１＝Ｇ０＿１＋Ｇ１＿１＋Ｇ２＿１＋Ｇ３＿１                ・・・（５）
ΣＧ＿２＝Ｇ０＿２＋Ｇ１＿２＋Ｇ２＿２＋Ｇ３＿２                ・・・（６）
【００５８】
そして、コンピューティングインタコネクト装置１は、計算した勾配成分の和の計算結果ΣＧ＿０，ΣＧ＿１，ΣＧ＿２を通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納し、各学習ノード２−０〜２−３に送信する（図６（Ｂ））。このとき、コンピューティングインタコネクト装置１は、各学習ノード２−０〜２−３からの通信パケットＲＰ０〜ＲＰ３に格納されていた勾配から計算した結果ΣＧ＿０，ΣＧ＿１，ΣＧ＿２を、元の勾配成分と同じ順番で通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。
【００５９】
＜コンピューティングインタコネクト装置の構成＞
図７に本実施例のコンピューティングインタコネクト装置１の構成を示す。コンピューティングインタコネクト装置１は、学習ノード２−０〜２−３のそれぞれと通信ネットワーク３で接続された送受信用のポートＰ０〜Ｐ３と、学習ノード２−０〜２−３毎に設けられ、学習ノード２−０〜２−３から送信された通信パケットを受信する受信部１０−０〜１０−３と、学習ノード２−０〜２−３毎に設けられ、各受信部１０−０〜１０−３が受信した通信パケットのヘッダやデータペイロードを解析するパーサ（解析部）１１−０〜１１−３と、学習ノード２−０〜２−３毎に設けられ、各受信部１０−０〜１０−３によって受信された通信パケットに格納されていた複数の勾配の計算結果を一時的に記憶するバッファ１２−０〜１２−３と、バッファ１２−０〜１２−３の並列出力段数と同数設けられ、同一の構成パラメータに対する勾配の和を計算する処理を、複数の勾配の各々について並列に行う加算器（演算器）１３−０〜１３−２と、バッファ１２−０〜１２−３の並列出力段数と同数設けられ、各加算器１３−０〜１３−２によって計算された勾配の和の計算結果を一時的に記憶する出力バッファ１４−０〜１４−２と、出力バッファ１４−０〜１４−２に記憶された勾配の和の計算結果をデータペイロードに格納した通信パケットを生成するパケット生成部１５と、学習ノード２−０〜２−３毎に設けられ、パケット生成部１５によって生成された通信パケットを学習ノード２−０〜２−３に送信する送信部１６−０〜１６−３とを備えている。
【００６０】
なお、バッファ１２−０〜１２−３としてＦＩＦＯメモリを用いてもよい。また、加算器１３−０〜１３−２として、勾配の和を計算する代わりに勾配の平均値を求める演算器を用いてもよい。
【００６１】
＜コンピューティングインタコネクト装置の動作＞
次に、コンピューティングインタコネクト装置１の詳細な動作を図８を用いて説明する。コンピューティングインタコネクト装置１の受信部１０−０〜１０−３は、それぞれ学習ノード２−０〜２−３からの通信パケットＲＰ０〜ＲＰ３を受信する。
【００６２】
コンピューティングインタコネクト装置１のパーサ１１−０〜１１−３は、それぞれ受信部１０−０〜１０−３によって受信された通信パケットＲＰ０〜ＲＰ３のヘッダやデータペイロードの内容を解析し、データペイロードから勾配値を取り出してバッファ１２−０〜１２−３に格納する。バッファ１２−０〜１２−３に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケット（すなわち、同一の構成パラメータに対応する通信パケット）であっても、各学習ノード２−０〜２−３から完全に同一のタイミングで到着するとは限らないためである。
【００６３】
パーサ１１−０〜１１−３は、対応する全ての学習ノード２−０〜２−３から受信した、同一のシーケンシャル番号が付与された通信パケットＲＰ０〜ＲＰ３から取り出した勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２をバッファ１２−０〜１２−３に書き込んだ場合、これら勾配成分値をバッファ１２−０〜１２−３から出力させる。
【００６４】
各バッファ１２−０〜１２−３は、それぞれパーサ１１−０〜１１−３によって書き込まれる勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２を順番に記憶して、並列に出力することが可能である。各バッファ１２−０〜１２−３の並列出力段数ｎbuffが、各通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納可能な勾配成分値の最大個数ｎdataより小さい場合は、ｎdata個のデータをｎbuff個ずつに分けて並列計算を複数回行えばよい。図７、図８の例では、ｎbuff＝ｎdata＝３である。すなわち、各バッファ１２−０〜１２−３は、それぞれ３つの勾配成分値を同時に出力可能である。
【００６５】
また、パーサ１１−０〜１１−３は、バッファ１２−０〜１２−３から出力させた勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２に対応するシーケンシャル番号（図８の例では“００３”）をパケット生成部１５に渡す。
【００６６】
コンピューティングインタコネクト装置１の各加算器１３−０〜１３−２は、各バッファ１２−０〜１２−３から出力された勾配成分値の和を、各バッファ１２−０〜１２−３の同一の出力段毎に計算する。加算器１３−０〜１３−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。そして、上記のとおり各パーサ１１−０〜１１−３は、それぞれ対応する学習ノード２−０〜２−３から受信した、同一のシーケンシャル番号が付与された通信パケットから取り出した勾配成分値をバッファ１２−０〜１２−３に書き込み、各バッファ１２−０〜１２−３は、それぞれ対応するパーサ１１−０〜１１−３によって書き込まれる勾配成分値を順番に記憶する。
【００６７】
したがって、各バッファ１２−０〜１２−３の同一の出力段から出力される各勾配成分値はニューラルネットワークの同一の構成パラメータに対する勾配成分値となるので、各加算器１３−０〜１３−２は、同一の構成パラメータに対する勾配成分値同士の和ΣＧ＿０〜ΣＧ＿２を式（４）〜式（６）のように計算することになる。
【００６８】
コンピューティングインタコネクト装置１の出力バッファ１４−０〜１４−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各出力バッファ１４−０〜１４−２は、それぞれ対応する加算器１３−０〜１３−２によって計算された勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２を一時的に記憶する。
【００６９】
コンピューティングインタコネクト装置１のパケット生成部１５は、パーサ１１−０〜１１−３から受け取ったシーケンシャル番号を各学習ノード２−０〜２−３宛の通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納すると共に、出力バッファ１４−０〜１４−２に記憶された勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２を読み出して、通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。このとき、パケット生成部１５は、各出力バッファ１４−０〜１４−２に記憶された勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２を、出力バッファ１４−０〜１４−２の順番（すなわち、元の勾配Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２の順番）で通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。
【００７０】
そして、コンピューティングインタコネクト装置１の送信部１６−０〜１６−３は、パケット生成部１５によって生成された通信パケットＴＰ０〜ＴＰ３をそれぞれ対応する学習ノード２−０〜２−３へ同時に送信する。
【００７１】
以上のようなコンピューティングインタコネクト装置１は、ＦＰＧＡやＡＳＩＣに形成したＬＳＩ回路で実現することができる。以下の実施例のコンピューティングインタコネクト装置についても同様である。
【００７２】
図９は学習ノード２−０の構成例を示すブロック図である。学習ノード２−０は、学習データを受け取る入力部２０と、学習データが入力されたときに、損失関数Ｌを計算する損失関数計算部２１と、損失関数Ｌの勾配を計算する勾配計算部２２と、勾配計算部２２によって計算された勾配値をパケット化してコンピューティングインタコネクト装置１に送信する送信部２３と、コンピューティングインタコネクト装置１から送信された通信パケットを受信する受信部２４と、コンピューティングインタコネクト装置１から送信された通信パケットに格納されている勾配の和を用いてニューラルネットワークの構成パラメータ（重みパラメータ）を更新する構成パラメータ更新部２５と、数学モデルであるニューラルネットワークの出力値を計算する機能をもつニューラルネットワーク２６とを備えている。
【００７３】
図９の例では、学習ノード２−０の構成を示しているが、他の学習ノード２−１〜２−３の構成も学習ノード２−０と同様である。
各学習ノード２−０〜２−３の勾配計算部２２は、損失関数Ｌの勾配を計算する。
【００７４】
各学習ノード２−０〜２−３の送信部２３は、勾配計算部２２によって計算された勾配成分の計算結果Ｇ０＿０〜Ｇ０＿２，Ｇ１＿０〜Ｇ１＿２，Ｇ２＿０〜Ｇ２＿２，Ｇ３＿０〜Ｇ３＿２と、シーケンシャル番号とを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１に送信する。このとき、各学習ノード２−０〜２−３の送信部２３は、勾配計算部２２によって計算された勾配成分の計算結果Ｇ０＿０〜Ｇ０＿２，Ｇ１＿０〜Ｇ１＿２，Ｇ２＿０〜Ｇ２＿２，Ｇ３＿０〜Ｇ３＿２をニューラルネットワーク２６の対応する構成パラメータの順に通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納する。
なお、勾配成分の個数が各通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納可能な勾配成分値の最大個数ｎdataより大きい場合は、勾配成分をｎdataごとに複数の通信パケットに分けて格納して送信すればよい。この場合、各通信パケットに割り振ったシーケンシャル番号によってデータペイロードに格納されたデータがどの勾配成分になるのかを識別する。図８はｎdata＝３の場合を例に示している。
【００７５】
各学習ノード２−０〜２−３の受信部２４は、コンピューティングインタコネクト装置１から受信した通信パケットＴＰ０〜ＴＰ３のデータペイロードから勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２を取り出す。
【００７６】
上記のとおり、各学習ノード２−０〜２−３からコンピューティングインタコネクト装置１に送信される通信パケットＲＰ０〜ＲＰ３のデータペイロードには、ニューラルネットワーク２６の構成パラメータの順に勾配成分の計算結果Ｇ０＿０〜Ｇ０＿２，Ｇ１＿０〜Ｇ１＿２，Ｇ２＿０〜Ｇ２＿２，Ｇ３＿０〜Ｇ３＿２が格納される。そして、これら勾配成分と同じ順番で通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納された勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２がコンピューティングインタコネクト装置１から返送される。
【００７７】
各学習ノード２−０〜２−３の受信部２４が取り出した勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２は対応する構成パラメータの順に並んでいるので、各学習ノード２−０〜２−３の構成パラメータ更新部２５は、これら勾配成分の和の計算結果ΣＧ＿０〜ΣＧ＿２に基づいて、ニューラルネットワーク２６の対応する構成パラメータを更新することが可能である。
【００７８】
以上のように、本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理にコンピューティングインタコネクト装置１を用いることで、各学習ノード２−０〜２−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２−０〜２−３との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【００７９】
さらに、本実施例では、各学習ノード２−０〜２−３からの複数の勾配成分の和の計算値ΣＧ＿０〜ΣＧ＿２をコンピューティングインタコネクト装置１の複数の加算器１３−０〜１３−２で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【００８０】
［第２の実施例］
次に、本発明の第２の実施例について説明する。第１の実施例では、コンピューティングインタコネクト装置１で勾配の和の演算を行い、各学習ノード２−０〜２−３でニューラルネットワークの構成パラメータの更新演算を行うが、本実施例では、勾配の和の演算に加えて、ニューラルネットワークの構成パラメータの更新演算もコンピューティングインタコネクト装置で行なう。
【００８１】
図１０は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、１台のコンピューティングインタコネクト装置１ａと、４台の学習ノード２ａ−０〜２ａ−３と、コンピューティングインタコネクト装置１ａと学習ノード２ａ−０〜２ａ−３とを接続する通信ネットワーク３とから構成されている。
【００８２】
＜コンピューティングインタコネクト装置の動作の概要＞
図１１（Ａ）、図１１（Ｂ）は本実施例のコンピューティングインタコネクト装置１ａの動作の概要を説明する図である。
第１の実施例と同様に、各学習ノード２ａ−０〜２ａ−３は、ニューラルネットワークの構成パラメータに対する損失関数の勾配を計算すると、その計算結果を通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納してコンピューティングインタコネクト装置１ａに送信する。例えば、図１１（Ａ）の例では、学習ノード２ａ−０が３つの勾配成分値Ｇ０＿０，Ｇ０＿１，Ｇ０＿２を通信パケットＲＰ０のデータペイロードに格納してコンピューティングインタコネクト装置１ａに送信している。このとき、データペイロードには、この通信パケットのシーケンシャル番号（図１１（Ａ）の例では“００３”）も格納される。
【００８３】
各学習ノード２ａ−０〜２ａ−３からの、シーケンシャル番号が同一の通信パケットに格納された勾配成分同士の和を計算するように制御することで、各学習ノード２ａ−０〜２ａ−３の対応する勾配成分同士を加算演算できるように保証する。
【００８４】
コンピューティングインタコネクト装置１ａは、全ての学習ノード２ａ−０〜２ａ−３から同一のシーケンシャル番号の通信パケットＲＰ０〜ＲＰ３を受信すると、ニューラルネットワークの同一の構成パラメータに対する勾配成分値同士の和ΣＧ＿０，ΣＧ＿１，ΣＧ＿２を式（４）〜式（６）のように計算する。
【００８５】
さらに、コンピューティングインタコネクト装置１ａは、計算した勾配成分の和の計算結果ΣＧ＿０，ΣＧ＿１，ΣＧ＿２を基に、ニューラルネットワークの構成パラメータの更新後の値ｗｎｅｗ＿０，ｗｎｅｗ＿１，ｗｎｅｗ＿２を構成パラメータ毎に計算する。そして、コンピューティングインタコネクト装置１ａは、構成パラメータの更新後の値ｗｎｅｗ＿０，ｗｎｅｗ＿１，ｗｎｅｗ＿２を通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納し、各学習ノード２ａ−０〜２ａ−３に送信する（図１１（Ｂ））。
【００８６】
このとき、コンピューティングインタコネクト装置１ａは、各学習ノード２ａ−０〜２ａ−３からの通信パケットＲＰ０〜ＲＰ３に格納されていた勾配成分から計算した構成パラメータの更新後の値ｗｎｅｗ＿０，ｗｎｅｗ＿１，ｗｎｅｗ＿２を、元の勾配成分と同じ順番で通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。
【００８７】
＜コンピューティングインタコネクト装置の構成＞
図１２は本実施例のコンピューティングインタコネクト装置１ａの構成を示すブロック図であり、図７と同一の構成には同一の符号を付してある。本実施例のコンピューティングインタコネクト装置１ａは、学習ノード２ａ−０〜２ａ−３のそれぞれと通信ネットワーク３で接続された送受信用のポートＰ０〜Ｐ３と、受信部１０−０〜１０−３と、パーサ１１−０〜１１−３と、バッファ１２−０〜１２−３と、加算器１３−０〜１３−２と、出力バッファ１４−０〜１４−２と、パケット生成部１５と、送信部１６−０〜１６−３と、各学習ノード２ａ−０〜２ａ−３の学習対象のニューラルネットワーク２６の構成パラメータを記憶する構成パラメータメモリ１７と、ニューラルネットワークの構成パラメータ（重みパラメータ）の更新後の値を計算するＮＮ（ニューラルネットワーク）構成パラメータ更新演算部１８−０〜１８−２とを備えている。
【００８８】
＜コンピューティングインタコネクト装置の動作＞
次に、コンピューティングインタコネクト装置１ａの詳細な動作を図１３を用いて説明する。学習開始時点において、各学習ノード２ａ−０〜２ａ−３のニューラルネットワーク２６は、全ての学習ノード２ａ−０〜２ａ−３で同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値の全てを、例えば学習ノード２ａ−０〜２ａ−３から通信パケットを用いてコンピューティングインタコネクト装置１ａに送信する。
【００８９】
構成パラメータの初期値を受信したコンピューティングインタコネクト装置１ａでは、この構成パラメータの初期値を構成パラメータメモリ１７に格納する。これら構成パラメータの初期値は、所定の順番、すなわち各学習ノード２ａ−０〜２ａ−３において勾配が計算され、通信パケットに書き込まれる順番で格納されている。
【００９０】
第１の実施例と同様に、各学習ノード２ａ−０〜２ａ−３は、この構成パラメータの初期値が設定されたニューラルネットワーク２６のそれぞれに学習データを入力し、損失関数Ｌを計算する。次に、その損失関数Ｌの勾配を計算する。そして、各学習ノード２ａ−０〜２ａ−３の送信部２３は、勾配計算部２２によって計算された勾配成分の計算結果と、シーケンシャル番号とを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１ａに送信する。
【００９１】
したがって、コンピューティングインタコネクト装置１ａの受信部１０−０〜１０−３で受信する通信パケットＲＰ０〜ＲＰ３のデータペイロードには、それぞれ学習ノード２ａ−０〜２ａ−３で計算された勾配成分値（図１３のＧ０＿０〜Ｇ０＿２，Ｇ１＿０〜Ｇ１＿２，Ｇ２＿０〜Ｇ２＿２，Ｇ３＿０〜Ｇ３＿２）と、シーケンシャル番号（図１３の例では“００３”）とが格納されている。
なお、勾配成分の個数が各通信パケットＲＰ０〜ＲＰ３のデータペイロードに格納可能な勾配成分値の最大個数ｎdataより大きい場合は、勾配成分をｎdataごとに複数の通信パケットに分けて格納して送信すればよい。この場合、各通信パケットに割り振ったシーケンシャル番号によってデータペイロードに格納されたデータがどの勾配成分になるのかを識別する。図１３はｎdata＝３の場合を例に示している。
【００９２】
コンピューティングインタコネクト装置１ａのパーサ１１−０〜１１−３は、それぞれ受信部１０−０〜１０−３によって受信された通信パケットＲＰ０〜ＲＰ３のヘッダやデータペイロードの内容を解析し、データペイロードから勾配値を取り出してバッファ１２−０〜１２−３に格納する。第１の実施例で説明したとおり、バッファ１２−０〜１２−３に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケットであっても、各学習ノード２ａ−０〜２ａ−３から完全に同一のタイミングで到着するとは限らないためである。
【００９３】
パーサ１１−０〜１１−３は、対応する全ての学習ノード２ａ−０〜２ａ−３から受信した、同一のシーケンシャル番号が付与された通信パケットＲＰ０〜ＲＰ３から取り出した勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２をバッファ１２−０〜１２−３に書き込んだ場合、これら勾配成分値をバッファ１２−０〜１２−３から出力させる。
【００９４】
第１の実施例と同様に、各バッファ１２−０〜１２−３は、それぞれパーサ１１−０〜１１−３によって書き込まれる勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２を順番に記憶し、並列に出力することが可能である。また、パーサ１１−０〜１１−３は、バッファ１２−０〜１２−３から出力させた勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２に対応するシーケンシャル番号（図１３の例では“００３”）をパケット生成部１５に渡す。
【００９５】
コンピューティングインタコネクト装置１ａの加算器１３−０〜１３−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、各バッファ１２−０〜１２−３から出力された勾配成分値の和を、各バッファ１２−０〜１２−３の同一の出力段毎に計算する。これにより、各加算器１３−０〜１３−２は、同一の構成パラメータに対する勾配成分値同士の和ΣＧ＿０〜ΣＧ＿２を式（４）〜式（６）のように計算する。
【００９６】
コンピューティングインタコネクト装置１ａのＮＮ構成パラメータ更新演算部１８−０〜１８−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各ＮＮ構成パラメータ更新演算部１８−０〜１８−２は、それぞれ対応する加算器１３−０〜１３−２によって勾配成分の和ΣＧ＿０〜ΣＧ＿２が計算された構成パラメータの初期値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を、構成パラメータメモリ１７に記憶されている構成パラメータの初期値の中から取り出す。
【００９７】
そして、各ＮＮ構成パラメータ更新演算部１８−０〜１８−２は、取り出した初期値ｗｏｌｄ＿０〜ｗｏｌｄ＿２と、対応する加算器１３−０〜１３−２によって計算された勾配成分の和ΣＧ＿０〜ΣＧ＿２とを基に、ニューラルネットワークの構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を計算して出力バッファ１４−０〜１４−２に出力する。更新方法として例えば、勾配降下法を用いる場合は以下のような計算を行う。
ｗｎｅｗ＿０←ｗｏｌｄ＿０−η×ΣＧ＿０                        ・・・（７）
ｗｎｅｗ＿１←ｗｏｌｄ＿１−η×ΣＧ＿１                        ・・・（８）
ｗｎｅｗ＿２←ｗｏｌｄ＿２−η×ΣＧ＿２                        ・・・（９）
【００９８】
ηは学習率と呼ばれる定数である。第１の実施例で説明したとおり、各加算器１３−０〜１３−２は構成パラメータの順番に従って昇順で配置されているので、各加算器１３−０〜１３−２から出力される勾配成分の和ΣＧ＿０〜ΣＧ＿２も、構成パラメータの順に並んでいることになる。したがって、ＮＮ構成パラメータ更新演算部１８−０〜１８−２は、昇順に並んでいる構成パラメータの初期値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数だけ一括して構成パラメータメモリ１７から取り出すことを繰り返すことにより、加算器１３−０〜１３−２から出力された勾配成分の和ΣＧ＿０〜ΣＧ＿２に対応する構成パラメータの初期値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を取り出すことが可能である。
【００９９】
また、ＮＮ構成パラメータ更新演算部１８−０〜１８−２は、構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を出力バッファ１４−０〜１４−２に出力すると同時に、構成パラメータメモリ１７に格納されている当該構成パラメータの値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を、更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２によって上書きする。
【０１００】
第１の実施例と同様に、コンピューティングインタコネクト装置１ａの出力バッファ１４−０〜１４−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、構成パラメータの順番に従って昇順に配置されている。各出力バッファ１４−０〜１４−２は、それぞれ対応するＮＮ構成パラメータ更新演算部１８−０〜１８−２によって計算された構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を一時的に記憶する。
【０１０１】
コンピューティングインタコネクト装置１ａのパケット生成部１５は、パーサ１１−０〜１１−３から受け取ったシーケンシャル番号を各学習ノード２ａ−０〜２ａ−３宛の通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納すると共に、出力バッファ１４−０〜１４−２に記憶された構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を読み出して、通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。
【０１０２】
このとき、パケット生成部１５は、各出力バッファ１４−０〜１４−２に記憶された構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を、出力バッファ１４−０〜１４−２の順番（すなわち、元の勾配Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２の順番）で通信パケットＴＰ０〜ＴＰ３のデータペイロードに格納する。
【０１０３】
そして、コンピューティングインタコネクト装置１ａの送信部１６−０〜１６−３は、パケット生成部１５によって生成された通信パケットＴＰ０〜ＴＰ３をそれぞれ対応する学習ノード２ａ−０〜２ａ−３へ同時に送信する。
【０１０４】
以上のようなコンピューティングインタコネクト装置１ａは、ＦＰＧＡやＡＳＩＣに形成したＬＳＩ回路で実現することができる。
【０１０５】
図１４は学習ノード２ａ−０の構成例を示すブロック図であり、図９と同一の構成には同一の符号を付してある。学習ノード２ａ−０は、入力部２０と、損失関数計算部２１と、勾配計算部２２と、送信部２３と、受信部２４ａと、コンピューティングインタコネクト装置１ａから送信された通信パケットに格納されている構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を用いてニューラルネットワーク２６の構成パラメータを更新する構成パラメータ更新部２５ａと、ニューラルネットワーク２６とを備えている。
【０１０６】
図１４の例では、学習ノード２ａ−０の構成を示しているが、他の学習ノード２ａ−１〜２ａ−３の構成も学習ノード２ａ−０と同様である。
各学習ノード２ａ−０〜２ａ−３の受信部２４ａは、コンピューティングインタコネクト装置１ａから受信した通信パケットＴＰ０〜ＴＰ３のデータペイロードから構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を取り出す。
【０１０７】
各学習ノード２ａ−０〜２ａ−３の構成パラメータ更新部２５ａは、ニューラルネットワーク２６の複数の構成パラメータ（上記のｗｏｌｄ＿０〜ｗｏｌｄ＿２と同じ値）を、構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２によって上書きすることにより、ニューラルネットワーク２６を更新する。
【０１０８】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置１ａを用いることで、各学習ノード２ａ−０〜２ａ−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２ａ−０〜２ａ−３との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【０１０９】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配成分の和演算も、構成パラメータの更新演算も、ニューラルネットワーク２６の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード２ａ−０〜２ａ−３でのニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置１ａの演算器は同じ専用演算回路を用いることができるというメリットもある。
【０１１０】
さらに、本実施例では、各学習ノード２ａ−０〜２ａ−３からの複数の勾配成分の和の計算値ΣＧ＿０〜ΣＧ＿２をコンピューティングインタコネクト装置１ａの複数の加算器１３−０〜１３−２で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【０１１１】
［第３の実施例］
次に、本発明の第３の実施例について説明する。第２の実施例では、コンピューティングインタコネクト装置１ａの構成パラメータメモリ１７に、学習対象のニューラルネットワークの現在の構成パラメータ値を全て記録しておくようにしたが、本実施例では、学習ノードから勾配データとそれに対応する構成パラメータの現在値とをセットで送信し、この構成パラメータの現在値のみ構成パラメータバッファに記録する。これにより、この構成パラメータバッファは、第２の実施例の、構成パラメータ全部を記録しておく必要がある構成パラメータメモリ１７に比べてずっと小さくすることができる。
【０１１２】
図１５は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、１台のコンピューティングインタコネクト装置１ｂと、４台の学習ノード２ａ−０〜２ａ−２，２ｂ−３と、コンピューティングインタコネクト装置１ａと学習ノード２ａ−０〜２ａ−２，２ｂ−３とを接続する通信ネットワーク３とから構成されている。
【０１１３】
＜コンピューティングインタコネクト装置の構成＞
図１６は本実施例のコンピューティングインタコネクト装置１ｂの構成を示すブロック図であり、図７、図１２と同一の構成には同一の符号を付してある。本実施例のコンピューティングインタコネクト装置１ｂは、学習ノード２ａ−０〜２ａ−２，２ｂ−３のそれぞれと通信ネットワーク３で接続された送受信用のポートＰ０〜Ｐ３と、受信部１０−０〜１０−３と、パーサ１１−０〜１１−２，１１ｂ−３と、バッファ１２−０〜１２−３と、加算器１３−０〜１３−２と、出力バッファ１４−０〜１４−２と、パケット生成部１５と、送信部１６−０〜１６−３と、ＮＮ構成パラメータ更新演算部１８ｂ−０〜１８ｂ−２と、構成パラメータバッファ１９とを備えている。
【０１１４】
＜コンピューティングインタコネクト装置の動作＞
次に、コンピューティングインタコネクト装置１ｂの詳細な動作を図１７を用いて説明する。第１の実施例と同様に、各学習ノード２ａ−０〜２ａ−２，２ｂ−３は、構成パラメータの初期値が設定されたニューラルネットワーク２６のそれぞれに学習データを入力し、損失関数Ｌを計算する。次に、その損失関数Ｌの勾配を計算する。そして、各学習ノード２ａ−０〜２ａ−２，２ｂ−３の送信部は、勾配計算部２２によって計算された勾配の計算結果と、シーケンシャル番号とを通信パケットＲＰ０〜ＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１ｂに送信する。
【０１１５】
このとき、本実施例では、勾配の計算結果に加えて、その勾配を計算した対象の構成パラメータの現在値も通信パケットのデータペイロードに書き込んでコンピューティングインタコネクト装置１ｂに送信する。各学習ノード２ａ−０〜２ａ−２，２ｂ−３のニューラルネットワーク２６の構成パラメータの現在値は、各学習ノード２ａ−０〜２ａ−２，２ｂ−３で同じ値である。
【０１１６】
そこで、本実施例では、学習ノード２ｂ−３においてのみ、ニューラルネットワーク２６の構成パラメータの現在値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を通信パケットＲＰ３に書き込んでコンピューティングインタコネクト装置１ｂに送信する。このとき、構成パラメータの現在値ｗｏｌｄ＿０〜ｗｏｌｄ＿２のそれぞれに対して学習ノード２ｂ−３が計算した勾配成分値がＧ３＿０〜Ｇ３＿２となる。
【０１１７】
コンピューティングインタコネクト装置１ｂのパーサ１１−０〜１１−２，１１ｂ−３は、それぞれ受信部１０−０〜１０−３によって受信された通信パケットＲＰ０〜ＲＰ３のヘッダやデータペイロードの内容を解析し、データペイロードから勾配成分値を取り出してバッファ１２−０〜１２−３に格納する。
【０１１８】
さらに、パーサ１１ｂ−３は、受信部１０−３によって受信された通信パケットＲＰ３のデータペイロードから構成パラメータの値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を取り出して構成パラメータバッファ１９に格納する。構成パラメータバッファ１９は、パーサ１１ｂ−３によって書き込まれる構成パラメータの値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を順番に記憶し、並列に出力することが可能である。
【０１１９】
パーサ１１−０〜１１−２，１１ｂ−３は、対応する全ての学習ノード２ａ−０〜２ａ−２，２ｂ−３から受信した、同一のシーケンシャル番号が付与された通信パケットＲＰ０〜ＲＰ３から取り出した勾配成分値Ｇ０＿０〜Ｇ３＿０，Ｇ０＿１〜Ｇ３＿１，Ｇ０＿２〜Ｇ３＿２をバッファ１２−０〜１２−３に書き込んだ場合、これら勾配成分値をバッファ１２−０〜１２−３から出力させる。加算器１３−０〜１３−２の動作は、第１、第２の実施例で説明したとおりである。
【０１２０】
コンピューティングインタコネクト装置１ｂのＮＮ構成パラメータ更新演算部１８ｂ−０〜１８ｂ−２は、バッファ１２−０〜１２−３の並列出力段数ｎbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各ＮＮ構成パラメータ更新演算部１８ｂ−０〜１８ｂ−２は、それぞれ対応する加算器１３−０〜１３−２によって勾配成分の和ΣＧ＿０〜ΣＧ＿２が計算された構成パラメータの値ｗｏｌｄ＿０〜ｗｏｌｄ＿２を、構成パラメータバッファ１９から取り出す。
【０１２１】
そして、各ＮＮ構成パラメータ更新演算部１８ｂ−０〜１８ｂ−２は、取り出した構成パラメータの値ｗｏｌｄ＿０〜ｗｏｌｄ＿２と、対応する加算器１３−０〜１３−２によって計算された勾配成分の和ΣＧ＿０〜ΣＧ＿２とを基に、ニューラルネットワークの構成パラメータの更新後の値ｗｎｅｗ＿０〜ｗｎｅｗ＿２を式（７）〜式（９）のように計算して出力バッファ１４−０〜１４−２に出力する。
【０１２２】
なお、本実施例では、更新対象の構成パラメータの現在値が更新の度に学習ノード２ｂ−３から送信されるので、ＮＮ構成パラメータ更新演算部１８ｂ−０〜１８ｂ−２は、第２の実施例のＮＮ構成パラメータ更新演算部１８−０〜１８−２と異なり、構成パラメータバッファ１９に記憶されている値を更新する必要はない。
パケット生成部１５と送信部１６−０〜１６−３の動作は、第２の実施例で説明したとおりである。
【０１２３】
図１８は学習ノード２ｂ−３の構成例を示すブロック図であり、図９、図１４と同一の構成には同一の符号を付してある。学習ノード２ｂ−３は、入力部２０と、損失関数計算部２１と、勾配計算部２２と、送信部２３ｂと、受信部２４ａと、構成パラメータ更新部２５ａと、ニューラルネットワーク２６とを備えている。
学習ノード２ａ−０〜２ａ−２の構成は図１４で説明したとおりである。
【０１２４】
学習ノード２ｂ−３の送信部２３ｂは、ニューラルネットワーク２６の構成パラメータの現在値ｗｏｌｄ＿０〜ｗｏｌｄ＿２と、これらに対応する勾配の計算結果Ｇ３＿０〜Ｇ３＿２と、シーケンシャル番号とを通信パケットＲＰ３のデータペイロードに書き込んで、コンピューティングインタコネクト装置１ｂに送信する。このとき、送信部２３ｂは、構成パラメータの現在値ｗｏｌｄ＿０〜ｗｏｌｄ＿２と、対応する勾配成分の計算結果Ｇ３＿０〜Ｇ３＿２とを同じ順番で通信パケットＲＰ３のデータペイロードに格納する。学習ノード２ｂ−３の他の構成は第２の実施例で説明したとおりである。
【０１２５】
本実施例では、Ａｌｌ−ｒｅｄｕｃｅ処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置１ｂを用いることで、各学習ノード２ａ−０〜２ａ−２，２ｂ−３からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード２ａ−０〜２ａ−２，２ｂ−３との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【０１２６】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配成分の和演算も、構成パラメータの更新演算も、ニューラルネットワーク２６の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード２ａ−０〜２ａ−２，２ｂ−３でのニューラルネットワーク２６の構成を変えた場合でも、コンピューティングインタコネクト装置１ｂの演算器は同じ専用演算回路を用いることができるというメリットもある。さらに、本実施例では、各学習ノード２ａ−０〜２ａ−２，２ｂ−３からの複数の勾配成分の和の計算値ΣＧ＿０〜ΣＧ＿２をコンピューティングインタコネクト装置１ｂの複数の加算器１３−０〜１３−２で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【０１２７】
また、本実施例では、第２の実施例の構成パラメータメモリ１７よりも、容量の小さい構成パラメータバッファ１９を用意すればよいという利点がある。ただし、第２の実施例には、通信パケットで送るデータ量が小さくてすむという利点がある。
【０１２８】
第１〜第３の実施例で説明した学習ノードの各々は、ＣＰＵ（Central Processing Unit）、ＧＰＵ（Graphics Processing Unit）等の演算資源、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。学習ノードの各々のＣＰＵ、ＧＰＵ等の演算資源は、各々の記憶装置に格納されたプログラムに従って第１〜第３の実施例で説明した処理を実行する。
【産業上の利用可能性】
【０１２９】
本発明は、ニューラルネットワークを用いた機械学習を行う技術に適用することができる。
【符号の説明】
【０１３０】
１，１ａ，１ｂ…コンピューティングインタコネクト装置、２−０〜２−３，２ａ−０〜２ａ−３，２ｂ−３…学習ノード、３…通信ネットワーク、１０−０〜１０−３，２４，２４ａ…受信部、１１−０〜１１−３，１１ｂ−３…パーサ、１２−０〜１２−３…バッファ、１３−０〜１３−２…加算器、１４−０〜１４−２…出力バッファ、１５…パケット生成部、１６−０〜１６−３，２３，２３ｂ…送信部、１７…構成パラメータメモリ、１８−０〜１８−２，１８ｂ−０〜１８ｂ−２…ＮＮ構成パラメータ更新演算部、１９…構成パラメータバッファ、２０…入力部、２１…損失関数計算部、２２…勾配計算部、２５，２５ａ…構成パラメータ更新部、２６…ニューラルネットワーク。
【図１】
2019168895.tif 000006
【図２】
2019168895.tif 000007
【図３】
2019168895.tif 000008
【図４】
2019168895.tif 000009
【図５】
2019168895.tif 000010
【図６】
2019168895.tif 000011
【図７】
2019168895.tif 000012
【図８】
2019168895.tif 000013
【図９】
2019168895.tif 000014
【図１０】
2019168895.tif 000015
【図１１】
2019168895.tif 000016
【図１２】
2019168895.tif 000017
【図１３】
2019168895.tif 000018
【図１４】
2019168895.tif 000019
【図１５】
2019168895.tif 000020
【図１６】
2019168895.tif 000021
【図１７】
2019168895.tif 000022
【図１８】
2019168895.tif 000023
【図１９】
2019168895.tif 000024