JP2019067084A - 情報処理システム、情報処理装置、及び、転送先決定方法 - Google Patents
情報処理システム、情報処理装置、及び、転送先決定方法 Download PDFInfo
- Publication number
- JP2019067084A JP2019067084A JP2017191132A JP2017191132A JP2019067084A JP 2019067084 A JP2019067084 A JP 2019067084A JP 2017191132 A JP2017191132 A JP 2017191132A JP 2017191132 A JP2017191132 A JP 2017191132A JP 2019067084 A JP2019067084 A JP 2019067084A
- Authority
- JP
- Japan
- Prior art keywords
- gpu
- transfer
- processing
- information
- arithmetic processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】複数の演算処理装置によって実行される並列処理を高速化する。【解決手段】複数の演算処理装置を備える情報処理装置を複数有し、複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムである。複数の情報処理装置のうちの少なくとも1つは、複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における当該一の演算処理装置と当該他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、記憶部が記憶する帯域情報に基づき、各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、を有する。【選択図】図8
Description
本発明は、情報処理システム、情報処理装置、及び、転送先決定方法に関する。
深層学習(Deep Learning)が導入されたシステムにおいては、例えば、膨大なデータ
を繰り返し学習させる学習処理が行われる。そのため、深層学習が導入されたシステムにおける学習処理の計算量は無視できるものではない。現在、深層学習が導入されたシステムが画像識別等の分野を対象とする場合には、例えば、百万枚以上の学習用としてのラベル付きの静止画を、繰り返し学習する。このために、通常のCPU(Central Processing
Unit)よりも多くの積和演算器を有し、学習処理で用いられる演算を高速に演算可能な
GPU(Graphical Processing Unit)のような演算処理装置を利用したシステム、また
は、演算処理装置を含むノードを複数組み合わせたクラスタ環境が利用される。
を繰り返し学習させる学習処理が行われる。そのため、深層学習が導入されたシステムにおける学習処理の計算量は無視できるものではない。現在、深層学習が導入されたシステムが画像識別等の分野を対象とする場合には、例えば、百万枚以上の学習用としてのラベル付きの静止画を、繰り返し学習する。このために、通常のCPU(Central Processing
Unit)よりも多くの積和演算器を有し、学習処理で用いられる演算を高速に演算可能な
GPU(Graphical Processing Unit)のような演算処理装置を利用したシステム、また
は、演算処理装置を含むノードを複数組み合わせたクラスタ環境が利用される。
すなわち、学習処理には、GPUのような演算処理装置の利用が有効であり、さらに複数の演算処理装置で処理を分散し実行させることで処理の高速化が可能である。複数の演算処理装置で処理を分散し実行させる方法としては、例えば、ノード内に実装される複数の演算処理装置間で処理を分散させるノード内並列処理と、複数のノードそれぞれに実装されている演算処理装置間で処理を分散させるノード間並列処理がある。
一方、深層学習の学習処理では、例えば、入力データから認識を行うフォーワード処理と、演算結果と正解データとの差分情報を逆方向に伝搬しながら勾配情報を算出するバックワード処理と、勾配情報を用いて重み係数を更新するアップデート処理とが繰り返し実行される。複数の演算処理装置間で並列処理が行われる場合には、さらに、各演算処理装置で算出された勾配情報を用いて、各演算処理装置分の勾配情報の平均を算出し、再度全ての演算処理装置で勾配情報の平均を共有するAll−Reduce処理が行われる。すなわち、ノード内並列処理、ノード間並列処理では、フォーワード処理、バックワード処理、All−Reduce処理、アップデート処理が繰り返し行われる。
しかしながら、演算処理装置及び/又はノードの数が増えると、演算処理装置間でデータ交換を行うAll−Reduce処理にかかる時間も多くなる。また、演算処理装置間、及び、ノード間で通信速度が異なるため、All−Reduce処理のアルゴリズムや、データ交換のペアのパターンによって、処理にかかる時間が変動する。
一つの側面では、本実施の形態は、複数の演算処理装置によって行われる並列処理を高速化可能な情報処理システム、情報処理方法、及び、転送先決定方法を提供することを目的とする。
本発明の一側面は、複数の演算処理装置を備える情報処理装置を複数有し、複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処
理システムによって例示される。複数の情報処理装置のうちの少なくとも1つは、複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における当該一の演算処理装置と当該他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、記憶部が記憶する帯域情報に基づき、各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、を有する。
理システムによって例示される。複数の情報処理装置のうちの少なくとも1つは、複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における当該一の演算処理装置と当該他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、記憶部が記憶する帯域情報に基づき、各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、を有する。
開示の情報処理システム、情報処理装置、及び、転送先決定方法によれば、複数の演算処理装置によって行われる並列処理を高速化できる。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<深層学習の処理例>
図1は、ニューラルネットワークの処理の一例を示す図である。図1では、入力層と3つのニューロン層とを含むニューラルネットワークが示されている。また、図1では、1つのGPUを利用した場合の学習処理が示されている。図1は、深層学習システムを例示する。
図1は、ニューラルネットワークの処理の一例を示す図である。図1では、入力層と3つのニューロン層とを含むニューラルネットワークが示されている。また、図1では、1つのGPUを利用した場合の学習処理が示されている。図1は、深層学習システムを例示する。
ニューラルネットワークの学習処理では、例えば、ニューラルネットワークの演算結果と正解データとの差分が小さくなるように、各ニューロン層の重みパラメタwが調整される。そのため、まず、各ニューロン層では、例えば、入力データに対して重みパラメタwを用いて所定の演算処理が行われ、演算結果データが出力される。図1に示される例では、入力層の出力データがニューロン層1の入力データとなり、ニューロン層1の演算結果データはニューロン層2の入力データとなり、ニューロン層2の演算結果データはニューロン層3の入力データとなる。ニューロン層3の演算結果データが認識結果となる。この入力層からニューロン層3の方向に進む処理をフォーワード処理という。
ニューロン層3の演算結果データと正解データとの差分情報(誤差E)は、ニューロン層3からニューロン層2、ニューロン層2からニューロン層1へと逆方向に伝搬される。各ニューロン層では、伝搬された差分情報に基づいて、誤差Eの変化量である勾配情報(∇E)が求められる。ニューロン層3からニューロン層1の方向に進む処理をバックワード処理という。
各ニューロン層では、勾配情報(∇E)を用いて、重みパラメタが更新される。この処理をアップデート処理という。ニューラルネットワークの学習処理では、フォーワード処理、バックワード処理、アップデート処理の順で処理が繰り返し行われ、ニューロン層3の演算結果データと正解データとの差分情報が小さくなるように各ニューロン層の重みパラメタwが調整される。フォーワード処理、バックワード処理、アップデート処理の順で行われる処理は、学習処理サイクルと称される。
図2は、複数のGPUが用いられる場合の学習処理の一例を示す図である。図2では、各GPUは、3つのニューロン層の処理を行う。すなわち、図2も、深層学習システムを例示する。
複数のGPUを用いる学習処理の一つに、例えば、バッチ学習がある。バッチ学習では、GPUそれぞれで異なる学習データに対して学習処理サイクルが実行され、各GPUで算出された勾配情報(∇E)の平均値(Σ∇E/n:nはGPUの数)を用いて、各GPU内の各ニューロン層の重みパラメタwが更新される。
図2には、学習方法としてバッチ学習が行われる場合の例が示されている。バッチ学習が行われる場合には、各GPUで算出された勾配情報(∇E)の平均値(Σ∇E/n:nはGPUの数)が用いられるため、各GPUで算出された勾配情報(∇E)を集約し、集約された勾配情報を各GPU間で共有するAll−Reduce処理が行われる。したがって、複数のGPUを用いた学習処理においてバッチ学習が行われる場合の学習処理サイクルは、フォーワード処理、バックワード処理、All−Reduce処理、アップデート処理の順となる。
All−Reduce処理のアルゴリズムには、例えば、Butterfly方式、Halving/Doubling方式がある。
図3は、Butterfly方式のアルゴリズムの一例を示す図である。図3では、4つのGPU間で、4つのニューロン層の勾配情報(∇E)が集約され共有される場合の例が示されている。
Butterfly方式は、ノードのペアを作り、ペアのノード間で全データを転送し合うステップを複数回行う方式である。なお、図3においてノードはGPUである。
図3に示される例では、1ステップ目では、GPU#0とGPU#1、GPU#2とGPU#3とがペアになり、データを転送し合う。以下、Xステップ目を、単に、ステップX、と表記する。
ステップ1が終了すると、GPU#0とGPU#1とに含まれる各ニューロン層では、GPU#0とGPU#1との勾配情報が保持される。GPU#2とGPU#3とに含まれる各ニューロン層では、GPU#2とGPU#3との勾配情報が保持される。
ステップ2では、ステップ1と異なるGPU同士でペアが組まれ、データが転送される。図3に示される例では、ステップ2では、GPU#0とGPU#2、GPU#1とGPU#3とがペアになり、データを転送し合う。ステップ2が終了すると、GPU#0〜GPU#3に含まれる各ニューロン層では、GPU#0〜GPU#3の勾配情報が保持され、各GPUの勾配情報の集約と共有とが完了する。
図4は、Halving/Doubling方式のアルゴリズムの一例を示す図である。図4では、図3と同様に、4つのGPU間で、4つのニューロン層の勾配情報(∇E)が集約され共有される場合の例が示されている。
Halving/Doubling方式は、ノードが各々M/N(M:データサイズ、N:GPU数)分の集約結果を持つようにノード間通信と、集約処理を行い、その後、全てのノードで集約したデータを共有する方法である。なお、図4においてノードはGPUである。
図4に示される例では、ステップ1では、GPU#0とGPU#1、GPU#2とGPU#3とがペアになり、ペア同士それぞれ1/2ずつ異なるニューロン層のデータを転送し合う。ステップ1が終了すると、GPU#0とGPU#1とにおいて、それぞれ、ニューロン層のうちの異なる半分のニューロン層で、GPU#0とGPU#1との勾配情報が保持される。GPU#2とGPU#3とにおいて、それぞれ、ニューロン層のうちの異なる半分のニューロン層で、GPU#2とGPU#3との勾配情報が保持される。
ステップ2では、ステップ1と異なるGPU同士でペアが組まれ、ステップ1のペアの相手のデータを有するニューロン層のデータのうちの半分、すなわち、各々1/4ずつ異なるデータが転送される。図4に示される例では、ステップ2では、GPU#0とGPU#2、GPU#1とGPU#3とがペアになり、各々1/4ずつ異なるデータを転送し合う。ステップ2が終了すると、GPU#0〜GPU#3それぞれにおいて、4つのニューロン層のうちそれぞれ異なる1つのニューロン層でGPU#0〜GPU#3の勾配情報が保持されている状態となる。
図4に示される例では、ステップ2の終了後に、4つのニューロン層それぞれについて、GPU#0〜GPU#1の勾配情報の集約が完了する。したがって、ステップ3以降は、集約されたGPU#0〜GPU#1の勾配情報を共有する処理となる。集約されたGPU#0〜GPU#1の勾配情報を共有する共有処理は、例えば、集約処理(図4ではステップ1とステップ2)と逆の順番で処理が行われる。
ステップ3では、例えば、ステップ2と同じペアが組まれ、集約されたGPU#0〜GPU#1の勾配情報を含む1つのニューロン層の勾配情報が転送される。集約されたGPU#0〜GPU#1の勾配情報を含む1つのニューロン層の勾配情報は、4つのニューロン層のうちの1つのニューロン層の情報であるため、ステップ3で送信されるデータ量は、1/4となる。
図4に示される例では、ステップ3では、例えば、GPU#0とGPU#2、GPU#1とGPU#3とがペアになり、各々集約されたGPU#0〜GPU#1の勾配情報を含む1つのニューロン層の勾配情報を転送し合う。ステップ3が終了すると、GPU#0〜GPU#3それぞれにおいて、4つのニューロン層のうち2つのニューロン層でGPU#0〜GPU#3の勾配情報が保持されている状態となる。
ステップ4では、例えば、ステップ1と同じペアが組まれ、集約されたGPU#0〜GPU#1の勾配情報を含む2つのニューロン層の勾配情報が転送される。集約されたGPU#0〜GPU#1の勾配情報を含む2つのニューロン層の勾配情報は、4つのニューロン層のうちの2つのニューロン層の情報であるため、ステップ4で送信されるデータ量は、1/2となる。
図4に示される例では、ステップ4では、GPU#0とGPU#1、GPU#2とGPU#3とがペアになり、各々集約されたGPU#0〜GPU#1の勾配情報を含む2つのニューロン層の勾配情報を転送し合う。ステップ4が終了すると、GPU#0〜GPU#3それぞれにおいて、4つの全ニューロン層でGPU#0〜GPU#3の勾配情報が保持されている状態となり、各GPUの勾配情報の共有が完了する。
なお、Halving/Doubling方式において、全GPUの勾配情報が集約された後の、全GPUの勾配情報を共有する処理(図4ではステップ3以降のステップ)では、転送先のペアはいかようであってもよい。例えば、図4のステップ3において、GPU#0とGPU#1、GPU#2とGPU#3とがペアを組み、ステップ4において、G
PU#0とGPU#2、GPU#1とGPU#3とがペアを組んでもよい。
PU#0とGPU#2、GPU#1とGPU#3とがペアを組んでもよい。
図5は、Butterfly方式とHalving/Doubling方式との比較表の一例である。GPU数をN、勾配情報(∇E)のデータサイズをMとする。Butterfly方式では、ステップ数はlog[2]N([]内は対数の底を示す)、1GPU当たりの通信量及び演算量はM×log2N、全GPUの通信量及び演算量の合計はM×log[2](N×N)である。Halving/Doubling方式では、ステップ数は2×log[2]N、1GPU当たりの通信量は2×M以下、1GPU当たりの演算量はM以下、全GPUの通信量の合計は2×M×(N−1)、全GPUの演算量の合計はM×(N−1)である。
Butterfly方式は、ステップ数は少ないものの、全GPUが全データを交換して集約処理を行うため、システム全体での通信量と演算量とが大きくなる。そのため、集約演算処理を高速に実行できる場合や、転送するデータサイズが小さい場合に有効なアルゴリズムである。
Halving/Doubling方式の方がステップ数は多くなるものの、通信量や演算量は少なくなる。そのため、GPU数が多い場合や、転送するデータサイズが大きい場合に有効なアルゴリズムである。
いずれのアルゴリズムが有効であるのかは、GPU数、データサイズ、通信帯域、GPUの接続関係等の条件に依存する。All−Reduce処理のアルゴリズムの選択、各アルゴリズムにおける各ステップにおける転送ペアは、事前に設定される。そのため、GPU数、データサイズ、通信帯域、GPUの接続関係等の条件に応じたアルゴリズム、各ステップにおける転送ペアを設定することによって、All−Reduce処理、ひいては、深層学習の学習処理を高速化することができる。なお、All−Reduce処理のアルゴリズムは、Butterfly方式、Halving/Doubling方式に限定されない。
なお、学習処理を行うGPUの数は、2のN乗に限定されず、例えば、2のN乗ではない偶数であっても、奇数であってもよい。例えば、GPUの数が2のN乗+X(1≦X<2のN乗)である場合には、GPUのペアをX個作成し、当該X個のペアにおいて、まず、全データのデータ転送を行う。その後、X個のペアは1組とみなし、X個のペアと(2のN乗−X)個のGPUとの2のN乗の組として、All−Reduce処理を行う。All−Reduce処理の終了後、X個のペア間で全データの交換を行う。したがって、学習処理を行う演算処理装置の数が2のN乗でない場合には、集約までのステップ数が2のN乗の場合よりも2ステップ多くなる。
具体的には、例えば、GPU#0〜#6の7台(7=2の2乗+3、N=2、X=3)である場合には、例えば、まず、GPU#0とGPU#1、GPU#2とGPU#3、GPU#4とGPU#5の3(=X)個のペア間で全データのデータ転送を行う。すると、GPU#0とGPU#1については、GPU#0(0、1)が代表し、GPU#2とGPU#3についは、GPU#2(2、3)が代表し、GPU#4とGPU#5についてはGPU#4(4、5)が代表すればよい。括弧内は、各GPUが保持する他のGPUのデータを示す。
次に、GPU#0(0、1)、GPU#2(2、3)、GPU#4(4、5)、およびGPU#6(6)の間で、All−Reduce処理を実行すればよい。Butterfly方式およびHalving/Doubling方式のいずれの方式によっても、All−Reduce処理により、GPU#0、GPU#2、GPU#4、およびGPU#6
には、すべてのノードの集約結果が得られる。
には、すべてのノードの集約結果が得られる。
最後に、例えば、GPU#0からGPU#1に、GPU#2からGPU#3に、GPU#4からGPU#5に、All−Reduce処理の結果をデータ転送すればよい。ただし、Halving/Doubling方式の場合に、最初に実行するGPU#0とGPU#1、GPU#2とGPU#3、GPU#4とGPU#5の3(=X)個のペア間でのデータ転送と、最後に実行するGPU#0からGPU#1へ、GPU#2からGPU#3へ、GPU#4からGPU#5へのデータ転送と、ではデータ量が最も多くなる。そこで、最初と最後のデータ転送が行われるペア間は、最も大きな帯域を確保することが望ましい。
<第1実施形態>
図6は、第1実施形態に係る深層学習システム100のシステム構成及びノードのハードウェア構成の一例を示す図である。第1実施形態に係る深層学習システム100は、複数のノード1を備える。各ノード1を区別する場合には、ノード1−1、1−2、...1
−Nと表記する。各ノード1を区別しない場合には、単に、ノード1と表記する。第1実施形態においてノード1の数に限定がある訳ではない。深層学習システム100は、「情報処理システム」の一例である。ノード1は、「情報処理装置」の一例である。
図6は、第1実施形態に係る深層学習システム100のシステム構成及びノードのハードウェア構成の一例を示す図である。第1実施形態に係る深層学習システム100は、複数のノード1を備える。各ノード1を区別する場合には、ノード1−1、1−2、...1
−Nと表記する。各ノード1を区別しない場合には、単に、ノード1と表記する。第1実施形態においてノード1の数に限定がある訳ではない。深層学習システム100は、「情報処理システム」の一例である。ノード1は、「情報処理装置」の一例である。
各ノード1は、ノード間高速ネットワーク20で接続される。ノード間高速ネットワーク20は、例えば、クロスバー、インターコネクト等とも呼ばれる。なお、ノード間高速ネットワーク20は、どのようなネットワーク構成であってもよい。例えば、ノード間高速ネットワーク20は、トーラス構造のメッシュであってもよいし、Local Area Network(LAN)のようなバス型のネットワークであってもよい。
第1実施形態では、深層学習システム100内のノード1のうち、いずれか1台のノード1が、All−Reduce処理において用いられるアルゴリズム及び当該アルゴリズムの各ステップにおけるGPUの転送ペアを決定し、他のノード1に通知する。All−Reduce処理において用いられるアルゴリズム及び当該アルゴリズムの各ステップにおけるGPU の転送ペアは、第1実施形態では、各ノード1に含まれる各GPU間の通信帯域に基づいて決定される。GPUは、「演算処理装置」の一例である。転送ペアの相手のGPUは、「転送先となる演算処理装置」の一例である。転送ペアは、「演算結果データを転送し合うペア」の一例である。
各ノード1は、学習処理サイクルにおけるAll−Reduce処理では、通知されたアルゴリズムと各ステップにおける転送ペアに従って、転送先のGPUに勾配情報を転送する。勾配情報は、「演算結果データ」の一例である。
ノード1は、例えば、スーパーコンピュータ、汎用のコンピュータ、専用のコンピュータである。ノード1は、ハードウェア構成要素として、Central Processing Unit(CPU)11、CPU用のメモリ12、複数のGPU 13、GPU用の複数のメモリ14を有する。CPU 11と各GPU 13とは、ノード内インタフェース(IF)15によって接続される。さらにノード内IF 15を介して、CPU 11と各GPU 13とは、ノード間IF 16に接続される。各GPU 13は、区別しない場合には、単に、GPU 13と表記される。第1実施形態において、CPU 11は「制御部」の一例である。第1実施形態において、メモリ12は、「記憶部」の一例である。
CPU 11は、メモリ12に実行可能に展開されたコンピュータプログラムにしたがって、ノード1の処理、例えば、他のノード1との通信処理、または、各GPU 13を
制御し、管理する処理を実行する。CPU 11は、MPU(Microprocessor)、プロセッサとも呼ばれる。CPU 11は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のCPU 11がマルチコア構成を有していても良い。上記CPU 11の少なくとも一部の処理は、CPU 11以外のプロセッサ、例えば、GPU 13のいずれかで実行されてもよい。
制御し、管理する処理を実行する。CPU 11は、MPU(Microprocessor)、プロセッサとも呼ばれる。CPU 11は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のCPU 11がマルチコア構成を有していても良い。上記CPU 11の少なくとも一部の処理は、CPU 11以外のプロセッサ、例えば、GPU 13のいずれかで実行されてもよい。
メモリ12は、例えば、RAM(Random Access Memory)である。メモリ12は、CPU 11で実行されるコンピュータプログラム、CPU 11が処理するデータを格納する。より具体的には、メモリ12には、学習プログラム、転送ペア決定プログラム、接続帯域情報が保持されている。学習プログラムは、深層学習の学習処理を各GPU 13に実行させるためのプログラムである。転送ペア決定プログラムは、学習処理サイクル内のAll−Reduce処理におけるアルゴリズム、各ステップにおける勾配情報の転送ペアを決定するためのプログラムである。転送ペア決定プログラムは、例えば、学習プログラムに含まれるモジュールの一つであってもよい。
接続帯域情報は、深層学習システム100内の各GPU 13間の通信帯域の情報である。接続帯域情報の詳細については後述される。なお、メモリ12に保持されるプログラムは、学習プログラム、転送ペア決定プログラムに限定されない。例えば、メモリ12には、ノード間通信のためのプログラムも保持されている。接続帯域情報は、「帯域情報」の一例である。
GPU 13は、例えば、高速のVRAM(Video RAM)や高速の演算器を複数搭載し
、積和演算機能等を高速に実行する。GPU 13は、メモリ14に実行可能に展開されたコンピュータプログラムにしたがって、ノード1の処理のうち、例えば、学習処理を実行する。GPU 13は、アクセラレータの一種である。GPU 13の代わりに他種のアクセラレータが用いられてもよい。
、積和演算機能等を高速に実行する。GPU 13は、メモリ14に実行可能に展開されたコンピュータプログラムにしたがって、ノード1の処理のうち、例えば、学習処理を実行する。GPU 13は、アクセラレータの一種である。GPU 13の代わりに他種のアクセラレータが用いられてもよい。
メモリ14は、例えば、RAMである。メモリ14は、GPU 13で実行されるコンピュータプログラム、GPU 13が処理するデータを格納する。メモリ14は、例えば、各GPU 13につき1つずつ備えられてもよいし、各GPU 13につき1つのメモリ14のうちの1つの分割領域が割り当てられてもよい。
上記CPU 11および各GPU 13の少なくとも一部の処理は、例えば、Digital Signal Processor(DSP)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、上記各部の少なくとも一部の処理は、集積回路(IC)、その他のディジタル回路で実行されてもよい。また、上記各部の少なくとも一部にアナログ回路が含まれても良い。集積回路は、LSI,Application Specific Integrated Circuit(ASIC)、プログラマブルロジックデバイス(PLD)を含む。PLDは、例えば、Field−Programmable Gate Array(FPGA)を含む。
すなわち、CPU 11またはGPU 13の処理の少なくとも一部は、プロセッサと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ(MCU)、SoC(System−on−a−chip)、システムLSI、チップセットなどと呼ばれる。
ノード内IF 15は、CPU 11および各GPU 13の、例えば、内部バスに接続され、CPU 11および各GPU 13を相互に接続する。また、ノード内IF 15は、CPU 11および各GPU 13をノード間IF 16に接続する。ノード内I
F 15は、例えば、PCI−Expressの規格に従うバスである。
F 15は、例えば、PCI−Expressの規格に従うバスである。
ノード間IF 16は、ノード間高速ネットワーク20を介してノード10同士を接続するインタフェースである。
ノード1内のGPU 13間の通信には、例えば、各GPU 13がNCCL(NVIDIA
Collective Communications Library)等のソフトウェアを実行することによって行われる。ノード1間の通信には、例えば、MPI(Message Passing Interface)が用いられ
る。ノード1間の通信は、例えば、ノード1のCPU 11がMPI用のプログラムを実行することによって行われる。以下、ノード1内のGPU 13間の通信を、ノード内通信と称する。また、異なるノード1間のGPU 13間の通信を、ノード間通信と称する。
Collective Communications Library)等のソフトウェアを実行することによって行われる。ノード1間の通信には、例えば、MPI(Message Passing Interface)が用いられ
る。ノード1間の通信は、例えば、ノード1のCPU 11がMPI用のプログラムを実行することによって行われる。以下、ノード1内のGPU 13間の通信を、ノード内通信と称する。また、異なるノード1間のGPU 13間の通信を、ノード間通信と称する。
<処理の流れ>
図7は、ノード1における深層学習の学習処理のフローチャートの一例である。図7に示される処理は、例えば、ノード1のCPU 11が学習プログラムを実行することによって達成される処理である。図7に示される処理は、深層学習システム100内の各ノード1によって実行される処理である。なお、以下の説明で用いる図中には、ニューロン層NをLayer Nのように記述する。
図7は、ノード1における深層学習の学習処理のフローチャートの一例である。図7に示される処理は、例えば、ノード1のCPU 11が学習プログラムを実行することによって達成される処理である。図7に示される処理は、深層学習システム100内の各ノード1によって実行される処理である。なお、以下の説明で用いる図中には、ニューロン層NをLayer Nのように記述する。
図7に示される処理は、例えば、学習開始の指示の入力によって開始される。学習開始の指示は、例えば、深層学習システム100内の全ノード1を制御する制御装置又はいずれかのノード1を通じて、深層学習システム100の管理者から入力される。
CPU 11は、学習用データを読み込む(S1)。学習用データは、例えば、ノード1内のハードディスク等の記憶装置又はノード1の外部の記憶装置から読み出される。次に、CPU 11は、各GPU 13間の接続帯域情報の取得処理を実行する(S2)。接続帯域情報の取得処理によって、各GPU 13間の接続帯域情報が取得される。接続帯域情報の取得処理の詳細は後述される。
次に、CPU 11は、転送ペアの決定処理を行う(S3)。転送ペアの決定処理では、All−Reduce処理にかかる時間がより短くなるような、All−Reduce処理のアルゴリズム及び当該アルゴリズムの各ステップにおける転送ペアが決定され、各ノード1間で共有される。転送ペアの決定処理の詳細は後述される。なお、転送ペアの決定処理を実行するノード1は、第1実施形態では、深層学習システム100においていずれか1台のノード1である。したがって、ノード1が転送ペアの決定処理を実行しないノード1である場合には、当該ノード1は、S3では転送ペアの決定処理は行わず、他のノード1からAll−Reduce処理のアルゴリズム及び当該アルゴリズムの各ステップにおける転送ペアの通知を受ける。
次に、CPU 11は、各GPU 13の学習処理を開始させる。S4〜S7の処理は、学習処理である。S4、S5、S7の処理は、各GPU 13によって実行される。各GPU 13は、フォーワード処理をすべてのニューロン層(ニューロン層1からN)において順次実行する(S4)。次に、各GPU 13は、バックワード処理をすべてのニューロン層(ニューロン層Nから1)において順次実行する(S5)。
次に、All−Reduce処理が行われる(S6)。All−Reduce処理の詳細は後述される。All−Reduce処理によって、深層学習システム100内の全GPU 13間で、各GPU 13によって算出された勾配情報が共有される。なお、All−Reduce処理は、ノード1内のGPU 13間の通信(ノード内通信)はGPU
13によって行われ(NCCL等)、異なるノード1に含まれるGPU 13間の通信(ノード間通信)はCPU 11を介して行われる(MPI等)。
13によって行われ(NCCL等)、異なるノード1に含まれるGPU 13間の通信(ノード間通信)はCPU 11を介して行われる(MPI等)。
次に、各GPU 13は、勾配情報の平均値に基づいて重みパラメタを更新するアップデート処理を行う(S7)。次に、各GPU 13は、学習処理の繰り返しを終了するか否かを判定する(S8)。ここで、各GPU 13は、例えば、対象の学習データについての学習が収束していない場合、又は、予め指定された学習処理回数に達していない場合には、処理をS4に戻し、学習処理サイクルを繰り返し実行する(S8でNO)。一方、各GPU 13は、例えば、対象の学習データについて学習が収束し、且つ、予め指定された学習処理回数に達した場合には、学習処理サイクルを終了し、図7に示される処理が終了する(S8でYES)。学習が収束するとは、例えば、勾配情報が所定の許容値の範囲で0に近づくことである。
図8は、ノード1の接続帯域情報の取得処理のフローチャートの一例である。図8に示される処理は、例えば、各ノード1において実行される処理である。また、図8に示される処理は、図7のS2において実行される処理である。
ノード1のCPU 11は、自ノード1内の各GPU 13の接続帯域情報を取得可能か否かを判定する(S11)。例えば、接続帯域情報は、各GPU 13のドライバ等から取得可能である。自ノード1内の各GPU 13の接続帯域情報が取得可能である場合には(S11でYES)、CPU 11は、各GPU 13から接続帯域情報を取得する(S12)。
接続帯域情報が取得可能でない場合には(S11でNO)、CPU 11は、GPU 13間の接続帯域を測定する(S13)。例えば、CPU 11は、GPU 13間で所定量のデータ転送と転送時間の測定を指示すればよい。GPU 13は、CPU 11から指示された接続帯域の測定結果をCPU 11に報告すればよい。
次に、CPU 11は、例えば、MPIのプロセス間通信によって、取得した接続帯域情報を他のノード1に転送し、また、他のノード1から他のノード1内の接続帯域情報を受信する(接続帯域情報の交換)(S14)。CPU 11は、例えば、取得した接続帯域情報をファイルに出力してメモリ12に格納する(S15)。その後、図8に示される処理が終了し、図7のS3に処理が進む。なお、ノード間通信となるGPU 13間の接続帯域は、例えば、ノード間高速ネットワーク20の帯域が採用される。
図9は、転送ペアの決定処理のフローチャートの一例である。図9に示される処理は、第1実施形態では、転送ペアの決定処理を実行するノード1のCPU 11が転送ペア決定プログラムを実行することによって行われる処理である。また、図9に示される処理は、図7のS3において実行される処理である。
まず、アルゴリズムループが開始される。アルゴリズムループは、S21からS23の処理を含む。アルゴリズムループは、対象とするAll−Reduce処理のアルゴリズムの数と同じ回数繰り返し実行される。
アルゴリズムループでは、まず、CPU 11は、ステップ数と、各ステップiの転送量情報Ti(i:正の整数)とを取得する(S21)。転送量情報Tiは、例えば、ステップiにおける1GPU当たりのデータ転送量である。ステップ数は、「前記各演算処理装置の演算結果データが前記各演算処理装置間で共有されるまでに要するステップ数」の一例である。転送量情報は、「転送データ量」の一例である。
例えば、GPU数が2のN乗である場合には、Butterfly方式では、ステップ数はlog[2]N([]内は対数の底を示す)であり、ステップiにおける転送量情報TiはMである。例えば、GPU数が2のN乗以外である場合(GPU数=2のN乗+Xである場合)には、Butterfly方式では、ステップ数は2+log[2]Nであり、ステップiにおける転送量情報TiはMである。なお、NはGPUの数、Mは各GPUのデータサイズである。
例えば、Halving/Doubling方式では、GPU数が2のN乗である場合には、ステップ数は2×log[2]Nである。ステップ1からステップS(S=log[2]N)まで(集約処理)のステップiにおける転送量情報TiはM/2^iである。ステップS+1からステップ2×Sまで(共有処理)のステップiにおける転送量情報TiはM/2^(2×S−i+1)である。
例えば、Halving/Doubling方式では、GPU数が2のN乗以外である場合(GPU数=2のN乗+Xである場合)には、ステップ数は2+2×log[2]Nである。ステップ1と最終ステップとにおける転送量情報TiはMである。ステップ2からステップS(S=1+log[2]N)まで(集約処理)のステップiにおける転送量情報TiはM/2^iである。ステップS+1からステップ2×S−1まで(共有処理)のステップiにおける転送量情報TiはM/2^(2×S−i)である。
次に、ステップループが開始される。ステップループは、S22の処理を含む。ステップループは、対象のAll−Reduce処理のアルゴリズムのステップの数と同じ回数繰り返し実行される。
ステップループでは、CPU 11は、対象ステップにおける転送ペアを決定する(S22)。CPU 11は、ステップiにおいて選択可能な全バリエーションの転送ペアを取得する。例えば、GPU数が4である場合には、Butterfly方式では、All−Reduce処理全体を通じて、6通りの転送ペアの組合せが取得される。S22の処理が終了すると、ステップループが終了する。
ステップループが終了すると、CPU 11は、転送ペアの各組合せについて、All−Reduce処理全体に係る時間コストを算出する(S23)。時間コストは、例えば、ステップiにおける転送ペアのうち最も遅い帯域(min(Wm,n))の転送ペアにおける転送時間(Ti/min(Wm,n))の、全ステップの合計として算出される。具体的には、転送ペアの各組合せの時間コストは、以下の数式1で示される。転送ペアの各組合せの時間コストは、「第1の時間」の一例である。
アルゴリズムループが終了すると、CPU 11は、転送ペアの組合せを選択する(S24)。例えば、CPU 11は、時間コストの最も小さい転送ペアの組合せを選択する。なお、転送ペアの組合せは複数組選択されてもよい。例えば、CPU 11は、時間コストの小さい上位所定数の転送ペアの組合せを選択してもよい。または、例えば、CPU
11は、時間コストが、最も小さい時間コスト+α内である転送ペアの組合せを選択してもよい。許容範囲+αは、例えば、最も小さい時間コストの5%である。
11は、時間コストが、最も小さい時間コスト+α内である転送ペアの組合せを選択してもよい。許容範囲+αは、例えば、最も小さい時間コストの5%である。
次に、CPU 11は、他のノード1のメモリ102に、ステップ数、各ステップにおける転送量情報、各ステップにおける転送ペアの情報を含むAll−Reduce情報を
転送する。その後、図9に示される処理が終了し、処理が図7のS4に進む。
転送する。その後、図9に示される処理が終了し、処理が図7のS4に進む。
図10は、All−Reduce処理のフローチャートの一例である。図10に示される処理は、図7のS6において実行される処理である。図10に示される処理は、深層学習システム100内の各ノード1において実行される。
S31とS32の処理は、All−Reduce処理のアルゴリズムの1ステップの処理に相当する。まず、各GPU 13は、各ニューロン層の勾配情報(∇E)をAll−Reduce情報に従った転送ペアのGPU 13のメモリ14に転送する(S31)。このとき、転送ペアの相手であるGPU 13が自ノード1内に存在する場合には、GPU 13は、例えば、NCCLを用いて、当該転送ペアの相手のGPU 13のメモリ14に勾配情報(∇E)を転送する。
このとき、転送ペアの相手のGPU 13が他のノード1内に存在する場合には、GPU 13はCPU 11のメモリ12に勾配情報(∇E)を転送する。CPU 11は、例えば、MPIを用いて、当該勾配情報(∇E)を転送ペアの相手のGPU 13を有する他のノード1のCPU 11に転送する。転送ペアの相手のGPU 13を有するノード1のCPU 11は、当該勾配情報を転送ペアの相手のGPU 13に転送する。
次に、各GPU 13は、転送された勾配情報(∇E)と保持している勾配情報とに基づいて、集約演算処理を行う(S32)。集約演算処理は、例えば、GPU 13が保持している勾配情報(∇E)と転送された勾配情報(∇E)との平均値を算出する処理である。S31、S32で送信される勾配情報(∇E)のデータサイズ等は、実行されているAll−Reduce処理のアルゴリズムに従う。
次に、CPU 11は、深層学習システム100内の全GPU 13の勾配情報の集約が終了したか否かを判定する(S33)。深層学習システム100内の全GPU 13の勾配情報の集約が終了したか否かは、例えば、実行されているAll−Reduce処理のアルゴリズムと、現在のステップ数とに基づいて判定される。例えば、Butterfly方式である場合には、全ステップの終了によって、CPU 11は、深層学習システム100内の全GPU 13の勾配情報の集約が終了したと判定する。例えば、Halving/Doubling方式である場合には、全ステップ数の半分が終了することによって、CPU 11は、深層学習システム100内の全GPU 13の勾配情報の集約が終了したと判定する。
深層学習システム100内の全GPU 13の勾配情報の集約が終了したと判定されない場合には(S33でNO)、All−Reduce処理の次のステップについてS31、S32の処理が実行される。
深層学習システム100内の全GPU 13の勾配情報の集約が終了したと判定した場合には(S33でYES)、CPU 11は、集約された勾配情報の共有が終了したか否かを判定する(S34)。集約された勾配情報の共有が終了したか否かは、例えば、実行されているAll−Reduce処理のアルゴリズムと、現在のステップ数とに基づいて判定される。
例えば、Butterfly方式、Halving/Doubling方式である場合には、全ステップが終了したことによって、CPU 11は、深層学習システム100内の全GPU 13で勾配情報の共有が終了したと判定する。
集約された勾配情報の共有が終了したと判定されない場合には(S34でNO)、各G
PU 13は、現在のステップにおける転送ペアのGPU 13に集約された勾配情報を転送する(S35)。S35の処理は、S31の処理と同様である。なお、実行されているAll−Reduce処理のアルゴリズムがButterfly方式である場合には、S35の共有に係る転送処理は実行されない。
PU 13は、現在のステップにおける転送ペアのGPU 13に集約された勾配情報を転送する(S35)。S35の処理は、S31の処理と同様である。なお、実行されているAll−Reduce処理のアルゴリズムがButterfly方式である場合には、S35の共有に係る転送処理は実行されない。
集約された勾配情報の共有が終了したと判定された場合には(S34でYES)、図10に示される処理が終了し、処理が図7のS7に進む。
<具体例1>
図11は、具体例1に係る深層学習システム100Aのシステム構成を示す図である。図11は、深層学習システム100Aに存在するGPU 13の接続関係を示すための図であり、簡略化のため、GPU 13以外の構成要素は省略されている。以下、具体例2及び具体例3についても同様である。
図11は、具体例1に係る深層学習システム100Aのシステム構成を示す図である。図11は、深層学習システム100Aに存在するGPU 13の接続関係を示すための図であり、簡略化のため、GPU 13以外の構成要素は省略されている。以下、具体例2及び具体例3についても同様である。
具体例1に係る深層学習システム100Aは、ノード#1とノード#2との2台のノードを含む。ノード#1は、GPU#0〜#3の4台のGPU 13を備える。ノード#2は、GPU#4〜#7の4台のGPU 13を備える。
具体例1では、ノード#1及びノード#2それぞれの内部におけるGPU 13間の階層構造はなく、ノード内通信における同じ通信帯域であるとする。一方、ノード#1内のGPU 13とノード#2内のGPU13とのノード間通信の通信帯域は、ノード内通信の帯域よりも小さいこととする。
図12は、具体例1における接続帯域情報の一例を示す図である。図12の表は、縦に転送元(From:m)、横に転送先(To:n)となるGPU 13の識別情報が並べられている。図12に示される例では、転送ペアの数値が大きいほど通信帯域が大きいことが示される。図12に示される例では、同一のノード1内のGPU 13同士の接続帯域情報は8、異なるノード1間のGPU 13同士の接続帯域情報は1、と示されている。なお、図12に示される接続帯域情報の数値は、各GPU間の通信帯域の速度の違いを表すための一例として採用された数値であり、接続帯域情報は、これらの値に限定されない。
図13は、具体例1におけるAll−Reduce処理のステップ1における転送ペアの一例を示す図である。図13では、All−Reduce処理のステップ1で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。図13では、転送ペア間の最小の通信帯域min(Wm,n)が最大となる組合せは、白塗りのマス内の接続帯域情報が円で囲まれて示されている。図13中の黒塗りのマスは、選択できない組合せを示す。以下、図14、図15でも同様である。
具体的には、図13には、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#1、GPU#2とGPU#3、GPU#4とGPU#5、GPU#6とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も8であるので、図13に示されるステップ1における転送ペア間の最小の通信帯域min(Wm,n)は8である。
図14は、具体例1におけるAll−Reduce処理のステップ2における転送ペアの一例を示す図である。図14には、All−Reduce処理のステップ1における転送ペアが図13に示される転送ペアである場合の、ステップ2における転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアうちの一つが示さ
れている。
れている。
まず、ステップ1における転送ペアの相手の識別番号が、各ToのGPUの付加情報に追加される。付加情報に記されている識別番号のGPUのデータは既に保持しているので、集約処理の段階で、付加情報に記されている識別番号のGPUとペアを組むことはないため、ToのGPUについて、付加情報に記されているFromのGPUとのマスは黒塗りとなる。
ステップ2における転送ペアは、白塗りの中から選択される。図14において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#2、GPU#1とGPU#3、GPU#4とGPU#6、GPU#5とGPU#7の転送ペアが示されている。また、いずれの転送ペア間の通信帯域も8であるので、図14に示されるステップ2における転送ペア間の最小の通信帯域min(Wm,n)は8である。
図15は、具体例1におけるAll−Reduce処理のステップ3における転送ペアの一例を示す図である。図15は、All−Reduce処理のステップ1、ステップ2における転送ペアが、それぞれ、図13、図14に示される転送ペアである場合の、ステップ3において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
まず、1つ前のステップ2における転送ペアの相手の識別番号が、各ToのGPUの付加情報に追加される。各ToのGPUについて、付加情報に追加されたFromのGPUとのマスが新たに黒塗りとなる。
図15では、FromのGPU#0〜#3とToのGPU#0〜3との組合せ、FromのGPU#4〜#7とToのGPU#4〜#7との組合せのマスが黒塗り、すなわち、選択できなくなっている。
ステップ3における転送ペアの組合せは、白塗りの中から選択される。図15において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#4、GPU#1とGPU#5、GPU#2とGPU#6、GPU#3とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も1であるので、図15に示されるステップ3における転送ペア間の最小の通信帯域min(Wm,n)は1である。
Butterfly方式でGPU数が8台の場合には、ステップ3でAll−Reduce処理の全ステップが終了となる。Halving/Doubling方式でGPU数8台の場合には、ステップ3で集約処理が終了し、ステップ4以降は共有処理が行われる。Halving/Doubling方式の共有処理では、例えば、ステップ4ではステップ3と同じ転送ペア、ステップ5ではステップ2と同じ転送ペア、ステップ6ではステップ1と同じ転送ペアで共有処理が行われようにしてもよい。具体例1では、Halving/Doubling方式の共有処理の各ステップにおける転送ペアは、上述の通りとする。
図16は、具体例1におけるHalving/Doubling方式の転送ペアの組合せの一例を示す図である。図16に示される例では、ステップ1〜3(集約処理)それぞれにおける転送ペアは、図13〜図15で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。図16に示される例では、ステップ4〜6(共有処理)それぞれにおける転送ペアは、ステップ3〜1と同様、す
なわち、図15〜図13で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。
なわち、図15〜図13で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。
図16では、各ステップについて、転送量情報Tiと最小の通信帯域min(Wm,n)とが示されている。
第1実施形態において、All−Reduce処理の各ステップにおける時間コストは、全転送ペアのうちの最大転送時間で示され、各ステップの時間コストは、各ステップの転送量情報Ti/最小の通信帯域min(Wm,n)で示される。したがって、アルゴリズムの全ステップ合計の時間コストは、各ステップの時間コストの合計で示される(数式1参照)。
図16に示されるHalving/Doubling方式の転送ペアの組合せの場合には、時間コストは、7/8×Mとなる。Butterfly方式の場合には、図16に示されるステップ1〜3の転送ペアの組合わせの時間コストは、各ステップにおける転送量情報TiはMであるので、5/4×Mとなる。
すなわち、図16に示される転送ペアの組合せとなる場合には、時間コストがより小さいHalvin/Doubling方式が選択される。
図17は、図16に示されるステップ1とステップ2とにおける転送ペアの組合せのバリエーションの一例を示す図である。図17に示されるA1のステップ1とステップ2との転送ペアの組合せは、図16に示されるステップ1とステップ2と同じ転送ペアの組合せである。
図17に示されるA2、A3のステップ1とステップ2との転送ペアの組合せは、A1のステップ1とステップ2との転送ペアの組み合わせと、転送量情報Tiと転送ペア間の最小の通信帯域min(Wm,n)とが同じ値となる組合せである。すなわち、図16において、ステップ1とステップ2との転送ペアの組合せは、図17に示されるA2又はA3のステップ1とステップ2との転送ペアの組合せであってもよい。また、複数の組合せが選択される場合には、ステップ1とステップ2との転送ペアの組合せが図17に示されるA2又はA3のステップ1とステップ2との転送ペアの組合せであるものも選択されてもよい。
図18は、図16に示されるステップ3における転送ペアのバリエーションの一例を示す図である。図18に示されるB1の転送ペアは、図16に示されるステップ3と同じ転送ペアである。
図18に示されるB2〜B4の転送ペアは、B1の転送ペアと、転送量情報Tiと転送ペア間の最小の通信帯域min(Wm,n)とが同じ値となる転送ペアである。すなわち、図16において、ステップ3の転送ペアは、図18に示されるB2〜B4のいずれかの転送ペアであってもよい。また、複数の転送ペアの組合せが選択される場合には、ステップ3の転送ペアが図18に示されるB2〜B4の転送ペアであるものも選択されてもよい。
なお、Halving/Doubling方式の場合には、図16のステップ4の転送ペアは、図18のB2〜B4のいずれかの転送ペアであってもよい。また、Halving/Doubling方式の場合には、図16のステップ5、ステップ6の転送ペアの組合せは、図17のA1、A2のいずれかのステップ2、ステップ1の転送ペアの組合せであってもよい。
<具体例2>
図19は、具体例2に係る深層学習システム100Bのシステム構成を示す図である。具体例2に係る深層学習システム100Bは、ノード#1、ノード#2、ノード#3、ノード#4の4台のノードを含む。ノード#1は、GPU#0、GPU#1の2台のGPU
13を備える。ノード#2は、GPU#3、GPU#4の2台のGPU 13を備える。ノード#3は、GPU#4、GPU#5の2台のGPU 13を備える。ノード#4は、GPU#6、GPU#7の2台のGPU 13を備える。
図19は、具体例2に係る深層学習システム100Bのシステム構成を示す図である。具体例2に係る深層学習システム100Bは、ノード#1、ノード#2、ノード#3、ノード#4の4台のノードを含む。ノード#1は、GPU#0、GPU#1の2台のGPU
13を備える。ノード#2は、GPU#3、GPU#4の2台のGPU 13を備える。ノード#3は、GPU#4、GPU#5の2台のGPU 13を備える。ノード#4は、GPU#6、GPU#7の2台のGPU 13を備える。
具体例2では、ノード#1〜ノード#4それぞれの内部において、2台のGPU間で階層構造はないものとする。一方、具体例2における深層学習システム100Bでは、異なるノード間の通信には、階層構造が存在している。ノード#1とノード#2、ノード#3とノード#4とはペアであり、ペアのノード同士の通信は、ペアでないノード同士の通信よりも高速であるとする。すなわち、具体例2における深層学習システム100Bでは、GPU間の通信は、ノード内通信>ペアのノード間通信>ペアでないノード間通信の順で高速となる。
図20は、具体例2における接続帯域情報の一例を示す図である。図20に示される例では、同一のノード1内のGPU同士の接続帯域情報は8、ペアのノードのGPU間の接続帯域情報は4、ペアでないノードのGPU間の接続帯域情報は1、と示されている。
図21は、具体例2におけるAll−Reduce処理のステップ1における転送ペアの一例を示す図である。図21では、All−Reduce処理のステップ1で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
具体的には、図21には、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#1、GPU#2とGPU#3、GPU#4とGPU#5、GPU#6とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も8であるので、図21に示されるステップ1における転送ペア間の最小の通信帯域min(Wm,n)は8である。
図22は、具体例2におけるAll−Reduce処理のステップ2における転送ペアの一例を示す図である。図22には、All−Reduce処理のステップ1における転送ペアが図21に示される転送ペアである場合の、ステップ2において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
図22において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#2、GPU#1とGPU#3、GPU#4とGPU#6、GPU#5とGPU#7の転送ペアが示されている。また、いずれの転送ペア間の通信帯域も4であるので、図22に示されるステップ2における転送ペア間の最小の通信帯域min(Wm,n)は4である。
図23は、具体例2におけるAll−Reduce処理のステップ3における転送ペアの一例を示す図である。図23は、All−Reduce処理のステップ1、ステップ2における転送ペアが、それぞれ、図21、図22に示される転送ペアである場合の、ステップ3において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
まず、1つ前のステップ2における転送ペアの相手の識別番号が、各ToのGPUの付加情報に追加される。各ToのGPUについて、付加情報に追加されたFromのGPUとのマスが新たに黒塗りとなる。
図23において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#4、GPU#1とGPU#5、GPU#2とGPU#6、GPU#3とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も1であるので、図23に示されるステップ3における転送ペア間の最小の通信帯域min(Wm,n)は1である。
具体例1と同様に、具体例2でも、GPU数が8台であるので、Butterfly方式の場合、ステップ3でAll−Reduce処理の全ステップが終了となる。Halving/Doubling方式の場合、GPU数が8台であるので、ステップ6まで続く。具体例2でも、Halving/Doubling方式の共有処理の各ステップにおける転送ペアは、集約処理の逆の順の各ステップにおける転送ペアとする。
図24は、具体例2におけるHalving/Doubling方式の転送ペアの組合せの一例を示す図である。図24に示される例では、ステップ1〜3(集約処理)それぞれにおける転送ペアは、図21〜図23で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。図24に示される例では、ステップ4〜6(共有処理)それぞれにおける転送ペアは、ステップ3〜1と同様、すなわち、図23〜図21で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。
図24に示されるHalving/Doubling方式の転送ペアの組合せの場合には、時間コストは、1/2×Mとなる。Butterfly方式の場合には、図24に示されるステップ1〜3の転送ペアの組み合わせとなり、各ステップにおける転送量情報TiはMであるので、時間コストは、11/8×Mとなる。
すなわち、図24に示される転送ペアの組合せとなる場合には、時間コストがより小さいHalvin/Doubling方式が選択される。
図25は、図24に示されるステップ2における転送ペアのバリエーションの一例を示す図である。図25に示されるC1のステップ2の転送ペアは、図24に示されるステップ2と同じ転送ペアである。
図25に示されるC2の転送ペアは、C1の転送ペアと、転送量情報Tiと転送ペア間の最小の通信帯域min(Wm,n)とが同じ値となる組合せである。すなわち、図24において、ステップ2の転送ペアは、図25に示されるC2の転送ペアであってもよい。また、複数の組合せが選択される場合には、ステップ2の転送ペアが図25に示されるC2の転送ペアであるものも選択されてもよい。
なお、図24のステップ3の転送ペアのバリエーションは、具体例1の図18に示される転送ペアと同様である。
なお、Halving/Doubling方式の場合には、図24のステップ5の転送ペアは、図25のC2の転送ペアであってもよい。また、Halving/Doubling方式の場合には、図24のステップ3、4の転送ペアの組合せは、図18のB2〜B4のいずれかの転送ペアの組合せであってもよい。
<具体例3>
具体例3に係る深層学習システムのシステム構成は、具体例1と同様である。具体例3では、GPU#3からGPU#2への接続に異常が発生し、GPU#3からGPU#2への通信帯域が低下した場合が想定される。なお、双方向バスでGPU間が接続される場合には、GPU#3からGPU#2への接続と、GPU#2からGPU#3への接続への通信帯域の値は同じとなるが、片方向バスでは片方向の障害が発生し得る。
具体例3に係る深層学習システムのシステム構成は、具体例1と同様である。具体例3では、GPU#3からGPU#2への接続に異常が発生し、GPU#3からGPU#2への通信帯域が低下した場合が想定される。なお、双方向バスでGPU間が接続される場合には、GPU#3からGPU#2への接続と、GPU#2からGPU#3への接続への通信帯域の値は同じとなるが、片方向バスでは片方向の障害が発生し得る。
図26は、具体例3における接続帯域情報の一例を示す図である。図26に示される例では、同一のノード1内のGPU同士の接続帯域情報は8、異なるノードのGPU間の接続帯域情報は8、と示されている。また、具体例3では、GPU#3からGPU#2への通信帯域が低下していることが想定されるので、GPU#3からGPU#2への接続帯域情報は0.5と低い値となっている。
図27は、具体例3におけるAll−Reduce処理のステップ1における転送ペアの一例を示す図である。図21では、All−Reduce処理のステップ1で選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
具体的には、図27には、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#2、GPU#1とGPU#3、GPU#4とGPU#6、GPU#5とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も8であるので、図27に示されるステップ1における転送ペア間の最小の通信帯域min(Wm,n)は8である。
具体例1とは異なって、具体例3では、GPU#3からGPU#2への接続帯域情報は0.5であるため、転送ペア間の最小の通信帯域min(Wm,n)が最大となる組合せから、GPU#3とGPU#2とのペアを含む組合せは除外される。
図28は、具体例3におけるAll−Reduce処理のステップ2における転送ペアの一例を示す図である。図28には、All−Reduce処理のステップ1における転送ペアが図27に示される転送ペアである場合の、ステップ2において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
図28において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#3、GPU#1とGPU#2、GPU#4とGPU#7、GPU#5とGPU#6の転送ペアが示されている。また、いずれの転送ペア間の接続帯域情報も8であるので、図28に示されるステップ2における転送ペア間の最小の通信帯域min(Wm,n)は8である。
図29は、具体例3におけるAll−Reduce処理のステップ3における転送ペアの一例を示す図である。図29は、All−Reduce処理のステップ1、ステップ2における転送ペアが、それぞれ、図27、図28に示される転送ペアである場合の、ステップ3において選択可能な転送ペアのうち、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアの一つが示されている。
図29において、転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアとして、GPU#0とGPU#4、GPU#1とGPU#5、GPU#2とGPU#6、GPU#3とGPU#7との転送ペアが示されている。また、いずれの転送ペア間の通信帯域も1であるので、図29に示されるステップ3における転送ペア間の最小の通信帯
域min(Wm,n)は1である。
域min(Wm,n)は1である。
具体例1と同様に、具体例3でも、GPU数が8台であるので、Butterfly方式の場合、ステップ3でAll−Reduce処理の全ステップが終了となる。Halving/Doubling方式の場合、GPU数が8台であるので、ステップ6まで続く。具体例3でも、Halving/Doubling方式の共有処理の各ステップにおける転送ペアは、集約処理の逆の順の各ステップにおける転送ペアとする。
図30は、具体例3におけるHalving/Doubling方式の転送ペアの組合せの一例を示す図である。図30に示される例では、ステップ1〜3(集約処理)それぞれにおける転送ペアは、図27〜図29で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。図30に示される例では、ステップ4〜6(共有処理)それぞれにおける転送ペアは、ステップ3〜1と同様、すなわち、図29〜図27で示される、各ステップにおいて転送ペア間の最小の通信帯域min(Wm,n)が最大となる転送ペアである。
図30に示されるHalving/Doubling方式の転送ペアの組合せの場合には、時間コストは、7/16×Mとなる。Butterfly方式の場合には、図30に示されるステップ1〜3の転送ペアの組み合わせとなり、各ステップにおける転送量情報TiはMであるので、時間コストは、5/4×Mとなる。
すなわち、図30に示される転送ペアの組合せとなる場合には、時間コストがより小さいHalvin/Doubling方式が選択される。なお、具体例3は具体例1と同じシステム構成であるが、GPU#3からGPU#2への通信帯域が低下していることが想定されるので、具体例3における採用される転送ペアの組合せ(図30の転送ペアの組合せ)は、具体例1(図16の転送ペアの組合せ)とは異なるものが採用される。
図31は、図30に示されるステップ1とステップ2とにおける転送ペアの組合せのバリエーションの一例を示す図である。図31に示されるD1のステップ1とステップ2との転送ペアの組合せは、図30に示されるステップ1とステップ2と同じ転送ペアの組合せである。
図31に示されるD2のステップ1とステップ2との転送ペアの組合せは、D1のステップ1とステップ2との転送ペアの組み合わせと、転送量情報Tiと転送ペア間の最小の通信帯域min(Wm,n)とが同じ値となる組合せである。すなわち、図30において、ステップ1とステップ2との転送ペアの組合せは、図31に示されるD2のステップ1とステップ2との転送ペアの組合せであってもよい。また、複数の組合せが選択される場合には、ステップ1とステップ2との転送ペアの組合せが図31に示されるD2のステップ1とステップ2との転送ペアの組合せであるものも選択されてもよい。
なお、図30のステップ3の転送ペアのバリエーションは、具体例1の図18に示される転送ペアの組み合わせと同様である。
なお、Halving/Doubling方式の場合には、図30のステップ4の転送ペアは、図18のB2〜B4のいずれかの転送ペアであってもよい。また、Halving/Doubling方式の場合には、図30のステップ5、ステップ6の転送ペアの組合せは、図31のD2のステップ2、ステップ1の転送ペアの組合せであってもよい。
<第1実施形態の作用効果>
第1実施形態では、All−Reduce処理のアルゴリズム、当該アルゴリズムの各
ステップにおける転送ペアの組合せの中から、All−Reduce処理にかかる時間が短いアルゴリズム、当該アルゴリズムの各ステップにおける転送ペアの組合せが選択される。これによって、深層学習システム100におけるAll−Reduce処理にかかる時間を短くすることができる。
第1実施形態では、All−Reduce処理のアルゴリズム、当該アルゴリズムの各
ステップにおける転送ペアの組合せの中から、All−Reduce処理にかかる時間が短いアルゴリズム、当該アルゴリズムの各ステップにおける転送ペアの組合せが選択される。これによって、深層学習システム100におけるAll−Reduce処理にかかる時間を短くすることができる。
また、第1実施形態では、学習処理の実行の度に各GPU間の接続帯域情報が取得される。このため、一部のGPU間の接続に不具合が発生し、当該GPU間の帯域が低下した場合には、All−Reduce処理の各ステップにおいて当該GPUのペアが含まれない転送ペアの組合せが選択される(例えば、具体例3参照)。したがって、第1実施形態によれば、GPU間の接続に不具合が生じた場合でも、All−Reduce処理にかかる時間が短くなるようなアルゴリズム、各ステップにおける転送ペアの組み合わせを選択することができる。
また、第1実施形態では、転送ペアの組合せの選択は、例えば、データの転送量と、GPU間の通信帯域とに基づいて算出される時間コストに基づいて行われる。また、各ステップにおける時間コストは、最も通信帯域が小さい転送ペアの通信帯域を用いて算出される。したがって、各ステップにおいて選択される転送ペアの組合せは、通信帯域が最小の転送ペアの通信帯域が、転送ペアの組合せのうち最大となる転送ペアの組合せである。したがって、第1実施形態によれば、All−Reduce処理にかかる時間が最も小さいアルゴリズム、各ステップにおける転送ペアの組合せが選択される。
また、第1実施形態では、転送ペアの組合せは複数選択されてもよい。転送ペアの組合せが複数選択され、各ノード1に通知されることによって、例えば、1つの転送ペアの組合せに従って行われたAll−Reduce処理が失敗した場合でも、再度転送ペアの決定処理を行わなくても、直ちに、他の転送ペアの組合せを用いてAll−Reduce処理を実行することができる。
なお、第1実施形態におけるGPU間の接続帯域情報の取得処理(図8参照)は、学習処理の一部として実行されることに限定されず、例えば、周期的に、又は、深層学習システム100の管理者からの指示入力に従って、実行されてもよい。
なお、第1実施形態では、深層学習システム100内のいずれか1台のノード1のCPU 11が転送ペアの決定処理(図9参照)を行うが、これに限定されない。例えば、深層学習システム100内の複数のノード1がそれぞれ転送ペアの決定処理を実行し、それぞれが選択したAll−Reduceの処理と各ステップにおける転送ペアの組合せとを交換し合ってもよい。また、深層学習システム100内の全ノード1を制御する制御装置が、接続帯域情報の取得処理と転送ペアの決定処理とを実行し、各ノード1に、All−Reduce処理のアルゴリズムと各ステップにおける転送ペアとを通知してもよい。
なお、第1実施形態では、深層学習システム100内に存在する全GPU 13が深層学習の対象となり、All−Reduce処理の対象となっていたが、これに限定されない。例えば、深層学習システム100内に存在する一部のGPU 13が深層学習の対象であり、All−Reduce処理の対象であってもよい。この場合には、転送ペアの決定処理において転送ペアは、All−Reduce処理の対象となる一部のGPU 13内で決定される。
<第1変形例>
図32は、第1変形例に係るノードのハードウェア構成の一例を示す図である。変形例に係るノード1Aは、CPUを有していない。ノード1Aは、複数のGPU 13と、各GPU 13用の複数のメモリ 14と、ノード内IF 15、ノード間IF16とを備
える。ノード1Aでは、複数のGPU 13のうちのいずれかが、第1実施形態に係るCPU 11の処理を行う。変形例において、第1実施形態に係るCPU 11の処理を行うGPU 13は、「制御部」の一例である。
図32は、第1変形例に係るノードのハードウェア構成の一例を示す図である。変形例に係るノード1Aは、CPUを有していない。ノード1Aは、複数のGPU 13と、各GPU 13用の複数のメモリ 14と、ノード内IF 15、ノード間IF16とを備
える。ノード1Aでは、複数のGPU 13のうちのいずれかが、第1実施形態に係るCPU 11の処理を行う。変形例において、第1実施形態に係るCPU 11の処理を行うGPU 13は、「制御部」の一例である。
図32では、GPU 13−1が第1実施形態に係るCPU 11の処理を行う。そのため、GPU 13−1用のメモリ14−1には、学習プログラム、転送ペア決定プログラム、接続帯域情報が保持されている。
GPU 13−1は、学習プログラムを実行することによって、例えば、図7〜図10に示される処理を実行する。具体的には、GPU 13−1は、深層学習システム100内に存在するGPU間の接続帯域情報を取得し、All−Reduce処理のアルゴリズム、各ステップにおける転送ペアの組合せを決定し、学習処理を制御する。
<第2変形例>
第2変形例では、転送ペアの組合せをk組(kは2以上の整数)選択し、各GPUの勾配情報をh個(h≦kの正の整数)に分割させ、細分化されたh個の勾配情報それぞれについて子プロセス作成し、子プロセスごとに異なる転送ペアの組合せでAll−Reduce処理を並行して実行させる。
第2変形例では、転送ペアの組合せをk組(kは2以上の整数)選択し、各GPUの勾配情報をh個(h≦kの正の整数)に分割させ、細分化されたh個の勾配情報それぞれについて子プロセス作成し、子プロセスごとに異なる転送ペアの組合せでAll−Reduce処理を並行して実行させる。
図33は、第2変形例に係るノード1における深層学習の学習処理のフローチャートの一例である。図33に示される処理は、第2変形例において、第1実施形態における図7の処理に代わって実行される処理である。図33に示される処理は、例えば、ノード1のCPU 11が学習プログラムを実行することによって達成される処理である。図33に示される処理は、深層学習システム100内の各ノード1によって実行される処理である。
図33に示される処理は、例えば、学習開始の指示の入力によって開始される。学習開始の指示は、例えば、深層学習システム100内の全ノード1を制御する制御装置又はいずれかのノード1を通じて、深層学習システム100の管理者から入力される。
S41〜S45の処理は、図7のS1〜S5の処理と同様である。すなわち、CPU 11は、学習用データを読み込み(S41)、各GPU 13間の接続帯域情報の取得処理を実行し(S42)、転送ペアの決定処理を行う(S43)。なお、転送ペアの決定処理は、ノード1のうちのいずれか1台のノード1が実行する。ただし、第2変形例では、転送ペアの決定処理を実行するノード1のCPU 11は、時間コストに基づいて、時間コストが最も小さい転送ペアの組合せを含むk組の転送ペアの組合せを選択する。k組の転送ペアの組合せの選択方法は、例えば、時間コストの小さい上位からk組選択する方法、時間コストが最も小さい転送ペアの組合せの時間コスト+α内の時間コストである転送ペアの組合せの中からk組選択する方法等がある。
次に、CPU 11は、各GPU 13の学習処理を開始させ、各GPU 13は、フォーワード処理、バックワード処理をすべてのニューロン層において順次実行する(S44、S45)。
次に、CPU 11は、各GPU 13に、勾配情報をh個に分割して細分化するように指示する(S46)。CPU 11は、h個の子プロセスを作成し、各プロセスに、細分化された勾配情報のいずれかと、k組の転送ペアの組合せうちのいずれかの組とを、例えば、重複しないように割り当てる(S47)。なお、例えば、勾配情報の分割方法、細分化された勾配情報それぞれの転送ペアの組合せの割当方法は、全ノード1で共通しており、全ノード1間で、細分化された勾配情報のうちの同じ位置の細分化部分に割り当てら
れる転送ペアの組合せわは一致する。また、h個の子プロセスのうちの一部で、割り当てられる転送ペアの組合せは重複してもよい。
れる転送ペアの組合せわは一致する。また、h個の子プロセスのうちの一部で、割り当てられる転送ペアの組合せは重複してもよい。
次に、h個の子プロセスそれぞれにおいて、All−Reduce処理が行われる(S48)。各子プロセスのAll−Reduce処理の詳細は、図10に示される通りである。h個の子プロセスがすべて終了すると、深層学習システム100内の全GPU 13間で、各GPU 13によって算出された全勾配情報が共有される。
次に、各GPU 13は、アップデート処理を行う(S49)。次に、各GPU 13は、学習処理の繰り返しを終了するか否かを判定する(S50)。学習処理の繰り返しが判定されると(S50でNO)、処理がS4に戻る。学習処理の繰り返しの終了が判定されると(S50でYES)、図33に示される処理が終了する。
第2変形例では、各GPU 13の勾配情報を細分化し、細分化された勾配情報それぞれについて異なる転送ペアの組合せでのプロセスを並行して実行させることで、GPU 13間の使用されない通信経路を削減し、有効活用することができる。また、1つのAll−Deduce処理のプロセスが扱うデータサイズが小さくなり、All−Reduce処理をより高速化することができる。
<記録媒体>
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compact Disc(CD)−Read Only Memory(ROM)、CD−Recordable(R)、Digital Versatile Disk(DVD)、ブルーレイディスク、Digital Audio Tape(DAT)、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、Solid State Drive(SSD)は、コンピュータ等から取り外し可能な記録媒体としても
、コンピュータ等に固定された記録媒体としても利用可能である。
、コンピュータ等に固定された記録媒体としても利用可能である。
1 ノード
11 CPU
12、14 メモリ
13 GPU
15 ノード内インタフェース
16 ノード間インタフェース
100 深層学習システム
11 CPU
12、14 メモリ
13 GPU
15 ノード内インタフェース
16 ノード間インタフェース
100 深層学習システム
Claims (9)
- 複数の演算処理装置を備える情報処理装置を複数有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムにおいて、
前記複数の情報処理装置のうちの少なくとも1つは、
前記複数の情報処理装置に含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記一の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報を記憶する記憶部と、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、
を有する、
情報処理システム。 - 前記制御部は、前記各演算処理装置それぞれの演算結果データが前記各演算処理装置間で共有されるまでにかかる第1の時間が短くなるように、前記各演算処理装置の、前記転送先となる演算処理装置を決定する、
請求項1に記載の情報処理システム。 - 前記制御部は、
一部又は全部の演算処理装置間での、一の演算処理装置から他の演算処理装置への所定のアルゴリズムに応じたデータ量の演算結果データの転送を1ステップとした場合に、前記各演算処理装置の演算結果データが前記各演算処理装置間で共有されるまでに要するステップ数と、各ステップにおける転送データ量とを取得し、
前記各ステップについて、前記各演算処理装置の前記転送先を複数パターン決定し、
前記各ステップにおける前記複数パターンから選択された1つのパターンの、全ステップ分の複数の組合せそれぞれについて、前記帯域情報と前記各ステップにおける転送データ量とに基づいて、前記第1の時間を算出し、
前記複数の組合せの中から前記算出された前記第1の時間が短い少なくとも1つの組合せを選択する、
請求項2に記載の情報処理システム。 - 前記制御部は、
前記複数の組合せそれぞれの前記第1の時間の算出に、前記複数の組合せに含まれる各ステップにおける一の演算処理装置と他の演算処理装置間の通信帯域のうち最も小さい通信帯域を用いる、
請求項3に記載の情報処理システム。 - 前記制御部は、
前記複数パターンの決定において、データの共有の複数のアルゴリズムそれぞれの、前記各ステップについて、前記一部又は全部の演算処理装置について前記演算結果データを転送し合うペアを複数パターン決定する、
請求項3又は4に記載の情報処理システム。 - 前記複数の情報処理装置に含まれる各複数の演算処理装置は、所定のニューラルネットワークにおける重み係数の学習処理に用いられ、
前記各演算処理装置は、前記学習処理におけるAll−Reduced処理において、演算結果データを所定数に分割して細分化し、細分化された演算結果データそれぞれに前記複数パターンのうちのいずれか1つのパターンを割り当て、前記細分化された演算結果データを、前記割り当てられたパターンにより並列に、転送先の演算処理装置に送信する
、
請求項5に記載の情報処理システム。 - 前記複数の情報処理装置に含まれる各演算処理装置は、所定のニューラルネットワークにおける重み係数の学習処理に用いられ、
前記制御部は、前記重み係数の学習処理の実行前に、前記帯域情報を取得し、前記各演算処理装置の前記転送先となる演算処理装置を決定する、
請求項1から6のいずれか一項に記載の情報処理システム。 - 複数の演算処理装置を備える複数の情報処理装置を有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムに含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記位置の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報(接続帯域情報)を記憶する記憶部と、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する制御部と、
を備える情報処理装置。 - 複数の演算処理装置を備える複数の情報処理装置を有し、前記複数の情報処理装置に含まれる各演算処理装置の演算結果データを用いて並列処理が行われる情報処理システムに含まれる一の演算処理装置から他の演算処理装置に対して通信を行う場合における前記一の演算処理装置と前記他の演算処理装置間における通信帯域を示す帯域情報を記憶部に記憶し、
前記記憶部が記憶する帯域情報に基づき、前記各演算処理装置の、演算結果データを転送する転送先となる演算処理装置を決定する、
転送先決定方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017191132A JP2019067084A (ja) | 2017-09-29 | 2017-09-29 | 情報処理システム、情報処理装置、及び、転送先決定方法 |
| US16/137,618 US20190102169A1 (en) | 2017-09-29 | 2018-09-21 | Effective determination of processor pairs for transferring data processed in parallel |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017191132A JP2019067084A (ja) | 2017-09-29 | 2017-09-29 | 情報処理システム、情報処理装置、及び、転送先決定方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2019067084A true JP2019067084A (ja) | 2019-04-25 |
Family
ID=65897180
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017191132A Withdrawn JP2019067084A (ja) | 2017-09-29 | 2017-09-29 | 情報処理システム、情報処理装置、及び、転送先決定方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20190102169A1 (ja) |
| JP (1) | JP2019067084A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020190894A (ja) * | 2019-05-21 | 2020-11-26 | 富士通株式会社 | 演算処理装置、プログラム、及び演算処理装置の制御方法 |
| US12443877B2 (en) | 2020-12-01 | 2025-10-14 | Fujitsu Limited | Calculator, deep learning method and computer-readable recording medium storing program for deep learning |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7238376B2 (ja) * | 2018-12-14 | 2023-03-14 | 富士通株式会社 | 情報処理システム及び情報処理システムの制御方法 |
| KR102773335B1 (ko) | 2019-08-16 | 2025-02-27 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
| CN110618870B (zh) * | 2019-09-20 | 2021-11-19 | 广东浪潮大数据研究有限公司 | 一种深度学习训练任务的工作方法及装置 |
| WO2021195988A1 (en) * | 2020-03-31 | 2021-10-07 | Alibaba Group Holding Limited | Network congestion avoidance over halving-doubling collective communication |
| JP2024010508A (ja) * | 2022-07-12 | 2024-01-24 | 富士通株式会社 | 管理装置、演算処理装置、演算処理装置の負荷分散方法及びプログラム |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2014020959A1 (ja) * | 2012-07-30 | 2014-02-06 | 日本電気株式会社 | 分散処理装置及び分散処理システム並びに分散処理方法 |
| US9215138B2 (en) * | 2012-12-06 | 2015-12-15 | International Business Machines Corporation | Determining a system configuration for performing a collective operation on a parallel computer |
| US10325343B1 (en) * | 2017-08-04 | 2019-06-18 | EMC IP Holding Company LLC | Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform |
-
2017
- 2017-09-29 JP JP2017191132A patent/JP2019067084A/ja not_active Withdrawn
-
2018
- 2018-09-21 US US16/137,618 patent/US20190102169A1/en not_active Abandoned
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020190894A (ja) * | 2019-05-21 | 2020-11-26 | 富士通株式会社 | 演算処理装置、プログラム、及び演算処理装置の制御方法 |
| JP7230683B2 (ja) | 2019-05-21 | 2023-03-01 | 富士通株式会社 | 演算処理装置、プログラム、及び演算処理装置の制御方法 |
| US12443877B2 (en) | 2020-12-01 | 2025-10-14 | Fujitsu Limited | Calculator, deep learning method and computer-readable recording medium storing program for deep learning |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190102169A1 (en) | 2019-04-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2019067084A (ja) | 情報処理システム、情報処理装置、及び、転送先決定方法 | |
| CN113435682B (zh) | 分布式训练的梯度压缩 | |
| CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
| JP7308003B2 (ja) | 非集中的な分散型深層学習 | |
| JP6776696B2 (ja) | 並列情報処理装置、情報処理方法、およびプログラム | |
| CN110750351B (zh) | 多核任务调度器、多核任务调度方法、装置及相关产品 | |
| US10678479B1 (en) | Registers for restricted memory | |
| US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
| US20180253646A1 (en) | Hybrid aggregation for deep learning neural networks | |
| US20220129325A1 (en) | Parallelization method and apparatus with processing of neural network model for manycore system | |
| US20200226461A1 (en) | Asynchronous early stopping in hyperparameter metaoptimization for a neural network | |
| US20220138563A1 (en) | Method and device with deep learning operations | |
| CN118643253B (zh) | 数据处理方法、装置、设备和存储介质 | |
| US20220121912A1 (en) | Data processing method and apparatus | |
| CN109491934B (zh) | 一种集成计算功能的存储管理系统控制方法 | |
| CN111133457A (zh) | 电子设备及其控制方法 | |
| CN119759554B (zh) | 跨数据中心的分布式训练方法、装置及计算机程序产品 | |
| CN115345285B (zh) | 基于gpu的时序图神经网络训练方法、系统及电子设备 | |
| CN119865533B (zh) | 用于模型并行训练的通信压缩方法、装置及电子设备 | |
| WO2026021108A1 (zh) | 概率计算加速卡、概率计算加速方法、装置和介质 | |
| WO2025190343A1 (zh) | 一种模型训练方法、系统及相关设备 | |
| CN118012631B (zh) | 一种算子执行方法、处理设备、存储介质及程序产品 | |
| CN120338052A (zh) | 模型性能优化方法、电子设备、存储介质和程序产品 | |
| TWI843934B (zh) | 用於處理無結構源資料的方法及系統 | |
| JP2020003860A (ja) | 学習システム、処理装置、処理方法、およびプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200709 |
|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20210611 |