JP7287493B2 - 分散深層学習システムおよび分散深層学習方法 - Google Patents
分散深層学習システムおよび分散深層学習方法 Download PDFInfo
- Publication number
- JP7287493B2 JP7287493B2 JP2021555716A JP2021555716A JP7287493B2 JP 7287493 B2 JP7287493 B2 JP 7287493B2 JP 2021555716 A JP2021555716 A JP 2021555716A JP 2021555716 A JP2021555716 A JP 2021555716A JP 7287493 B2 JP7287493 B2 JP 7287493B2
- Authority
- JP
- Japan
- Prior art keywords
- computation
- calculation
- node
- result
- nodes
- 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/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/09—Supervised learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5603—Access techniques
- H04L2012/5609—Topology
- H04L2012/5612—Ring
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Neurology (AREA)
- Multi Processors (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.,"NVIDIA(登録商標) Tesla(登録商標) P100 GPUによるディープラーニングのパフォーマンス",デル株式会社,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受信回路とを有するネットワーク処理装置とを備えることを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路とを有する第1ネットワーク処理装置と、前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置とを有し、前記集約ノードは、前記複数の計算ノードからの第1演算結果を受信する第2受信回路と、前記第2受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第2送信回路とを有する第2ネットワーク処理装置と、前記第2受信回路で受信された前記複数の計算ノードからの第1演算結果を記憶する第2記憶装置とを有し、前記加算回路は、前記第2記憶装置に記憶されている前記複数の計算ノードからの第1演算結果を読み出して、前記第2演算結果を求めることを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、他の計算ノードからの第1演算結果を受信する第1受信ステップと、前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、他の計算ノードからの第2演算結果を受信する第2受信ステップとを有するネットワーク処理ステップとを備えることを特徴とする。
上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップとを有する第1ネットワーク処理ステップと、前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップとを有し、前記集約ノードは、前記複数の計算ノードからの第1演算結果を受信する第2受信ステップと、前記第2受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第2送信ステップとを有する第2ネットワーク処理ステップと、前記第2受信ステップで受信された前記複数の計算ノードからの第1演算結果を第2記憶装置に記憶する第2記憶ステップとを有し、前記加算ステップは、前記第2記憶装置に記憶されている前記複数の計算ノードからの第1演算結果を読み出して、前記第2演算結果を求めることを特徴とする。
本発明によれば、通信ネットワークを介して互いに接続された複数の計算ノードの各々は、第1記憶装置に記憶されている演算装置から出力された第1演算結果と、第1受信回路で受信された他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路を備えたネットワーク処理装置を有する。そのため、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
以下、本発明の好適な実施の形態について、図1から図16を参照して詳細に説明する。
[発明の概要]
はじめに、本発明の実施の形態に係る分散深層学習システムの概要について図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~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に示すように、演算部(演算装置)10、記憶部(第1記憶装置、第2記憶装置)11、およびネットワーク処理部(ネットワーク処理装置)12を備える。
各計算ノード1-1~1-3は、図1に示すように、演算部(演算装置)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受信回路)120、加算部(加算回路)121、および送信部(第1送信回路、第2送信回路)122を備える。
受信部120は、他の計算ノード1からの部分演算結果を、通信ネットワークを介して受信する。また、受信部120は、他の計算ノード1からの全体演算結果を受信する。
加算部121は、受信部120で受信された他の計算ノード1からの部分演算結果と、自ノードで計算した部分演算結果とを加算して全体演算結果を求める。加算部121は、例えば、論理回路を用いた加算回路で構成することができる。加算部121で求められた全体演算結果は、記憶部11に記憶される。
送信部122は、記憶部11に記憶されている自ノードの演算部10で計算された部分演算結果を、通信ネットワークを介して他の計算ノード1に送信する。また、送信部122は、加算部121で求められた全体演算結果を通信ネットワークを介して他の計算ノード1に分配する。
なお、複数の計算ノード1-1~1-3の各々は、同様の機能構成を有する。
ここで、本実施の形態に係る分散深層学習システムが備える計算ノード1の構成と、図6に示す、従来例の分散深層学習システムが備える計算ノード100の構成とを比較して説明する。
従来例に係る計算ノード100は、図6に示すように、演算部1000、記憶部1100、およびネットワーク処理部1200を備える。本実施の形態の計算ノード1は、図1で説明したように、ネットワーク処理部12が他の計算ノード1から受信した部分演算結果と、自ノードで計算した部分演算結果との和を求める加算部121を備える。しかし、従来例の計算ノード100は、演算部1000が加算部1221を備える。
従来例の計算ノード100では、他の計算ノード100から受信した部分演算結果が、記憶部1100にて他ノード部分演算結果1112に格納される。演算部1000に設けられた加算部1221は、全体演算結果を求めるために記憶部1100を構成するメモリに対してメモリアクセスを行う時間が加算される。したがって、全体の処理時間も本実施の形態の構成と比較して長くなる。
これに対して、本実施の形態に係る計算ノード1では、他の計算ノード1から受信した部分演算結果と自ノードで計算した部分演算結果との和をネットワーク処理部12に設けられた加算部121で計算するため、従来例の計算ノード100で生ずる追加のメモリアクセス時間は生じない。
[計算ノードのハードウェア構成]
次に、上述した機能を有する計算ノード1を実現するハードウェア構成の一例を、図7のブロック図を参照して説明する。
次に、上述した機能を有する計算ノード1を実現するハードウェア構成の一例を、図7のブロック図を参照して説明する。
図5に示すように、計算ノード1は、例えば、CPU101、メインメモリ102、GPU103、NIC104、ストレージ105、およびI/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
メインメモリ102には、CPU101およびGPU103が各種制御や演算を行うためのプログラムが予め格納されている。CPU101、GPU103、およびメインメモリ102によって、図1に示した演算部10、加算部121など、計算ノード1の各機能が実現される。
NIC104は、計算ノード1間や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC104は図1の受信部120および送信部122を実現する。NIC104は、例えば、100 Gbit Ethernet(登録商標)での通信に対応したデバイス間のインターフェースを用いることができる。
ストレージ105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ105は、図1で説明した記憶部11を実現する。
ストレージ105は、計算ノード1が行列積を含むニューラルネットワークの演算などの分散深層学習処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ105は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
I/O106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりする
ネットワークポートにより構成される。ネットワークポートは、例えば、2つ以上のネットワークポートを用いることができる。
ネットワークポートにより構成される。ネットワークポートは、例えば、2つ以上のネットワークポートを用いることができる。
加算回路107は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路107は、図1で説明した加算部121を実現する。なお、本実施の形態では、加算回路107は、NIC104およびI/O106を含むネットワーク処理装置に設けられる。また、CPU101、メインメモリ102、GPU103、ストレージ105によって演算装置が構成される。
本実施の形態に係る通信ネットワークNWは、例えば、100Gbit Ethernetなど広帯域のネットワークが用いられる。
[計算ノードの動作]
まず、上述した構成を有する各計算ノード1の動作について、図8のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
まず、上述した構成を有する各計算ノード1の動作について、図8のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
まず、演算部10は、ニューラルネットワークの学習における行列積の一部を計算する(ステップS1)。
次に、演算部10によって求められた部分演算結果が記憶部11に記憶されると(ステップS2:YES)、ネットワーク処理部12は、集団通信を開始する(ステップS3)。一方、自ノードで計算した部分演算結果が得られていない場合には(ステップS2:NO)、ステップS1での演算が実行される(ステップS1)。
例えば、分散深層学習システムが同期システムである場合を考える。同期システムでは、全ての計算ノード1-1~1-3での行列積の一部の計算が完了したことを契機に、得られた部分演算結果を集団通信して共有する。そのため、計算ノード1-1~1-3は、所定の契機が訪れるまでの自ノードで計算された部分演算結果を記憶部11において保持する。
なお、同期システムの場合であっても、必ずしも全ての計算ノード1-1~1-3での演算部10による計算の完了を待つ必要はなく、例えば、分散深層学習システムを構成する一部の計算ノード1における計算が完了したことを契機とすることもある。
例えば、計算ノード1-1および計算ノード1-2の計算が完了した時点でh2を求めることができるため、計算ノード1-3の計算完了を待たずとも集団通信を開始することもある。
一方において、分散深層学習システムが、他の計算ノード1での計算の完了を待つことなく集団通信を開始する非同期システムを採用する場合には、各計算ノード1-1~1-3での部分演算結果の計算が完了した時点で、所定の計算ノード1との集団通信を開始する。この場合、部分演算結果のデータを受信した計算ノード1において、自ノードでの部分演算の計算が完了するまでの間、受信された部分演算結果が記憶部11において一時的に蓄積される。
ステップS3で、ネットワーク処理部12が集団通信を開始すると、送信部122は、自ノードで計算した部分演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。また、受信部120は、他の計算ノード1において計算された部分演算結果を受信する。このとき、図1に示すように、送信部122は、予め決められた他の計算ノード1を送信先として部分演算結果を送信する。また、受信部120は、ネットワーク接続されている予め決められている他の計算ノード1から部分演算結果を受信する。
次に、加算部121は、自ノードで求めた部分演算結果と、他の計算ノード1から受信した部分演算結果との和である全体演算結果を求める(ステップS4)。
次に、ネットワーク処理部12は、ステップS4で求められた全体演算結果を、他の計算ノード1に分配する(ステップS5)。具体的には、送信部122が、加算部121によって求められた全体演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。その後、複数の計算ノード1-1~1-3により計算された部分演算結果の和である全体演算結果は記憶部11に記憶される。
[分散深層学習システムの動作]
次に、分散深層学習システムの動作について、図9のシーケンス図を参照して説明する。
次に、分散深層学習システムの動作について、図9のシーケンス図を参照して説明する。
図5で説明したように、計算ノード1-1は、入力x1~x4と隠れ層h2との結合を示す重みパラメータw12~w42を保持している。一方、計算ノード1-2は、その他の入力x5、x6と隠れ層h2との重みパラメータw52、w62を保持している。
同様に、図5で説明したように、計算ノード1-2は、入力x1~x2と隠れ層h4との結合を示す重みパラメータw14~w24を保持している。一方、計算ノード1-3は、その他の入力x3~x6と隠れ層h4との重みパラメータw34~w64を保持している。
図9に示すように、計算ノード1-1の演算部10は、[x1*w12+x2*w22+x3*w32+x4*w42]を計算して、部分演算結果を求める(ステップS100)。一方、計算ノード1-2の演算部10は、[x5*w52+x6*w62]および[x1*w14+x2*w24]を計算した部分演算結果を求める。計算ノード1-2は、[x5*w52+x6*w62]の部分演算結果を計算ノード1-1に送信する(ステップS101)。
次に、計算ノード1-1は、ネットワーク処理部12の加算部121で、自ノードで求めた部分演算結果と、計算ノード1-2から送信された部分演算結果とを加算して、全体演算結果を求める(ステップS102)。これにより、隠れ層h2の出力を示す全体演算結果が得られる。
その後、計算ノード1-1の送信部122は、他の計算ノード1-2、1-3に隠れ層h2の出力を分配する(ステップS103)。
一方において、計算ノード1-3の演算部10は、[x3*w34+x4*w44+x5*w54+x6*w64]を計算して、部分演算結果を求め、計算ノード1-2に送信する(ステップS104)。次に、計算ノード1-2の加算部121は、ステップS101で求めたh4に係る、[x1*w14+x2*w24]を計算した部分演算結果と、計算ノード1-3から受信した部分演算結果とを加算して、全体演算結果を求める(ステップS105)。ステップS105で得られた全体演算結果は、隠れ層h4の出力を示す。
その後、計算ノード1-2は、ステップS105で求められた全体演算結果を、他の計算ノード1-1、1-3に分配する(ステップS106)。
以上のステップにより、隠れ層h2およびh4の出力については、複数の計算ノード1-1~1-3を跨いだ部分演算結果の和により求められる。
以上のステップにより、隠れ層h2およびh4の出力については、複数の計算ノード1-1~1-3を跨いだ部分演算結果の和により求められる。
一方において、隠れ層h1の出力については、図5に示すように、重みパラメータw11~w61を保持している計算ノード1-1のみによって得られた部分演算結果が全体演算結果である出力として求められる。また、同様に隠れ層h3の出力については、重みパラメータw13~w63を保持している計算ノード1-2のみによって求められる。さらに、隠れ層h5の出力については、重みパラメータw15~w65を保持している計算ノード1-3のみによって求められる。
ここで、図9に示すように、本実施の形態に係る分散深層学習システムでは、自ノードで求めた部分演算結果の送信と、他の計算ノード1からの部分演算結果の受信と、全体演算結果の送受信とをそれぞれ異なる通信方向で実行する。
前述したように、例えば、100 Gbit Ethernetを用いて、各計算ノード1-1~1-3をリング状のネットワークで接続する場合を考える。この場合、片方向のみの通信を利用すると、最大通信速度は100Gbpsであるのに対して、双方向の通信帯域を利用することにより、最大通信速度100Gbps*2=200Gbpsとなる。
また、本実施の形態では、通信パケットを用いて、部分演算結果を共有するために送信部122が自ノードで計算した部分演算結果を他の計算ノード1へ送信し、受信部120が、他の計算ノード1からの部分演算結果を受信することができる。この場合、通信パケットには、自ノード宛の部分演算結果であるか否かを判定するための識別子が含まれる。
例えば、通信パケットのヘッダにおいて、計算ノード1-1~1-3ごとに異なるビット位置にフラグを立てるか立てないかで自ノード宛てのデータであるかを判別することができる。受信部120で受信した通信パケットのヘッダの自ノードのビット位置にフラグが立ってる場合、受信した通信パケットに含まれる部分演算結果は、自ノード宛のデータであると判定する。そして、自ノードで計算した部分演算結果と受信した他の計算ノード1からの部分演算結果との和である全体演算結果を求める。
また、複数の計算ノード1-1~1-3に跨って処理する場合、計算ノード1-1~1-3同士の主従関係を定義することもできる。例えば、重みパラメータw1nを用いて部分演算を計算する計算ノード1-1をマスターの計算ノードとして、他の計算ノード1-2~1-3はマスターの計算ノード1-1へ部分演算結果を送信する構成とすることができる。
以上説明したように、第1の実施の形態によれば、複数の計算ノード1-1~1-3の各々は、自ノードで求めた部分演算結果を他の計算ノード1へ送信する送信部122と、他の計算ノード1からの部分演算結果を受信する受信部120と、受信部120で受信された他の計算ノード1からの部分演算結果と、自ノードでの部分演算結果との和である全体演算を行う加算部121を具備したネットワーク処理部12を備える。
そのため、演算部10において加算演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できるため、通信ネットワークに接続される計算ノード1の数が増加しても、計算ノード1間での協調処理をより高速に行うことができる。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1の実施の形態では、複数の計算ノード1-1~1-3の各々は、加算部121を備えたネットワーク処理部12を有し、ネットワーク処理部12において、自ノードで求めた部分演算結果と、他の計算ノード1より受信した部分演算結果との加算処理を行う場合について説明した。これに対して、第2の実施の形態では、複数の計算ノード1-1~1-3の各々で求められた部分演算結果を集約し、加算処理を行う集約ノード2を備える。以下、第1の実施の形態と異なる構成を中心に説明する。
[分散深層学習システムの構成]
図10は、本実施の形態に係る分散深層学習システムの構成例を示すブロック図である。分散深層学習システムは、通信ネットワークを介して接続された複数の計算ノード1-1~1-3と、集約ノード2とを備える。
図10は、本実施の形態に係る分散深層学習システムの構成例を示すブロック図である。分散深層学習システムは、通信ネットワークを介して接続された複数の計算ノード1-1~1-3と、集約ノード2とを備える。
図10に示すように、例えば、3台の計算ノード1-1~1-3と、1台の集約ノード2とが、スター型の通信ネットワークで接続されている。本実施の形態では、複数の計算ノード1-1~1-3と集約ノード2とによってニューラルネットワークの行列積を計算する。
[計算ノードの機能ブロック]
計算ノード1-1~1-3の各々は、図10および図11のブロック図に示すように、演算部(演算装置)10、記憶部(第1記憶装置)11、およびネットワーク処理部(第1ネットワーク処理装置)12Aを備える。
計算ノード1-1~1-3の各々は、図10および図11のブロック図に示すように、演算部(演算装置)10、記憶部(第1記憶装置)11、およびネットワーク処理部(第1ネットワーク処理装置)12Aを備える。
演算部10は、ニューラルネットワークの学習を行うための行列積の一部分を計算して部分演算結果を出力する。
記憶部11は、演算部10で求められた自ノードの部分演算結果110および、全体演算結果111を記憶する。
ネットワーク処理部12Aは、受信部(第1受信回路)120と送信部(第1送信回路)122とを備える。
受信部120は、後述の集約ノード2から、複数の計算ノード1で計算された部分演算結果の和である全体演算結果を受信する。
受信部120は、後述の集約ノード2から、複数の計算ノード1で計算された部分演算結果の和である全体演算結果を受信する。
送信部122は、自ノードで求めた部分演算結果を通信ネットワークを介して集約ノード2へ送信する。
[集約ノードの機能ブロック]
集約ノード2は、図10および図12に示すように、記憶部(第2記憶装置)21とネットワーク処理部(第2ネットワーク処理装置)22とを備える。集約ノード2は、複数の計算ノード1-1~1-3で計算された部分演算結果を集約し、加算処理を含む全体演算を行い、求められた全体演算結果を複数の計算ノード1-1~1-3に分配する。
集約ノード2は、図10および図12に示すように、記憶部(第2記憶装置)21とネットワーク処理部(第2ネットワーク処理装置)22とを備える。集約ノード2は、複数の計算ノード1-1~1-3で計算された部分演算結果を集約し、加算処理を含む全体演算を行い、求められた全体演算結果を複数の計算ノード1-1~1-3に分配する。
記憶部21は、計算ノード1-1~1-3の各々で求められた部分演算結果210を記憶する。
ネットワーク処理部22は、受信部(第2受信回路)220、加算部(加算回路)221、および送信部(第2送信回路)222を備える。
受信部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の出力である全体演算結果を求める。
送信部222は、加算部221によって求められた全体演算結果を、複数の計算ノード1-1~1-3に分配する。
[集約ノードのハードウェア構成]
次に、上述した機能を有する集約ノード2を実現するハードウェア構成の一例について図13のブロック図を参照して説明する。
次に、上述した機能を有する集約ノード2を実現するハードウェア構成の一例について図13のブロック図を参照して説明する。
図13に示すように、集約ノード2は、例えば、CPU201、メインメモリ202、GPU203、NIC204、ストレージ205、およびI/O206を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
メインメモリ202には、CPU201およびGPU203が各種制御や演算を行うためのプログラムが予め格納されている。CPU201、GPU203、およびメインメモリ202によって、図12に示した加算部221など、集約ノード2の各機能が実現される。
NIC204は、計算ノード1-1~1-3や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC204は図12の受信部220および送信部222を実現する
ストレージ205は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ205には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ205は、図12で説明した記憶部21を実現する。
ストレージ205は、集約ノード2が計算ノード1-1~1-3からの部分演算結果の集約処理、全体演算処理、および分配処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ205は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
I/O206は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするネットワークポートにより構成される。ネットワークポートは、例えば、計算ノード1-1~1-3の数と同数設けることができる。あるいは、ネットワークスイッチを介して集約ノード2と計算ノード1-1~1-3とを接続することで、1つのネットワークポートを備えることもできる。
加算回路207は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路207は、図12で説明した加算部221を実現する。なお、本実施の形態では、加算回路207は、NIC204およびI/O206を含むネットワーク処理装置に設けられる。また、CPU201、メインメモリ202、GPU203、ストレージ205によって演算装置が構成される。
[計算ノードの動作]
次に、上述した構成を有する計算ノード1の動作について、図14のフローチャートを参照して説明する。
次に、上述した構成を有する計算ノード1の動作について、図14のフローチャートを参照して説明する。
まず、上述した構成を有する各計算ノード1の動作について、図8のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
まず、演算部10は、ニューラルネットワークの学習における行列積の一部を計算する(ステップS1)。
次に、演算部10によって求められた部分演算結果が記憶部11に記憶されると(ステップS2:YES)、ネットワーク処理部12Aの送信部122は、自ノードで求めた部分演算結果を集約ノード2へ送信する(ステップS13)。一方、自ノードで計算した部分演算結果が得られていない場合には(ステップS2:NO)、ステップS1での演算が実行される(ステップS1)。
その後、ネットワーク処理部12Aの受信部120は、全体演算結果を集約ノード2から受信する(ステップS14)。その後、受信された全体演算結果は、記憶部11に格納される。なお、複数の計算ノード1-1~1-3は同様に動作する。
[集約ノードの動作]
次に、上述した構成を有する集約ノード2の動作について、図15のフローチャートを用いて説明する。
次に、上述した構成を有する集約ノード2の動作について、図15のフローチャートを用いて説明する。
まず、受信部220は、複数の計算ノード1-1~1-3で求められた部分演算結果を受信する(ステップS20)。
次に、ネットワーク処理部22は、受信した部分演算結果を記憶部21で保持するか否かを判定する(ステップS21)。例えば、分散深層学習システムが、複数の計算ノード1-1~1-3の各々での部分演算が完了次第、集約ノード2への部分演算結果の送信が開始される非同期システムを採用している場合に、ステップS21での判定処理が行われる。
例えば、計算ノード1-1で計算された部分演算結果のみが受信されている場合(ステップS21:YES)、ネットワーク処理部22は、計算ノード1-1からの部分演算結果を記憶部21に記憶させる(ステップS22)。この場合、集約ノード2は、集団通信を行うために必要なすべての部分演算結果の受信が完了するまで、記憶部21で受信済みの部分演算結果を一時的に蓄積する。
その後において、例えば、計算ノード1-2で計算された部分演算結果が受信された場合に、ネットワーク処理部22は、計算ノード1-2の部分演算結果について、記憶部21で記憶しないと判定し(ステップS21:NO)、加算部221へ送出する(ステップS23)。
加算部221は、記憶部21に記憶されている計算ノード1-1の部分演算結果を読み出し、計算ノード1-2からの部分演算結果との和である全体演算結果を求める(ステップS24)。その後、送信部222は、加算部221で求められた全体演算結果を通信ネットワークを介して複数の計算ノード1-1~1-3に分配する(ステップS25)。
[分散深層学習システムの動作]
次に、上述した構成を有する集約ノード2および計算ノード1-1~1-3を備える分散深層学習システムの動作について図15のシーケンス図を参照して説明する。なお、以下においては、分散深層学習システムは、図2から図5で説明した隠れ層h2の出力を求める場合について説明する。
次に、上述した構成を有する集約ノード2および計算ノード1-1~1-3を備える分散深層学習システムの動作について図15のシーケンス図を参照して説明する。なお、以下においては、分散深層学習システムは、図2から図5で説明した隠れ層h2の出力を求める場合について説明する。
図15に示すように、計算ノード1-1の演算部10では、[x1*w12+x2*w22+x3*w32+x4*w42]を計算した部分演算結果が求められる。計算ノード1-1の送信部122は、部分演算結果を集約ノード2へ送信する(ステップS200)。一方、計算ノード1-2の演算部10では、[x5*w52+x6*w62]を計算した部分演算結果が求められる。計算ノード1-2は、集約ノード2に部分演算結果を送信する(ステップS201)。
次に、集約ノード2は、計算ノード1-1および1-2から部分演算結果を受信すると、加算部221でこれらの部分演算結果の和である全体演算結果を求める(ステップS202)。
その後、集約ノード2は、送信部222から隠れ層h2の出力を示す全体演算結果を計算ノード1-1~1-3に送信して分配する(ステップS203)。
なお、分散深層学習システムは、上述した非同期システムを採用する場合だけでなく、同期システムを採用することもできる。同期システムの場合、複数の計算ノード1-1~1-3の全てでの部分演算の完了を契機に、複数の計算ノード1-1~1-3は、集約ノード2に部分演算結果の送信を開始する。この場合、図15のステップS21で行われた、記憶部21への記憶をするか否かの判定処理は省略される。
また、同期システムが採用される場合であっても、例えば、計算ノード1-1および計算ノード1-2での計算が完了した時点で、隠れ層h2の出力を求めることができるため、計算ノード1-3の計算の完了を待たずとも集約ノード2での部分演算結果の集約を介して、集団通信を開始することも可能である。
以上説明したように、第2の実施の形態によれば、集約ノード2が複数の計算ノード1-1~1-3の各々で求められた部分演算結果を受信して、これらの部分演算結果を加算して全体演算結果を求める。さらに、求めた全体演算結果を、通信ネットワークを介して複数の計算ノード1-1~1-3に分配する。集約ノード2では、加算処理のみを行えばよいため演算部10が不要となる。そのため、第2の実施の形態によれば、加算処理を演算部10でソフトウェア的に処理した従来例と比較して、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
なお、説明した実施の形態では、複数の計算ノード1-1~1-3がニューラルネットワークモデルを分割して分散学習を行うことにより、ニューラルネットワークの全体の学習を行い、集団通信の高速化を行う場合を例示した。しかし、本実施の形態に係る分散深層学習システムは、学習処理に適用する他にも、推論処理など、行列の積和演算を含む大規模行列計算にも適用することで、処理を高速化することができる。
以上、本発明の分散深層学習システムおよび分散深層学習方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
1,1-1,1-2,1-3…計算ノード、10…演算部、11…記憶部、12…ネットワーク処理部、110…部分演算結果、111…全体演算結果、120…受信部、121…加算部、122…送信部、101…CPU、102…メインメモリ、103…GPU、104…NIC、105…ストレージ、106…I/O。
Claims (7)
- 通信ネットワークを介して互いに接続された複数の計算ノードを備え、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
前記演算装置から出力された前記第1演算結果を記憶する第1記憶装置と、
前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信回路と、
他の計算ノードからの第1演算結果を受信する第1受信回路と、
前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信回路で受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路と、
前記第2演算結果を、他の計算ノードへ送信する第2送信回路と、
他の計算ノードからの第2演算結果を受信する第2受信回路と
を有するネットワーク処理装置と
を備える
ことを特徴とする分散深層学習システム。 - 請求項1に記載の分散深層学習システムにおいて、
前記複数の計算ノードは、リング状の通信ネットワークを構成し、
前記ネットワーク処理装置は、複数のネットワークポートを備え、
前記第1送信回路、前記第1受信回路、前記第2送信回路、および前記第2受信回路にそれぞれ割り当てられた複数のネットワークポートを備える
ことを特徴とする分散深層学習システム。 - 請求項1または請求項2に記載の分散深層学習システムにおいて、
前記複数の計算ノードの各々は、
前記第2演算結果を記憶する第2記憶装置をさらに備え、
前記第2記憶装置は、前記加算回路で求められた前記第2演算結果、および前記第2受信回路で受信された前記他の計算ノードからの第2演算結果を記憶する
ことを特徴とする分散深層学習システム。 - 通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、
前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路と
を有する第1ネットワーク処理装置と、
前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置と
を有し、
前記集約ノードは、
前記複数の計算ノードからの第1演算結果を受信する第2受信回路と、
前記第2受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、
前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第2送信回路と
を有する第2ネットワーク処理装置と、
前記第2受信回路で受信された前記複数の計算ノードからの第1演算結果を記憶する第2記憶装置と
を有し、
前記加算回路は、前記第2記憶装置に記憶されている前記複数の計算ノードからの第1演算結果を読み出して、前記第2演算結果を求める
ことを特徴とする分散深層学習システム。 - 請求項4に記載の分散深層学習システムにおいて、
前記複数の計算ノードと、前記集約ノードとは、前記複数の計算ノードの各々と前記集約ノードとが互いに接続されたスター型の通信ネットワークを構成することを特徴とする分散深層学習システム。 - 通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、
前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、
他の計算ノードからの第1演算結果を受信する第1受信ステップと、
前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、
前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、
他の計算ノードからの第2演算結果を受信する第2受信ステップと
を有するネットワーク処理ステップと
を備える
ことを特徴とする分散深層学習方法。 - 通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、
前記複数の計算ノードの各々は、
ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、
前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップと
を有する第1ネットワーク処理ステップと、
前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップと
を有し、
前記集約ノードは、
前記複数の計算ノードからの第1演算結果を受信する第2受信ステップと、
前記第2受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、
前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第2送信ステップと
を有する第2ネットワーク処理ステップと、
前記第2受信ステップで受信された前記複数の計算ノードからの第1演算結果を第2記憶装置に記憶する第2記憶ステップと
を有し、
前記加算ステップは、前記第2記憶装置に記憶されている前記複数の計算ノードからの第1演算結果を読み出して、前記第2演算結果を求める
ことを特徴とする分散深層学習方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/044672 WO2021095196A1 (ja) | 2019-11-14 | 2019-11-14 | 分散深層学習システムおよび分散深層学習方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021095196A1 JPWO2021095196A1 (ja) | 2021-05-20 |
JP7287493B2 true JP7287493B2 (ja) | 2023-06-06 |
Family
ID=75913024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021555716A Active JP7287493B2 (ja) | 2019-11-14 | 2019-11-14 | 分散深層学習システムおよび分散深層学習方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220391666A1 (ja) |
JP (1) | JP7287493B2 (ja) |
WO (1) | WO2021095196A1 (ja) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7001004B2 (ja) * | 2018-06-25 | 2022-01-19 | 日本電信電話株式会社 | 分散深層学習システム、分散深層学習方法、およびコンピューティングインタコネクト装置 |
-
2019
- 2019-11-14 WO PCT/JP2019/044672 patent/WO2021095196A1/ja active Application Filing
- 2019-11-14 US US17/776,869 patent/US20220391666A1/en active Pending
- 2019-11-14 JP JP2021555716A patent/JP7287493B2/ja active Active
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.baidu.com/bringing-hpc-techniques-deep-learning> |
Also Published As
Publication number | Publication date |
---|---|
US20220391666A1 (en) | 2022-12-08 |
WO2021095196A1 (ja) | 2021-05-20 |
JPWO2021095196A1 (ja) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6981329B2 (ja) | 分散深層学習システム | |
EP3364306B1 (en) | Parallel processing of reduction and broadcast operations on large datasets of non-scalar data | |
JP6093867B2 (ja) | インターコネクトにおける不均一なチャネル容量 | |
JP6227813B1 (ja) | 分散深層学習装置及び分散深層学習システム | |
TW202147188A (zh) | 神經網路模型的訓練方法和相關産品 | |
JP6753874B2 (ja) | 分散深層学習システム | |
WO2021070006A1 (en) | Hybrid data-model parallelism for efficient deep learning | |
WO2018072690A1 (zh) | 用于测量网络路径的方法、装置和系统 | |
WO2020003849A1 (ja) | 分散深層学習システム、分散深層学習方法、およびコンピューティングインタコネクト装置 | |
US11991156B2 (en) | Systems and methods for secure averaging of models for federated learning and blind learning using secure multi-party computation | |
US20210357723A1 (en) | Distributed Processing System and Distributed Processing Method | |
CN116257494B (zh) | 一种聚合通信的方法、系统和计算机设备 | |
JP7287493B2 (ja) | 分散深層学習システムおよび分散深層学習方法 | |
JP7283577B2 (ja) | 分散深層学習システムおよび分散深層学習方法 | |
US10565038B1 (en) | Method and apparatus for graph-based computing | |
CN116915708A (zh) | 路由数据包的方法、处理器及可读存储介质 | |
Sanju et al. | Design and implementation of a network on chip-based simulator: a performance study | |
JP7248110B2 (ja) | 分散深層学習システム | |
JP7227322B2 (ja) | 位相演算を行うための方法および装置 | |
US20220261620A1 (en) | Distributed Processing System and Distributed Processing Method | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
JP7074017B2 (ja) | 分散処理システムおよび分散処理方法 | |
Shchegoleva et al. | Routing in networks on chip with multiplicative circulant topology | |
Doan | On the performance of distributed algorithms for network optimization problems | |
Romashikhin | Implementation of Regular Topologies for NoCs Based on schoolMIPS Soft-Processor Cores |
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: 7287493 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |