JP7287492B2 - 分散深層学習システムおよびデータ転送方法 - Google Patents
分散深層学習システムおよびデータ転送方法 Download PDFInfo
- Publication number
- JP7287492B2 JP7287492B2 JP2021555693A JP2021555693A JP7287492B2 JP 7287492 B2 JP7287492 B2 JP 7287492B2 JP 2021555693 A JP2021555693 A JP 2021555693A JP 2021555693 A JP2021555693 A JP 2021555693A JP 7287492 B2 JP7287492 B2 JP 7287492B2
- Authority
- JP
- Japan
- Prior art keywords
- data frame
- data
- unit
- calculation
- layer
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、分散深層学習システムおよびデータ転送方法に関し、特に、ネットワークで連携する複数の分散処理ノードを用いた分散深層学習におけるデータの転送技術に関する。
従来から、多層ニューラルネットワークにデータの特徴を学習させる深層学習が提案されている。深層学習は、より大量の学習用データを用いて学習を行うことで分類や予測の精度が向上する。この学習処理の効率を向上させるために、複数の分散処理ノードをネットワークで連携させて各分散処理ノードが異なるデータを学習するデータ並列型の分散深層学習システムが提案されている。
従来の分散深層学習システムにおける深層学習では、分散深層学習システムを構成する複数の計算機のそれぞれにおいて、学習データを入力層から出力層へ順番に伝搬させ、ニューラルネットワークからの出力値が正解のラベルデータからどれだけ乖離しているかの指標となる損失関数を求める。このように、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していく処理を「順伝搬計算」という。
また、従来の分散深層学習システムでは、各分散処理ノードにおいて順伝搬計算により求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この処理を「逆伝搬計算」と呼ぶ。
また、従来から、推論精度を改善する手法の一つとしてミニバッチ法が用いられている。ミニバッチ法では、順伝搬計算の結果を示すサンプルデータごとに重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて計算された勾配を集計する(サンプルデータごとに得られた勾配を重み別に合算する)集計処理と、各重みを集計された勾配に基づいて更新する重み更新処理と、を繰り返す。
このように、従来の分散深層学習システムでは、逆伝搬計算の後に、さらに勾配情報を分散処理ノード間で共有および集約する集団通信(以下、「Allreduce処理」という。)が行われる(例えば、非特許文献1参照)。すなわち、分散深層学習では、順伝搬計算、逆伝搬計算、Allreduce処理、順伝搬計算の処理を繰り返し実施することで、深層学習モデルの学習を進める。
逆伝搬計算が完了するのは、出力層から入力層の順番であり、順伝搬計算が開始される順番は入力層から出力層の順である。そのため、通常では、Allreduce処理の終了を待ってから順伝搬計算を開始する必要がある。非特許文献1に記載の分散深層学習システムでは、深層学習モデルの各層のパラメータごとに誤差逆伝搬計算とAllreduce処理とを実施し、処理をオーバーラップさせて通信時間の隠蔽を可能としている。
K.Tanaka et al.,"Distributed Deep Learning with FPGA Ring Allreduce"in Proceedings of International Supercomputing Conference,2019/6.
しかし、従来の分散深層学習システムでは、分散深層学習において計算すべきデータの順番が逆伝搬計算と順伝搬計算とにおいて、異なる層から開始されるため、分散処理ノード内で処理の待ち時間が生ずる場合があった。
本発明は、上述した課題を解決するためになされたものであり、分散処理ノード内での処理の待ち時間を抑制し、分散深層学習をより効率的に行うことを目的とする。
上述した課題を解決するために、本発明に係る分散深層学習システムは、1方向に通信可能なリング型の通信ネットワークを構成する複数の分散処理ノードを備え、ニューラルネットワークの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位で分散して反復的に行うとともに、逆伝搬計算の計算結果を足し合わせる集団通信を行う分散深層学習システムであって、前記複数の分散処理ノードの各々は、前記通信ネットワークを介して自ノードに到達した第1データフレームと、前記第1データフレームの次に自ノードに到達した第2データフレームを順次受信する受信部と、前記受信部で受信された前記第1データフレームおよび前記第2データフレームそれぞれのヘッダに含まれる、前記第1データフレームおよび前記第2データフレームのそれぞれに含まれるデータが前記ニューラルネットワークの入力層、中間層、および出力層を含むいずれの層に属するデータであるかを示すレイヤー情報を読み取るヘッダ読取部と、前記受信部によって受信された前記第1データフレームから前記ヘッダ読取部によって読み取られたレイヤー情報と、前記第1データフレームの次に受信された前記第2データフレームから読み取られたレイヤー情報とを比較し、前記第1データフレームと前記第2データフレームとが、それぞれ前記入力層と前記出力層とのいずれにより近い層に属するデータを含むデータフレームであるかを判定する判定部と、前記判定部による判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記入力層により近い層に属するデータを含むデータフレームに対して、前記ニューラルネットワークの順伝搬計算の結果を示すサンプルデータの入力に基づいた計算処理を実行する計算部と、前記判定部による判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記出力層により近い層に属するデータを含むデータフレームに対する前記計算処理をスキップさせる転送部と、前記計算部または前記転送部によって処理された前記第1データフレームおよび前記第2データフレームを、後段の分散処理ノードへ送信する送信部とを備え、前記送信部は、前記第1データフレームと前記第2データフレームとのうち、前記転送部によって前記計算処理がスキップされたデータフレームを、前記計算部によって前記計算処理が実行されたデータフレームより先に、前記後段の分散処理ノードへ送信することを特徴とする。
上述した課題を解決するために、本発明に係るデータ転送方法は、1方向に通信可能なリング型の通信ネットワークを構成する複数の分散処理ノードを備え、ニューラルネットワークの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位で分散して反復的に行うとともに、逆伝搬計算の計算結果を足し合わせる集団通信を行う分散深層学習システムにより実行されるデータ転送方法であって、前記複数の分散処理ノードの各々は、前記通信ネットワークを介して自ノードに到達した第1データフレームと、前記第1データフレームの次に自ノードに到達した第2データフレームとを順次受信する第1ステップと、前記第1ステップで受信された前記第1データフレームおよび前記第2データフレームそれぞれのヘッダに含まれる、前記第1データフレームおよび前記第2データフレームのそれぞれに含まれるデータが前記ニューラルネットワークの入力層、中間層、および出力層を含むいずれの層に属するデータであるかを示すレイヤー情報を読み取る第2ステップと、前記第1ステップで受信された前記第1データフレームから前記第2ステップで読み取られたレイヤー情報と、前記第1データフレームの次に受信された前記第2データフレームから読み取られたレイヤー情報とを比較し、前記第1データフレームと前記第2データフレームとが、それぞれ前記入力層と前記出力層とのいずれにより近い層に属するデータを含むデータフレームであるかを判定する第3ステップと、前記第3ステップでの判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記入力層により近い層に属するデータを含むデータフレームに対して、前記ニューラルネットワークの順伝搬計算の結果を示すサンプルデータの入力に基づいた計算処理を実行する第4ステップと、前記第3ステップでの判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記出力層により近い層に属するデータを含むデータフレームに対する前記計算処理をスキップさせる第5ステップと、前記第4ステップまたは前記第5ステップで処理された前記第1データフレームおよび前記第2データフレームを、後段の分散処理ノードへ送信する第6ステップとを備え、前記第6ステップは、前記第1データフレームと前記第2データフレームとのうち、前記第5ステップで前記計算処理がスキップされたデータフレームを、前記第4ステップで前記計算処理が実行されたデータフレームより先に、前記後段の分散処理ノードへ送信することを特徴とする。
本発明によれば、自ノードに到達した第1データフレームおよび次に到達した第2データフレームのヘッダのレイヤー情報を比較し、入力層により近い層に属するデータを含むデータフレームに対する計算処理を実行し、出力層により近い層に属するデータを含むデータフレームの計算処理をスキップするので、分散処理ノード内での処理の待ち時間を抑制し、分散深層学習処理をより効率的に行うことができる。
以下、本発明の好適な実施の形態について、図1から図14を参照して詳細に説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係る分散深層学習システムが備える分散処理ノード1の構成を示すブロック図である。また、図2は、分散深層学習システムの構成を示すブロック図である。本実施の形態に係る分散深層学習システムでは、入力層、中間層、および出力層を含む多層ニューラルネットの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位に分割して反復的に行う。また、分散深層学習システムでは、逆伝搬計算の計算結果を足し合わせるAllreduce処理を行う。
図1は、本発明の第1の実施の形態に係る分散深層学習システムが備える分散処理ノード1の構成を示すブロック図である。また、図2は、分散深層学習システムの構成を示すブロック図である。本実施の形態に係る分散深層学習システムでは、入力層、中間層、および出力層を含む多層ニューラルネットの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位に分割して反復的に行う。また、分散深層学習システムでは、逆伝搬計算の計算結果を足し合わせるAllreduce処理を行う。
本実施の形態では分散深層学習システムは、例えば、ミニバッチ法を用いて、順伝搬計算の計算結果を示すサンプルデータごとに重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて前記勾配を集計する(サンプルデータごとに得られた勾配を重み別に合算する)集計処理と、各重みを集計された勾配に基づいて更新する重み更新処理と、を繰り返す。
本実施の形態に係る分散深層学習システムにおいて、分散処理ノード1間で送受信されるデータフレームには、ヘッダ部分に、データフレームのデータが、ニューラルネットワークのどの層に属するかを示すレイヤー情報が格納されている。
各分散処理ノード1は、受信したデータフレームのヘッダを読み取るヘッダ読取部11を備える。各分散処理ノード1は、受信したデータのヘッダ情報に基づいて、自ノードでそのデータを用いて計算処理を行うか、あるいは、計算処理をスキップするかを判断する。
このように、本実施の形態では、分散処理ノード1ごとに不要な演算をスキップしつつ、入力層により近いデータの計算処理を先に完了する。そのため、本実施の形態に係る分散深層学習システムは、プロセス間でデータを共有するAllreduce処理において、各分散処理ノード1での計算処理をニューラルネットワークの入力層側のデータから優先して行うことができる。
本実施の形態に係る分散深層学習システムは、図2に示すように、通信ネットワークNWで互いに接続された複数の分散処理ノード1-1~1-4を備える。分散処理ノード1-1~1-4は、一方向にデータ転送が可能なリング型の通信ネットワークNWを構成する。
分散処理ノード1-1~1-4は、例えば、Ethernet(登録商標)などの通信ネットワークNWを介してデータフレームを転送する。また、分散処理ノード1-1~1-4各々は、例えば、PCやサーバなどで構成されることができる。分散処理ノード1-1~1-4のハードウェア構成については後述する。
なお、本実施の形態において、分散処理ノード1-1~1-4を総称して分散処理ノード1ということがある。
[データ構造]
まず、本実施の形態に係る複数の分散処理ノード1-1~1-4で転送されるデータの構造について図3を用いて説明する。本実施の形態に係る分散深層学習システムでは、分散処理ノード1-1~1-4のうちのいずれかが起点となり、データの転送が開始される。分散深層学習システムにおいて送信されるデータは、データフレーム単位で送信され、例えば、データフレームの最大ペイロードが1500バイトのMTUを持つものを採用することができる。
まず、本実施の形態に係る複数の分散処理ノード1-1~1-4で転送されるデータの構造について図3を用いて説明する。本実施の形態に係る分散深層学習システムでは、分散処理ノード1-1~1-4のうちのいずれかが起点となり、データの転送が開始される。分散深層学習システムにおいて送信されるデータは、データフレーム単位で送信され、例えば、データフレームの最大ペイロードが1500バイトのMTUを持つものを採用することができる。
データフレームは、図3に示すように、ヘッダとパケット(データ)とを有する。ヘッダには、予め指定されたフィールドF1に、パケットが学習対象のニューラルネットワークのどのレイヤー(層)に属するかを示すレイヤー情報が格納されている。例えば、レイヤー情報として、学習対象のニューラルネットワークの各レイヤーに予め設定された識別情報が格納される。このレイヤー情報により、複数のデータフレームが互いに比較された場合に、比較対象のデータフレームに含まれるパケットが、入力層側の層に属するパケットであるのかあるいは出力層側の層に属するパケットであるのかが判別可能となる。
データフレームに含まれるパケットは、例えば、逆伝搬計算の結果などを含む。具体的には、ニューラルネットワークの分割された学習データにおける更新された重みパラメータが含まれる。また、パケットには、分散処理ノード1-1~1-4のそれぞれで勾配計算および集計処理が行われた結果が反映される。
また、データフレームは、ヘッダに予めレイヤー情報を格納することができれば、分散深層学習システムに採用される通信ネットワークNWの仕様に応じたフォーマットが用いられる。
[分散処理ノードの機能ブロック]
図1に示すように、分散処理ノード1は、受信部10、ヘッダ読取部11、サンプル入力部12、計算部13、および送信部16を備える。分散深層学習システムが備える複数の分散処理ノード1-1~1-4のそれぞれは同様の構成を有する。
図1に示すように、分散処理ノード1は、受信部10、ヘッダ読取部11、サンプル入力部12、計算部13、および送信部16を備える。分散深層学習システムが備える複数の分散処理ノード1-1~1-4のそれぞれは同様の構成を有する。
受信部10は、隣接する分散処理ノード1あるいは図示されない外部の上位ノードなど外部より送信されたデータフレームを受信する。例えば、受信部10は、複数のデータフレームをデータフレームごとに到達した順番に受信する。図1の例では、受信部10は、通信ネットワークNWを介して送信されてきた順に第1データフレームp01、その次に到達した第2データフレームp02を順次受信している。なお、第1データフレームp01は、例えば、受信部10で順次受信された複数のデータフレームのうちの任意のデータフレームであり、第2データフレームp02は、第1データフレームp01の直後に受信されたデータフレームである。
ヘッダ読取部11は、受信部10で受信された第1データフレームp01をバッファリングする。また、ヘッダ読取部11は、第2データフレームp02から順番にヘッダに含まれるレイヤー情報を読み取る。
ヘッダ読取部11は、図4に示すように、バッファ110、判定部111、および転送部112を備える。また、図1に示すように、ヘッダ読取部11と送信部16との間には転送パスTPが設けられている。
バッファ110は、受信部10が最初に受信した第1データフレームp01をバッファリングする。
判定部111は、バッファ110で一時的に保持された第1データフレームp01のヘッダに含まれるレイヤー情報と、次に受信された第2データフレームp02のヘッダに含まれるレイヤー情報とを読み取る。判定部111は、読み取った2つのデータフレームp01、p02に含まれるレイヤー情報を比較して、どちらのデータフレームが入力層により近い層に属するパケットを含むデータフレームであるかを判定する。すなわち、判定部111は、2つのデータフレームp01、p02のうちどちらが入力層により近いデータフレームであり、どちらが出力層により近いデータフレームであるかを判定する。
転送部112は、判定部111による判定結果に基づいて、入力層により近いデータフレームを計算部13へ転送する。また、転送部112は、判定結果に基づいて、出力層により近い方のデータフレームを転送パスTPを介して送信部16へ転送する。この場合、出力層により近い方のデータフレームは、自ノードでの計算部13による計算処理がスキップされることになる。
サンプル入力部12は、計算部13にサンプルデータを入力する。サンプルデータは、計算部13で用いられる順伝搬計算の結果である。サンプル入力部12は、計算部13に転送されたデータフレームに対応するサンプルデータを図示されない外部メモリから読み出して計算部13に入力する。
計算部13は、勾配計算部14および集計処理部15を備える。
勾配計算部14は、転送部112によって転送されてきたデータフレームおよびサンプル入力部12より入力された順伝搬計算の結果を示すサンプルデータに基づいて、データフレームに含まれる重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータごとに計算する。各分散処理ノード1-1~1-4の計算部13は、各々異なるサンプルデータについて勾配計算処理を行う。
勾配計算部14は、転送部112によって転送されてきたデータフレームおよびサンプル入力部12より入力された順伝搬計算の結果を示すサンプルデータに基づいて、データフレームに含まれる重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータごとに計算する。各分散処理ノード1-1~1-4の計算部13は、各々異なるサンプルデータについて勾配計算処理を行う。
集計処理部15は、勾配計算部14が計算したサンプルデータごとの勾配を集計した数値を重みごとに生成して保持する。具体的には、集計処理部15は、サンプルデータごとに計算された勾配を足し算し、計算結果を重みごとに保持する。
送信部16は、ヘッダ読取部11が備える転送部112によって転送されてきたデータフレーム、および計算部13による勾配計算処理およびノード内の集計処理を経たデータフレームを、それぞれ通信ネットワークNWを介して、後段の分散処理ノード1に送信する。送信部16は、転送されてきたデータフレームの順に送信処理を行う。したがって、受信部10が受信したデータフレームの順番とは異なる順番で後段の分散処理ノード1にデータフレームを送信する場合がある。
このように、分散処理ノード1ごとに勾配計算およびノード内での集計処理が行われた結果は、他の分散処理ノード1に転送され、同様の計算処理が行われ、各分散処理ノード1で分割して学習された結果が集約され、加算および平均化などを行い、その値が再び各分散処理ノード1に分配され共有される。
[分散処理ノードのハードウェア構成]
次に、上述した分散処理ノード1のハードウェア構成について図5を参照して説明する。
図5に示すように、分散処理ノード1は、例えば、CPU101、メインメモリ102、GPU103、NIC104、ストレージ105、およびI/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
次に、上述した分散処理ノード1のハードウェア構成について図5を参照して説明する。
図5に示すように、分散処理ノード1は、例えば、CPU101、メインメモリ102、GPU103、NIC104、ストレージ105、およびI/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
メインメモリ102には、CPU101およびGPU103が各種制御や演算を行うためのプログラムが予め格納されている。CPU101、GPU103、およびメインメモリ102によって、図1に示したヘッダ読取部11、勾配計算部14、集計処理部15など、分散処理ノード1の各機能が実現される。
NIC104は、分散処理ノード1間や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC104は図1の受信部10および送信部16を実現する。
ストレージ105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
ストレージ105は、分散処理ノード1がデータの転送処理、勾配計算処理、および集計処理を含む分散処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ105は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
I/O106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするI/O端子により構成される。
[分散深層学習システムの動作]
次に、上述した構成を有する分散処理ノード1の動作について、図6のフローチャートを用いて説明する。
次に、上述した構成を有する分散処理ノード1の動作について、図6のフローチャートを用いて説明する。
まず、受信部10は、通信ネットワークNWを介して、例えば、隣接する前段の分散処理ノード1より送信されたデータフレームを受信する(ステップS1)。受信部10は、例えば、図1に示すように、第1データフレームp01、第2データフレームp02の順に、複数のデータフレームを到達した順に受信する。
次に、ヘッダ読取部11が備えるバッファ110は、最初に受信された第1データフレームp01をバッファリングする(ステップS2)。次に、ヘッダ読取部11は、一時的にバッファ110で保持されている第1データフレームp01、および第1データフレームp01の次に受信された第2データフレームp02それぞれのヘッダのフィールドF1に格納されているレイヤー情報を読み取る(ステップS3)。
次に、判定部111は、ステップS3で読み取られた2つのデータフレームのレイヤー情報を比較する(ステップS4)。レイヤー情報は、データフレームに含まれるパケットがニューラルネットワークのどのレイヤーからのデータであるかを示す情報である。
次に、判定部111が、先に受信された第1データフレームp01の方が、第2データフレームp02よりも入力層に近いと判定した場合(ステップS5:YES)、転送部112は、出力層に近い方の第2データフレームp02を転送パスTPを介して送信部16へ転送する(ステップS6)。その後、送信部16は、第2データフレームp02を通信ネットワークNWを介して後段の分散処理ノード1に送信する(ステップS7)。その後、転送部112は、入力層に近い方の第1データフレームp01を計算部13へ転送する(ステップS8)。
一方、ステップS5において、先に受信された第1データフレームp01の方が出力層により近く(ステップS5:NO)、次に受信された第2データフレームp02の方が入力層に近いと判断された場合(ステップS9:YES)、転送部112は、出力層に近い方の第1データフレームp01を転送パスTPを介して送信部16へ転送する(ステップS10)。その後、送信部16は、第1データフレームp01を通信ネットワークNWを介して、後段の分散処理ノード1へ送信する(ステップS11)。その後、転送部112は、入力層に近い方の第2データフレームp02を計算部13へ転送する(ステップS12)。
なお、ステップS9において、判定部111が、第1データフレームp01および第2データフレームp02が同じレイヤーからのデータであると判定した場合(ステップS9:NO)、転送部112は、第1データフレームp01を計算部13へ転送し、その後に第2データフレームp02を計算部13へ転送する(ステップS6)。この場合には、第1データフレームp01および第2データフレームp02は、例えば、受信された順に自ノードでの勾配計算および集計処理が行われる。
次に、ステップS8あるいはステップS12において、転送部112がデータフレームを計算部13に転送すると、サンプル入力部12は、サンプルデータを外部メモリから読み出して、計算部13に入力する(ステップS13)。その後、勾配計算部14は、計算対象のデータフレームに含まれる重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータごとに計算する(ステップS14)。
次に、集計処理部15は、勾配計算部14が計算したサンプルデータごとの勾配を集計した数値を重みごとに生成して保持する(ステップS15)。
その後、集計処理部15で得られた計算結果は、送信部16に転送される(ステップS16)。その後、入力層により近い方のデータフレームの勾配計算およびノード内での勾配の集計結果を示すパケットを含むデータフレームは、送信部16から、後段の分散処理ノード1へ送信される(ステップS17)。
複数の分散処理ノード1-1~1-4のそれぞれで、ステップS1からステップS17までの処理が同様に行われる。例えば、ステップS9において、分散処理ノード1-1が出力層側のデータフレームを、後段の分散処理ノード1-2に送信すると、分散処理ノード1-2においてそのデータフレームについての勾配計算および集計処理が行われる。なお、計算処理がスキップされて転送された先の分散処理ノード1-2において、既に、入力層により近いデータフレームが存在する場合には、さらに後段の分散処理ノード1-3に転送される場合がある。このように、分散深層学習システム全体で、Allreduce処理の返却を入力層側から完了する。
以上説明したように、第1の実施の形態によれば、分散深層学習システムが備えるリング型に互いに接続された複数の分散処理ノード1-1~1-4のそれぞれは、先に受信した第1データフレームと、直後に受信した第2データフレーム各々のレイヤー情報を比較して、どちらのデータフレームが入力層あるいは出力層により近い層に属するパケットを含むデータフレームであるかを判定する。転送部112は、出力層により近い層に属するパケットを含むと判定されたデータフレームについては送信部16へ転送し、自ノードでの勾配計算およびノード内の集計処理をスキップする。
本実施の形態によれば、サンプル入力部12より入力されるサンプルデータとの演算が必要ない場合には、自ノードでの勾配計算および集計処理を行わないので、各分散処理ノード1内での受信部10から送信部16までのデータが移動するレイテンシをより小さくすることができる。その結果として、分散深層学習システムにおける全体でのデータ転送のレイテンシがより小さくなり、より効率的に分散学習が行われる。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1の実施の形態では、各分散処理ノード1で処理されるデータフレームは、例えば、最大ペイロードが1500バイトなどの通信量を持つEthernetフレームが用いられる場合を例示した。これに対して、第2の実施の形態では、第1の実施の形態で用いられたデータフレームのサイズよりも大きいフレームサイズを有するジャンボフレームが用いられる。
なお、本実施の形態に係る分散処理ノード1および分散深層学習システムの構成は、第1の実施の形態と同様である。
図7は、本実施の形態に係るデータフレームの構造を説明するための模式図である。例えば、本実施の形態に係るデータフレームのフレームサイズは、最大ペイロードが1500バイトを超える通信量が設定されたデータフレームである。より具体的には、ニューラルネットワークの1つ分のレイヤーのデータを格納することができるフレームサイズに拡張されたジャンボフレームを用いることができる。
また、図7に示すように、本実施の形態で用いられるジャンボフレームについても、第1の実施の形態のデータフレームと同様に、ヘッダの指定されたフィールドF1には、データフレームのパケットが、ニューラルネットワークのどのレイヤーのデータであるかを示すレイヤー情報が格納されている。
このように、第2の実施の形態では、各分散処理ノード1において処理および転送されるデータフレームとして1つ分のレイヤーのデータをパケットとして転送できるジャンボフレームが用いられる。そのため、ヘッダ読取部11においてデータフレーム同士のレイヤー情報を比較する際に、同じレイヤー同士のデータフレームの比較が生ずることがなく、入力層に近いレイヤーのAllreduce処理がより高速に終了する。
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1および第2の実施の形態では、分散処理ノード1で処理されるデータフレームは、ヘッダの指定されたフィールドF1にデータフレームのパケットがニューラルネットワークのどのレイヤーからのデータであるかを示すレイヤー情報が格納されている場合について説明した。これに対して、第3の実施の形態では、データフレームのヘッダには、さらに、複数の分散処理ノード1-1~1-4のうち、パケットの勾配計算および集計処理を最初にスキップしたノードを示すノード情報が記述される。第3の実施の形態では、順次受信された2つのデータフレームの比較判定処理は、ヘッダのレイヤー情報およびノード情報に基づいて行われる。
本実施の形態に係る分散処理ノード1の全体構成は、図1で説明した第1の実施の形態の構成と同様である。また、分散深層学習システムの構成についても、第1の実施の形態で説明した図2のシステム構成と同様である。以下、第1および第2の実施の形態と異なる構成を中心に説明する。
[データ構造]
図8は、本実施の形態に係るデータフレームの構造を説明するための図である。図8に示すように分散処理ノード1-1~1-4間で転送されるデータフレームは、ヘッダとパケットとを有する。ヘッダの指定されたフィールドF1には、パケットのデータがニューラルネットワークのどのレイヤーからのデータであるかを示すレイヤー情報が格納されている。また、ヘッダの別のフィールドF2には、複数の分散処理ノード1-1~1-4のうちのどのノードで勾配計算およびノード内での集計処理が最初にスキップされたかを示すノード情報が格納されている。例えば、フィールドF2には、最初に勾配計算および集計処理をスキップした分散処理ノード1-1~1-4のノード番号などの識別情報が格納される。
図8は、本実施の形態に係るデータフレームの構造を説明するための図である。図8に示すように分散処理ノード1-1~1-4間で転送されるデータフレームは、ヘッダとパケットとを有する。ヘッダの指定されたフィールドF1には、パケットのデータがニューラルネットワークのどのレイヤーからのデータであるかを示すレイヤー情報が格納されている。また、ヘッダの別のフィールドF2には、複数の分散処理ノード1-1~1-4のうちのどのノードで勾配計算およびノード内での集計処理が最初にスキップされたかを示すノード情報が格納されている。例えば、フィールドF2には、最初に勾配計算および集計処理をスキップした分散処理ノード1-1~1-4のノード番号などの識別情報が格納される。
[ヘッダ読取部の機能ブロック]
図9は、本実施の形態に係るヘッダ読取部11Aの構成を示すブロック図である。ヘッダ読取部11Aは、バッファ110、判定部111、転送部112、および記録部(第1記録部)113を備える。
図9は、本実施の形態に係るヘッダ読取部11Aの構成を示すブロック図である。ヘッダ読取部11Aは、バッファ110、判定部111、転送部112、および記録部(第1記録部)113を備える。
転送部112は、ヘッダのフィールドF2において、自ノード以外を示すノード情報が格納されているデータフレームを、転送パスTPを介して送信部16に転送する。また、転送部112は、第1の実施の形態と同様に、判定部111によるレイヤー情報の比較の結果、入力層により近いデータフレームであると判定されたデータフレームを計算部13へ転送する。
記録部113は、判定部111による判定結果により、自ノードでの勾配計算および集計処理をスキップするデータフレームのヘッダに、自ノードの識別情報を格納する。例えば、図8に示すヘッダのフィールドF2に自ノードのノード番号を格納する。
記録部113がヘッダのフィールドF2に自ノードを示すノード情報を格納することで、通信ネットワークNWで接続されている後段の他の分散処理ノード1-2~1-4での、勾配計算およびノード内での集計処理はスキップされることになる。そして、自ノードで最初に計算処理をスキップしたデータフレームが、再び自ノードに戻ってきたときに、記録部113は、ヘッダの自ノードを示すノード情報をクリアする。自ノードのノード情報がクリアされたデータフレームは、判定部111によるレイヤー情報の比較および判定を経て、自ノードでの勾配計算および集計処理が実行される。
[分散深層学習システムの動作]
次に、上述した構成を有する分散学習システムの動作について説明する。まず、図10および図11のフローチャートを参照して分散処理ノード1の動作を説明する。
次に、上述した構成を有する分散学習システムの動作について説明する。まず、図10および図11のフローチャートを参照して分散処理ノード1の動作を説明する。
まず、図10に示すように、受信部10は、通信ネットワークNWを介して、例えば、外部からのデータフレームを受信する(ステップS1)。受信部10は、複数のデータフレームを順次受信し、例えば、図1に示すように、第1データフレームp01、第2データフレームp02の順でデータフレームを受信する。
次に、バッファ110は、最初に受信された第1データフレームp01をバッファリングする(ステップS2)。次に、第1データフレームp01のヘッダのフィールドF2に、ノード情報が格納されている場合において(ステップS100:YES)、そのノード情報が自ノードではなく、他のノードを示している場合(ステップS101:NO)、転送部112は、最初に受信された第1データフレームp01を転送パスTPを介して送信部16へ転送する(ステップS103)。
その後、処理は結合子Bを介してステップS17に移行し、送信部16は、第1データフレームp01を後段の分散処理ノード1に送信する(ステップS15)。このように、自ノード以外のノード情報がヘッダに格納されている第1データフレームp01は、各分散処理ノード1において、ヘッダのレイヤー情報を読み取る前に、後段の分散処理ノード1へ転送されていく。
一方において、ステップS101において、最初に受信された第1データフレームp01のヘッダに含まれるノード情報が自ノードのノード情報と一致する場合(ステップS101:YES)、記録部113は、第1データフレームp01のヘッダのノード情報をクリアする(ステップS102)。例えば、自ノードで最初に勾配計算および集計処理をスキップしたデータフレームが、再び自ノードへ帰ってきた場合にこれらの処理が実行される。その後、処理はステップS104に移行する。
また、ステップS100において、最初に受信された第1データフレームp01のヘッダにノード情報が格納されていない場合(ステップS100:NO)、結合子Aを介してステップS104に移行する。次に、ヘッダにノード情報が格納されていない第1データフレームp01の直後に受信された第2データフレームのヘッダにおいてもノード情報が格納されていない場合(ステップS104:NO)、判定部111は、第2データフレームp02および第1データフレームp01のヘッダのレイヤー情報を読み取る(ステップS3)。判定部111は、読み取った2つのデータフレームのレイヤー情報を比較する(ステップS4)。その後、処理は、結合子Cを介して図11のステップS5に移行する。
一方、ステップS104において、2番目に受信された第2データフレームp02のヘッダにノード情報が格納されている場合には、処理はステップS101に移行し、ノード情報が自ノードと一致する場合(ステップS101:YES)、ヘッダのノード情報がクリアされる(ステップS102)。
次に、ステップS4でのレイヤー情報の比較の結果、判定部111が、最初に受信された第1データフレームp01の方が入力層により近いと判定した場合(ステップS5:YES)、記録部113は、出力層に近い他方の第2データフレームp02のヘッダのフィールドF2に自ノードを示すノード情報を格納する(ステップS105)。次に、転送部112は、第2データフレームp02を転送パスTPを介して送信部16へ転送する(ステップS6)。その後、送信部16は、ヘッダに自ノードを示すノード情報が記録された第2データフレームp02を、後段の分散処理ノード1へ送信する(ステップS7)。
一方、ステップS5において、判定部111が、先に受信された第1データフレームp01の方が出力層により近く(ステップS5:NO)、次に受信された第2データフレームp02の方が入力層に近いと判定した場合(ステップS9:YES)、記録部113は、出力層に近い方の第1データフレームp01のヘッダに自ノードを示すノード情報を格納する(ステップS106)。
次に、転送部112は、ノード情報がヘッダに格納された第1データフレームp01を転送パスTPを介して送信部16へ転送する(ステップS10)。その後、送信部16は、ノード情報がヘッダに格納されている第1データフレームp01を通信ネットワークNWを介して、後段の分散処理ノード1へ送信する(ステップS11)。その後、転送部112は、入力層に近い方の第2データフレームp02を計算部13へ転送する(ステップS12)。
なお、ステップS9において、判定部111が、第1データフレームp01および第2データフレームp02が同じレイヤーからのデータであると判定した場合(ステップS9:NO)、転送部112は、第1データフレームp01を計算部13へ転送し、その後に第2データフレームp02を計算部13へ転送する(ステップS6)。この場合においては、第1データフレームp01および第2データフレームp02は、受信された順に自ノードで勾配計算および集計処理を行う。
次に、ステップS8あるいはステップS12において、転送部112がデータフレームを計算部13に転送すると、サンプル入力部12は、サンプルデータを外部メモリから読み出して、計算部13に入力する(ステップS13)。その後、勾配計算部14は、計算対象のデータフレームに含まれる重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータごとに計算する(ステップS14)。
次に、集計処理部15は、自ノードにおいて勾配計算部14が計算したサンプルデータごとの勾配を集計した数値を重みごとに生成して保持する(ステップS15)。
その後、集計処理部15で得られた計算結果は、送信部16に転送される(ステップS16)。その後、入力層により近い方のデータフレームの勾配計算およびノード内での勾配の集計結果を示すパケットを含むパケットのデータフレームは、送信部16から、後段の分散処理ノード1へ送信される(ステップS17)。
図12は、本実施の形態に係る分散深層学習システムの動作の一例を示すブロック図である。図12に示すように、データフレームp1~p6が分散処理ノード1-1で生成された場合を考える。また、図12に示すように、データフレームp6が最も入力層に近い層に属するパケットを含むデータフレームであり、データフレームp1が最も出力層に近い層に属するパケットを含む場合を仮定する。
分散処理ノード1-1で生成されたデータフレームp1~p6は、分散処理ノード1-2、1-3のサンプル入力部12より入力されるサンプルデータとの勾配計算およびノード内での集計処理が行われ、全ての分散処理ノード1-1~1-4で処理が完了すると計算が終了する。
例えば、分散処理ノード1-2において、まず、最初に受信されたデータフレームp1と、次に受信されたデータフレームp2とのレイヤー情報の比較が行われる。入力層に近い方のデータフレームp2は、分散処理ノード1-2において、勾配計算およびノード内の集計処理が行われた後に、後段の分散処理ノード1-3へ送信される。一方、出力層に近い方のデータフレームp1は、ヘッダに分散処理ノード1-2のノード番号などのノード情報が格納されて、分散処理ノード1-2での勾配計算および集計処理がスキップされ、さらに、以降の分散処理ノード1-3、1-4、1-1においても勾配計算および集計処理がスキップされる。
その後、以下の(1)から(5)のいずれかの処理が発生する。いずれの処理が発生するかは、データフレームp1が分散処理ノード1-1に戻ってくる時間に依存する。
(1)分散処理ノード1-2において、データフレームp1とデータフレームp4とのレイヤー情報の比較が発生する。入力層に近い方のデータフレームp4は、分散処理ノード1-2において、勾配計算および集計処理が行われ、隣接する分散処理ノード1-3へ送信される。一方、出力層に近い方のデータフレームp1は、分散処理ノード1-2以降の分散処理ノード1-3~1-1での処理がスキップされる。
(2)分散処理ノード1-3において、データフレームp2とデータフレームp3とのレイヤー情報の比較が発生する。入力層に近い方のデータフレームp3は、分散処理ノード1-3において、勾配計算および集計処理が行われ、隣接する分散処理ノード1-4へ送信される。一方、出力層に近い方のデータフレームp2は、分散処理ノード1-3以降の分散処理ノード1-4~1-2での処理がスキップされる。
(3)分散処理ノード1-2において、データフレームp1とデータフレームp5とのレイヤー情報の比較が発生する。入力層に近い方のデータフレームp5は、分散処理ノード1-2において、勾配計算および集計処理が行われ、隣接する分散処理ノード1-3へ送信される。一方、出力層に近い方のデータフレームp1は、分散処理ノード1-2以降の分散処理ノード1-3~1-1での処理がスキップされる。
(4)分散処理ノード1-3において、データフレームp2とデータフレームp4とのレイヤー情報の比較が発生する。入力層に近い方のデータフレームp4は、分散処理ノード1-3において、勾配計算および集計処理が行われ、隣接する分散処理ノード1-4へ送信される。一方、出力層に近い方のデータフレームp2は、分散処理ノード1-3以降の分散処理ノード1-4~1-2での処理がスキップされる。
(5)分散処理ノード1-4において、データフレームp3とデータフレームp4とのレイヤー情報の比較が発生する。入力層に近い方のデータフレームp4は、分散処理ノード1-4において、勾配計算および集計処理が行われ、計算は終了する。一方、出力層に近い方のデータフレームp3は、分散処理ノード1-4の処理がスキップされる。
各データフレームについて同様の処理が行われ、データフレームp4、p5、p6、p3、p2、p1の順で計算が終了する。このように、Allreduce処理の返却を入力層側のデータから優先的に完了することができる。
以上説明したように、第3の実施の形態によれば、データフレームのヘッダにレイヤー情報および最初に勾配計算およびノード内での集計処理をスキップしたノードの情報が記録される。そのため、分散処理ノード1において、サンプル入力部12から入力されるサンプルデータとの演算が不要である場合には、演算が不要とされるノードでの勾配計算およびノード内の集計処理をスキップするので、受信部10から送信部16にデータが移動するレイテンシが短縮され、入力層に近いデータから優先的に計算を終了できる。
[実施の形態4]
次に、本発明の第4の実施の形態について説明する。なお、以下の説明では、上述した第1から第3の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
次に、本発明の第4の実施の形態について説明する。なお、以下の説明では、上述した第1から第3の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第3の実施の形態では、データフレームのヘッダにおいて、どの分散処理ノード1-1~1-4で最初に勾配計算およびノード内の集計処理がスキップされたかを示すノード情報が記録される場合について説明した。これに対して、第4の実施の形態では、データフレームのヘッダにおいて、分散処理ノード1-1~1-4それぞれにおいて、勾配計算および集計処理が実行済みであるか、あるいは、スキップしたのかを示す各分散処理ノード1-1~1-4ごとの計算実行状況を示すステータス情報が記述される。
[データ構造]
図13は、本実施の形態に係るデータフレームのヘッダの構造を説明する模式図である。図13に示すように、ヘッダのフィールドF1にはパケットがニューラルネットワークのどのレイヤーからのデータであるかを示すレイヤー情報が格納される。また、フィールドF2には、それぞれの分散処理ノード1-1~1-4に割り当てられた領域にそれぞれの分散処理ノード1-1~1-4での計算実行状況を示す値が格納される。
図13は、本実施の形態に係るデータフレームのヘッダの構造を説明する模式図である。図13に示すように、ヘッダのフィールドF1にはパケットがニューラルネットワークのどのレイヤーからのデータであるかを示すレイヤー情報が格納される。また、フィールドF2には、それぞれの分散処理ノード1-1~1-4に割り当てられた領域にそれぞれの分散処理ノード1-1~1-4での計算実行状況を示す値が格納される。
図13の例では、分散処理ノード1-1、1-2に割り当てられた領域には、データフレームに対する勾配計算およびノード内の集計処理が実行済みであることを示す値「済」がそれぞれ格納されている。一方、分散処理ノード1-3に割り当てられている領域には、勾配計算および集計処理がスキップされたことを示す値「未」が格納されている。しかし、分散処理ノード1-4に割り当てられた領域においては、勾配計算および集計処理が実行済みであることを示す値「済」が格納されている。
各分散処理ノード1-1~1-4は、勾配計算およびノード内での集計処理を実行する場合およびこれらの処理をスキップする場合のいずれの場合においても、記録部113が、データフレームのヘッダに割り当てられている領域に、ステータス情報として、処理をスキップしたことを示す値「未」または、処理を実行したことを示す値「済」のいずれかを格納する。
[分散処理ノードの機能ブロック]
図14は、本実施の形態に係る分散処理ノード1の機能ブロックの一例を示すブロック図である。図14に示すように、本実施の形態では、監視部17をさらに備える点で、第3の実施の形態に係る分散処理ノード1の構成と異なる。
図14は、本実施の形態に係る分散処理ノード1の機能ブロックの一例を示すブロック図である。図14に示すように、本実施の形態では、監視部17をさらに備える点で、第3の実施の形態に係る分散処理ノード1の構成と異なる。
監視部17は、計算部13において、計算処理に空きが生じているかを監視する。監視部17は、計算部13における勾配計算およびノード内での集計処理に空きがある場合には、記録部(第2記録部、第3記録部)113に、通知信号を入力する。
記録部113は、監視部17からの通知信号を受信すると、バッファ110に保持されているデータフレームのヘッダのフィールドF2に割り当てられている領域に、値「済」を記録する。この場合、データフレームは、計算部13において、勾配計算およびノード内での集計処理が実行される。
例えば、先に受信された第1データフレームp01が前段の分散処理ノード1において、勾配計算および集計処理がスキップされて転送されてきたデータフレームである場合に、再び計算処理をスキップした分散処理ノード1に戻る前であっても、転送先の分散処理ノード1の計算処理に空きがある場合には、転送先の計算部13において計算処理が実行される。
また、記録部113は、第3の実施の形態と同様に、自ノードでの勾配計算およびノード内での集計処理がスキップされる場合には、自ノードでの計算処理は未実行であることを示す値「未」をヘッダの所定の領域に記録する。
以上説明したように、第4の実施の形態によれば、各分散処理ノード1-1~1-4での計算実行状況を示すステータス情報がヘッダに格納されるので、ある分散処理ノード1において計算処理がスキップされたデータフレームであっても、後段の分散処理ノード1において処理ができる場合には、勾配計算および集計処理を実行する。そのため、計算状況に空きのある分散処理ノード1に計算を行わせることができ、Allreduce処理時間をより短縮することができる。
なお、説明した実施の形態では、分散深層学習システムは、複数の分散処理ノード1-1~1-4を備える場合について例示したが、例えば、通信ネットワークNWを介して図示されない上位処理ノードと通信可能に接続されている場合がある。
以上、本発明の分散深層学習システムおよびデータ転送方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
1,1-1~1-4…分散処理ノード、10…受信部、11…ヘッダ読取部、12…サンプル入力部、13…計算部、14…勾配計算部、15…集計処理部、16…送信部、110…バッファ、111…判定部、112…転送部、101…CPU、102…メインメモリ、103…GPU、104…NIC、105…ストレージ、106…I/O、NW…通信ネットワーク。
Claims (7)
- 1方向に通信可能なリング型の通信ネットワークを構成する複数の分散処理ノードを備え、
ニューラルネットワークの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位で分散して反復的に行うとともに、逆伝搬計算の計算結果を足し合わせる集団通信を行う分散深層学習システムであって、
前記複数の分散処理ノードの各々は、
前記通信ネットワークを介して自ノードに到達した第1データフレームと、前記第1データフレームの次に自ノードに到達した第2データフレームを順次受信する受信部と、
前記受信部で受信された前記第1データフレームおよび前記第2データフレームそれぞれのヘッダに含まれる、前記第1データフレームおよび前記第2データフレームのそれぞれに含まれるデータが前記ニューラルネットワークの入力層、中間層、および出力層を含むいずれの層に属するデータであるかを示すレイヤー情報を読み取るヘッダ読取部と、
前記受信部によって受信された前記第1データフレームから前記ヘッダ読取部によって読み取られたレイヤー情報と、前記第1データフレームの次に受信された前記第2データフレームから読み取られたレイヤー情報とを比較し、前記第1データフレームと前記第2データフレームとが、それぞれ前記入力層と前記出力層とのいずれにより近い層に属するデータを含むデータフレームであるかを判定する判定部と、
前記判定部による判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記入力層により近い層に属するデータを含むデータフレームに対して、前記ニューラルネットワークの順伝搬計算の結果を示すサンプルデータの入力に基づいた計算処理を実行する計算部と、
前記判定部による判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記出力層により近い層に属するデータを含むデータフレームに対する前記計算処理をスキップさせる転送部と、
前記計算部または前記転送部によって処理された前記第1データフレームおよび前記第2データフレームを、後段の分散処理ノードへ送信する送信部と
を備え、
前記送信部は、前記第1データフレームと前記第2データフレームとのうち、前記転送部によって前記計算処理がスキップされたデータフレームを、前記計算部によって前記計算処理が実行されたデータフレームより先に、前記後段の分散処理ノードへ送信する
ことを特徴とする分散深層学習システム。 - 請求項1に記載の分散深層学習システムにおいて、
前記計算部は、
前記サンプルデータごとに前記ニューラルネットワークの重みに対する勾配を計算する勾配計算部と、
前記勾配計算部によって計算された前記勾配を集計する集計処理部と
を備える
ことを特徴とする分散深層学習システム。 - 請求項1または請求項2に記載の分散深層学習システムにおいて、
前記複数の分散処理ノードの各々は、
前記第1データフレームと前記第2データフレームとのうち、前記出力層により近い層に属するデータを含むデータフレームであると前記判定部が判定したデータフレームのヘッダに、自ノードを識別するノード情報を記録する第1記録部をさらに備え、
前記転送部は、受信された前記第1データフレームと前記第2データフレームとの
うち、ヘッダに自ノード以外の他の分散処理ノードを示すノード情報が記録されているデータフレームに対する前記計算処理をスキップさせる
ことを特徴とする分散深層学習システム。 - 請求項2に記載の分散深層学習システムにおいて、
前記第1データフレームおよび前記第2データフレームそれぞれのヘッダには、前記レイヤー情報と、前記複数の分散処理ノードの各々において、前記計算部による前記計算処理が実行されたか否かを示すステータス情報とが格納され、
前記複数の分散処理ノードの各々は、
前記第1データフレームと前記第2データフレームとのうち、前記転送部が前記計算処理をスキップさせるデータフレームのヘッダに割り当てられている前記ステータス情報を格納する領域に、前記計算部での前記計算処理が未実行であることを示す前記ステータス情報を記録する第2記録部と、
前記判定部による判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記計算部で前記計算処理が実行されるデータフレームのヘッダに割り当てられている前記ステータス情報を格納する前記領域に、前記計算部での前記計算処理が実行済みであることを示す前記ステータス情報を記録する第3記録部と
をさらに備える
ことを特徴とする分散深層学習システム。 - 請求項4に記載の分散深層学習システムにおいて、
前記複数の分散処理ノードの各々は、
前記勾配計算部での計算が行われているか否かを監視する監視部をさらに備え、
前記第3記録部は、前記勾配計算部での計算が行われていないことを示す信号が前記監視部から入力された場合に、前記受信部で受信されたデータフレームのヘッダに割り当てられている前記ステータス情報を格納する前記領域に、前記計算部での前記計算処理が実行済みであることを示す前記ステータス情報を記録し、
前記計算部は、前記第3記録部によって前記ステータス情報が記録された前記データフレームに対する前記計算処理を実行する
ことを特徴とする分散深層学習システム。 - 請求項1から5のいずれか1項に記載の分散深層学習システムにおいて、
前記データフレームは、前記ニューラルネットワークの層ごとの学習データを送信できるフレームサイズを有する
ことを特徴とする分散深層学習システム。 - 1方向に通信可能なリング型の通信ネットワークを構成する複数の分散処理ノードを備え、
ニューラルネットワークの学習データに基づく順伝搬計算および逆伝搬計算を、データフレーム単位で分散して反復的に行うとともに、逆伝搬計算の計算結果を足し合わせる集団通信を行う分散深層学習システムにより実行されるデータ転送方法であって、
前記複数の分散処理ノードの各々は、
前記通信ネットワークを介して自ノードに到達した第1データフレームと、前記第1データフレームの次に自ノードに到達した第2データフレームとを順次受信する第1ステップと、
前記第1ステップで受信された前記第1データフレームおよび前記第2データフレームそれぞれのヘッダに含まれる、前記第1データフレームおよび前記第2データフレームのそれぞれに含まれるデータが前記ニューラルネットワークの入力層、中間層、および出力層を含むいずれの層に属するデータであるかを示すレイヤー情報を読み取る第2ステップと、
前記第1ステップで受信された前記第1データフレームから前記第2ステップで読み取られたレイヤー情報と、前記第1データフレームの次に受信された前記第2データフレームから読み取られたレイヤー情報とを比較し、前記第1データフレームと前記第2データフレームとが、それぞれ前記入力層と前記出力層とのいずれにより近い層に属するデータを含むデータフレームであるかを判定する第3ステップと、
前記第3ステップでの判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記入力層により近い層に属するデータを含むデータフレームに対して、前記ニューラルネットワークの順伝搬計算の結果を示すサンプルデータの入力に基づいた計算処理を実行する第4ステップと、
前記第3ステップでの判定結果に基づいて、前記第1データフレームと前記第2データフレームとのうち、前記出力層により近い層に属するデータを含むデータフレームに対する前記計算処理をスキップさせる第5ステップと、
前記第4ステップまたは前記第5ステップで処理された前記第1データフレームおよび前記第2データフレームを、後段の分散処理ノードへ送信する第6ステップと
を備え、
前記第6ステップは、前記第1データフレームと前記第2データフレームとのうち、前記第5ステップで前記計算処理がスキップされたデータフレームを、前記第4ステップで前記計算処理が実行されたデータフレームより先に、前記後段の分散処理ノードへ送信する
ことを特徴とするデータ転送方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/044529 WO2021095162A1 (ja) | 2019-11-13 | 2019-11-13 | 分散深層学習システムおよびデータ転送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021095162A1 JPWO2021095162A1 (ja) | 2021-05-20 |
JP7287492B2 true JP7287492B2 (ja) | 2023-06-06 |
Family
ID=75912063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021555693A Active JP7287492B2 (ja) | 2019-11-13 | 2019-11-13 | 分散深層学習システムおよびデータ転送方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220398431A1 (ja) |
JP (1) | JP7287492B2 (ja) |
WO (1) | WO2021095162A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210115863A (ko) * | 2020-03-16 | 2021-09-27 | 삼성전자주식회사 | 뉴럴 네트워크 모델을 위한 병렬 처리 방법 및 장치 |
US20240004828A1 (en) * | 2020-11-11 | 2024-01-04 | Nippon Telegraph And Telephone Corporation | Distributed Processing System and Method |
US20230239239A1 (en) * | 2022-01-25 | 2023-07-27 | Qualcomm Incorporated | Upper analog media access control (mac-a) layer functions for analog transmission protocol stack |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6714297B2 (ja) * | 2017-09-12 | 2020-06-24 | 株式会社アクセル | 処理装置及び推論処理方法 |
-
2019
- 2019-11-13 JP JP2021555693A patent/JP7287492B2/ja active Active
- 2019-11-13 WO PCT/JP2019/044529 patent/WO2021095162A1/ja active Application Filing
- 2019-11-13 US US17/775,549 patent/US20220398431A1/en active Pending
Non-Patent Citations (1)
Title |
---|
Bringing HPC Techniques to Deep Learning,Baidu Research [online],2017年,all 15 pages,Retrieved from the Internet: <URL: https://web.archive.org/web/20170224103222/http://research.***.com/bringing-hpc-techniques-deep-learning>,[retrieved on 2020.03.18] |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021095162A1 (ja) | 2021-05-20 |
WO2021095162A1 (ja) | 2021-05-20 |
US20220398431A1 (en) | 2022-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7287492B2 (ja) | 分散深層学習システムおよびデータ転送方法 | |
US20190294978A1 (en) | Inferring digital twins from captured data | |
CN105897584B (zh) | 路径规划方法和控制器 | |
US20200110761A1 (en) | System and method for providing an artificially-intelligent graph database | |
CN113835899B (zh) | 针对分布式图学习的数据融合方法及装置 | |
US20220156574A1 (en) | Methods and systems for remote training of a machine learning model | |
US20170085630A1 (en) | System and method for control traffic balancing in in-band software defined networks | |
WO2022012576A1 (zh) | 路径规划方法、装置、路径规划设备及存储介质 | |
CN110311863B (zh) | 一种路由路径确定方法及装置 | |
WO2019239802A1 (ja) | 分散処理システムおよび分散処理方法 | |
WO2019239821A1 (ja) | 分散処理システムおよび分散処理方法 | |
CN113746763B (zh) | 一种数据处理的方法、装置和设备 | |
CN111901237B (zh) | 源路由选路方法及***、相关设备及计算机可读存储介质 | |
KR102153814B1 (ko) | 로드 균형을 위한 확률 기반 적응형 라우팅 알고리즘 | |
CN112508277A (zh) | 一种水下多目标定位方法、终端设备及存储介质 | |
JP7420228B2 (ja) | 分散処理システムおよび分散処理方法 | |
KR20240016572A (ko) | 지능형 영상 보안 환경에서 서비스 분류 기반의 클라우드-다중 엣지 서버간 협업 시스템 및 방법 | |
CN115700641A (zh) | 最短路径的确定方法、装置、电子设备和存储介质 | |
Fiuk et al. | A queueing model and performance analysis of UPnP/HTTP client server interactions in networked control systems | |
CN115361332A (zh) | 容错路由的处理方法及装置、处理器和电子设备 | |
CN114422453A (zh) | 一种在线规划时间敏感流的方法、装置及存储介质 | |
JP5144225B2 (ja) | 情報検索装置、及び情報検索装置へのエントリ情報の登録方法 | |
Zhu et al. | Network modeling based on GNN and network behaviors | |
CN114900441B (zh) | 网络性能预测方法,性能预测模型训练方法及相关装置 | |
CN114422416B (zh) | 多链路聚合的数据传输方法、***、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220218 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230425 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230508 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7287492 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |