JP7283577B2 - 分散深層学習システムおよび分散深層学習方法 - Google Patents
分散深層学習システムおよび分散深層学習方法 Download PDFInfo
- Publication number
- JP7283577B2 JP7283577B2 JP2021562205A JP2021562205A JP7283577B2 JP 7283577 B2 JP7283577 B2 JP 7283577B2 JP 2021562205 A JP2021562205 A JP 2021562205A JP 2021562205 A JP2021562205 A JP 2021562205A JP 7283577 B2 JP7283577 B2 JP 7283577B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- computation
- nodes
- calculation
- circuit
- 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/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
-
- 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
本発明は、分散深層学習システムおよび分散深層学習方法に関し、特に、ネットワークで連携する複数の計算ノードで分散協調して実行する分散深層学習技術に関する。
近年、様々な情報やデータに対する機械学習の活用により、サービスの高度化および付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要な場合が多い。特に、深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが1つの解決法である。
例えば、非特許文献1には、4台の計算ノードと、インフィニバンドスイッチとがインフィニバンドネットワーク(InfiniBand network)を介して接続された分散深層学習システムが開示されている。各計算ノードには、それぞれ4台のGPU(Graphics Processing Unit)が搭載されている。非特許文献1に開示された分散深層学習システムでは、4台の計算ノードによって、学習演算を並列処理することによって高速化を図っている。
また、非特許文献2には、8台のGPUを搭載した計算ノード(GPUサーバ)とイーサネット(登録商標)スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献2には、計算ノードの数として、1台、2台、4台、8台、16台、32台、44台用いた場合の例がそれぞれ開示されている。
非特許文献2に開示されたシステム上では、分散同期確率的勾配降下法(Distributed synchronous SGD(Stochastic Gradient Descent))を用いて機械学習を行う。具体的には、以下の手順で機械学習が行われる。
(1)学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。
(2)ミニバッチをGPUの台数分に分けて、各GPUに割り当てる。
(3)各GPUにおいて、(2)で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解(「教師データ」と呼ぶ。)からどれだけ乖離しているかの指標となる損失関数L(w)を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬(forward propagation)と呼ぶ。
(2)ミニバッチをGPUの台数分に分けて、各GPUに割り当てる。
(3)各GPUにおいて、(2)で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解(「教師データ」と呼ぶ。)からどれだけ乖離しているかの指標となる損失関数L(w)を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬(forward propagation)と呼ぶ。
(4)各GPUにおいて、(3)で求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。この工程では、ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この工程を逆伝搬(backpropagation)と呼ぶ。
(5)GPU毎に計算した勾配の平均を計算する。
(6)各GPUにおいて、(5)で計算した勾配の平均値を用いて、確率的勾配降下法(SGD:Stochastic Gradient Descent)を用いて、損失関数L(w)がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数L(w)を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数L(w)が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
(6)各GPUにおいて、(5)で計算した勾配の平均値を用いて、確率的勾配降下法(SGD:Stochastic Gradient Descent)を用いて、損失関数L(w)がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数L(w)を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数L(w)が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
また、非特許文献3には、8台のGPUを搭載した計算ノード128台がインフィニバンドネットワーク(InfiniBand network)を介して接続された構成を有する分散深層学習システムが開示されている。
非特許文献1~3に開示されているいずれの従来の分散深層学習システムにおいても、計算ノード数が増えるにしたがい、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各計算ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを計算ノード間で送受信することにより、平均値算出等の計算を行う必要がある。
一方において、並列処理数を増やすために、ノード数を増やすと、必要な通信処理は急速に増大する。従来技術のように、計算ノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。
例えば、非特許文献3には、学習処理を100サイクル行うのにかかる所要時間と、このうちの通信にかかる時間と、GPU数との関係が開示されている。この関係によると、GPU数が増えるにしたがい通信にかかる時間が増加しており、特にGPU数が512以上のところで急激に増加している。
Rengan Xu and Nishanth Dandapanthu.,"Deep Learning Performance with P100 GPUs",Dell EMC HPC Innovation Lab. October 2016,インターネット<http://ja.community.dell.com/techcenter/m/mediagallery/3765/download>
Priya Goyal,Piotr Dollar,Ross Girshick,Pieter Noordhuis,Lukasz Wesolowski,Aapo Kyrola,Andrew Tulloch,Yangqing Jia,Kaiming He,"Accurate,Large Minibatch SGD:Training ImageNet in 1 Hour",米国コーネル大学ライブラリー,arXiv:1706.02677,2017,インターネット<https://arxiv.org/abs/1706.02677>
Takuya Akiba,Shuji Suzuki,Keisuke Fukuda,"Extremely Large Minibatch SGD:Training ResNet-50 on ImageNet in 15 Minutes",米国コーネル大学ライブラリー,arXiv:1711.04325,2017,インターネット<https://arxiv.org/abs/1711.04325>
しかし、従来の分散深層学習システムでは、通信ネットワークに接続される計算ノードの数が増加すると、計算ノード間での協調処理の高速化が抑制される問題があった。
本発明は、上述した課題を解決するためになされたものであり、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理を高速に行うことを目的とする。
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノードを備え、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、前記演算装置から出力された前記第1演算結果を記憶する第1記憶装置と、前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信回路と、他の計算ノードからの第1演算結果を受信する第1受信回路と、前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信回路で受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路と、前記第2演算結果を、他の計算ノードへ送信する第2送信回路と、他の計算ノードからの第2演算結果を受信する第2受信回路と、前記複数の計算ノードの状態を示す通知パケットを受信する第3受信回路と、前記第3受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録するOAM処理回路と、前記OAM処理回路で記録された前記通知パケットを他の計算ノードへ送信する第3送信回路と、を有するネットワーク処理装置とを備え、前記OAM処理回路は、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させることを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路と、前記複数の計算ノードの状態を示す通知パケットを受信する第2受信回路と、前記第2受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録する第1のOAM処理回路と、前記第1のOAM処理回路で記録された前記通知パケットを前記集約ノードへ送信する第2送信回路とを有する第1ネットワーク処理装置と、前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置とを有し、前記第1のOAM処理回路は、前記集約ノードからの指示に基づいて、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、前記集約ノードは、前記通知パケットを生成する第2のOAM処理回路と、生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信回路と、前記複数の計算ノードの各々の前記第1のOAM処理回路で記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信回路と、前記複数の計算ノードからの第1演算結果を受信する第4受信回路と、前記第4受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信回路とを有する第2ネットワーク処理装置とを有し、前記第2のOAM処理回路は、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示することを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、他の計算ノードからの第1演算結果を受信する第1受信ステップと、前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、他の計算ノードからの第2演算結果を受信する第2受信ステップと、前記複数の計算ノードの状態を示す通知パケットを受信する第3受信ステップと、前記第3受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録するOAM処理ステップと、前記OAM処理ステップで記録された前記通知パケットを他の計算ノードへ送信する第3送信ステップとを有するネットワーク処理ステップとを備え、前記OAM処理ステップは、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させることを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップと、前記複数の計算ノードの状態を示す通知パケットを受信する第2受信ステップと、前記第2受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録する第1のOAM処理ステップと、前記第1のOAM処理ステップで記録された前記通知パケットを前記集約ノードへ送信する第2送信ステップとを有する第1ネットワーク処理ステップと、前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップとを有し、前記第1のOAM処理ステップは、前記集約ノードからの指示に基づいて、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、前記集約ノードは、前記通知パケットを生成する第2のOAM処理ステップと、生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信ステップと、前記複数の計算ノードの各々の前記第1のOAM処理ステップで記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信ステップと、前記複数の計算ノードからの第1演算結果を受信する第4受信ステップと、前記第4受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信ステップとを有する第2ネットワーク処理ステップとを有し、前記第2のOAM処理ステップは、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示することを特徴とする。
本発明によれば、通信ネットワークを介して互いに接続された複数の計算ノードの各々は、複数の計算ノードの状態を通知する通知パケットを受信し、受信した通知パケットに自ノードの演算装置から第1演算結果が出力されたか否かを記録して、記録した通知パケットを他の計算ノードへ送信する。そのため、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
以下、本発明の好適な実施の形態について、図1から図18を参照して詳細に説明する。
[発明の概要]
はじめに、本発明の実施の形態に係る分散深層学習システムの概要について図1から図5を参照して説明する。図1に示すように、本発明の実施の形態に係る分散深層学習システムは、通信ネットワークを介して接続された、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3の各々は、ニューラルネットワークの演算処理に含まれる行列積の一部を計算し、自ノードで計算した行列積の計算結果と、他の計算ノード1から受信した行列積の計算結果との和を求める。さらに、複数の計算ノード1-1~1-3の各々は、求めた行列積の計算結果の和を他の計算ノード1へ分配する。
はじめに、本発明の実施の形態に係る分散深層学習システムの概要について図1から図5を参照して説明する。図1に示すように、本発明の実施の形態に係る分散深層学習システムは、通信ネットワークを介して接続された、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3の各々は、ニューラルネットワークの演算処理に含まれる行列積の一部を計算し、自ノードで計算した行列積の計算結果と、他の計算ノード1から受信した行列積の計算結果との和を求める。さらに、複数の計算ノード1-1~1-3の各々は、求めた行列積の計算結果の和を他の計算ノード1へ分配する。
本実施の形態に係る分散深層学習システムでは、複数の計算ノード1-1~1-3の各々で行列積の一部が計算されたか否かの情報を含む複数の計算ノード1-1~1-3の状態を示す通知パケットを計算ノード1-1~1-3で共有する。複数の計算ノード1-1~1-3の各々は、通知パケットに示される計算ノード1-1~1-3の状態を契機として、自ノードで計算した行列積の計算結果と、他の計算ノード1から受信した行列積の計算結果との和を求める。本実施の形態では、通知パケットとして通信ネットワークの運用、管理、および保守に用いられるOperation Administration Maintenance(OAM)パケットを利用する。
このように、本実施の形態に係る分散深層学習システムは、OAMパケットを用いた同期方法により計算ノード1-1~1-3の各々で分散して計算した行列積の一部の加算処理を実行し、加算結果を複数の計算ノード1-1~1-3に分配する。また、本実施の形態に係る分散深層学習システムは、複数の計算ノード1-1~1-3の各々が、OAMパケットを処理するOAM処理回路を、データの送受信および通信を制御するネットワーク処理装置に備えることもその特徴の一つである。
なお、以下の説明において、計算ノード1-1~1-3を総称して計算ノード1ということがある。また、図1を含む各図では、説明の簡単のため、分散深層学習システムが3台の計算ノード1-1~1-3を備える場合について説明しているが、計算ノード1は、N(N≧2)個の任意の台数を用いることができる。
図2は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理の一例を示している。図3は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理での隠れ層の計算例を示している。図4は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理での隠れ層の計算を複数の計算ノードに分割して実施する例を示している。図5は、本発明の分散深層学習システムを用いてニューラルネットワークの学習処理を行う際の重みパラメータを複数の計算ノード1に分割して記憶している例を示している。
本発明の分散深層学習システムは、深層学習における学習データを用いてニューラルネットワークの重みの値を学習するトレーニングを、分散深層学習システム全体で行う。具体的には、学習ノードである各計算ノード1は、学習データとニューラルネットワークとを用いて、ニューラルネットワークの所定の演算処理を行い、重みデータの勾配を計算する。この所定の演算が完了した時点では、複数の計算ノード1の各々は互いに異なる重みデータの勾配を有している。
例えば、通信ネットワークに接続されたコンピューティングインタコネクト装置などでも実現されるネットワーク処理装置は、重みデータの勾配を集約し、集約したデータの平均化処理を行い、再度各計算ノード1に分配する。各計算ノード1は、平均化された重みデータの勾配を用いて、再度学習データと、ニューラルネットワークとを用いて、ニューラルネットワークの所定の演算処理を行う。この処理を繰り返すことで、分散深層学習システムは学習済みのニューラルネットワークモデルを取得する。
計算ノード1は、ソフトウェア的に構築された数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ。
ニューラルネットワークは、各計算ノード1内に構築される。計算ノード1の実現方法としては、CPUやGPU上のソフトウェアで実現してもよいし、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)に形成したLSI(Large Scale Integration)回路で実現してもよい。なお、計算ノード1のハードウェア構成の具体的な例については後述する。
図2では、分散深層学習システムが備える3台の計算ノード1-1~1-3を用いて、入力x1~x6に対して、隠れ層(h1~h5)を計算することにより、出力y1~y6を求める場合を例示している。図2の例では、ニューラルネットワークのモデルを複数の計算ノード1に分割するモデル並列法を示している。一般に、本手法は、1台の計算ノード1に重みパラメータが収まらないような大規模なニューラルネットワークを学習する際に採用される。
図3に示すように、隠れ層の出力を求める場合、入力xと隠れ層hとの関係の強弱を表現するパラメータとして重み(w)があり、入力xと重みwとの積和演算を行うことで、隠れ層hの出力を求める。例えば、隠れ層h2の出力を求める場合、入力x1~x6と重みw12~w62との積和演算を行うことで、隠れ層h2の出力を得る。
先に述べたように、ニューラルネットワークのモデルを複数の計算ノード1に分割するモデル並列法を用いた場合、具体的には、図4に示すように、計算ノード1-1と計算ノード1-2に跨って隠れ層h2の出力が計算される。各々の計算ノード1-1、1-2で計算された結果を加算することで、隠れ層h2の出力が計算される。このとき、各々の計算ノード1にて計算した結果を加算するために、集団通信が実施される。本発明では、この集団通信を高速化することを目的としている。
本明細書では、各計算ノード1で計算されたニューラルネットワークの演算処理に含まれる行列積の一部の計算結果を「部分演算結果」(第1演算結果)と呼び、部分演算結果の和を「全体演算結果」(第2演算結果)と呼ぶ。
同様に、計算ノード1-2と計算ノード1-3に跨って隠れ層h4の出力が計算される。また、隠れ層h1、h3、h5の出力については、複数の計算ノード1を跨ぐことなく計算が完了される。
図5は、複数の計算ノード1-1~1-3にて保持される重みパラメータwを示している。各計算ノード1-1~1-3で保持することができる重みパラメータwの数は、各計算ノード1-1~1-3が具備する使用可能なメモリ容量によって決まる。そのため、ニューラルネットワークのモデルサイズが大きくなると、重みパラメータwの数も多くなり、各計算ノード1-1~1-3にてニューラルネットワーク全体の重みパラメータwを保持できなくなる場合がある。この場合、図5に示すように、学習対象のニューラルネットワークの重みパラメータw11~w65が各計算ノード1-1~1-3に分割して保持される。
[第1の実施の形態]
次に、本発明の第1の実施の形態に係る分散深層学習システムについて説明する。
図1に示すように、分散深層学習システムは、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3は、リング状の通信ネットワークで接続されている。また、本実施の形態に係る複数の計算ノード1-1~1-3は、双方向に通信可能な通信ネットワークで接続することができる。
次に、本発明の第1の実施の形態に係る分散深層学習システムについて説明する。
図1に示すように、分散深層学習システムは、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3は、リング状の通信ネットワークで接続されている。また、本実施の形態に係る複数の計算ノード1-1~1-3は、双方向に通信可能な通信ネットワークで接続することができる。
[計算ノードの機能ブロック]
各計算ノード1-1~1-3は、図1および図6に示すように、演算部(演算装置)10、記憶部(第1記憶装置、第2記憶装置)11、およびネットワーク処理部(ネットワーク処理装置)12を備える。
各計算ノード1-1~1-3は、図1および図6に示すように、演算部(演算装置)10、記憶部(第1記憶装置、第2記憶装置)11、およびネットワーク処理部(ネットワーク処理装置)12を備える。
演算部10は、ニューラルネットワークの行列積の一部分を計算して部分演算結果を出力する。演算部10は、図4および図5で説明したように、自ノードが保持するニューラルネットワークの重みパラメータwと、入力xまたは隠れ層hの出力との行列積を計算する。隠れ層hの出力は、記憶部11に保持されている全体演算結果111であり、他の計算ノード1から共有される。
記憶部11は、部分演算結果(第1記憶装置)110、および全体演算結果(第2記憶装置)111を保持する領域を有する。また、記憶部11は、ニューラルネットワークの重みパラメータwのうち一部の重みパラメータwを保持している。
部分演算結果110には、演算部10から出力された部分演算結果が記憶されている。
全体演算結果111には、自ノードで求められた全体演算結果、および他の計算ノード1から受信された全体演算結果が記憶される。
ネットワーク処理部12は、受信部(第1受信回路、第2受信回路、第3受信回路)120、加算部(加算回路)121、OAM処理部(OAM処理回路)122、および送信部(第1送信回路、第2送信回路、第3送信回路)123を備える。
受信部120は、他の計算ノード1からの部分演算結果を、通信ネットワークを介して受信する。また、受信部120は、他の計算ノード1からの全体演算結果を受信する。また、受信部120は、複数の計算ノード1-1~1-3で共有される計算ノード1-1~1-3の状態を示すOAMパケットを受信する。例えば、受信部120は、任意に設定された他の計算ノード1が起点となって発行したOAMパケットを受信することができる。
加算部121は、受信部120で受信された他の計算ノード1からの部分演算結果と、自ノードで計算した部分演算結果とを加算して全体演算結果を求める。加算部121は、例えば、論理回路を用いた加算回路で構成することができる。加算部121で求められた全体演算結果は、記憶部11に記憶される。
OAM処理部122は、受信部120で受信されたOAMパケットに、自ノードの演算部10で部分演算結果が出力されているか否かを記録する。また、OAM処理部122は、自ノードが他の計算ノード1を制御するマスターノードとして設定された場合に、OAMパケットを一定周期で生成し、他の計算ノード1へ送信する。
OAMとは、一般に、Ethernetの運用、管理、および保守を支援する機能を含み、ネットワークの設置、監視などを行うプロトコルとして用いられる。例えば、IEEE、ITU-T、やMEFによって標準化されたプロトコル、あるいはベンダー独自のプロトコルなどが含まれる。
例えば、OAM処理部122は、自ノードの演算部10で部分演算の結果が算出されている場合に、OAMパケットの所定のビットの値を「1」と設定し、フラグを付与する。
また、OAM処理部122は、受信部120で受信された他の計算ノード1からのOAMパケットに示される他の計算ノード1の状態を契機に、送信部123に対して、自ノードで計算された部分演算結果を他の計算ノード1へ送信させる。例えば、OAM処理部122は、OAMパケットのフラグの値から、他の計算ノード1の全てにおいて部分演算結果が出力されていることを検知しときに、同期が完了したと判断することができる。
図7は、本実施の形態に係るOAMパケットの構造の一例を示す模式図である。図7の(a)および図7の(b)に示すように、OAMパケットは、各ビットが各計算ノード1の部分演算の完了または未完了の状態を示すフラグF(F1,F2,・・・,FN(N≧2))から構成される。図7の(a)に示すOAMパケットは、例えば、複数の計算ノード1のうちの任意の計算ノード1がマスターノードとなって生成される。
この場合、スレーブノードとなった計算ノード1は、自ノードでの部分演算が完了している場合には、受信したOAMパケットの自ノードのビット位置に「完了」を示す値「1」を設定する。図7の(b)に示すOAMパケットは、フラグF2の値が「1」であり、計算ノード1-1,・・・,1-Nのうち、スレーブノードである2番目の計算ノード1-2での部分演算が完了したことが示されている。
送信部123は、記憶部11に記憶されている自ノードの演算部10で計算された部分演算結果を、通信ネットワークを介して他の計算ノード1に送信する。また、送信部123は、加算部121で求められた全体演算結果を、通信ネットワークを介して他の計算ノード1に分配する。さらに、送信部123は、OAM処理部122で処理されたOAMパケットを他の計算ノード1に送信する。
なお、複数の計算ノード1-1~1-3の各々は、同様の機能構成を有する。
ここで、本実施の形態に係る分散深層学習システムが備える計算ノード1の構成と、図8に示す、一般的な分散深層学習システムが備える計算ノード100の構成例とを比較して説明する。
図8に示す計算ノード100は、演算部1000、記憶部1100、およびネットワーク処理部1200を備える。図1および図6で説明したように、本実施の形態の計算ノード1は、OAMパケットの処理を行うOAM処理部122と、ネットワーク処理部12が他の計算ノード1から受信した部分演算結果と自ノードで計算した部分演算結果との和を求める加算部121とを備える。しかし、図8に示す一般的な計算ノード100は、演算部1000が加算部1221を備え、また、OAM処理部122に対応する構成を有していない。
また、図8に示す計算ノード100では、演算部1000に設けられた加算部1221は、全体演算結果を求めるために記憶部1100を構成するメモリに対してメモリアクセスを行う時間が加算される。このように、複数の計算ノード100を有する分散深層学習システムでは、各計算ノード100の演算部1000で全体演算の結果を求める必要がある。そのため、全体の処理時間も本実施の形態の構成と比較して長くなる。
このように、本実施の形態に係る計算ノード1-1~1-3の各々が備えるネットワーク処理部12はOAM処理部122を有し、全ての計算ノード1-1~1-3で共有する計算ノード1の状態を通知するOAMパケットを処理する。各計算ノード1は、OAMパケットのフラグの値から、全体演算に必要となる他の計算ノード1での部分演算が完了していること、すなわち同期が完了したことを検知する。
計算ノード1は、全体演算の実行および全体演算結果の分配を含む集団通信を行う特定の計算ノード1のみが部分演算を完了していれば、集団通信を開始するので、各計算ノード1の演算部10で全体演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できる。さらに、他の計算ノード1から受信した部分演算結果と自ノードで計算した部分演算結果との和をネットワーク処理部12に設けられた加算部121で計算するため、図8の計算ノード100で生ずる追加のメモリアクセス時間が生じない。
[計算ノードのハードウェア構成]
次に、上述した機能を有する計算ノード1を実現するハードウェア構成の一例を、図9のブロック図を参照して説明する。
次に、上述した機能を有する計算ノード1を実現するハードウェア構成の一例を、図9のブロック図を参照して説明する。
図9に示すように、計算ノード1は、例えば、CPU101、メインメモリ102、GPU103、NIC104、ストレージ105、およびI/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
メインメモリ102には、CPU101およびGPU103が各種制御や演算を行うためのプログラムが予め格納されている。CPU101、GPU103、およびメインメモリ102によって、図1および図6に示した演算部10、加算部121、OAM処理部122など、計算ノード1の各機能が実現される。
NIC104は、計算ノード1間や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC104は図6の受信部120および送信部123を実現する。NIC104は、例えば、100 Gbit Ethernet(登録商標)での通信に対応したデバイス間のインターフェースを用いることができる。
ストレージ105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ105は、図1および図6で説明した記憶部11を実現する。
ストレージ105は、計算ノード1が行列積を含むニューラルネットワークの演算、OAMパケットの処理などの分散深層学習処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ105は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
I/O106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりする
ネットワークポートにより構成される。ネットワークポートは、例えば、2つ以上のネットワークポートを用いることができる。
ネットワークポートにより構成される。ネットワークポートは、例えば、2つ以上のネットワークポートを用いることができる。
加算回路107は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路107は、図6で説明した加算部121を実現する。なお、本実施の形態では、加算回路107は、NIC104およびI/O106を含むネットワーク処理装置に設けられる。また、CPU101、メインメモリ102、GPU103、ストレージ105によって演算装置が構成される。
OAM処理回路108は、例えば、基本論理ゲートを組み合わせた複合論理ゲート等で実現される。あるいは、OAM処理回路108は、ASICなどの専用の回路や、電気回路とプログラムの組み合わせとして実現することができる。本実施の形態では、OAM処理回路108は、加算回路107と同様に、NIC104およびI/O106を含む伝送路側のネットワーク処理装置に設けられる。
本実施の形態に係る通信ネットワークNWは、例えば、100Gbit Ethernetなど広帯域のネットワークが用いられる。
[計算ノードの動作]
まず、上述した構成を有する各計算ノード1の動作について、図10のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
まず、上述した構成を有する各計算ノード1の動作について、図10のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
まず、演算部10は、ニューラルネットワークの学習における行列積の一部を計算する(ステップS1)。
次に、演算部10によって求められた部分演算結果が記憶部11に記憶されると(ステップS2:YES)、OAM処理部122は、受信部120で他の計算ノード1から受信されたOAMパケットのフラグを立てる(ステップS3)。一方、自ノードで計算した部分演算結果が得られていない場合には(ステップS2:NO)、ステップS1での演算が実行される(ステップS1)。この場合、OAM処理部122は、受信部120で他の計算ノード1からOAMパケットが受信されてもフラグを立てずに、他の計算ノード1へ転送する。
次に、OAM処理部122は、受信部120で受信されたOAMパケットに示されるそれぞれの計算ノード1のフラグの値から、自ノードの集団通信に関わる他の計算ノード1の部分演算が完了したこと検知し、同期が完了したことを契機として(ステップS4:YES)、ネットワーク処理部12は、集団通信を開始する(ステップS5)。
例えば、OAM処理部122は、マスターノードとして設定されている計算ノード1がからの集団通信の開始指示に基づいて、集団通信を開始することができる。
上述したように、分散深層学習システムは、OAMパケットを用いた同期システムであり、例えば、全ての計算ノード1-1~1-3での部分演算が完了したことを示すOAMパケットのフラグの状態を契機に、自ノードで求めた部分演算結果を集団通信して他の計算ノード1に共有することができる。この場合、計算ノード1-1~1-3は、一定周期で受信されるOAMパケットのフラグの値が、全ての計算ノード1-1~1-3で部分演算が完了したことを示すまで、自ノードで計算された部分演算結果を記憶部11において保持する。
なお、同期システムの場合であっても、必ずしも全ての計算ノード1-1~1-3での演算部10による計算の完了を待つ必要はなく、例えば、OAMパケットの状態より、分散深層学習システムを構成する一部の計算ノード1における部分演算が完了したことを契機とすることもある。
例えば、図2から図5の例では、計算ノード1-1および計算ノード1-2の計算が完了した時点でh2を求めることができるため、計算ノード1-3の計算完了を待たずとも集団通信を開始することもある。
ステップS5で、ネットワーク処理部12が集団通信を開始すると、送信部123は、自ノードで計算した部分演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。また、受信部120は、他の計算ノード1において計算された部分演算結果を受信する。このとき、図1に示すように、送信部123は、予め決められた他の計算ノード1を送信先として部分演算結果を送信する。また、受信部120は、ネットワーク接続されている予め決められている他の計算ノード1から部分演算結果を受信する。
次に、加算部121は、自ノードで求めた部分演算結果と、他の計算ノード1から受信した部分演算結果との和である全体演算結果を求める(ステップS6)。
次に、ネットワーク処理部12は、ステップS6で求められた全体演算結果を、他の計算ノード1に分配する(ステップS7)。具体的には、送信部123が、加算部121によって求められた全体演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。その後、複数の計算ノード1-1~1-3により計算された部分演算結果の和である全体演算結果は記憶部11に記憶される。
[分散深層学習システムの動作]
次に、分散深層学習システムの動作について、図11のシーケンス図を参照して説明する。以下において、計算ノード1-1がOAMパケットの一定周期での発行、および集団通信の開始を指示するマスターノードであり、計算ノード1-2、1-3がスレーブノードである場合を例に挙げて説明する。
次に、分散深層学習システムの動作について、図11のシーケンス図を参照して説明する。以下において、計算ノード1-1がOAMパケットの一定周期での発行、および集団通信の開始を指示するマスターノードであり、計算ノード1-2、1-3がスレーブノードである場合を例に挙げて説明する。
図5で説明したように、計算ノード1-1は、入力x1~x4と隠れ層h2との結合を示す重みパラメータw12~w42を保持している。一方、計算ノード1-2は、その他の入力x5、x6と隠れ層h2との重みパラメータw52、w62を保持している。そのため、計算ノード1-1、1-2の部分演算が完了することで、隠れ層h2の出力を求める全体演算を実行することができる。
同様に、図5で説明したように、計算ノード1-2は、入力x1~x2と隠れ層h4との結合を示す重みパラメータw14~w24を保持している。一方、計算ノード1-3は、その他の入力x3~x6と隠れ層h4との重みパラメータw34~w64を保持している。このことから、計算ノード1-2、1-3の部分演算が完了することで、隠れ層h4の出力を求める全体演算を実行することができる。
図11に示すように、計算ノード1-1は、OAM処理部122でOAMパケットを生成し、生成したOAMパケットを送信部123から他の計算ノード1-2、1-3に送信する(ステップS100)。計算ノード1-1が生成し発行したOAMパケットは、例えば、計算ノード1-2、1-3の順に転送される。次に、計算ノード1-1は自ノードの演算部10での部分演算が完了すると(ステップS101)、OAM処理部122は、OAMパケットの所定ビットのフラグを立てる(ステップS102)。計算ノード1-1の送信部123は、フラグを立てたOAMパケットを、隣接する計算ノード1-2へ送信する。
その後、計算ノード1-2は自ノードでの部分演算を完了する(ステップS103)。計算ノード1-2において、部分演算結果が記憶部11で保持される。次に、計算ノード1-2のOAM処理部122は、計算ノード1-1より送られてきたOAMパケットの所定のビットに、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS104)。計算ノード1-2は、送信部123から、フラグを立てたOAMパケットを計算ノード1-3へ送る。このときのOAMパケットは、計算ノード1-1および計算ノード1-2での部分演算が完了していることを示すフラグが立っている。
その後、マスターノードである計算ノード1-1のOAM処理部122は、戻ってきたOAMパケットのフラグの状態から、計算ノード1-1、1-2間の集団通信の開始を指示する(ステップS105)。計算ノード1-2が指示を受信すると、例えば、計算ノード1-2は自ノードで求めた部分演算結果を送信部123から計算ノード1-1へ送信し、計算ノード1-1は加算部121において自ノードおよび計算ノード1-2での部分演算結果を足し合わせて全体演算を行う。計算ノード1-1は、全体演算の結果を他の計算ノード1-2、1-3へ分配する。
その後、マスターノードである計算ノード1-1のOAM処理部122は、さらにOAMパケットを他の計算ノード1-2、1-3に送信する。次に、計算ノード1-3の演算部10は、自ノードでの部分演算を完了する(ステップS106)。計算ノード1-3は、記憶部11に部分演算結果を保持する。その後、計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS107)。その後、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを計算ノード1-1および計算ノード1-2へ送信する。
マスターノードである計算ノード1-1は、OAMパケットを受信し、OAM処理部122はOAMパケットのフラグの状態から、計算ノード1-2、1-3に対して集団通信の開始を指示する(ステップS108)。その後、指示を受信した計算ノード1-2、1-3は、全体演算を行い、求められた全体演算結果を計算ノード1-1~1-3に分配する。
次に、本実施の形態に係る分散深層学習システムが、全ての計算ノード1-1~1-3での部分演算が完了してから集団通信を開始する場合の動作について図12のシーケンス図を参照して説明する。
図12に示すように、計算ノード1-1は、OAM処理部122でOAMパケットを生成し、生成したOAMパケットを送信部123から他の計算ノード1-2、1-3に送信する(ステップS100)。その後、計算ノード1-1は自ノードの演算部10での部分演算が完了すると(ステップS101)、計算ノード1-1のOAM処理部122は、OAMパケットの所定のビットのフラグを立てる(ステップS102)。計算ノード1-1は、フラグを立てたOAMパケットを、送信部123から他の計算ノード1-2、1-3へ送信する。
その後、計算ノード1-2は自ノードでの部分演算を完了する(ステップS103)。計算ノード1-2では、記憶部11で部分演算結果が保持される。次に、計算ノード1-2のOAM処理部122は、計算ノード1-1より送られてきたOAMパケットの所定のビットに、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS104)。計算ノード1-2は、送信部123から、フラグを立てたOAMパケットを計算ノード1-3へ送る。このときのOAMパケットは、計算ノード1-1および計算ノード1-2での部分演算が完了していることを示すフラグが立っている。
その後、マスターノードである計算ノード1-1は、フラグの値が設定され、状態が記録されたOAMパケットを受信し、さらに他の計算ノード1-2、1-3へ転送する。
その後、計算ノード1-3の演算部10は、自ノードでの部分演算を完了する(ステップS106)。計算ノード1-3は、記憶部11に部分演算結果を保持する。その後、計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS107)。その後、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを計算ノード1-1および計算ノード1-2へ送信する。
マスターノードである計算ノード1-1は、OAMパケットを受信し、OAM処理部122はOAMパケットのフラグの状態から、計算ノード1-1~1-3での部分演算が完了していることを検知する。計算ノード1-1は、全ての計算ノード1-1~1-3での部分演算が完了していることを契機として、計算ノード1-1~1-3間での集団通信の開始を指示する(ステップS109)。その後、計算ノード1-1~1-3は、全体演算を行い、求められた全体演算結果を計算ノード1-1~1-3に分配する。
なお、本実施の形態では、通信パケットを用いて、部分演算結果を共有するために送信部123が自ノードで計算した部分演算結果を他の計算ノード1へ送信し、受信部120が、他の計算ノード1からの部分演算結果を受信することができる。この場合、通信パケットには、自ノード宛の部分演算結果であるか否かを判定するための識別子が含まれる。
例えば、部分演算結果を含む通信パケットのヘッダにおいて、計算ノード1-1~1-3ごとに異なるビット位置にフラグを立てるか立てないかで自ノード宛てのデータであるかを判別することができる。受信部120で受信した通信パケットのヘッダの自ノードのビット位置にフラグが立っている場合、受信した通信パケットに含まれる部分演算結果は、自ノード宛のデータであると判定する。そして、自ノードで計算した部分演算結果と受信した他の計算ノード1からの部分演算結果との和である全体演算結果を求める。
なお、本実施の形態は、計算ノード1-1~1-3の各々が、自ノードで受信したOAMパケットの示すフラグの値に基づいて、自ノードの演算部10から出力された部分演算結果を、他の計算ノード1へ送信する場合に限らない。例えば、計算ノード1は、受信されたOAMパケットが示すフラグの値に基づいて、自ノードの演算部10で部分演算を開始する構成とすることもできる。
以上説明したように、第1の実施の形態によれば、各計算ノード1は、全ての計算ノード1で共有するOAMパケットを用いた同期処理により、部分演算が完了したことを契機として、ニューラルネットワークの計算における行列積の一部分を計算して部分演算結果を他の計算ノード1へ送信する。また、計算ノード1は、他の計算ノード1から受信した部分演算の結果と自ノードで計算した部分演算の結果との和である全体演算結果を求め、さらにその全体演算結果を他の計算ノード1へ分配する。
第1の実施の形態によれば、この一連の処理における全体演算結果の計算機能をネットワーク処理部12に具備するようにすることで、各計算ノード1の演算部10で全体演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できる。そのため、学習処理の高速化を図ることができ、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
また、第1の実施の形態によれば、集団通信を行う計算ノード1だけが部分演算を完了していれば、それらの計算ノード1で集団通信を開始することができるので、分散深層学習処理をより高速化できる。
また、第1の実施の形態によれば、各計算ノード1のネットワーク処理部12がOAM処理部122を備え、OAMパケットに対してフラグの付与やOAMパケットの読み取りを含むOAMパケットの処理を行う。そのため、OAMパケットを記憶部11にコピーすることなく処理を行えるので、処理の遅延を削減できる。
また、第1の実施の形態によれば、演算部10において加算演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できるため、通信ネットワークに接続される計算ノード1の数が増加しても、計算ノード1間での協調処理をより高速に行うことができる。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。本実施の形態に係る分散深層学習システムの構成および計算ノード1の構成は、図1および図6で説明した第1の実施の形態と同様である。
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。本実施の形態に係る分散深層学習システムの構成および計算ノード1の構成は、図1および図6で説明した第1の実施の形態と同様である。
第1の実施の形態では、任意の計算ノード1-1が起点となり、OAMパケットを発行し、他の計算ノード1-2、1-3で状態が記録されフラグが付与されたOAMパケットを読み取った。また、第1の実施の形態では、計算ノード1-1がそのOAMパケットの状態を契機として、計算ノード1-2、1-3に対して集団通信を開始する指示を行う場合について説明した。これに対し、第2の実施の形態では、マスターノードとして設定された計算ノード1-1が、複数の計算ノード1-1~1-3のうち、集団通信が発生する特定の計算ノード1を特定する特定情報(以下、モデルの「分割情報」という。)を各計算ノード1へ通知する。
例えば、図4に示すように、全体演算結果として隠れ層h2の出力を求める場合に、計算ノード1-1の部分演算結果および計算ノード1-2の部分演算結果が得られていれば計算できる。分割情報(特定情報)は、このようにどの計算ノード1の部分演算が完了していれば集団通信を開始できるのかを示す情報である。例えば、分割情報として、計算ノード1に固有のIDを用いることができる。
マスターノードとして設定されている計算ノード1-1のOAM処理部122には、分割情報が保持されている。また、マスターノードから分割情報を受信する計算ノード1-2、1-3は、分割情報に基づいて、OAMパケットの発行および部分演算結果の完了に応じたフラグの付与を計算ノード1-2、1-3間で行う。
より詳細には、マスターノードからの分割情報を送信部123(第4送信回路)から他の計算ノード1へ送信する。分割情報を受信部120(第5受信回路)で受信したスレーブノードとして設定された計算ノード1のうちのいずれか1のノードは、OAM処理部122において、受信された分割情報に自ノードが含まれる場合に、OAMパケットを生成する。さらに、OAMパケットを生成した計算ノード1では、OAM処理部122が、送信部123に対して、分割情報で特定される集団通信に関与する他の計算ノード1へOAMパケットを送信させる。
なお、OAMパケットの生成および発行を行う計算ノード1は、分割情報に示されるIDの値が最も小さい若しくは最も大きい計算ノード1、または、部分演算を最も先に完了した計算ノード1がOAMパケットを発行する構成としてもよい。
また、OAM処理部122は、自ノードの演算部10において、部分演算が完了した場合には、OAMパケットのフラグを立てる。
[分散深層学習システムの動作シーケンス]
図13は、本実施の形態に係る分散深層学習システムの動作シーケンス図である。以下においては、計算ノード1-1がマスターノードとして設定され、計算ノード1-2、1-3がスレーブノードである場合について説明する。また、マスターノードのネットワーク処理部12には、どの計算ノード1が集団通信を行うのかを示す分割情報を保持しているものとする。また、以下においては、分割情報により最も小さいIDの値が付与された計算ノード1がOAMパケットを発行する場合について説明し、計算ノード1-2に付与されたIDの値は計算ノード1-3に付与されたIDの値よりも小さいものとする。
図13は、本実施の形態に係る分散深層学習システムの動作シーケンス図である。以下においては、計算ノード1-1がマスターノードとして設定され、計算ノード1-2、1-3がスレーブノードである場合について説明する。また、マスターノードのネットワーク処理部12には、どの計算ノード1が集団通信を行うのかを示す分割情報を保持しているものとする。また、以下においては、分割情報により最も小さいIDの値が付与された計算ノード1がOAMパケットを発行する場合について説明し、計算ノード1-2に付与されたIDの値は計算ノード1-3に付与されたIDの値よりも小さいものとする。
まず、マスターノードとして設定された計算ノード1-1の送信部123は、OAM処理部122で生成された分割情報を他の計算ノード1-2、1-3へ送信する(ステップS200)。分割情報は、加算部121が特定の全体演算を実行するために必要とされる複数の部分演算結果を出力する特定の計算ノード1を、複数の計算ノード1-1~1-3のうちから特定する情報である。
次に、分割情報に含まれるIDの値が最も小さい計算ノード1-2は、自ノードのOAM処理部122においてOAMパケットを生成し、集団通信の相手である他の計算ノード1-3にOAMパケットを送信する(ステップS201)。
その後、計算ノード1-3は、自ノードの演算部10での部分演算を完了する(ステップS202)。計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、OAMパケットの所定のビットの値を「1」に設定し、フラグを付与する(ステップS203)。
次に、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを分割情報に基づいて、集団通信の相手である計算ノード1-2に送信する。その後、計算ノード1-2の演算部10は部分演算を完了する(ステップS204)。なお、計算ノード1-2のOAM処理部122は、受信されたOAMパケットのフラグを立てて自ノードでの部分演算が完了したことを記録してもよい。計算ノード1-2のOAM処理部122は、OAMパケットの状態から、集団通信に関わる部分演算が全て完了していること、すなわち、同期が完了したことを検知する。その後、計算ノード1-2のネットワーク処理部12は、集団通信を開始する指示を計算ノード1-3に送信する(ステップS205)。
例えば、計算ノード1-2は自ノードでの部分演算結果を計算ノード1-3に送信し、計算ノード1-3のネットワーク処理部12に設けられている加算部121が、計算ノード1-2、1-3での部分演算結果の和である全体演算を行う。その後、全体演算結果は、計算ノード1-1~1-3において分配される。
以上説明したように、第2の実施の形態によれば、複数の計算ノード1-1~1-3のうち、集団通信に関わる部分演算を求める計算ノード1を特定する分割情報(特定情報)が、マスターノードの計算ノード1から他の計算ノード1へ通知される。分割情報を受信した計算ノード1は、分割情報で示される計算ノード1間でOAMパケットの発行およびフラグの付与を含むOAMパケットの処理を行う。
そのため、計算ノード1は、自ノードの集団通信に関わる部分演算が完了したことを示すOAMパケットを受信して、同期が完了したことを契機として、集団通信を開始して、集団通信を完了したら処理を終了する。そのため、集団通信をより効率的に開始することができ、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第3の実施の形態では、複数の計算ノード1-1~1-3がツリー状のネットワークを構成する点で、第1および第2の実施の形態と異なる。また、第3の実施の形態に係る分散深層学習システムでは、全体演算を実行する集約ノード2を備える点で、第1および第2の実施の形態と異なる。
[分散深層学習システムの構成]
図14は、本実施の形態に係る分散深層学習システムの構成例を示すブロック図である。分散深層学習システムは、例えば、3台の計算ノード1-1~1-3が、1台の集約ノード2を介してツリー状のネットワークトポロジーで接続されている。本実施の形態では、複数の計算ノード1-1~1-3と集約ノード2とによってニューラルネットワークの行列積を計算する。
図14は、本実施の形態に係る分散深層学習システムの構成例を示すブロック図である。分散深層学習システムは、例えば、3台の計算ノード1-1~1-3が、1台の集約ノード2を介してツリー状のネットワークトポロジーで接続されている。本実施の形態では、複数の計算ノード1-1~1-3と集約ノード2とによってニューラルネットワークの行列積を計算する。
また、本実施の形態に係る計算ノード1-1~1-3の構成は、ネットワーク処理部(第1ネットワーク処理装置)12Aが全体演算を行う加算部121を備えない点において、図6で説明した第1および第2の実施の形態の構成と異なる。したがって、本実施の形態に係る計算ノード1-1~1-3の各々は、行列積の一部分である部分演算のみを行い、部分演算結果を集約ノード2へ送信する。部分演算結果の和である全体演算については、集約ノード2が行う。
[集約ノードの機能ブロック]
集約ノード2は、図14および図15に示すように、記憶部(第2記憶装置)21とネットワーク処理部(第2ネットワーク処理装置)22とを備える。集約ノード2は、OAMパケットを生成し、集団通信に関与する計算ノード1に対して送信する。また、集約ノード2は、集団通信に関与する計算ノード1の全てにおいて部分演算が完了したことを契機として、計算ノード1に対して集約開始を指示し、部分演算結果を集約ノード2に集約する。
集約ノード2は、図14および図15に示すように、記憶部(第2記憶装置)21とネットワーク処理部(第2ネットワーク処理装置)22とを備える。集約ノード2は、OAMパケットを生成し、集団通信に関与する計算ノード1に対して送信する。また、集約ノード2は、集団通信に関与する計算ノード1の全てにおいて部分演算が完了したことを契機として、計算ノード1に対して集約開始を指示し、部分演算結果を集約ノード2に集約する。
集約ノード2は、複数の計算ノード1-1~1-3で計算された部分演算結果を集約し、加算処理を含む全体演算を行い、求めた全体演算結果を複数の計算ノード1-1~1-3に分配する。
図15に示すように、記憶部21は、計算ノード1-1~1-3の各々で求められた部分演算結果210を記憶する。
ネットワーク処理部22は、受信部(第3受信回路、第4受信回路)220、加算部(加算回路)221、OAM処理部(第2のOAM処理回路)222、および送信部(第3送信回路、第4送信回路)223を備える。
受信部220は、複数の計算ノード1-1~1-3の各々のOAM処理部122で記録されたOAMパケットを、複数の計算ノード1-1~1-3から受信する。また、受信部220は、複数の計算ノード1-1~1-3のそれぞれから、部分演算結果を受信する。受信された部分演算結果は、記憶部21に記憶される。
加算部221は、受信部220で受信された複数の計算ノード1-1~1-3からの部分演算結果の和である全体演算結果を求める。加算部221は、例えば、論理回路を用いた加算回路で構成することができる。
例えば、図2から図5で説明した具体例を用いると、隠れ層h2の出力は、計算ノード1-1、1-2で求められた部分演算結果を加算することで求められる。加算部221は、計算ノード1-1および1-2のそれぞれで求められた部分演算結果を加算して、隠れ層h2の出力である全体演算結果を求める。
OAM処理部222は、複数の計算ノード1-1~1-3に対して、各計算ノード1の部分演算が完了したか否かを記録させる、OAMパケットを生成する。また、OAM処理部222は、受信部220で受信されたOAMパケットの状態から、集団通信に係る複数の計算ノード1に対して送信する集約開始指示を生成する。OAM処理部222は、集団通信に関与する計算ノード1の全てで部分演算が完了したこと、つまり、同期が完了したことを契機として、集約開始指示を行う。
例えば、図2から図5の例を用いると、OAM処理部222は、計算ノード1-1、1-2に送信するOAMパケットを生成する。また、OAM処理部222は、OAMパケットのフラグの値から、計算ノード1-1、1-2で部分演算が完了していること把握し、集約開始指示を生成する。
送信部223は、OAM処理部222で生成されたOAMパケットを計算ノード1-1~1-3に送信する。また、送信部223は、OAM処理部222で生成された集約開始指示を対象となる計算ノード1へ送信する。また、送信部223は、加算部221によって求められた全体演算結果を、複数の計算ノード1-1~1-3に分配する。
[集約ノードのハードウェア構成]
次に、上述した機能を有する集約ノード2を実現するハードウェア構成の一例について図16のブロック図を参照して説明する。
次に、上述した機能を有する集約ノード2を実現するハードウェア構成の一例について図16のブロック図を参照して説明する。
図13に示すように、集約ノード2は、例えば、CPU201、メインメモリ202、GPU203、NIC204、ストレージ205、およびI/O206を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
メインメモリ202には、CPU201およびGPU203が各種制御や演算を行うためのプログラムが予め格納されている。CPU201、GPU203、およびメインメモリ202によって、図15に示した加算部221、OAM処理部222など、集約ノード2の各機能が実現される。
NIC204は、計算ノード1-1~1-3や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC204は図15の受信部220および送信部223を実現する
ストレージ205は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ205には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ205は、図15で説明した記憶部21を実現する。
ストレージ205は、集約ノード2がOAMパケットの処理、部分演算結果の集約処理、全体演算処理、および分配処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ205は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
I/O206は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするネットワークポートにより構成される。ネットワークポートは、例えば、計算ノード1-1~1-3の数と同数設けることができる。あるいは、ネットワークスイッチを介して集約ノード2と計算ノード1-1~1-3とを接続することで、1つのネットワークポートを備えることもできる。
加算回路207は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路207は、図15で説明した加算部221を実現する。なお、本実施の形態では、加算回路207は、NIC204およびI/O206を含むネットワーク処理装置に設けられる。また、CPU201、メインメモリ202、GPU203、ストレージ205によって演算装置が構成される。
OAM処理回路208は、例えば、基本論理ゲートを組み合わせた複合論理ゲート等で実現される。あるいは、OAM処理回路208は、ASICなどの専用の回路や、電気回路とプログラムの組み合わせとして実現することができる。本実施の形態では、OAM処理回路208は、加算回路207と同様に、NIC204およびI/O206を含む伝送路側のネットワーク処理装置に設けられる。
[分散深層学習システムの動作シーケンス]
次に、上述した構成を有する集約ノード2および計算ノード1-1~1-3を備える分散深層学習システムの動作について図17および図18のシーケンス図を参照して説明する。なお、以下においては、分散深層学習システムは、図2から図5で説明した隠れ層h2、h4の出力を求める場合について説明する。
次に、上述した構成を有する集約ノード2および計算ノード1-1~1-3を備える分散深層学習システムの動作について図17および図18のシーケンス図を参照して説明する。なお、以下においては、分散深層学習システムは、図2から図5で説明した隠れ層h2、h4の出力を求める場合について説明する。
図17に示すように、集約ノード2のOAM処理部222は、OAMパケットを生成し、集団通信に関与する計算ノード1に対して送信部223から送信する(ステップS300)。例えば、集約ノード2は、予めOAM処理部222において設定されている隠れ層h2の出力に係る集団通信に関与する計算ノード1-1、1-2に対して、OAMパケットを送信する。
その後、計算ノード1-1、1-2の各々で、部分演算が完了する(ステップS301)。計算ノード1-1、1-2の各々で得られた部分演算結果は、それぞれの記憶部11で保持される。次に、計算ノード1-1、1-2の各々は、集約ノード2からOAMパケットを受信すると、OAM処理部(第1のOAM処理回路)122が自ノードでの部分演算が完了していることを示すフラグ値「1」を設定する(ステップS302)。計算ノード1-1、1-2の各々は、フラグを立てたOAMパケットを集約ノード2へ送信する。
次に、集約ノード2は計算ノード1-1、1-2からのOAMパケットを受信する。集約ノード2のOAM処理部222は、計算ノード1-1、1-2から受信したOAMパケットのフラグの値から、全体演算を行うための部分演算が完了していることを検知する。OAM処理部222は、計算ノード1-1、1-2の各々から部分演算結果を集約するための集約開始指示を生成する(ステップS303)。生成された集約開始指示は、計算ノード1-1、1-2に送信される。
次に、計算ノード1-1、1-2は、集約ノード2からの集約開始指示を受信すると、自ノードでの部分演算結果を集約ノード2へ送信する(ステップS304)。その後、集約ノード2の加算部221は、計算ノード1-1、1-2から集約した部分演算結果の和である全体演算を行う(ステップS305)。その後、集約ノード2は、得られた全体演算結果を送信部223から、計算ノード1-1~1-3へ分配する。
なお、図17では、集約ノード2は、隠れ層h2の出力に係る全体演算を開始するために必要な部分演算を計算する計算ノード1-1、1-2のみにOAMパケットを送信する場合について説明した。しかし、集約ノード2は、図18に示すように、ステップS300において、全ての計算ノード1-1~1-3にOAMパケットを送信し、かつ、全ての計算ノード1-1~1-3で複数の隠れ層、例えば、隠れ層h2、h4の出力に係る全体演算を開始するために必要な部分演算が完了した(ステップS301、302)ことを契機として、計算ノード1-1~1-3に対して集約開始指示を送信することもできる(ステップS303)。
以上説明したように、第3の実施の形態によれば、集約ノード2が集団通信に関与する複数の計算ノード1に対して、OAMパケットを送信する。集約ノード2は、各計算ノード1で記録され返送されてきたOAMパケットの状態から、全体演算を行うための部分演算が各計算ノード1で完了していることを検知すると、同期が完了したとして、部分演算結果を集約するために集約開始指示を計算ノード1に送信する。
このように、複数の計算ノード1-1~1-3で部分演算が完了したことを契機として、計算ノード1-1~1-3に対して集約指示を行うので、集約ノード2は、より効率的に部分演算結果を計算ノード1-1~1-3から集約し、全体演算結果を求めることができる。
また、本実施の形態に係る集約ノード2は、全体演算を行う加算部221およびOAMパケットの発行および処理を行うOAM処理部222を、ネットワーク処理部22に具備するので、集約ノード2は、演算部10が不要となる。そのため、加算処理やOAM処理を演算部10でソフトウェア的に処理した従来例と比較して、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
また、第3の実施の形態によれば、OAMパケットを特定の計算ノード1に対して送信することができ、OAMフレーム数を削減することができ、より高速な分散深層学習処理が実現できる。
なお、説明した実施の形態では、複数の計算ノード1-1~1-3がニューラルネットワークモデルを分割して分散学習を行うことにより、ニューラルネットワークの全体の学習を行い、集団通信の高速化を行う場合を例示した。しかし、本実施の形態に係る分散深層学習システムは、学習処理に適用する他にも、推論処理など、行列の積和演算を含む大規模行列計算にも適用することで、処理を高速化することができる。
以上、本発明の分散深層学習システムおよび分散深層学習方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
1,1-1,1-2,1-3…計算ノード、10…演算部、11…記憶部、12…ネットワーク処理部、110…部分演算結果、111…全体演算結果、120…受信部、121…加算部、122…OAM処理部、123…送信部、101…CPU、102…メインメモリ、103…GPU、104…NIC、105…ストレージ、106…I/O、107…加算回路、108…OAM処理回路。
Claims (8)
- 通信ネットワークを介して互いに接続された複数の計算ノードを備え、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
前記演算装置から出力された前記第1演算結果を記憶する第1記憶装置と、
前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信回路と、
他の計算ノードからの第1演算結果を受信する第1受信回路と、
前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信回路で受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路と、
前記第2演算結果を、他の計算ノードへ送信する第2送信回路と、
他の計算ノードからの第2演算結果を受信する第2受信回路と、
前記複数の計算ノードの状態を示す通知パケットを受信する第3受信回路と、
前記第3受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録するOAM処理回路と、
前記OAM処理回路で記録された前記通知パケットを他の計算ノードへ送信する第3送信回路と、
を有するネットワーク処理装置と
を備え、
前記OAM処理回路は、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させる
ことを特徴とする分散深層学習システム。 - 請求項1に記載の分散深層学習システムにおいて、
前記複数の計算ノードの各々は、
前記第2演算結果を記憶する第2記憶装置をさらに備え、
前記第2記憶装置は、前記加算回路で求められた前記第2演算結果、および前記第2受信回路で受信された前記他の計算ノードからの第2演算結果を記憶する
ことを特徴とする分散深層学習システム。 - 請求項1または請求項2に記載の分散深層学習システムにおいて、
前記複数の計算ノードのうちのいずれか1の計算ノードはマスターノードとして設定され、他の複数の計算ノードは前記マスターノードによって制御されるスレーブノードとして設定され、
前記1の計算ノードが備える前記ネットワーク処理装置は、
前記OAM処理回路が、前記通知パケットを生成し、
前記第3送信回路は、生成された前記通知パケットを、前記他の複数の計算ノードへ送信し、
前記OAM処理回路は、前記他の複数の計算ノードで記録された前記通知パケットが、前記他の複数の計算ノードの各々で既に前記第1演算結果が出力されていることを示す場合に、前記他の複数の計算ノードの各々が備える前記演算装置から出力された前記第1演算結果の和である前記第2演算結果の計算を前記加算回路に実行させる
ことを特徴とする分散深層学習システム。 - 請求項1または請求項2に記載の分散深層学習システムにおいて、
前記複数の計算ノードのうちのいずれか1の計算ノードがマスターノードとして設定され、他の複数の計算ノードは前記マスターノードによって制御されるスレーブノードとして設定され、
前記1の計算ノードが備える前記ネットワーク処理装置は、
前記OAM処理回路において、前記加算回路が前記第2演算結果を求めるために必要とされる複数の前記第1演算結果を出力する特定の複数の計算ノードを前記他の複数の計算ノードのうちから特定する特定情報を生成し、
前記特定情報を前記他の複数の計算ノードに送信する第4送信回路をさらに備え、
前記他の複数の計算ノードの各々が備える前記ネットワーク処理装置は、
前記特定情報を受信する第5受信回路をさらに備え、
前記OAM処理回路は、前記特定情報で特定される前記特定の複数の計算ノードに自ノードが含まれる場合に、前記通知パケットが示す前記特定の複数の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記特定情報で特定される他の計算ノードへ送信させる
ことを特徴とする分散深層学習システム。 - 通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、
前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路と、
前記複数の計算ノードの状態を示す通知パケットを受信する第2受信回路と、
前記第2受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録する第1のOAM処理回路と、
前記第1のOAM処理回路で記録された前記通知パケットを前記集約ノードへ送信する第2送信回路と
を有する第1ネットワーク処理装置と、
前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置と
を有し、
前記第1のOAM処理回路は、前記集約ノードからの指示に基づいて、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、
前記集約ノードは、
前記通知パケットを生成する第2のOAM処理回路と、
生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信回路と、
前記複数の計算ノードの各々の前記第1のOAM処理回路で記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信回路と、
前記複数の計算ノードからの第1演算結果を受信する第4受信回路と、
前記第4受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、
前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信回路と
を有する第2ネットワーク処理装置と
を有し、
前記第2のOAM処理回路は、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示する
ことを特徴とする分散深層学習システム。 - 請求項5に記載の分散深層学習システムにおいて、
前記複数の計算ノードと、前記集約ノードとは、前記複数の計算ノードの各々と前記集約ノードとが互いに接続されたスター型の通信ネットワークを構成することを特徴とする分散深層学習システム。 - 通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、
前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、
他の計算ノードからの第1演算結果を受信する第1受信ステップと、
前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、
前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、
他の計算ノードからの第2演算結果を受信する第2受信ステップと、
前記複数の計算ノードの状態を示す通知パケットを受信する第3受信ステップと、
前記第3受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録するOAM処理ステップと、
前記OAM処理ステップで記録された前記通知パケットを他の計算ノードへ送信する第3送信ステップと
を有するネットワーク処理ステップと
を備え、
前記OAM処理ステップは、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させる
ことを特徴とする分散深層学習方法。 - 通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、
前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップと、
前記複数の計算ノードの状態を示す通知パケットを受信する第2受信ステップと、
前記第2受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録する第1のOAM処理ステップと、
前記第1のOAM処理ステップで記録された前記通知パケットを前記集約ノードへ送信する第2送信ステップと
を有する第1ネットワーク処理ステップと、
前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップと
を有し、
前記第1のOAM処理ステップは、前記集約ノードからの指示に基づいて、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、
前記集約ノードは、
前記通知パケットを生成する第2のOAM処理ステップと、
生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信ステップと、
前記複数の計算ノードの各々の前記第1のOAM処理ステップで記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信ステップと、
前記複数の計算ノードからの第1演算結果を受信する第4受信ステップと、
前記第4受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、
前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信ステップと
を有する第2ネットワーク処理ステップと
を有し、
前記第2のOAM処理ステップは、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示する
ことを特徴とする分散深層学習方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/046967 WO2021111491A1 (ja) | 2019-12-02 | 2019-12-02 | 分散深層学習システムおよび分散深層学習方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021111491A1 JPWO2021111491A1 (ja) | 2021-06-10 |
JP7283577B2 true JP7283577B2 (ja) | 2023-05-30 |
Family
ID=76221538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021562205A Active JP7283577B2 (ja) | 2019-12-02 | 2019-12-02 | 分散深層学習システムおよび分散深層学習方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220398457A1 (ja) |
JP (1) | JP7283577B2 (ja) |
WO (1) | WO2021111491A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090769A (ja) | 2006-10-05 | 2008-04-17 | Nippon Telegr & Teleph Corp <Ntt> | 並列演算方法、演算装置、および演算装置用プログラム |
JP2018120470A (ja) | 2017-01-26 | 2018-08-02 | 日本電気株式会社 | 通信システム、分散計算システム、ノード、情報共有方法及びプログラム |
JP2019144643A (ja) | 2018-02-16 | 2019-08-29 | 日本電信電話株式会社 | 分散処理システムおよび分散処理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05108595A (ja) * | 1991-10-17 | 1993-04-30 | Hitachi Ltd | ニユーラルネツトワークの分散学習装置 |
-
2019
- 2019-12-02 US US17/776,848 patent/US20220398457A1/en active Pending
- 2019-12-02 JP JP2021562205A patent/JP7283577B2/ja active Active
- 2019-12-02 WO PCT/JP2019/046967 patent/WO2021111491A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090769A (ja) | 2006-10-05 | 2008-04-17 | Nippon Telegr & Teleph Corp <Ntt> | 並列演算方法、演算装置、および演算装置用プログラム |
JP2018120470A (ja) | 2017-01-26 | 2018-08-02 | 日本電気株式会社 | 通信システム、分散計算システム、ノード、情報共有方法及びプログラム |
JP2019144643A (ja) | 2018-02-16 | 2019-08-29 | 日本電信電話株式会社 | 分散処理システムおよび分散処理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220398457A1 (en) | 2022-12-15 |
JPWO2021111491A1 (ja) | 2021-06-10 |
WO2021111491A1 (ja) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110033078B (zh) | 一种基于树状拓扑的计算系统及方法 | |
JP6093867B2 (ja) | インターコネクトにおける不均一なチャネル容量 | |
JP6216454B2 (ja) | ネットワークオンチップアーキテクチャにおけるシステムレベルシミュレーション | |
US20180211166A1 (en) | Distributed deep learning device and distributed deep learning system | |
CN113098773A (zh) | 数据处理方法、装置及系统 | |
TW202147188A (zh) | 神經網路模型的訓練方法和相關産品 | |
US11082358B2 (en) | Network path measurement method, apparatus, and system | |
US10565038B1 (en) | Method and apparatus for graph-based computing | |
CN116257494B (zh) | 一种聚合通信的方法、系统和计算机设备 | |
JP7283577B2 (ja) | 分散深層学習システムおよび分散深層学習方法 | |
CN117061365B (zh) | 一种节点选择方法、装置、设备及可读存储介质 | |
JP6526156B2 (ja) | ネットワークトポロジーシステム並びにトポロジー及びそのルーティングテーブルの構築方法 | |
CN116915708A (zh) | 路由数据包的方法、处理器及可读存储介质 | |
JP7287493B2 (ja) | 分散深層学習システムおよび分散深層学習方法 | |
JP7135468B2 (ja) | 分散処理システムおよび分散処理方法 | |
JP5651217B1 (ja) | パス復旧制御装置 | |
Oshiro et al. | A quantum-classical network for beat-making performance | |
JP7248110B2 (ja) | 分散深層学習システム | |
CN105704004B (zh) | 业务数据处理方法和装置 | |
Moraveji et al. | Modeling the effects of hot-spot traffic load on the performance of wormhole-switched hypermeshes | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
WO2022201256A1 (ja) | 情報処理装置、情報処理システム、情報処理方法、及びプログラム | |
CN114900441B (zh) | 网络性能预测方法,性能预测模型训练方法及相关装置 | |
McGlohon et al. | Fit Fly: A Case Study on Interconnect Innovation through Parallel Simulation | |
JP7074017B2 (ja) | 分散処理システムおよび分散処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220325 |
|
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: 20230418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230501 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7283577 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |