(57)【要約】【課題】複数の演算処理装置によって実行される並列処理を高速化する。【解決手段】複数の演算処理装置を備える情報処理装置を複数有し、複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムである。複数の情報処理装置のうちの少なくとも１つは、複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における当該一の演算処理装置と当該他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、記憶部が記憶する帯域情報に基づき、各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、を有する。【選択図】図８
2019067084.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を備える情報処理装置を複数有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムにおいて、
前記複数の情報処理装置のうちの少なくとも１つは、
前記複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記一の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、
を有する、
情報処理システム。
【請求項２】
前記制御部は、前記各演算処理装置それぞれの演算結果データが前記各演算処理装置間で共有されるまでにかかる第１の時間が短くなるように、前記各演算処理装置の、前記転送先となる演算処理装置を決定する、
請求項１に記載の情報処理システム。
【請求項３】
前記制御部は、
一部又は全部の演算処理装置間での、一の演算処理装置から他の演算処理装置への所定のアルゴリズムに応じたデータ量の演算結果データの転送を１ステップとした場合に、前記各演算処理装置の演算結果データが前記各演算処理装置間で共有されるまでに要するステップ数と、各ステップにおける転送データ量とを取得し、
前記各ステップについて、前記各演算処理装置の前記転送先を複数パターン決定し、
前記各ステップにおける前記複数パターンから選択された１つのパターンの、全ステップ分の複数の組合せそれぞれについて、前記帯域情報と前記各ステップにおける転送データ量とに基づいて、前記第１の時間を算出し、
前記複数の組合せの中から前記算出された前記第１の時間が短い少なくとも１つの組合せを選択する、
請求項２に記載の情報処理システム。
【請求項４】
前記制御部は、
前記複数の組合せそれぞれの前記第１の時間の算出に、前記複数の組合せに含まれる各ステップにおける一の演算処理装置と他の演算処理装置間の通信帯域のうち最も小さい通信帯域を用いる、
請求項３に記載の情報処理システム。
【請求項５】
前記制御部は、
前記複数パターンの決定において、データの共有の複数のアルゴリズムそれぞれの、前記各ステップについて、前記一部又は全部の演算処理装置について前記演算結果データを転送し合うペアを複数パターン決定する、
請求項３又は４に記載の情報処理システム。
【請求項６】
前記複数の情報処理装置に含まれる各複数の演算処理装置は、所定のニューラルネットワークにおける重み係数の学習処理に用いられ、
前記各演算処理装置は、前記学習処理におけるＡｌｌ−Ｒｅｄｕｃｅｄ処理において、演算結果データを所定数に分割して細分化し、細分化された演算結果データそれぞれに前記複数パターンのうちのいずれか１つのパターンを割り当て、前記細分化された演算結果データを、前記割り当てられたパターンにより並列に、転送先の演算処理装置に送信する
、
請求項５に記載の情報処理システム。
【請求項７】
前記複数の情報処理装置に含まれる各演算処理装置は、所定のニューラルネットワークにおける重み係数の学習処理に用いられ、
前記制御部は、前記重み係数の学習処理の実行前に、前記帯域情報を取得し、前記各演算処理装置の前記転送先となる演算処理装置を決定する、
請求項１から６のいずれか一項に記載の情報処理システム。
【請求項８】
複数の演算処理装置を備える複数の情報処理装置を有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムに含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記位置の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報（接続帯域情報）を記憶する記憶部と、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、
を備える情報処理装置。
【請求項９】
複数の演算処理装置を備える複数の情報処理装置を有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムに含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記一の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報を記憶部に記憶し、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する、
転送先決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び、転送先決定方法に関する。
【背景技術】
【０００２】
深層学習（Deep Learning）が導入されたシステムにおいては、例えば、膨大なデータ
を繰り返し学習させる学習処理が行われる。そのため、深層学習が導入されたシステムにおける学習処理の計算量は無視できるものではない。現在、深層学習が導入されたシステムが画像識別等の分野を対象とする場合には、例えば、百万枚以上の学習用としてのラベル付きの静止画を、繰り返し学習する。このために、通常のＣＰＵ（Central Processing
Unit）よりも多くの積和演算器を有し、学習処理で用いられる演算を高速に演算可能な
ＧＰＵ（Graphical Processing Unit）のような演算処理装置を利用したシステム、また
は、演算処理装置を含むノードを複数組み合わせたクラスタ環境が利用される。
【０００３】
すなわち、学習処理には、ＧＰＵのような演算処理装置の利用が有効であり、さらに複数の演算処理装置で処理を分散し実行させることで処理の高速化が可能である。複数の演算処理装置で処理を分散し実行させる方法としては、例えば、ノード内に実装される複数の演算処理装置間で処理を分散させるノード内並列処理と、複数のノードそれぞれに実装されている演算処理装置間で処理を分散させるノード間並列処理がある。
【０００４】
一方、深層学習の学習処理では、例えば、入力データから認識を行うフォーワード処理と、演算結果と正解データとの差分情報を逆方向に伝搬しながら勾配情報を算出するバックワード処理と、勾配情報を用いて重み係数を更新するアップデート処理とが繰り返し実行される。複数の演算処理装置間で並列処理が行われる場合には、さらに、各演算処理装置で算出された勾配情報を用いて、各演算処理装置分の勾配情報の平均を算出し、再度全ての演算処理装置で勾配情報の平均を共有するＡｌｌ−Ｒｅｄｕｃｅ処理が行われる。すなわち、ノード内並列処理、ノード間並列処理では、フォーワード処理、バックワード処理、Ａｌｌ−Ｒｅｄｕｃｅ処理、アップデート処理が繰り返し行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１３４３１１号公報
【特許文献２】国際公開第２０１４／０２０９５９号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、演算処理装置及び／又はノードの数が増えると、演算処理装置間でデータ交換を行うＡｌｌ−Ｒｅｄｕｃｅ処理にかかる時間も多くなる。また、演算処理装置間、及び、ノード間で通信速度が異なるため、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムや、データ交換のペアのパターンによって、処理にかかる時間が変動する。
【０００７】
一つの側面では、本実施の形態は、複数の演算処理装置によって行われる並列処理を高速化可能な情報処理システム、情報処理方法、及び、転送先決定方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面は、複数の演算処理装置を備える情報処理装置を複数有し、複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処
理システムによって例示される。複数の情報処理装置のうちの少なくとも１つは、複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における当該一の演算処理装置と当該他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、記憶部が記憶する帯域情報に基づき、各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、を有する。
【発明の効果】
【０００９】
開示の情報処理システム、情報処理装置、及び、転送先決定方法によれば、複数の演算処理装置によって行われる並列処理を高速化できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ニューラルネットワークの処理の一例を示す図である。
【図２】図２は、複数のＧＰＵが用いられる場合の学習処理の一例を示す図である。
【図３】図３は、Ｂｕｔｔｅｒｆｌｙ方式のアルゴリズムの一例を示す図である。
【図４】図４は、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式のアルゴリズムの一例を示す図である。
【図５】図５は、Ｂｕｔｔｅｒｆｌｙ方式とＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式との比較表の一例である。
【図６】図６は、第１実施形態に係る深層学習システムのシステム構成及びノードのハードウェア構成の一例を示す図である。
【図７】図７は、ノードにおける深層学習の学習処理のフローチャートの一例である。
【図８】図８は、ノードの接続帯域情報の取得処理のフローチャートの一例である。
【図９】図９は、転送ペアの決定処理のフローチャートの一例である。
【図１０】図１０は、Ａｌｌ−Ｒｅｄｕｃｅ処理のフローチャートの一例である。
【図１１】図１１は、具体例１に係る深層学習システムのシステム構成を示す図である。
【図１２】図１２は、具体例１における接続帯域情報の一例を示す図である。
【図１３】図１３は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。
【図１４】図１４は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。
【図１５】図１５は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。
【図１６】図１６は、具体例１におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。
【図１７】図１７は、図１６に示されるステップ１とステップ２それぞれにおける転送ペアの組合せのバリエーションの一例を示す図である。
【図１８】図１８は、図１６に示されるステップ３における転送ペアのバリエーションの一例を示す図である。
【図１９】図１９は、具体例２に係る深層学習システムのシステム構成を示す図である。
【図２０】図２０は、具体例２における接続帯域情報の一例を示す図である。
【図２１】図２１は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。
【図２２】図２２は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。
【図２３】図２３は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。
【図２４】図２４は、具体例２におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。
【図２５】図２５は、図２４に示されるステップ２における転送ペアのバリエーションの一例を示す図である。
【図２６】図２６は、具体例３における接続帯域情報の一例を示す図である。
【図２７】図２７は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。
【図２８】図２８は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。
【図２９】図２９は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。
【図３０】図３０は、具体例３におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。
【図３１】図３１は、図３０に示されるステップ１とステップ２それぞれにおける転送ペアの組合せのバリエーションの一例を示す図である。
【図３２】図３２は、第１変形例に係るノードのハードウェア構成の一例を示す図である。
【図３３】図３３は、第２変形例に係るノードにおける深層学習の学習処理のフローチャートの一例である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１２】
＜深層学習の処理例＞
図１は、ニューラルネットワークの処理の一例を示す図である。図１では、入力層と３つのニューロン層とを含むニューラルネットワークが示されている。また、図１では、１つのＧＰＵを利用した場合の学習処理が示されている。図１は、深層学習システムを例示する。
【００１３】
ニューラルネットワークの学習処理では、例えば、ニューラルネットワークの演算結果と正解データとの差分が小さくなるように、各ニューロン層の重みパラメタｗが調整される。そのため、まず、各ニューロン層では、例えば、入力データに対して重みパラメタｗを用いて所定の演算処理が行われ、演算結果データが出力される。図１に示される例では、入力層の出力データがニューロン層１の入力データとなり、ニューロン層１の演算結果データはニューロン層２の入力データとなり、ニューロン層２の演算結果データはニューロン層３の入力データとなる。ニューロン層３の演算結果データが認識結果となる。この入力層からニューロン層３の方向に進む処理をフォーワード処理という。
【００１４】
ニューロン層３の演算結果データと正解データとの差分情報（誤差Ｅ）は、ニューロン層３からニューロン層２、ニューロン層２からニューロン層１へと逆方向に伝搬される。各ニューロン層では、伝搬された差分情報に基づいて、誤差Ｅの変化量である勾配情報（∇Ｅ）が求められる。ニューロン層３からニューロン層１の方向に進む処理をバックワード処理という。
【００１５】
各ニューロン層では、勾配情報（∇Ｅ）を用いて、重みパラメタが更新される。この処理をアップデート処理という。ニューラルネットワークの学習処理では、フォーワード処理、バックワード処理、アップデート処理の順で処理が繰り返し行われ、ニューロン層３の演算結果データと正解データとの差分情報が小さくなるように各ニューロン層の重みパラメタｗが調整される。フォーワード処理、バックワード処理、アップデート処理の順で行われる処理は、学習処理サイクルと称される。
【００１６】
図２は、複数のＧＰＵが用いられる場合の学習処理の一例を示す図である。図２では、各ＧＰＵは、３つのニューロン層の処理を行う。すなわち、図２も、深層学習システムを例示する。
【００１７】
複数のＧＰＵを用いる学習処理の一つに、例えば、バッチ学習がある。バッチ学習では、ＧＰＵそれぞれで異なる学習データに対して学習処理サイクルが実行され、各ＧＰＵで算出された勾配情報（∇Ｅ）の平均値（Σ∇Ｅ／ｎ：ｎはＧＰＵの数）を用いて、各ＧＰＵ内の各ニューロン層の重みパラメタｗが更新される。
【００１８】
図２には、学習方法としてバッチ学習が行われる場合の例が示されている。バッチ学習が行われる場合には、各ＧＰＵで算出された勾配情報（∇Ｅ）の平均値（Σ∇Ｅ／ｎ：ｎはＧＰＵの数）が用いられるため、各ＧＰＵで算出された勾配情報（∇Ｅ）を集約し、集約された勾配情報を各ＧＰＵ間で共有するＡｌｌ−Ｒｅｄｕｃｅ処理が行われる。したがって、複数のＧＰＵを用いた学習処理においてバッチ学習が行われる場合の学習処理サイクルは、フォーワード処理、バックワード処理、Ａｌｌ−Ｒｅｄｕｃｅ処理、アップデート処理の順となる。
【００１９】
Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムには、例えば、Ｂｕｔｔｅｒｆｌｙ方式、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式がある。
【００２０】
図３は、Ｂｕｔｔｅｒｆｌｙ方式のアルゴリズムの一例を示す図である。図３では、４つのＧＰＵ間で、４つのニューロン層の勾配情報（∇Ｅ）が集約され共有される場合の例が示されている。
【００２１】
Ｂｕｔｔｅｒｆｌｙ方式は、ノードのペアを作り、ペアのノード間で全データを転送し合うステップを複数回行う方式である。なお、図３においてノードはＧＰＵである。
【００２２】
図３に示される例では、１ステップ目では、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３とがペアになり、データを転送し合う。以下、Ｘステップ目を、単に、ステップＸ、と表記する。
【００２３】
ステップ１が終了すると、ＧＰＵ＃０とＧＰＵ＃１とに含まれる各ニューロン層では、ＧＰＵ＃０とＧＰＵ＃１との勾配情報が保持される。ＧＰＵ＃２とＧＰＵ＃３とに含まれる各ニューロン層では、ＧＰＵ＃２とＧＰＵ＃３との勾配情報が保持される。
【００２４】
ステップ２では、ステップ１と異なるＧＰＵ同士でペアが組まれ、データが転送される。図３に示される例では、ステップ２では、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３とがペアになり、データを転送し合う。ステップ２が終了すると、ＧＰＵ＃０〜ＧＰＵ＃３に含まれる各ニューロン層では、ＧＰＵ＃０〜ＧＰＵ＃３の勾配情報が保持され、各ＧＰＵの勾配情報の集約と共有とが完了する。
【００２５】
図４は、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式のアルゴリズムの一例を示す図である。図４では、図３と同様に、４つのＧＰＵ間で、４つのニューロン層の勾配情報（∇Ｅ）が集約され共有される場合の例が示されている。
【００２６】
Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式は、ノードが各々Ｍ／Ｎ（Ｍ：データサイズ、Ｎ：ＧＰＵ数）分の集約結果を持つようにノード間通信と、集約処理を行い、その後、全てのノードで集約したデータを共有する方法である。なお、図４においてノードはＧＰＵである。
【００２７】
図４に示される例では、ステップ１では、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３とがペアになり、ペア同士それぞれ１／２ずつ異なるニューロン層のデータを転送し合う。ステップ１が終了すると、ＧＰＵ＃０とＧＰＵ＃１とにおいて、それぞれ、ニューロン層のうちの異なる半分のニューロン層で、ＧＰＵ＃０とＧＰＵ＃１との勾配情報が保持される。ＧＰＵ＃２とＧＰＵ＃３とにおいて、それぞれ、ニューロン層のうちの異なる半分のニューロン層で、ＧＰＵ＃２とＧＰＵ＃３との勾配情報が保持される。
【００２８】
ステップ２では、ステップ１と異なるＧＰＵ同士でペアが組まれ、ステップ１のペアの相手のデータを有するニューロン層のデータのうちの半分、すなわち、各々１／４ずつ異なるデータが転送される。図４に示される例では、ステップ２では、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３とがペアになり、各々１／４ずつ異なるデータを転送し合う。ステップ２が終了すると、ＧＰＵ＃０〜ＧＰＵ＃３それぞれにおいて、４つのニューロン層のうちそれぞれ異なる１つのニューロン層でＧＰＵ＃０〜ＧＰＵ＃３の勾配情報が保持されている状態となる。
【００２９】
図４に示される例では、ステップ２の終了後に、４つのニューロン層それぞれについて、ＧＰＵ＃０〜ＧＰＵ＃１の勾配情報の集約が完了する。したがって、ステップ３以降は、集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を共有する処理となる。集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を共有する共有処理は、例えば、集約処理（図４ではステップ１とステップ２）と逆の順番で処理が行われる。
【００３０】
ステップ３では、例えば、ステップ２と同じペアが組まれ、集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む１つのニューロン層の勾配情報が転送される。集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む１つのニューロン層の勾配情報は、４つのニューロン層のうちの１つのニューロン層の情報であるため、ステップ３で送信されるデータ量は、１／４となる。
【００３１】
図４に示される例では、ステップ３では、例えば、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３とがペアになり、各々集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む１つのニューロン層の勾配情報を転送し合う。ステップ３が終了すると、ＧＰＵ＃０〜ＧＰＵ＃３それぞれにおいて、４つのニューロン層のうち２つのニューロン層でＧＰＵ＃０〜ＧＰＵ＃３の勾配情報が保持されている状態となる。
【００３２】
ステップ４では、例えば、ステップ１と同じペアが組まれ、集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む２つのニューロン層の勾配情報が転送される。集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む２つのニューロン層の勾配情報は、４つのニューロン層のうちの２つのニューロン層の情報であるため、ステップ４で送信されるデータ量は、１／２となる。
【００３３】
図４に示される例では、ステップ４では、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３とがペアになり、各々集約されたＧＰＵ＃０〜ＧＰＵ＃１の勾配情報を含む２つのニューロン層の勾配情報を転送し合う。ステップ４が終了すると、ＧＰＵ＃０〜ＧＰＵ＃３それぞれにおいて、４つの全ニューロン層でＧＰＵ＃０〜ＧＰＵ＃３の勾配情報が保持されている状態となり、各ＧＰＵの勾配情報の共有が完了する。
【００３４】
なお、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式において、全ＧＰＵの勾配情報が集約された後の、全ＧＰＵの勾配情報を共有する処理（図４ではステップ３以降のステップ）では、転送先のペアはいかようであってもよい。例えば、図４のステップ３において、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３とがペアを組み、ステップ４において、Ｇ
ＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３とがペアを組んでもよい。
【００３５】
図５は、Ｂｕｔｔｅｒｆｌｙ方式とＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式との比較表の一例である。ＧＰＵ数をＮ、勾配情報（∇Ｅ）のデータサイズをＭとする。Ｂｕｔｔｅｒｆｌｙ方式では、ステップ数はｌｏｇ［２］Ｎ（［］内は対数の底を示す）、１ＧＰＵ当たりの通信量及び演算量はＭ×ｌｏｇ２Ｎ、全ＧＰＵの通信量及び演算量の合計はＭ×ｌｏｇ［２］（Ｎ×Ｎ）である。Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式では、ステップ数は２×ｌｏｇ［２］Ｎ、１ＧＰＵ当たりの通信量は２×Ｍ以下、１ＧＰＵ当たりの演算量はＭ以下、全ＧＰＵの通信量の合計は２×Ｍ×（Ｎ−１）、全ＧＰＵの演算量の合計はＭ×（Ｎ−１）である。
【００３６】
Ｂｕｔｔｅｒｆｌｙ方式は、ステップ数は少ないものの、全ＧＰＵが全データを交換して集約処理を行うため、システム全体での通信量と演算量とが大きくなる。そのため、集約演算処理を高速に実行できる場合や、転送するデータサイズが小さい場合に有効なアルゴリズムである。
【００３７】
Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の方がステップ数は多くなるものの、通信量や演算量は少なくなる。そのため、ＧＰＵ数が多い場合や、転送するデータサイズが大きい場合に有効なアルゴリズムである。
【００３８】
いずれのアルゴリズムが有効であるのかは、ＧＰＵ数、データサイズ、通信帯域、ＧＰＵの接続関係等の条件に依存する。Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムの選択、各アルゴリズムにおける各ステップにおける転送ペアは、事前に設定される。そのため、ＧＰＵ数、データサイズ、通信帯域、ＧＰＵの接続関係等の条件に応じたアルゴリズム、各ステップにおける転送ペアを設定することによって、Ａｌｌ−Ｒｅｄｕｃｅ処理、ひいては、深層学習の学習処理を高速化することができる。なお、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムは、Ｂｕｔｔｅｒｆｌｙ方式、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式に限定されない。
【００３９】
なお、学習処理を行うＧＰＵの数は、２のＮ乗に限定されず、例えば、２のＮ乗ではない偶数であっても、奇数であってもよい。例えば、ＧＰＵの数が２のＮ乗＋Ｘ（１≦Ｘ＜２のＮ乗）である場合には、ＧＰＵのペアをＸ個作成し、当該Ｘ個のペアにおいて、まず、全データのデータ転送を行う。その後、Ｘ個のペアは１組とみなし、Ｘ個のペアと（２のＮ乗−Ｘ）個のＧＰＵとの２のＮ乗の組として、Ａｌｌ−Ｒｅｄｕｃｅ処理を行う。Ａｌｌ−Ｒｅｄｕｃｅ処理の終了後、Ｘ個のペア間で全データの交換を行う。したがって、学習処理を行う演算処理装置の数が２のＮ乗でない場合には、集約までのステップ数が２のＮ乗の場合よりも２ステップ多くなる。
【００４０】
具体的には、例えば、ＧＰＵ＃０〜＃６の７台（７＝２の２乗＋３、Ｎ＝２、Ｘ＝３）である場合には、例えば、まず、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃５の３（＝Ｘ）個のペア間で全データのデータ転送を行う。すると、ＧＰＵ＃０とＧＰＵ＃１については、ＧＰＵ＃０（０、１）が代表し、ＧＰＵ＃２とＧＰＵ＃３についは、ＧＰＵ＃２（２、３）が代表し、ＧＰＵ＃４とＧＰＵ＃５についてはＧＰＵ＃４（４、５）が代表すればよい。括弧内は、各ＧＰＵが保持する他のＧＰＵのデータを示す。
【００４１】
次に、ＧＰＵ＃０（０、１）、ＧＰＵ＃２（２、３）、ＧＰＵ＃４（４、５）、およびＧＰＵ＃６（６）の間で、Ａｌｌ−Ｒｅｄｕｃｅ処理を実行すればよい。Ｂｕｔｔｅｒｆｌｙ方式およびＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式のいずれの方式によっても、Ａｌｌ−Ｒｅｄｕｃｅ処理により、ＧＰＵ＃０、ＧＰＵ＃２、ＧＰＵ＃４、およびＧＰＵ＃６
には、すべてのノードの集約結果が得られる。
【００４２】
最後に、例えば、ＧＰＵ＃０からＧＰＵ＃１に、ＧＰＵ＃２からＧＰＵ＃３に、ＧＰＵ＃４からＧＰＵ＃５に、Ａｌｌ−Ｒｅｄｕｃｅ処理の結果をデータ転送すればよい。ただし、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合に、最初に実行するＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃５の３（＝Ｘ）個のペア間でのデータ転送と、最後に実行するＧＰＵ＃０からＧＰＵ＃１へ、ＧＰＵ＃２からＧＰＵ＃３へ、ＧＰＵ＃４からＧＰＵ＃５へのデータ転送と、ではデータ量が最も多くなる。そこで、最初と最後のデータ転送が行われるペア間は、最も大きな帯域を確保することが望ましい。
【００４３】
＜第１実施形態＞
図６は、第１実施形態に係る深層学習システム１００のシステム構成及びノードのハードウェア構成の一例を示す図である。第１実施形態に係る深層学習システム１００は、複数のノード１を備える。各ノード１を区別する場合には、ノード１−１、１−２、...１
−Ｎと表記する。各ノード１を区別しない場合には、単に、ノード１と表記する。第１実施形態においてノード１の数に限定がある訳ではない。深層学習システム１００は、「情報処理システム」の一例である。ノード１は、「情報処理装置」の一例である。
【００４４】
各ノード１は、ノード間高速ネットワーク２０で接続される。ノード間高速ネットワーク２０は、例えば、クロスバー、インターコネクト等とも呼ばれる。なお、ノード間高速ネットワーク２０は、どのようなネットワーク構成であってもよい。例えば、ノード間高速ネットワーク２０は、トーラス構造のメッシュであってもよいし、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）のようなバス型のネットワークであってもよい。
【００４５】
第１実施形態では、深層学習システム１００内のノード１のうち、いずれか１台のノード１が、Ａｌｌ−Ｒｅｄｕｃｅ処理において用いられるアルゴリズム及び当該アルゴリズムの各ステップにおけるＧＰＵの転送ペアを決定し、他のノード１に通知する。Ａｌｌ−Ｒｅｄｕｃｅ処理において用いられるアルゴリズム及び当該アルゴリズムの各ステップにおけるＧＰＵ  の転送ペアは、第１実施形態では、各ノード１に含まれる各ＧＰＵ間の通信帯域に基づいて決定される。ＧＰＵは、「演算処理装置」の一例である。転送ペアの相手のＧＰＵは、「転送先となる演算処理装置」の一例である。転送ペアは、「演算結果データを転送し合うペア」の一例である。
【００４６】
各ノード１は、学習処理サイクルにおけるＡｌｌ−Ｒｅｄｕｃｅ処理では、通知されたアルゴリズムと各ステップにおける転送ペアに従って、転送先のＧＰＵに勾配情報を転送する。勾配情報は、「演算結果データ」の一例である。
【００４７】
ノード１は、例えば、スーパーコンピュータ、汎用のコンピュータ、専用のコンピュータである。ノード１は、ハードウェア構成要素として、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）１１、ＣＰＵ用のメモリ１２、複数のＧＰＵ  １３、ＧＰＵ用の複数のメモリ１４を有する。ＣＰＵ  １１と各ＧＰＵ  １３とは、ノード内インタフェース（ＩＦ）１５によって接続される。さらにノード内ＩＦ  １５を介して、ＣＰＵ  １１と各ＧＰＵ  １３とは、ノード間ＩＦ  １６に接続される。各ＧＰＵ  １３は、区別しない場合には、単に、ＧＰＵ  １３と表記される。第１実施形態において、ＣＰＵ  １１は「制御部」の一例である。第１実施形態において、メモリ１２は、「記憶部」の一例である。
【００４８】
ＣＰＵ  １１は、メモリ１２に実行可能に展開されたコンピュータプログラムにしたがって、ノード１の処理、例えば、他のノード１との通信処理、または、各ＧＰＵ  １３を
制御し、管理する処理を実行する。ＣＰＵ  １１は、ＭＰＵ（Microprocessor）、プロセッサとも呼ばれる。ＣＰＵ  １１は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵ  １１がマルチコア構成を有していても良い。上記ＣＰＵ  １１の少なくとも一部の処理は、ＣＰＵ  １１以外のプロセッサ、例えば、ＧＰＵ  １３のいずれかで実行されてもよい。
【００４９】
メモリ１２は、例えば、ＲＡＭ（Random Access Memory）である。メモリ１２は、ＣＰＵ  １１で実行されるコンピュータプログラム、ＣＰＵ  １１が処理するデータを格納する。より具体的には、メモリ１２には、学習プログラム、転送ペア決定プログラム、接続帯域情報が保持されている。学習プログラムは、深層学習の学習処理を各ＧＰＵ  １３に実行させるためのプログラムである。転送ペア決定プログラムは、学習処理サイクル内のＡｌｌ−Ｒｅｄｕｃｅ処理におけるアルゴリズム、各ステップにおける勾配情報の転送ペアを決定するためのプログラムである。転送ペア決定プログラムは、例えば、学習プログラムに含まれるモジュールの一つであってもよい。
【００５０】
接続帯域情報は、深層学習システム１００内の各ＧＰＵ  １３間の通信帯域の情報である。接続帯域情報の詳細については後述される。なお、メモリ１２に保持されるプログラムは、学習プログラム、転送ペア決定プログラムに限定されない。例えば、メモリ１２には、ノード間通信のためのプログラムも保持されている。接続帯域情報は、「帯域情報」の一例である。
【００５１】
ＧＰＵ  １３は、例えば、高速のＶＲＡＭ（Video RAM）や高速の演算器を複数搭載し
、積和演算機能等を高速に実行する。ＧＰＵ  １３は、メモリ１４に実行可能に展開されたコンピュータプログラムにしたがって、ノード１の処理のうち、例えば、学習処理を実行する。ＧＰＵ  １３は、アクセラレータの一種である。ＧＰＵ  １３の代わりに他種のアクセラレータが用いられてもよい。
【００５２】
メモリ１４は、例えば、ＲＡＭである。メモリ１４は、ＧＰＵ  １３で実行されるコンピュータプログラム、ＧＰＵ  １３が処理するデータを格納する。メモリ１４は、例えば、各ＧＰＵ  １３につき１つずつ備えられてもよいし、各ＧＰＵ  １３につき１つのメモリ１４のうちの１つの分割領域が割り当てられてもよい。
【００５３】
上記ＣＰＵ  １１および各ＧＰＵ  １３の少なくとも一部の処理は、例えば、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、上記各部の少なくとも一部の処理は、集積回路（ＩＣ）、その他のディジタル回路で実行されてもよい。また、上記各部の少なくとも一部にアナログ回路が含まれても良い。集積回路は、ＬＳＩ，Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）を含む。
【００５４】
すなわち、ＣＰＵ  １１またはＧＰＵ  １３の処理の少なくとも一部は、プロセッサと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ）、ＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）、システムＬＳＩ、チップセットなどと呼ばれる。
【００５５】
ノード内ＩＦ  １５は、ＣＰＵ  １１および各ＧＰＵ  １３の、例えば、内部バスに接続され、ＣＰＵ  １１および各ＧＰＵ  １３を相互に接続する。また、ノード内ＩＦ  １５は、ＣＰＵ  １１および各ＧＰＵ  １３をノード間ＩＦ  １６に接続する。ノード内Ｉ
Ｆ  １５は、例えば、ＰＣＩ−Ｅｘｐｒｅｓｓの規格に従うバスである。
【００５６】
ノード間ＩＦ  １６は、ノード間高速ネットワーク２０を介してノード１０同士を接続するインタフェースである。
【００５７】
ノード１内のＧＰＵ  １３間の通信には、例えば、各ＧＰＵ  １３がＮＣＣＬ（NVIDIA
Collective Communications Library）等のソフトウェアを実行することによって行われる。ノード１間の通信には、例えば、ＭＰＩ（Message Passing Interface）が用いられ
る。ノード１間の通信は、例えば、ノード１のＣＰＵ  １１がＭＰＩ用のプログラムを実行することによって行われる。以下、ノード１内のＧＰＵ  １３間の通信を、ノード内通信と称する。また、異なるノード１間のＧＰＵ  １３間の通信を、ノード間通信と称する。
【００５８】
＜処理の流れ＞
図７は、ノード１における深層学習の学習処理のフローチャートの一例である。図７に示される処理は、例えば、ノード１のＣＰＵ  １１が学習プログラムを実行することによって達成される処理である。図７に示される処理は、深層学習システム１００内の各ノード１によって実行される処理である。なお、以下の説明で用いる図中には、ニューロン層ＮをＬａｙｅｒ  Ｎのように記述する。
【００５９】
図７に示される処理は、例えば、学習開始の指示の入力によって開始される。学習開始の指示は、例えば、深層学習システム１００内の全ノード１を制御する制御装置又はいずれかのノード１を通じて、深層学習システム１００の管理者から入力される。
【００６０】
ＣＰＵ  １１は、学習用データを読み込む（Ｓ１）。学習用データは、例えば、ノード１内のハードディスク等の記憶装置又はノード１の外部の記憶装置から読み出される。次に、ＣＰＵ  １１は、各ＧＰＵ  １３間の接続帯域情報の取得処理を実行する（Ｓ２）。接続帯域情報の取得処理によって、各ＧＰＵ  １３間の接続帯域情報が取得される。接続帯域情報の取得処理の詳細は後述される。
【００６１】
次に、ＣＰＵ  １１は、転送ペアの決定処理を行う（Ｓ３）。転送ペアの決定処理では、Ａｌｌ−Ｒｅｄｕｃｅ処理にかかる時間がより短くなるような、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズム及び当該アルゴリズムの各ステップにおける転送ペアが決定され、各ノード１間で共有される。転送ペアの決定処理の詳細は後述される。なお、転送ペアの決定処理を実行するノード１は、第１実施形態では、深層学習システム１００においていずれか１台のノード１である。したがって、ノード１が転送ペアの決定処理を実行しないノード１である場合には、当該ノード１は、Ｓ３では転送ペアの決定処理は行わず、他のノード１からＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズム及び当該アルゴリズムの各ステップにおける転送ペアの通知を受ける。
【００６２】
次に、ＣＰＵ  １１は、各ＧＰＵ  １３の学習処理を開始させる。Ｓ４〜Ｓ７の処理は、学習処理である。Ｓ４、Ｓ５、Ｓ７の処理は、各ＧＰＵ  １３によって実行される。各ＧＰＵ  １３は、フォーワード処理をすべてのニューロン層（ニューロン層１からＮ）において順次実行する（Ｓ４）。次に、各ＧＰＵ  １３は、バックワード処理をすべてのニューロン層（ニューロン層Ｎから１）において順次実行する（Ｓ５）。
【００６３】
次に、Ａｌｌ−Ｒｅｄｕｃｅ処理が行われる（Ｓ６）。Ａｌｌ−Ｒｅｄｕｃｅ処理の詳細は後述される。Ａｌｌ−Ｒｅｄｕｃｅ処理によって、深層学習システム１００内の全ＧＰＵ  １３間で、各ＧＰＵ  １３によって算出された勾配情報が共有される。なお、Ａｌｌ−Ｒｅｄｕｃｅ処理は、ノード１内のＧＰＵ  １３間の通信（ノード内通信）はＧＰＵ
１３によって行われ（ＮＣＣＬ等）、異なるノード１に含まれるＧＰＵ  １３間の通信（ノード間通信）はＣＰＵ  １１を介して行われる（ＭＰＩ等）。
【００６４】
次に、各ＧＰＵ  １３は、勾配情報の平均値に基づいて重みパラメタを更新するアップデート処理を行う（Ｓ７）。次に、各ＧＰＵ  １３は、学習処理の繰り返しを終了するか否かを判定する（Ｓ８）。ここで、各ＧＰＵ  １３は、例えば、対象の学習データについての学習が収束していない場合、又は、予め指定された学習処理回数に達していない場合には、処理をＳ４に戻し、学習処理サイクルを繰り返し実行する（Ｓ８でＮＯ）。一方、各ＧＰＵ  １３は、例えば、対象の学習データについて学習が収束し、且つ、予め指定された学習処理回数に達した場合には、学習処理サイクルを終了し、図７に示される処理が終了する（Ｓ８でＹＥＳ）。学習が収束するとは、例えば、勾配情報が所定の許容値の範囲で０に近づくことである。
【００６５】
図８は、ノード１の接続帯域情報の取得処理のフローチャートの一例である。図８に示される処理は、例えば、各ノード１において実行される処理である。また、図８に示される処理は、図７のＳ２において実行される処理である。
【００６６】
ノード１のＣＰＵ  １１は、自ノード１内の各ＧＰＵ  １３の接続帯域情報を取得可能か否かを判定する（Ｓ１１）。例えば、接続帯域情報は、各ＧＰＵ  １３のドライバ等から取得可能である。自ノード１内の各ＧＰＵ  １３の接続帯域情報が取得可能である場合には（Ｓ１１でＹＥＳ）、ＣＰＵ  １１は、各ＧＰＵ  １３から接続帯域情報を取得する（Ｓ１２）。
【００６７】
接続帯域情報が取得可能でない場合には（Ｓ１１でＮＯ）、ＣＰＵ  １１は、ＧＰＵ  １３間の接続帯域を測定する（Ｓ１３）。例えば、ＣＰＵ  １１は、ＧＰＵ  １３間で所定量のデータ転送と転送時間の測定を指示すればよい。ＧＰＵ  １３は、ＣＰＵ  １１から指示された接続帯域の測定結果をＣＰＵ  １１に報告すればよい。
【００６８】
次に、ＣＰＵ  １１は、例えば、ＭＰＩのプロセス間通信によって、取得した接続帯域情報を他のノード１に転送し、また、他のノード１から他のノード１内の接続帯域情報を受信する（接続帯域情報の交換）（Ｓ１４）。ＣＰＵ  １１は、例えば、取得した接続帯域情報をファイルに出力してメモリ１２に格納する（Ｓ１５）。その後、図８に示される処理が終了し、図７のＳ３に処理が進む。なお、ノード間通信となるＧＰＵ  １３間の接続帯域は、例えば、ノード間高速ネットワーク２０の帯域が採用される。
【００６９】
図９は、転送ペアの決定処理のフローチャートの一例である。図９に示される処理は、第１実施形態では、転送ペアの決定処理を実行するノード１のＣＰＵ  １１が転送ペア決定プログラムを実行することによって行われる処理である。また、図９に示される処理は、図７のＳ３において実行される処理である。
【００７０】
まず、アルゴリズムループが開始される。アルゴリズムループは、Ｓ２１からＳ２３の処理を含む。アルゴリズムループは、対象とするＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムの数と同じ回数繰り返し実行される。
【００７１】
アルゴリズムループでは、まず、ＣＰＵ  １１は、ステップ数と、各ステップｉの転送量情報Ｔｉ（ｉ：正の整数）とを取得する（Ｓ２１）。転送量情報Ｔｉは、例えば、ステップｉにおける１ＧＰＵ当たりのデータ転送量である。ステップ数は、「前記各演算処理装置の演算結果データが前記各演算処理装置間で共有されるまでに要するステップ数」の一例である。転送量情報は、「転送データ量」の一例である。
【００７２】
例えば、ＧＰＵ数が２のＮ乗である場合には、Ｂｕｔｔｅｒｆｌｙ方式では、ステップ数はｌｏｇ［２］Ｎ（［］内は対数の底を示す）であり、ステップｉにおける転送量情報ＴｉはＭである。例えば、ＧＰＵ数が２のＮ乗以外である場合（ＧＰＵ数＝２のＮ乗＋Ｘである場合）には、Ｂｕｔｔｅｒｆｌｙ方式では、ステップ数は２＋ｌｏｇ［２］Ｎであり、ステップｉにおける転送量情報ＴｉはＭである。なお、ＮはＧＰＵの数、Ｍは各ＧＰＵのデータサイズである。
【００７３】
例えば、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式では、ＧＰＵ数が２のＮ乗である場合には、ステップ数は２×ｌｏｇ［２］Ｎである。ステップ１からステップＳ（Ｓ＝ｌｏｇ［２］Ｎ）まで（集約処理）のステップｉにおける転送量情報ＴｉはＭ／２＾ｉである。ステップＳ＋１からステップ２×Ｓまで（共有処理）のステップｉにおける転送量情報ＴｉはＭ／２＾（２×Ｓ−ｉ＋１）である。
【００７４】
例えば、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式では、ＧＰＵ数が２のＮ乗以外である場合（ＧＰＵ数＝２のＮ乗＋Ｘである場合）には、ステップ数は２＋２×ｌｏｇ［２］Ｎである。ステップ１と最終ステップとにおける転送量情報ＴｉはＭである。ステップ２からステップＳ（Ｓ＝１＋ｌｏｇ［２］Ｎ）まで（集約処理）のステップｉにおける転送量情報ＴｉはＭ／２＾ｉである。ステップＳ＋１からステップ２×Ｓ−１まで（共有処理）のステップｉにおける転送量情報ＴｉはＭ／２＾（２×Ｓ−ｉ）である。
【００７５】
次に、ステップループが開始される。ステップループは、Ｓ２２の処理を含む。ステップループは、対象のＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムのステップの数と同じ回数繰り返し実行される。
【００７６】
ステップループでは、ＣＰＵ  １１は、対象ステップにおける転送ペアを決定する（Ｓ２２）。ＣＰＵ  １１は、ステップｉにおいて選択可能な全バリエーションの転送ペアを取得する。例えば、ＧＰＵ数が４である場合には、Ｂｕｔｔｅｒｆｌｙ方式では、Ａｌｌ−Ｒｅｄｕｃｅ処理全体を通じて、６通りの転送ペアの組合せが取得される。Ｓ２２の処理が終了すると、ステップループが終了する。
【００７７】
ステップループが終了すると、ＣＰＵ  １１は、転送ペアの各組合せについて、Ａｌｌ−Ｒｅｄｕｃｅ処理全体に係る時間コストを算出する（Ｓ２３）。時間コストは、例えば、ステップｉにおける転送ペアのうち最も遅い帯域（ｍｉｎ（Ｗｍ，ｎ））の転送ペアにおける転送時間（Ｔｉ／ｍｉｎ（Ｗｍ，ｎ））の、全ステップの合計として算出される。具体的には、転送ペアの各組合せの時間コストは、以下の数式１で示される。転送ペアの各組合せの時間コストは、「第１の時間」の一例である。
【数１】
2019067084.tif 000003
【００７８】
アルゴリズムループが終了すると、ＣＰＵ  １１は、転送ペアの組合せを選択する（Ｓ２４）。例えば、ＣＰＵ  １１は、時間コストの最も小さい転送ペアの組合せを選択する。なお、転送ペアの組合せは複数組選択されてもよい。例えば、ＣＰＵ  １１は、時間コストの小さい上位所定数の転送ペアの組合せを選択してもよい。または、例えば、ＣＰＵ
１１は、時間コストが、最も小さい時間コスト＋α内である転送ペアの組合せを選択してもよい。許容範囲＋αは、例えば、最も小さい時間コストの５％である。
【００７９】
次に、ＣＰＵ  １１は、他のノード１のメモリ１０２に、ステップ数、各ステップにおける転送量情報、各ステップにおける転送ペアの情報を含むＡｌｌ−Ｒｅｄｕｃｅ情報を
転送する。その後、図９に示される処理が終了し、処理が図７のＳ４に進む。
【００８０】
図１０は、Ａｌｌ−Ｒｅｄｕｃｅ処理のフローチャートの一例である。図１０に示される処理は、図７のＳ６において実行される処理である。図１０に示される処理は、深層学習システム１００内の各ノード１において実行される。
【００８１】
Ｓ３１とＳ３２の処理は、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムの１ステップの処理に相当する。まず、各ＧＰＵ  １３は、各ニューロン層の勾配情報（∇Ｅ）をＡｌｌ−Ｒｅｄｕｃｅ情報に従った転送ペアのＧＰＵ  １３のメモリ１４に転送する（Ｓ３１）。このとき、転送ペアの相手であるＧＰＵ  １３が自ノード１内に存在する場合には、ＧＰＵ  １３は、例えば、ＮＣＣＬを用いて、当該転送ペアの相手のＧＰＵ  １３のメモリ１４に勾配情報（∇Ｅ）を転送する。
【００８２】
このとき、転送ペアの相手のＧＰＵ  １３が他のノード１内に存在する場合には、ＧＰＵ  １３はＣＰＵ  １１のメモリ１２に勾配情報（∇Ｅ）を転送する。ＣＰＵ  １１は、例えば、ＭＰＩを用いて、当該勾配情報（∇Ｅ）を転送ペアの相手のＧＰＵ  １３を有する他のノード１のＣＰＵ  １１に転送する。転送ペアの相手のＧＰＵ  １３を有するノード１のＣＰＵ  １１は、当該勾配情報を転送ペアの相手のＧＰＵ  １３に転送する。
【００８３】
次に、各ＧＰＵ  １３は、転送された勾配情報（∇Ｅ）と保持している勾配情報とに基づいて、集約演算処理を行う（Ｓ３２）。集約演算処理は、例えば、ＧＰＵ  １３が保持している勾配情報（∇Ｅ）と転送された勾配情報（∇Ｅ）との平均値を算出する処理である。Ｓ３１、Ｓ３２で送信される勾配情報（∇Ｅ）のデータサイズ等は、実行されているＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムに従う。
【００８４】
次に、ＣＰＵ  １１は、深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したか否かを判定する（Ｓ３３）。深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したか否かは、例えば、実行されているＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムと、現在のステップ数とに基づいて判定される。例えば、Ｂｕｔｔｅｒｆｌｙ方式である場合には、全ステップの終了によって、ＣＰＵ  １１は、深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したと判定する。例えば、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式である場合には、全ステップ数の半分が終了することによって、ＣＰＵ  １１は、深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したと判定する。
【００８５】
深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したと判定されない場合には（Ｓ３３でＮＯ）、Ａｌｌ−Ｒｅｄｕｃｅ処理の次のステップについてＳ３１、Ｓ３２の処理が実行される。
【００８６】
深層学習システム１００内の全ＧＰＵ  １３の勾配情報の集約が終了したと判定した場合には（Ｓ３３でＹＥＳ）、ＣＰＵ  １１は、集約された勾配情報の共有が終了したか否かを判定する（Ｓ３４）。集約された勾配情報の共有が終了したか否かは、例えば、実行されているＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムと、現在のステップ数とに基づいて判定される。
【００８７】
例えば、Ｂｕｔｔｅｒｆｌｙ方式、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式である場合には、全ステップが終了したことによって、ＣＰＵ  １１は、深層学習システム１００内の全ＧＰＵ  １３で勾配情報の共有が終了したと判定する。
【００８８】
集約された勾配情報の共有が終了したと判定されない場合には（Ｓ３４でＮＯ）、各Ｇ
ＰＵ  １３は、現在のステップにおける転送ペアのＧＰＵ  １３に集約された勾配情報を転送する（Ｓ３５）。Ｓ３５の処理は、Ｓ３１の処理と同様である。なお、実行されているＡｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムがＢｕｔｔｅｒｆｌｙ方式である場合には、Ｓ３５の共有に係る転送処理は実行されない。
【００８９】
集約された勾配情報の共有が終了したと判定された場合には（Ｓ３４でＹＥＳ）、図１０に示される処理が終了し、処理が図７のＳ７に進む。
【００９０】
＜具体例１＞
図１１は、具体例１に係る深層学習システム１００Ａのシステム構成を示す図である。図１１は、深層学習システム１００Ａに存在するＧＰＵ  １３の接続関係を示すための図であり、簡略化のため、ＧＰＵ  １３以外の構成要素は省略されている。以下、具体例２及び具体例３についても同様である。
【００９１】
具体例１に係る深層学習システム１００Ａは、ノード＃１とノード＃２との２台のノードを含む。ノード＃１は、ＧＰＵ＃０〜＃３の４台のＧＰＵ  １３を備える。ノード＃２は、ＧＰＵ＃４〜＃７の４台のＧＰＵ  １３を備える。
【００９２】
具体例１では、ノード＃１及びノード＃２それぞれの内部におけるＧＰＵ  １３間の階層構造はなく、ノード内通信における同じ通信帯域であるとする。一方、ノード＃１内のＧＰＵ  １３とノード＃２内のＧＰＵ１３とのノード間通信の通信帯域は、ノード内通信の帯域よりも小さいこととする。
【００９３】
図１２は、具体例１における接続帯域情報の一例を示す図である。図１２の表は、縦に転送元（Ｆｒｏｍ：ｍ）、横に転送先（Ｔｏ：ｎ）となるＧＰＵ  １３の識別情報が並べられている。図１２に示される例では、転送ペアの数値が大きいほど通信帯域が大きいことが示される。図１２に示される例では、同一のノード１内のＧＰＵ  １３同士の接続帯域情報は８、異なるノード１間のＧＰＵ  １３同士の接続帯域情報は１、と示されている。なお、図１２に示される接続帯域情報の数値は、各ＧＰＵ間の通信帯域の速度の違いを表すための一例として採用された数値であり、接続帯域情報は、これらの値に限定されない。
【００９４】
図１３は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。図１３では、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。図１３では、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる組合せは、白塗りのマス内の接続帯域情報が円で囲まれて示されている。図１３中の黒塗りのマスは、選択できない組合せを示す。以下、図１４、図１５でも同様である。
【００９５】
具体的には、図１３には、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃５、ＧＰＵ＃６とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も８であるので、図１３に示されるステップ１における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は８である。
【００９６】
図１４は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。図１４には、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアが図１３に示される転送ペアである場合の、ステップ２における転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアうちの一つが示さ
れている。
【００９７】
まず、ステップ１における転送ペアの相手の識別番号が、各ＴｏのＧＰＵの付加情報に追加される。付加情報に記されている識別番号のＧＰＵのデータは既に保持しているので、集約処理の段階で、付加情報に記されている識別番号のＧＰＵとペアを組むことはないため、ＴｏのＧＰＵについて、付加情報に記されているＦｒｏｍのＧＰＵとのマスは黒塗りとなる。
【００９８】
ステップ２における転送ペアは、白塗りの中から選択される。図１４において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃６、ＧＰＵ＃５とＧＰＵ＃７の転送ペアが示されている。また、いずれの転送ペア間の通信帯域も８であるので、図１４に示されるステップ２における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は８である。
【００９９】
図１５は、具体例１におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。図１５は、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１、ステップ２における転送ペアが、それぞれ、図１３、図１４に示される転送ペアである場合の、ステップ３において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１００】
まず、１つ前のステップ２における転送ペアの相手の識別番号が、各ＴｏのＧＰＵの付加情報に追加される。各ＴｏのＧＰＵについて、付加情報に追加されたＦｒｏｍのＧＰＵとのマスが新たに黒塗りとなる。
【０１０１】
図１５では、ＦｒｏｍのＧＰＵ＃０〜＃３とＴｏのＧＰＵ＃０〜３との組合せ、ＦｒｏｍのＧＰＵ＃４〜＃７とＴｏのＧＰＵ＃４〜＃７との組合せのマスが黒塗り、すなわち、選択できなくなっている。
【０１０２】
ステップ３における転送ペアの組合せは、白塗りの中から選択される。図１５において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃４、ＧＰＵ＃１とＧＰＵ＃５、ＧＰＵ＃２とＧＰＵ＃６、ＧＰＵ＃３とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も１であるので、図１５に示されるステップ３における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は１である。
【０１０３】
Ｂｕｔｔｅｒｆｌｙ方式でＧＰＵ数が８台の場合には、ステップ３でＡｌｌ−Ｒｅｄｕｃｅ処理の全ステップが終了となる。Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式でＧＰＵ数８台の場合には、ステップ３で集約処理が終了し、ステップ４以降は共有処理が行われる。Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の共有処理では、例えば、ステップ４ではステップ３と同じ転送ペア、ステップ５ではステップ２と同じ転送ペア、ステップ６ではステップ１と同じ転送ペアで共有処理が行われようにしてもよい。具体例１では、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の共有処理の各ステップにおける転送ペアは、上述の通りとする。
【０１０４】
図１６は、具体例１におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。図１６に示される例では、ステップ１〜３（集約処理）それぞれにおける転送ペアは、図１３〜図１５で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。図１６に示される例では、ステップ４〜６（共有処理）それぞれにおける転送ペアは、ステップ３〜１と同様、す
なわち、図１５〜図１３で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。
【０１０５】
図１６では、各ステップについて、転送量情報Ｔｉと最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）とが示されている。
【０１０６】
第１実施形態において、Ａｌｌ−Ｒｅｄｕｃｅ処理の各ステップにおける時間コストは、全転送ペアのうちの最大転送時間で示され、各ステップの時間コストは、各ステップの転送量情報Ｔｉ／最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）で示される。したがって、アルゴリズムの全ステップ合計の時間コストは、各ステップの時間コストの合計で示される（数式１参照）。
【０１０７】
図１６に示されるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの場合には、時間コストは、７／８×Ｍとなる。Ｂｕｔｔｅｒｆｌｙ方式の場合には、図１６に示されるステップ１〜３の転送ペアの組合わせの時間コストは、各ステップにおける転送量情報ＴｉはＭであるので、５／４×Ｍとなる。
【０１０８】
すなわち、図１６に示される転送ペアの組合せとなる場合には、時間コストがより小さいＨａｌｖｉｎ／Ｄｏｕｂｌｉｎｇ方式が選択される。
【０１０９】
図１７は、図１６に示されるステップ１とステップ２とにおける転送ペアの組合せのバリエーションの一例を示す図である。図１７に示されるＡ１のステップ１とステップ２との転送ペアの組合せは、図１６に示されるステップ１とステップ２と同じ転送ペアの組合せである。
【０１１０】
図１７に示されるＡ２、Ａ３のステップ１とステップ２との転送ペアの組合せは、Ａ１のステップ１とステップ２との転送ペアの組み合わせと、転送量情報Ｔｉと転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）とが同じ値となる組合せである。すなわち、図１６において、ステップ１とステップ２との転送ペアの組合せは、図１７に示されるＡ２又はＡ３のステップ１とステップ２との転送ペアの組合せであってもよい。また、複数の組合せが選択される場合には、ステップ１とステップ２との転送ペアの組合せが図１７に示されるＡ２又はＡ３のステップ１とステップ２との転送ペアの組合せであるものも選択されてもよい。
【０１１１】
図１８は、図１６に示されるステップ３における転送ペアのバリエーションの一例を示す図である。図１８に示されるＢ１の転送ペアは、図１６に示されるステップ３と同じ転送ペアである。
【０１１２】
図１８に示されるＢ２〜Ｂ４の転送ペアは、Ｂ１の転送ペアと、転送量情報Ｔｉと転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）とが同じ値となる転送ペアである。すなわち、図１６において、ステップ３の転送ペアは、図１８に示されるＢ２〜Ｂ４のいずれかの転送ペアであってもよい。また、複数の転送ペアの組合せが選択される場合には、ステップ３の転送ペアが図１８に示されるＢ２〜Ｂ４の転送ペアであるものも選択されてもよい。
【０１１３】
なお、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図１６のステップ４の転送ペアは、図１８のＢ２〜Ｂ４のいずれかの転送ペアであってもよい。また、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図１６のステップ５、ステップ６の転送ペアの組合せは、図１７のＡ１、Ａ２のいずれかのステップ２、ステップ１の転送ペアの組合せであってもよい。
【０１１４】
＜具体例２＞
図１９は、具体例２に係る深層学習システム１００Ｂのシステム構成を示す図である。具体例２に係る深層学習システム１００Ｂは、ノード＃１、ノード＃２、ノード＃３、ノード＃４の４台のノードを含む。ノード＃１は、ＧＰＵ＃０、ＧＰＵ＃１の２台のＧＰＵ
１３を備える。ノード＃２は、ＧＰＵ＃３、ＧＰＵ＃４の２台のＧＰＵ  １３を備える。ノード＃３は、ＧＰＵ＃４、ＧＰＵ＃５の２台のＧＰＵ  １３を備える。ノード＃４は、ＧＰＵ＃６、ＧＰＵ＃７の２台のＧＰＵ  １３を備える。
【０１１５】
具体例２では、ノード＃１〜ノード＃４それぞれの内部において、２台のＧＰＵ間で階層構造はないものとする。一方、具体例２における深層学習システム１００Ｂでは、異なるノード間の通信には、階層構造が存在している。ノード＃１とノード＃２、ノード＃３とノード＃４とはペアであり、ペアのノード同士の通信は、ペアでないノード同士の通信よりも高速であるとする。すなわち、具体例２における深層学習システム１００Ｂでは、ＧＰＵ間の通信は、ノード内通信＞ペアのノード間通信＞ペアでないノード間通信の順で高速となる。
【０１１６】
図２０は、具体例２における接続帯域情報の一例を示す図である。図２０に示される例では、同一のノード１内のＧＰＵ同士の接続帯域情報は８、ペアのノードのＧＰＵ間の接続帯域情報は４、ペアでないノードのＧＰＵ間の接続帯域情報は１、と示されている。
【０１１７】
図２１は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。図２１では、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１１８】
具体的には、図２１には、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃１、ＧＰＵ＃２とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃５、ＧＰＵ＃６とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も８であるので、図２１に示されるステップ１における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は８である。
【０１１９】
図２２は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。図２２には、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアが図２１に示される転送ペアである場合の、ステップ２において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１２０】
図２２において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃６、ＧＰＵ＃５とＧＰＵ＃７の転送ペアが示されている。また、いずれの転送ペア間の通信帯域も４であるので、図２２に示されるステップ２における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は４である。
【０１２１】
図２３は、具体例２におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。図２３は、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１、ステップ２における転送ペアが、それぞれ、図２１、図２２に示される転送ペアである場合の、ステップ３において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１２２】
まず、１つ前のステップ２における転送ペアの相手の識別番号が、各ＴｏのＧＰＵの付加情報に追加される。各ＴｏのＧＰＵについて、付加情報に追加されたＦｒｏｍのＧＰＵとのマスが新たに黒塗りとなる。
【０１２３】
図２３において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃４、ＧＰＵ＃１とＧＰＵ＃５、ＧＰＵ＃２とＧＰＵ＃６、ＧＰＵ＃３とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も１であるので、図２３に示されるステップ３における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は１である。
【０１２４】
具体例１と同様に、具体例２でも、ＧＰＵ数が８台であるので、Ｂｕｔｔｅｒｆｌｙ方式の場合、ステップ３でＡｌｌ−Ｒｅｄｕｃｅ処理の全ステップが終了となる。Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合、ＧＰＵ数が８台であるので、ステップ６まで続く。具体例２でも、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の共有処理の各ステップにおける転送ペアは、集約処理の逆の順の各ステップにおける転送ペアとする。
【０１２５】
図２４は、具体例２におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。図２４に示される例では、ステップ１〜３（集約処理）それぞれにおける転送ペアは、図２１〜図２３で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。図２４に示される例では、ステップ４〜６（共有処理）それぞれにおける転送ペアは、ステップ３〜１と同様、すなわち、図２３〜図２１で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。
【０１２６】
図２４に示されるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの場合には、時間コストは、１／２×Ｍとなる。Ｂｕｔｔｅｒｆｌｙ方式の場合には、図２４に示されるステップ１〜３の転送ペアの組み合わせとなり、各ステップにおける転送量情報ＴｉはＭであるので、時間コストは、１１／８×Ｍとなる。
【０１２７】
すなわち、図２４に示される転送ペアの組合せとなる場合には、時間コストがより小さいＨａｌｖｉｎ／Ｄｏｕｂｌｉｎｇ方式が選択される。
【０１２８】
図２５は、図２４に示されるステップ２における転送ペアのバリエーションの一例を示す図である。図２５に示されるＣ１のステップ２の転送ペアは、図２４に示されるステップ２と同じ転送ペアである。
【０１２９】
図２５に示されるＣ２の転送ペアは、Ｃ１の転送ペアと、転送量情報Ｔｉと転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）とが同じ値となる組合せである。すなわち、図２４において、ステップ２の転送ペアは、図２５に示されるＣ２の転送ペアであってもよい。また、複数の組合せが選択される場合には、ステップ２の転送ペアが図２５に示されるＣ２の転送ペアであるものも選択されてもよい。
【０１３０】
なお、図２４のステップ３の転送ペアのバリエーションは、具体例１の図１８に示される転送ペアと同様である。
【０１３１】
なお、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図２４のステップ５の転送ペアは、図２５のＣ２の転送ペアであってもよい。また、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図２４のステップ３、４の転送ペアの組合せは、図１８のＢ２〜Ｂ４のいずれかの転送ペアの組合せであってもよい。
【０１３２】
＜具体例３＞
具体例３に係る深層学習システムのシステム構成は、具体例１と同様である。具体例３では、ＧＰＵ＃３からＧＰＵ＃２への接続に異常が発生し、ＧＰＵ＃３からＧＰＵ＃２への通信帯域が低下した場合が想定される。なお、双方向バスでＧＰＵ間が接続される場合には、ＧＰＵ＃３からＧＰＵ＃２への接続と、ＧＰＵ＃２からＧＰＵ＃３への接続への通信帯域の値は同じとなるが、片方向バスでは片方向の障害が発生し得る。
【０１３３】
図２６は、具体例３における接続帯域情報の一例を示す図である。図２６に示される例では、同一のノード１内のＧＰＵ同士の接続帯域情報は８、異なるノードのＧＰＵ間の接続帯域情報は８、と示されている。また、具体例３では、ＧＰＵ＃３からＧＰＵ＃２への通信帯域が低下していることが想定されるので、ＧＰＵ＃３からＧＰＵ＃２への接続帯域情報は０．５と低い値となっている。
【０１３４】
図２７は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアの一例を示す図である。図２１では、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１３５】
具体的には、図２７には、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃２、ＧＰＵ＃１とＧＰＵ＃３、ＧＰＵ＃４とＧＰＵ＃６、ＧＰＵ＃５とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も８であるので、図２７に示されるステップ１における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は８である。
【０１３６】
具体例１とは異なって、具体例３では、ＧＰＵ＃３からＧＰＵ＃２への接続帯域情報は０．５であるため、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる組合せから、ＧＰＵ＃３とＧＰＵ＃２とのペアを含む組合せは除外される。
【０１３７】
図２８は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ２における転送ペアの一例を示す図である。図２８には、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１における転送ペアが図２７に示される転送ペアである場合の、ステップ２において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１３８】
図２８において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃３、ＧＰＵ＃１とＧＰＵ＃２、ＧＰＵ＃４とＧＰＵ＃７、ＧＰＵ＃５とＧＰＵ＃６の転送ペアが示されている。また、いずれの転送ペア間の接続帯域情報も８であるので、図２８に示されるステップ２における転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）は８である。
【０１３９】
図２９は、具体例３におけるＡｌｌ−Ｒｅｄｕｃｅ処理のステップ３における転送ペアの一例を示す図である。図２９は、Ａｌｌ−Ｒｅｄｕｃｅ処理のステップ１、ステップ２における転送ペアが、それぞれ、図２７、図２８に示される転送ペアである場合の、ステップ３において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアの一つが示されている。
【０１４０】
図２９において、転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアとして、ＧＰＵ＃０とＧＰＵ＃４、ＧＰＵ＃１とＧＰＵ＃５、ＧＰＵ＃２とＧＰＵ＃６、ＧＰＵ＃３とＧＰＵ＃７との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も１であるので、図２９に示されるステップ３における転送ペア間の最小の通信帯
域ｍｉｎ（Ｗｍ，ｎ）は１である。
【０１４１】
具体例１と同様に、具体例３でも、ＧＰＵ数が８台であるので、Ｂｕｔｔｅｒｆｌｙ方式の場合、ステップ３でＡｌｌ−Ｒｅｄｕｃｅ処理の全ステップが終了となる。Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合、ＧＰＵ数が８台であるので、ステップ６まで続く。具体例３でも、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の共有処理の各ステップにおける転送ペアは、集約処理の逆の順の各ステップにおける転送ペアとする。
【０１４２】
図３０は、具体例３におけるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの一例を示す図である。図３０に示される例では、ステップ１〜３（集約処理）それぞれにおける転送ペアは、図２７〜図２９で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。図３０に示される例では、ステップ４〜６（共有処理）それぞれにおける転送ペアは、ステップ３〜１と同様、すなわち、図２９〜図２７で示される、各ステップにおいて転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）が最大となる転送ペアである。
【０１４３】
図３０に示されるＨａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の転送ペアの組合せの場合には、時間コストは、７／１６×Ｍとなる。Ｂｕｔｔｅｒｆｌｙ方式の場合には、図３０に示されるステップ１〜３の転送ペアの組み合わせとなり、各ステップにおける転送量情報ＴｉはＭであるので、時間コストは、５／４×Ｍとなる。
【０１４４】
すなわち、図３０に示される転送ペアの組合せとなる場合には、時間コストがより小さいＨａｌｖｉｎ／Ｄｏｕｂｌｉｎｇ方式が選択される。なお、具体例３は具体例１と同じシステム構成であるが、ＧＰＵ＃３からＧＰＵ＃２への通信帯域が低下していることが想定されるので、具体例３における採用される転送ペアの組合せ（図３０の転送ペアの組合せ）は、具体例１（図１６の転送ペアの組合せ）とは異なるものが採用される。
【０１４５】
図３１は、図３０に示されるステップ１とステップ２とにおける転送ペアの組合せのバリエーションの一例を示す図である。図３１に示されるＤ１のステップ１とステップ２との転送ペアの組合せは、図３０に示されるステップ１とステップ２と同じ転送ペアの組合せである。
【０１４６】
図３１に示されるＤ２のステップ１とステップ２との転送ペアの組合せは、Ｄ１のステップ１とステップ２との転送ペアの組み合わせと、転送量情報Ｔｉと転送ペア間の最小の通信帯域ｍｉｎ（Ｗｍ，ｎ）とが同じ値となる組合せである。すなわち、図３０において、ステップ１とステップ２との転送ペアの組合せは、図３１に示されるＤ２のステップ１とステップ２との転送ペアの組合せであってもよい。また、複数の組合せが選択される場合には、ステップ１とステップ２との転送ペアの組合せが図３１に示されるＤ２のステップ１とステップ２との転送ペアの組合せであるものも選択されてもよい。
【０１４７】
なお、図３０のステップ３の転送ペアのバリエーションは、具体例１の図１８に示される転送ペアの組み合わせと同様である。
【０１４８】
なお、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図３０のステップ４の転送ペアは、図１８のＢ２〜Ｂ４のいずれかの転送ペアであってもよい。また、Ｈａｌｖｉｎｇ／Ｄｏｕｂｌｉｎｇ方式の場合には、図３０のステップ５、ステップ６の転送ペアの組合せは、図３１のＤ２のステップ２、ステップ１の転送ペアの組合せであってもよい。
【０１４９】
＜第１実施形態の作用効果＞
第１実施形態では、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズム、当該アルゴリズムの各
ステップにおける転送ペアの組合せの中から、Ａｌｌ−Ｒｅｄｕｃｅ処理にかかる時間が短いアルゴリズム、当該アルゴリズムの各ステップにおける転送ペアの組合せが選択される。これによって、深層学習システム１００におけるＡｌｌ−Ｒｅｄｕｃｅ処理にかかる時間を短くすることができる。
【０１５０】
また、第１実施形態では、学習処理の実行の度に各ＧＰＵ間の接続帯域情報が取得される。このため、一部のＧＰＵ間の接続に不具合が発生し、当該ＧＰＵ間の帯域が低下した場合には、Ａｌｌ−Ｒｅｄｕｃｅ処理の各ステップにおいて当該ＧＰＵのペアが含まれない転送ペアの組合せが選択される（例えば、具体例３参照）。したがって、第１実施形態によれば、ＧＰＵ間の接続に不具合が生じた場合でも、Ａｌｌ−Ｒｅｄｕｃｅ処理にかかる時間が短くなるようなアルゴリズム、各ステップにおける転送ペアの組み合わせを選択することができる。
【０１５１】
また、第１実施形態では、転送ペアの組合せの選択は、例えば、データの転送量と、ＧＰＵ間の通信帯域とに基づいて算出される時間コストに基づいて行われる。また、各ステップにおける時間コストは、最も通信帯域が小さい転送ペアの通信帯域を用いて算出される。したがって、各ステップにおいて選択される転送ペアの組合せは、通信帯域が最小の転送ペアの通信帯域が、転送ペアの組合せのうち最大となる転送ペアの組合せである。したがって、第１実施形態によれば、Ａｌｌ−Ｒｅｄｕｃｅ処理にかかる時間が最も小さいアルゴリズム、各ステップにおける転送ペアの組合せが選択される。
【０１５２】
また、第１実施形態では、転送ペアの組合せは複数選択されてもよい。転送ペアの組合せが複数選択され、各ノード１に通知されることによって、例えば、１つの転送ペアの組合せに従って行われたＡｌｌ−Ｒｅｄｕｃｅ処理が失敗した場合でも、再度転送ペアの決定処理を行わなくても、直ちに、他の転送ペアの組合せを用いてＡｌｌ−Ｒｅｄｕｃｅ処理を実行することができる。
【０１５３】
なお、第１実施形態におけるＧＰＵ間の接続帯域情報の取得処理（図８参照）は、学習処理の一部として実行されることに限定されず、例えば、周期的に、又は、深層学習システム１００の管理者からの指示入力に従って、実行されてもよい。
【０１５４】
なお、第１実施形態では、深層学習システム１００内のいずれか１台のノード１のＣＰＵ  １１が転送ペアの決定処理（図９参照）を行うが、これに限定されない。例えば、深層学習システム１００内の複数のノード１がそれぞれ転送ペアの決定処理を実行し、それぞれが選択したＡｌｌ−Ｒｅｄｕｃｅの処理と各ステップにおける転送ペアの組合せとを交換し合ってもよい。また、深層学習システム１００内の全ノード１を制御する制御装置が、接続帯域情報の取得処理と転送ペアの決定処理とを実行し、各ノード１に、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズムと各ステップにおける転送ペアとを通知してもよい。
【０１５５】
なお、第１実施形態では、深層学習システム１００内に存在する全ＧＰＵ  １３が深層学習の対象となり、Ａｌｌ−Ｒｅｄｕｃｅ処理の対象となっていたが、これに限定されない。例えば、深層学習システム１００内に存在する一部のＧＰＵ  １３が深層学習の対象であり、Ａｌｌ−Ｒｅｄｕｃｅ処理の対象であってもよい。この場合には、転送ペアの決定処理において転送ペアは、Ａｌｌ−Ｒｅｄｕｃｅ処理の対象となる一部のＧＰＵ  １３内で決定される。
【０１５６】
＜第１変形例＞
図３２は、第１変形例に係るノードのハードウェア構成の一例を示す図である。変形例に係るノード１Ａは、ＣＰＵを有していない。ノード１Ａは、複数のＧＰＵ  １３と、各ＧＰＵ  １３用の複数のメモリ  １４と、ノード内ＩＦ  １５、ノード間ＩＦ１６とを備
える。ノード１Ａでは、複数のＧＰＵ  １３のうちのいずれかが、第１実施形態に係るＣＰＵ  １１の処理を行う。変形例において、第１実施形態に係るＣＰＵ  １１の処理を行うＧＰＵ  １３は、「制御部」の一例である。
【０１５７】
図３２では、ＧＰＵ  １３−１が第１実施形態に係るＣＰＵ  １１の処理を行う。そのため、ＧＰＵ  １３−１用のメモリ１４−１には、学習プログラム、転送ペア決定プログラム、接続帯域情報が保持されている。
【０１５８】
ＧＰＵ  １３−１は、学習プログラムを実行することによって、例えば、図７〜図１０に示される処理を実行する。具体的には、ＧＰＵ  １３−１は、深層学習システム１００内に存在するＧＰＵ間の接続帯域情報を取得し、Ａｌｌ−Ｒｅｄｕｃｅ処理のアルゴリズム、各ステップにおける転送ペアの組合せを決定し、学習処理を制御する。
【０１５９】
＜第２変形例＞
第２変形例では、転送ペアの組合せをｋ組（ｋは２以上の整数）選択し、各ＧＰＵの勾配情報をｈ個（ｈ≦ｋの正の整数）に分割させ、細分化されたｈ個の勾配情報それぞれについて子プロセス作成し、子プロセスごとに異なる転送ペアの組合せでＡｌｌ−Ｒｅｄｕｃｅ処理を並行して実行させる。
【０１６０】
図３３は、第２変形例に係るノード１における深層学習の学習処理のフローチャートの一例である。図３３に示される処理は、第２変形例において、第１実施形態における図７の処理に代わって実行される処理である。図３３に示される処理は、例えば、ノード１のＣＰＵ  １１が学習プログラムを実行することによって達成される処理である。図３３に示される処理は、深層学習システム１００内の各ノード１によって実行される処理である。
【０１６１】
図３３に示される処理は、例えば、学習開始の指示の入力によって開始される。学習開始の指示は、例えば、深層学習システム１００内の全ノード１を制御する制御装置又はいずれかのノード１を通じて、深層学習システム１００の管理者から入力される。
【０１６２】
Ｓ４１〜Ｓ４５の処理は、図７のＳ１〜Ｓ５の処理と同様である。すなわち、ＣＰＵ  １１は、学習用データを読み込み（Ｓ４１）、各ＧＰＵ  １３間の接続帯域情報の取得処理を実行し（Ｓ４２）、転送ペアの決定処理を行う（Ｓ４３）。なお、転送ペアの決定処理は、ノード１のうちのいずれか１台のノード１が実行する。ただし、第２変形例では、転送ペアの決定処理を実行するノード１のＣＰＵ  １１は、時間コストに基づいて、時間コストが最も小さい転送ペアの組合せを含むｋ組の転送ペアの組合せを選択する。ｋ組の転送ペアの組合せの選択方法は、例えば、時間コストの小さい上位からｋ組選択する方法、時間コストが最も小さい転送ペアの組合せの時間コスト＋α内の時間コストである転送ペアの組合せの中からｋ組選択する方法等がある。
【０１６３】
次に、ＣＰＵ  １１は、各ＧＰＵ  １３の学習処理を開始させ、各ＧＰＵ  １３は、フォーワード処理、バックワード処理をすべてのニューロン層において順次実行する（Ｓ４４、Ｓ４５）。
【０１６４】
次に、ＣＰＵ  １１は、各ＧＰＵ  １３に、勾配情報をｈ個に分割して細分化するように指示する（Ｓ４６）。ＣＰＵ  １１は、ｈ個の子プロセスを作成し、各プロセスに、細分化された勾配情報のいずれかと、ｋ組の転送ペアの組合せうちのいずれかの組とを、例えば、重複しないように割り当てる（Ｓ４７）。なお、例えば、勾配情報の分割方法、細分化された勾配情報それぞれの転送ペアの組合せの割当方法は、全ノード１で共通しており、全ノード１間で、細分化された勾配情報のうちの同じ位置の細分化部分に割り当てら
れる転送ペアの組合せわは一致する。また、ｈ個の子プロセスのうちの一部で、割り当てられる転送ペアの組合せは重複してもよい。
【０１６５】
次に、ｈ個の子プロセスそれぞれにおいて、Ａｌｌ−Ｒｅｄｕｃｅ処理が行われる（Ｓ４８）。各子プロセスのＡｌｌ−Ｒｅｄｕｃｅ処理の詳細は、図１０に示される通りである。ｈ個の子プロセスがすべて終了すると、深層学習システム１００内の全ＧＰＵ  １３間で、各ＧＰＵ  １３によって算出された全勾配情報が共有される。
【０１６６】
次に、各ＧＰＵ  １３は、アップデート処理を行う（Ｓ４９）。次に、各ＧＰＵ  １３は、学習処理の繰り返しを終了するか否かを判定する（Ｓ５０）。学習処理の繰り返しが判定されると（Ｓ５０でＮＯ）、処理がＳ４に戻る。学習処理の繰り返しの終了が判定されると（Ｓ５０でＹＥＳ）、図３３に示される処理が終了する。
【０１６７】
第２変形例では、各ＧＰＵ  １３の勾配情報を細分化し、細分化された勾配情報それぞれについて異なる転送ペアの組合せでのプロセスを並行して実行させることで、ＧＰＵ  １３間の使用されない通信経路を削減し、有効活用することができる。また、１つのＡｌｌ−Ｄｅｄｕｃｅ処理のプロセスが扱うデータサイズが小さくなり、Ａｌｌ−Ｒｅｄｕｃｅ処理をより高速化することができる。
＜記録媒体＞
【０１６８】
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１６９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compact Disc（ＣＤ）−Read Only Memory（ＲＯＭ）、ＣＤ−Recordable（Ｒ）、Digital Versatile Disk（ＤＶＤ）、ブルーレイディスク、Digital Audio Tape（ＤＡＴ）、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、Solid State Drive（ＳＳＤ）は、コンピュータ等から取り外し可能な記録媒体としても
、コンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１７０】
１    ノード
１１    ＣＰＵ
１２、１４  メモリ
１３    ＧＰＵ
１５    ノード内インタフェース
１６    ノード間インタフェース
１００    深層学習システム
【図１】
2019067084.tif 000004
【図２】
2019067084.tif 000005
【図３】
2019067084.tif 000006
【図４】
2019067084.tif 000007
【図５】
2019067084.tif 000008
【図６】
2019067084.tif 000009
【図７】
2019067084.tif 000010
【図８】
2019067084.tif 000011
【図９】
2019067084.tif 000012
【図１０】
2019067084.tif 000013
【図１１】
2019067084.tif 000014
【図１２】
2019067084.tif 000015
【図１３】
2019067084.tif 000016
【図１４】
2019067084.tif 000017
【図１５】
2019067084.tif 000018
【図１６】
2019067084.tif 000019
【図１７】
2019067084.tif 000020
【図１８】
2019067084.tif 000021
【図１９】
2019067084.tif 000022
【図２０】
2019067084.tif 000023
【図２１】
2019067084.tif 000024
【図２２】
2019067084.tif 000025
【図２３】
2019067084.tif 000026
【図２４】
2019067084.tif 000027
【図２５】
2019067084.tif 000028
【図２６】
2019067084.tif 000029
【図２７】
2019067084.tif 000030
【図２８】
2019067084.tif 000031
【図２９】
2019067084.tif 000032
【図３０】
2019067084.tif 000033
【図３１】
2019067084.tif 000034
【図３２】
2019067084.tif 000035
【図３３】
2019067084.tif 000036