JP7135468B2 - 分散処理システムおよび分散処理方法 - Google Patents

分散処理システムおよび分散処理方法 Download PDF

Info

Publication number
JP7135468B2
JP7135468B2 JP2018110926A JP2018110926A JP7135468B2 JP 7135468 B2 JP7135468 B2 JP 7135468B2 JP 2018110926 A JP2018110926 A JP 2018110926A JP 2018110926 A JP2018110926 A JP 2018110926A JP 7135468 B2 JP7135468 B2 JP 7135468B2
Authority
JP
Japan
Prior art keywords
distributed processing
node
data
aggregated data
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
Application number
JP2018110926A
Other languages
English (en)
Other versions
JP2019215603A (ja
Inventor
健治 川合
順一 加藤
フィクー ゴー
勇輝 有川
猛 伊藤
健 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2018110926A priority Critical patent/JP7135468B2/ja
Priority to US16/973,717 priority patent/US20210209443A1/en
Priority to PCT/JP2019/019895 priority patent/WO2019239802A1/ja
Publication of JP2019215603A publication Critical patent/JP2019215603A/ja
Application granted granted Critical
Publication of JP7135468B2 publication Critical patent/JP7135468B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、複数の分散処理ノードを備える分散処理システムに係り、特に、各分散処理ノードから数値データを集計して集計データを生成し、各分散処理ノードに集計データを分配する分散処理システムおよび分散処理方法に関するものである。
深層学習では、多層のニューロンモデルからなる学習対象について、各ニューロンモデルの重み(前段のニューロンモデルが出力した値に乗じる係数)を、入力したサンプルデータに基づいて更新することにより、推論精度を改善する。
通常、推論精度を改善する手法には、ミニバッチ法が用いられている。ミニバッチ法では、サンプルデータ毎に前記重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて前記勾配を集計する(サンプルデータ毎に得られた勾配を重み別に合算する)集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理と、を繰り返す。
これらの処理、特に勾配計算処理は、多数回の演算を必要とするが、推論精度を向上させるために、重みの個数や入力するサンプルデータの個数が増加すると、深層学習に要する時間が増大するという、課題がある。
勾配計算処理を高速化するため、分散処理の手法が用いられている。具体的には、複数の分散処理ノードを設け、各ノードは、各々異なるサンプルデータについて勾配計算処理を行う。これにより、ノード数に比例して単位時間に処理できるサンプルデータ数を増加させることが可能となるため、勾配計算処理を高速化できる(非特許文献1参照)。
深層学習の分散処理において、集計処理を行うためには、各分散処理ノードがサンプルデータ毎に重みに対する勾配を計算する勾配計算処理およびサンプルデータ毎に得られた勾配を重み別に合算するノード内集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理との間に、分散処理ノード毎に得られたデータ(分散データ)の集計処理を行うノードに転送するための通信(集約通信)と、集約通信により取得したデータに基づいて集計する処理(ノード間集計処理)と、各分散処理ノードから取得した集計したデータ(集計データ)を各分散処理ノードに分配するための通信(分配通信)と、が必要となる。
図22は、従来の深層学習用分散処理システムの構成例を示すブロック図である。図23に、従来技術による、深層学習の分散処理のシーケンスを示す。分散処理ノード100[n](n=1,・・・,N)は、Iの期間においてサンプルデータ入力と勾配計算処理とノード内集計処理とを行い、分散データを集計処理ノード101に送信する。IIの期間では、このような各ノードからの送信が行われるが、各ノードが同時に分散データを送信するとは限らない。
IIIの期間では、集計処理ノード101が各ノードから得られた勾配を重み別に合算する全ノード集計処理を行い、IVの期間において集計データを各分散処理ノード100[n]に送信する。Vの期間では、各分散処理ノード100[n]が重み更新処理を行う。
こうして、分散処理が行われることにより、深層学習には、集約通信(II)と全ノード集計処理(III)と分配通信(IV)の各処理時間が加わる。
このような処理時間は、深層学習を単一ノードで実施するシステムでは不要であり、深層学習の分散処理を行う上で、処理速度を低下させる要因となっている。
近年、深層学習がより複雑な問題に適用されるようになってきており、重みの総数が増加する傾向にある。このため、分散データや集計データのデータ量が増大し、集約通信時間と分配通信時間が増大している。
このように、深層学習の分散システムは、集約通信時間と分配通信時間の増大によって、分散処理ノード数を増加させることにより、深層学習の高速化の効果が低下するという問題があった。図24は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示しており、200は分散処理ノード数と処理性能の理想的な関係(性能∝ノード数)を示し、201は分散処理ノード数と処理性能の実際の関係を示している。分散処理ノード数に比例してノード間集計処理の入力である分散データの総量は増大するが、実際の処理性能が分散処理ノード数に比例して向上しない理由は、集計処理ノードの通信速度が、このノードの通信ポートの物理速度以下に制限されるため、集約通信に要する時間が増大するためである。
秋葉 拓哉,"分散深層学習パッケージ ChainerMN 公開",プリファードインフラストラクチャー(Preferred Infrastructure),2017年,インターネット<https://research.preferred.jp/2017/05/chainermn-beta-release/>
本発明は、上記のような事情を考慮してなされたものであり、その目的は、複数の分散処理ノードを備える分散処理システムおいて、深層学習に適用した場合に効果的な分散処理を行うことができる分散処理システムおよび分散処理方法を提供することにある。
本発明の分散処理システム(第1の実施例)は、ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードを備え、各分散処理ノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信し、各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
また、本発明の分散処理システムの1構成例(第1の実施例)において、各分散処理ノードは、自ノードが前記1番目の分散処理ノードである場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する集計データ送信部と、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを生成する集計データ生成部と、自ノードが前記1番目または前記中間の分散処理ノードである場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードである場合に、前記第1の集計データを受信する受信部と、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とするものである。
また、本発明の分散処理システム(第2の実施例)は、リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードと、前記K個のリングノードの各々を、分散処理ノードあるいは中継ノードの何れかに指定する分散処理制御部とを備え、K個のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、K個のリングノードのうち、前記中継ノードとして機能する各リングノードは、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信し、各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
また、本発明の分散処理システムの1構成例(第2の実施例)において、各リングノードは、自ノードが前記1番目の分散処理ノードとして機能する場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、自ノードが前記中継ノードとして機能する場合に、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する集計データ送信部と、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを生成する集計データ生成部と、自ノードが前記1番目または前記中間の分散処理ノードとして機能する場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第1の集計データを受信する受信部と、自ノードが前記分散処理ノードとして機能する場合に、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とするものである。
また、本発明の分散処理システムの1構成例(第3の実施例)において、前記分散処理制御部は、前記K個のリングノードの各々を、前記分散処理ノードあるいは前記中継ノードの何れかに指定する機能指定部と、前記第1の集計データまたは前記第2の集計データを転送先の分散処理ノードに送信できない障害が発生したときに、この障害を回避するように各リングノードの機能指定を変更する機能指定変更部とを備えることを特徴とするものである。
また、本発明の分散処理システムの1構成例(第4の実施例)において、前記分散処理制御部は、前記分散処理ノードとして指定するリングノードの各々を、複数の異なるグループのうちいずれか1つのグループに属するように指定し、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、各分散処理ノードは、同じグループの分散処理ノードで生成・送信された前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
また、本発明の分散処理方法(第1の実施例)は、ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードの各々が、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第2のステップと、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第3のステップと、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する第4のステップと、各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第5のステップとを含むことを特徴とするものである。
また、本発明の分散処理方法(第2の実施例)は、リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードが、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第2のステップと、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第3のステップと、N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第4のステップと、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードが、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第5のステップと、K個のリングノードのうち、中継ノードとして機能する各リングノードが、前記第1の集計データまたは前記第2の集計データを受信したときに、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する第6のステップと、各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第7のステップとを含むことを特徴とするものである。
本発明によれば、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に行うことが可能であり、効果的な分散処理を行うことができ、ニューラルネットワークの学習効率を向上させることができる。また、本発明では、集計処理ノードを設けることなく深層学習の分散処理を行うことができ、集計処理ノードの通信速度によって分散処理の速度が制限されることがなくなる。
図1は、本発明の第1の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図2は、本発明の第1の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図3は、本発明の第1の実施例に係る分散処理ノードのサンプルデータ入力処理と勾配計算処理とノード内集計処理を説明するフローチャートである。 図4は、本発明の第1の実施例に係る分散処理ノードの集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。 図5は、本発明の第1の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図6は、本発明の第1の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図7は、本発明の第2の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図8は、本発明の第2の実施例においてリングノードが分散処理ノードあるいは中継ノードの何れかに指定された状態の例を示す図である。 図9は、本発明の第2の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図10は、本発明の第2の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図11は、本発明の第2の実施例に係る深層学習用分散処理システムの動作を説明する図である。 図12は、本発明の第2の実施例に係る分散処理ノードの集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。 図13は、本発明の第2の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図14は、本発明の第2の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図15は、本発明の第3の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図16は、本発明の第3の実施例に係る深層学習用分散処理システムの分散処理制御部の構成例を示すブロック図である。 図17は、本発明の第3の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図18は、本発明の第3の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図19は、本発明の第4の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図20は、本発明の第4の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図21は、本発明の第4の実施例に係る深層学習用分散処理システムの分散処理制御部の構成例を示すブロック図である。 図22は、従来の深層学習用分散処理システムの構成例を示すブロック図である。 図23は、従来の深層学習の分散処理のシーケンスを示す図である。 図24は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示す図である。
[第1の実施例]
以下、本発明の実施例について図面を参照して説明する。図1は本発明の第1の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。図1の分散処理システムは、ニューラルネットワークのサンプルデータ(学習データ)の集合毎に設けられたN個(Nは2以上の整数)の分散処理ノード1[n](n=1,・・・,N)と、各分散処理ノード1[j](j=1,・・・,N-1)から分散処理ノード1[j+1]に対して、中間集計データR*[m,j]を転送し、分散処理ノード1[N]から各分散処理ノード1[j](j=1,・・・,N-1)に対して集計データR[m]を分配するための、分散処理用ネットワーク2とを備える。分散処理用ネットワーク2は、双方向の通信が可能なネットワークである。なお、本発明において、「ノード」とは、ネットワーク上に分散配置されているサーバ等の機器を意味する。
図2は分散処理ノード1[n]の構成例を示すブロック図である。各分散処理ノード1[n]は、それぞれ図示しないデータ収集ノードから学習用のサンプルデータを受け取るサンプル入力部10と、サンプルデータが入力されたときに、ニューラルネットワークの重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータ毎に計算する勾配計算処理部11と、サンプルデータ毎の勾配を集計した数値である分散データを重み毎に生成して保持するノード内集計処理部12と、中間集計データおよび集計データを送信する集計データ送信部13と、中間集計データおよび集計データを受信する受信部14と、自ノードが中間の分散処理ノードである場合に中間集計データを生成し、自ノードが最終の分散処理ノードである場合に集計データを生成する集計データ生成部15と、集計データに基づいてニューラルネットワークの重みを更新する重み更新処理部16と、ソフトウェア的に構築された数学モデルであるニューラルネットワーク17とを備えている。
図3は分散処理ノード1[n]のサンプルデータ入力処理と勾配計算処理とノード内集計処理を説明するフローチャートである。各分散処理ノード1[n](n=1,・・・,N)のサンプル入力部10は、図示しないデータ収集ノードから異なるS個(Sは2以上の整数)のサンプルデータx[n,s](s=1,・・・,S)をミニバッチ毎に入力する(図3ステップS100)。
なお、本発明は、データ収集ノードによるサンプルデータの収集方法、および収集したサンプルデータをN個の集合に振り分けて各分散処理ノード1[n]へ分配する方法に限定されるものではなく、これらの方法の如何を問わず適用が可能である。
各分散処理ノード1[n](n=1,・・・,N)の勾配計算処理部11は、サンプルデータx[n,s]が入力されたとき、学習対象のニューラルネットワーク17のM個(Mは2以上の整数)の重みw[m](m=1,・・・,M)の各々について、ニューラルネットワーク17の損失関数の勾配G[m,n,s]をサンプルデータx[n,s]毎に計算する(図3ステップS101)。
ニューラルネットワーク17を各分散処理ノード1[n]にソフトウェアで構築する方法、ニューラルネットワーク17の重みw[m]、ニューラルネットワーク17の性能の悪さを示す指標である損失関数、および損失関数の勾配G[m,n,s]については周知の技術であるので、詳細な説明は省略する。
続いて、各分散処理ノード1[n](n=1,・・・,N)のノード内集計処理部12は、サンプルデータ毎の勾配G[m,n,s]を集計した数値である分散データD[m,n]を、重みw[m]毎に生成して保持する(図3ステップS102)。分散データD[m,n]の計算式は以下のとおりである。
Figure 0007135468000001
なお、勾配計算処理部11による勾配計算処理とノード内集計処理部12によるノード内集計処理とは、サンプルデータ単位でパイプライン化する(あるサンプルデータに対して勾配計算処理を行うと同時にその一つ前のサンプルデータから得た勾配を集計するノード内集計処理とを同時に実行する)ことができる。
さらに、各分散処理ノード1[n](n=1,・・・,N)は、分散データD[m,n]を生成した後、分散処理ノード間の集約通信を行い、集計データを生成するためのノード間集計処理を行う。
図4は分散処理ノード1[n]の集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。
まず、複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた1番目の分散処理ノード1[1]の集計データ送信部13は、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、予め定められた次の番の分散処理ノード1[2]に分散処理用ネットワーク2を介して送信する(図4ステップS103,S104)。すなわち、このときの中間集計データR*[m,1]は、分散データD[m,1]と同じである。
*[m,1]=D[m,1] ・・・(2)
次に、複数の分散処理ノード1[n](n=1,・・・,N)のうち、1番目と最終とを除く、予め定められた中間の分散処理ノード1[i](i=2,・・・,N-1)の受信部14は、分散処理ノード1[i-1]から中間集計データR*[m,i-1]を分散処理用ネットワーク2を介して受信する(図4ステップS105,S106)。
中間の分散処理ノード1[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する(図4ステップS107)。すなわち、中間集計データR*[m,i]は、M個の数値から構成される。中間集計データR*[m,i]の計算式は以下のとおりである。
*[m,i]=R*[m,i-1]+D[m,i] ・・・(3)
そして、中間の分散処理ノード1[i]の集計データ送信部13は、自ノードで生成された中間集計データR*[m,i]を、予め定められた次の番の分散処理ノード1[i+1]に分散処理用ネットワーク2を介して送信する(図4ステップS108)。
複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた最終の分散処理ノード1[N]の受信部14は、分散処理ノード1[N-1]から中間集計データR*[m,N-1]を分散処理用ネットワーク2を介して受信する(図4ステップS109,S110)。
最終の分散処理ノード1[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する(図4ステップS111)。すなわち、集計データR[m]は、M個の数値から構成される。集計データR[m]の計算式は以下のとおりである。
R[m]=R*[m,N-1]+D[m,N] ・・・(4)
このように、式(2)、式(3)、式(4)により計算された、M個の数値から構成される集計データR[m](m=1,・・・,M)は、各分散処理ノード1[n](n=1,・・・,N)で生成されたM個の数値から構成される分散データD[m,n]に基づいて計算され、その値は以下の式により表すことができる。
Figure 0007135468000002
そして、最終の分散処理ノード1[N]の集計データ送信部13は、自ノードで生成された集計データR[m]を、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)に分散処理用ネットワーク2を介して分配する分配通信を行う(図4ステップS112)。
最終の分散処理ノード1[N]の重み更新処理部16は、自ノードで生成された集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う(図4ステップS113)。重み更新処理においては、集計データR[m]が示す、損失関数の勾配に基づいて損失関数が最小になるように重みw[m]を番号m毎に更新すればよい。重みw[m]の更新は周知の技術であるので、詳細な説明は省略する。
このように、重み更新処理は、重みw[m]の番号mの順番に取得した集計データR[m]に基づいて、重みw[m]を更新する処理である。このため、分散処理ノード1[N]は、重みw[m]に対する重み更新処理を、番号mの順番に行うことができる。
一方、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)の受信部14は、分散処理ノード1[N]から集計データR[m]を分散処理用ネットワーク2を介して受信する(図4ステップS114,S115)。前記の分配通信により、1番目および中間の分散処理ノード1[j]は、同一の集計データR[m]を取得することができる。
1番目および中間の分散処理ノード1[j]の重み更新処理部16は、受信した集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う(図4ステップS116)。この重み更新処理は、最終の分散処理ノード1[N]における重み更新処理と同様である。
重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード1[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード1[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
上記の説明では、M個の分散データD[m,n]を1度に処理する動作で説明しているが、実際にはM個の分散データD[m,n]を複数のパケットに振り分けてパイプライン処理を行う。
各分散処理ノード1[n](n=1,・・・,N)の処理における手順(重みw[m]の番号mの順番にパイプライン処理を行う動作)を、以下に説明する。
複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた1番目の分散処理ノード1[1]の集計データ送信部13は、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、予め定められた次の番の分散処理ノード1[2]に分散処理用ネットワーク2を介して送信する集約通信を行う(図4ステップS103,S104)。
このとき、分散処理ノード1[1]の集計データ送信部13は、保持するM個の中間集計データR*[m,1](=D[m,1])を、重みw[m]の番号mの順番にL(Lは1以上M未満の整数)個ずつP個(Pは2以上の整数)の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード1[2]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,1]には、L個の中間集計データR*[r,1](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,1]には、(M-L×(P-1))個の中間集計データR*[r,1](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の集約通信パケットSP[P,1]については、(M-L×(P-1))個の中間集計データR*[r,1]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
次に、複数の分散処理ノード1[n](n=1,・・・,N)のうち、1番目と最終とを除く中間の分散処理ノード1[i](i=2,・・・,N-1)の受信部14は、分散処理ノード1[i-1]から集約通信パケットSP[p,i-1](p=1,・・・,P)を受信する(図4ステップS105,S106)。
中間の分散処理ノード1[i]の受信部14は、受信した集約通信パケットSP[p,i-1]から、送信元の分散処理ノード1[i-1]が生成したL個の中間集計データR*[r,i-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[i-1]からP個の集約通信パケットSP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード1[i]の受信部14は、最終的にM個の中間集計データR*[m,i-1]を取得することができる。
そして、中間の分散処理ノード1[i]の集計データ生成部15は、取得した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより(式(3))、中間集計データR*[m,i]を生成する(図4ステップS107)。
次に、中間の分散処理ノード1[i]の集計データ送信部13は、自ノードで生成されたM個の中間集計データR*[m,i](m=1,・・・,M)を、予め定められた次の番の分散処理ノード1[i+1]に分散処理用ネットワーク2を介して送信する集約通信を行う(図4ステップS108)。
このとき、分散処理ノード1[i]の集計データ送信部13は、生成されたM個の中間集計データR*[m,i]を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード1[i+1]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,i]には、L個の中間集計データR*[r,i](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,i]には、(M-L×(P-1))個の中間集計データR*[r,i](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の集約通信パケットSP[P,i]については、(M-L×(P-1))個の中間集計データR*[r,i]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた最終の分散処理ノード1[N]の受信部14は、分散処理ノード1[N-1]から集約通信パケットSP[p,N-1](p=1,・・・,P)を受信する(図4ステップS109,S110)。
最終の分散処理ノード1[N]の受信部14は、受信した集約通信パケットSP[p,N-1]から、送信元の分散処理ノード1[N-1]が生成したL個の中間集計データR*[r,N-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[N-1]からP個の集約通信パケットSP[p,N-1](p=1,・・・,P)が順番に送信されることにより、最終の分散処理ノード1[N]の受信部14は、最終的にM個の中間集計データR*[m,N-1]を取得することができる。
そして、最終の分散処理ノード1[N]の集計データ生成部15は、取得した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより(式(4))、集計データR[m]を生成する(図4ステップS111)。
次に、最終の分散処理ノード1[N]の集計データ送信部13は、自ノードで生成された集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にパケット化して、このパケットを、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)に分配する分配通信を行う(図4ステップS112)。
このとき、分散処理ノード1[N]の集計データ送信部13は、生成されたM個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に次の番の分散処理ノード1[j]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の分配通信パケットDP[p]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)の受信部14は、分散処理ノード1[N]から分配通信パケットDP[p](p=1,・・・,P)を受信する(図4ステップS114,S115)。
1番目および中間の分散処理ノード1[j]の受信部14は、受信した分配通信パケットDP[p]から、送信元の分散処理ノード1[N]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[N]からP個の分配通信パケットDP[p](p=1,・・・,P)が順番に送信されることにより、1番目および中間の分散処理ノード1[j]の受信部14は、最終的にM個の集計データR[m]を取得することができる。
各分散処理ノード1[n]における重み更新処理は、上記で説明したとおりである。
このように、分散処理ノード1[j](j=1,・・・,N-1)から分散処理ノード1[j+1]への集約通信(中間集計データR*[m,j]を分散処理ノード1[j+1]に送信する処理)、中間の分散処理ノード1[i](i=2,・・・,N-1)が行うノード間集計処理(受信した中間集計データR*[m,i-1]と自ノードで生成した分散データD[m,i]に基づいて、中間集計データR*[m,i]を計算する処理)、分散処理ノード1[N]が行うノード間集計処理(受信した中間集計データR*[m,N-1]と自ノードで生成した分散データD[m,N]に基づいて、集計データR[m]を計算する処理)、分散処理ノード1[N]から各分散処理ノード1[j](j=1,・・・,N-1)への分配通信(集計データR[m]を各分散処理ノード1[j]に分配する処理)、の全ては、前記の重みw[m]の番号mの順番に行われており、番号mを単位としたパイプライン化が可能である。
図5、図6に、上記の各分散処理ノード1[n](n=1,・・・,N)の処理のシーケンスを示す。なお、図6は、図5の60の部分の処理を示している。また、61は分散処理ノード1[N]におけるノード間集計処理を示している。同様に、図6の70,71,72は分散処理ノード1[α-1],1[α]、1[α+1](α=3,・・・,N-2)におけるノード間集計処理を示している。
本実施例では、図5、図6に示すように、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に(パイプライン処理で)行うことが可能であり、各通信や各処理が終了するまで、次の処理を開始できなかった従来技術と比較したとき、処理時間の大幅な短縮が可能となる。
したがって、例えば、集約通信処理とノード間集計処理と分配通信処理のそれぞれで時間Tを要する場合、従来技術では、全データを単位として各処理を順番に行っていたため、これらの全ての処理を終えるのに3Tの時間を要したが、本実施例ではT+αの時間で済む。ここで、前記αは、任意の分散処理ノード1[n]が任意の番号mに対応する分散データD[m,n]を送信した時点から前記番号mに対応する集計データR[m]を受信するまでの遅延時間である。本実施例では、番号mの単位で処理をパイプライン化しているため、時間αはTと比較すると十分に小さい時間である。したがって、本実施例では、従来技術と比較して、集約通信処理とノード間集計処理と分配通信処理とに要する時間を、約1/3に短縮することが可能である。
[第2の実施例]
次に、本発明の第2の実施例について説明する。本実施例の深層学習用分散処理システムの構成例を図7に示す。図7の分散処理システムは、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。
分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。分散処理制御部5は、各リングノード3[k](k=1,・・・,K)に対して、制御用ネットワーク6を介して、これら各リングノードの機能を、分散処理ノードあるいは中継ノードの何れかに指定する。ただし、この指定において、分散処理ノードに指定されたリングノードは、1個以上の通信路4と1個以上の中継ノードのうち少なくとも1つを介して、前後の番号の分散処理ノードと接続されるように、指定される必要がある。
図8(A)、図8(B)、図8(C)に、各リングノード3[k](k=1,・・・,K)が、分散処理ノード3a[n](n=1,・・・,N、本実施例ではNは2以上K以下の整数)あるいは中継ノード3bの何れかに指定された状態の例を示す。
図8(A)は、K=N=4の場合を示しており、全リングノード3[4]は、分散処理ノード3a[n](n=1,・・・,N)の何れかに指定され、中継ノードに指定されたリングノードはない。分散処理ノード3a[j](j=1,・・・,N-1)と分散処理ノード3a[j+1]に各々指定されたリングノードは、1個の通信路4のみを介して接続される。
図8(B)は、K>N=4の場合を示しており、中継ノード3bに指定されたリングノード3の個数は(K-N)である(ここではK=7)。ただし、図8(A)と同様に、分散処理ノード3a[j](j=1,・・・,N-1)と分散処理ノード3a[j+1]に各々指定されたリングノードは、1個の通信路4のみを介して接続され、中継ノード3bを介さない。中継ノード3bは、分散処理ノード3a[1]と分散処理ノード3a[N]との間にあるリングノードにのみ指定される。
図8(C)は、K>N=4の場合を示しており、図8(B)と同じく、中継ノードに指定されたリングノード3の個数は(K-N)である(ここではK=11)。ただし、分散処理ノード3a[z](zは1以上N-1以下の整数)と分散処理ノード3a[z+1]に各々指定されたリングノード3は、1個以上の通信路4および1個以上の中継ノード3bを介して接続されている点が、図8(B)との差異である。
図9は、各リングノード3を分散処理ノード3a[n]と中継ノード3bの何れかに指定することによって、第1の実施例に示した分散処理システムと等価なシステムを構成した例である。図10は分散処理ノード3a[n]の構成例を示すブロック図であり、図2と同一の構成には同一の符号を付してある。各分散処理ノード3a[n]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13aと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、分散処理制御部5からの指定を受けて自ノードを分散処理ノードあるいは中継ノードとして機能設定する機能設定部18とを備えている。なお、機能設定部18は、自分散処理ノードの前後の番号の分散処理ノード3aのアドレスを含む、全ての分散処理ノード3aのアドレスを分散処理制御部5から受け取る。
図11は、図9の深層学習用分散処理システムの動作を説明する図、図12は各分散処理ノード3a[n]の集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。各分散処理ノード3a[n]のサンプルデータ入力処理と勾配計算処理とノード内集計処理は第1の実施例と同様である。
1番目の分散処理ノード3a[1]として機能するリングノード3[h]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,1](m=1,・・・,M)を生成する。
そして、分散処理ノード3a[1]の集計データ送信部13aは、自ノードで生成されたM個の分散データD[m,1]を、中間集計データR*[m,1]として、次の番号のリングノード3[h+](h+=h+1、ただしh=Kの場合はh+=1)に通信路4[h]を介して送信する(図12ステップS203,S204)。すなわち、集計データ送信部13aは、次の番号の分散処理ノード3a[2]に向けて中間集計データR*[m,1]を送信する。
中継ノード3bとして機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
1番目と最終とを除く中間の分散処理ノード3a[i](i=2,・・・,N-1)として機能するリングノード3[z]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,i](m=1,・・・,M)を生成する。
中間の分散処理ノード3a[i]の受信部14aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]から通信路4[z-]を介して中間集計データR*[m,i-1]を受信する(図12ステップS205,S206)。
中間の分散処理ノード3a[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する(図12ステップS207)。
そして、中間の分散処理ノード3a[i]の集計データ送信部13aは、自ノードで生成された中間集計データR*[m,i]を、次の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]に通信路4[z]を介して送信する(図12ステップS208)。すなわち、集計データ送信部13aは、次の番号の分散処理ノード3a[i+1]に向けて中間集計データR*[m,i]を送信する。
最終の分散処理ノード3a[N]として機能するリングノード3[e]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,N](m=1,・・・,M)を生成する。
最終の分散処理ノード3a[N]の受信部14aは、前の番号e-(e-=e-1、ただしe=1の場合はe-=K)のリングノード3[e-]から通信路4[e-]を介して中間集計データR*[m,N-1]を受信する(図12ステップS209,S210)。
最終の分散処理ノード3a[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する(図12ステップS211)。
そして、最終の分散処理ノード3a[N]の集計データ送信部13aは、自ノードで生成された集計データR[m]を、前の番号e-のリングノード3[e-]に送信する(図12ステップS212)。すなわち、集計データ送信部13aは、前の番号の分散処理ノード3a[N-1]に向けて集計データR[m]を送信する。最終の分散処理ノード3a[N]の重み更新処理部16の動作(図12ステップS213)は、第1の実施例と同様である。
中継ノード3bとして機能するリングノード3[t]は、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]から、通信路4[t+]を介して受信した集計データR[m]を、前の番号t-(t-=t-1、ただしt=1の場合はt-==K)のリングノード3[t-]に通信路4[t-]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
中間の分散処理ノード3a[i](i=2,・・・,N-1)として機能するリングノード3[z]の受信部14aは、後の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]から通信路4[z+]を介して集計データR[m]を受信する(図12ステップS214,S215)。
中間の分散処理ノード3a[i]の集計データ送信部13aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]に通信路4[z-]を介して集計データR[m]を送信する(図12ステップS216)。すなわち、集計データ送信部13aは、前の番号の分散処理ノード3a[i-1]に向けて集計データR[m]を送信する。中間の分散処理ノード3a[i]の重み更新処理部16の動作(図12ステップS217)は、第1の実施例と同様である。
1番目の分散処理ノード3a[1]として機能するリングノード3[h]の受信部14aは、後の番号h+(h+=h+1、ただしh=Kの場合はh+=1)のリングノード3[h+]から通信路4[h+]を介して集計データR[m]を受信する(図12ステップS218,S219)。1番目の分散処理ノード3a[1]の重み更新処理部16の動作(図12ステップS220)は、第1の実施例と同様である。
なお、中継ノード3bとして機能するリングノード3[v]は、分散処理ノード3a[1]と分散処理ノード3a[n]との間に位置するため、本実施例では、中間集計データや集計データの転送は行わない。
重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3a[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3a[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
上記の説明では、M個の分散データD[m,n]を1度に処理する動作で説明しているが、実際には第1の実施例と同様にM個の分散データD[m,n]を複数のパケットに振り分けてパイプライン処理を行う。
各分散処理ノード3a[n](n=1,・・・,N)の処理における手順(重みw[m]の番号mの順番にパイプライン処理を行う動作)を、以下に説明する。
1番目の分散処理ノード3a[1]の集計データ送信部13aは、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、次の番号のリングノード3[h+]に送信する集約通信を行う(図12ステップS203,S204)。
このとき、分散処理ノード3a[1]の集計データ送信部13aは、保持するM個の中間集計データR*[m,1](=D[m,1])を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番号のリングノード3[h+]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,1]には、L個の中間集計データR*[r,1](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,1]には、(M-L×(P-1))個の中間集計データR*[r,1](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の集約通信パケットSP[P,1]については、(M-L×(P-1))個の中間集計データR*[r,1]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
1番目と最終とを除く中間の分散処理ノード3a[i](i=2,・・・,N-1)の受信部14aは、分散処理ノード3a[i-1]が送信した集約通信パケットSP[p,i-1](p=1,・・・,P)を受信する(図12ステップS205,S206)。
中間の分散処理ノード3a[i]の受信部14aは、受信した集約通信パケットSP[p,i-1]から、送信元の分散処理ノード3a[i-1]が生成したL個の中間集計データR*[r,i-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[i-1]からP個の集約通信パケットSP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の中間集計データR*[m,i-1]を取得することができる。
そして、中間の分散処理ノード3a[i]の集計データ生成部15は、取得した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより(式(3))、中間集計データR*[m,i]を生成する(図12ステップS207)。
次に、中間の分散処理ノード3a[i]の集計データ送信部13aは、自ノードで生成されたM個の中間集計データR*[m,i](m=1,・・・,M)を、次の番号z+のリングノード3[z+]に送信する集約通信を行う(図12ステップS208)。
このとき、分散処理ノード3a[i]の集計データ送信部13aは、生成されたM個の中間集計データR*[m,i]を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード3a[i+1]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,i]には、L個の中間集計データR*[r,i](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,i]には、(M-L×(P-1))個の中間集計データR*[r,i](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の集約通信パケットSP[P,i]については、(M-L×(P-1))個の中間集計データR*[r,i]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
最終の分散処理ノード3a[N]の受信部14aは、分散処理ノード3a[N-1]が送信した集約通信パケットSP[p,N-1](p=1,・・・,P)を受信する(図12ステップS209,S210)。
最終の分散処理ノード3a[N]の受信部14aは、受信した集約通信パケットSP[p,N-1]から、送信元の分散処理ノード3a[N-1]が生成したL個の中間集計データR*[r,N-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[N-1]からP個の集約通信パケットSP[p,N-1](p=1,・・・,P)が順番に送信されることにより、最終の分散処理ノード3a[N]の受信部14aは、最終的にM個の中間集計データR*[m,N-1]を取得することができる。
そして、最終の分散処理ノード3a[N]の集計データ生成部15は、取得した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより(式(4))、集計データR[m]を生成する(図12ステップS211)。
次に、最終の分散処理ノード3a[N]の集計データ送信部13aは、自ノードで生成された集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にパケット化して、このパケットを、前の番号e-のリングノード3[e-]に送信する分配通信を行う(図12ステップS212)。
このとき、分散処理ノード3a[N]の集計データ送信部13aは、生成されたM個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に、前の番号e-のリングノード3[e-]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p,N]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p,N]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の分配通信パケットDP[p,N]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
次に、中間の分散処理ノード3a[i](i=2,・・・,N-1)の受信部14aは、分配通信パケットDP[p,i-1]を受信する(図12ステップS214,S215)。
中間の分散処理ノード3a[i]の受信部14aは、受信した分配通信パケットDP[p,i-1]から、分散処理ノード3a[i-1]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[i-1]からP個の分配通信パケットDP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の集計データR[m]を取得することができる。
次に、中間の分散処理ノード3a[i]の集計データ送信部13aは、取得した集計データR[m](m=1,・・・,M)を、前の番号z-のリングノード3[z-]に送信する分配通信を行う(図12ステップS216)。
このとき、分散処理ノード3a[i]の集計データ送信部13aは、M個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に、前の番号z-のリングノード3[z-]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p,i]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p,i]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
P番目の分配通信パケットDP[p,i]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
1番目の分散処理ノード3a[1]の受信部14aは、後の番号h+のリングノード3[h+]から分配通信パケットDP[p,2]を受信する(図12ステップS218,S219)。
1番目の分散処理ノード3a[1]の受信部14aは、受信した分配通信パケットDP[p,2]から、分散処理ノード3a[2]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[2]からP個の分配通信パケットDP[p,2](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の集計データR[m]を取得することができる。
図13、図14に、上記の各分散処理ノード3a[n](n=1,・・・,N)の処理のシーケンスを示す。なお、図13の60の部分の処理は、図6と同様なので、記載は省略する。61は分散処理ノード3a[N]におけるノード間集計処理を示している。図14は、図13の62の部分の処理、すなわち分散処理ノード3a[β+1],3a[β]、3a[β-1](β=N-2,・・・,3)の分配通信処理を示している。
このように、分散処理ノード3a[j](j=1,・・・,N-1)から分散処理ノード3a[j+1]への集約通信(中間集計データR*[m,j]を分散処理ノード1[j+1]に送信する処理)、中間の分散処理ノード3a[i](i=2,・・・,N-1)が行うノード間集計処理(受信した中間集計データR*[m,i-1]と自ノードで生成した分散データD[m,i]に基づいて、中間集計データR*[m,i]を計算する処理)、分散処理ノード3a[N]が行うノード間集計処理(受信した中間集計データR*[m,N-1]と自ノードで生成した分散データD[m,N]に基づいて、集計データR[m]を計算する処理)、分散処理ノード3a[j+1]から分散処理ノード3a[j](j=1,・・・,N-1)への分配通信(分散処理ノード3a[N]が生成した集計データR[m]を各分散処理ノード3a[j]に分配する処理)、の全ては、前記の重みw[m]の番号mの順番に行われており、番号mを単位としたパイプライン化が可能である。
本実施例では、第1の実施例で示した深層学習用分散処理システムと同様に、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に(パイプライン処理で)行うことが可能であり、各通信や各処理が終了するまで、次の処理を開始できなかった従来技術と比較したとき、処理時間の大幅な短縮が可能となる。
特に、リングノード間を接続する双方向の通信路4のビットレートが同じ(分散処理ノード3a[n]から分散処理ノード3a[n+1]への集約通信のビットレートと分散処理ノード3a[n+1]から分散処理ノード3a[n]への分配通信のビットレートが同一となる)一般的な通信路を用い、同じビットレートでノード間集計処理が可能な場合は、通信路の帯域を最も効率的に使用した処理が可能であり、処理時間の短縮に寄与する。
また、リングノード数K以下の個数を有する、第1の実施例で示した深層学習用分散処理システムを、本システム上に構築することが可能である。このため、物理的なシステムの構成を変更することなく(リングノード数を増減させることなく)、学習の規模(サンプルデータ数や計算量)に応じて適切なノード数でシステムを稼働させることが可能となる(分散処理ノード3aに割り当てられないリングノードは中継ノード3bとして動作を停止させておくことが可能である)ため、無駄な電力の消費を抑制することが可能となる。
なお、以上の説明から明らかなとおり、図10の構成は中継ノード3bとしても機能し得る。リングノード3が中継ノード3bとして機能する場合、受信部14aで受信したデータを集計データ送信部13aから送信することになる。
[第3の実施例]
次に、本発明の第3の実施例について説明する。本実施例では、第2の実施例の深層学習用分散処理システムに関して、分散処理ノード間の通信に障害が発生した場合の前記障害を回避するための分散処理制御部5の動作(各リングノードへの分散処理ノード3a[n](n=1,・・・,N)の再指定)について説明する。
本実施例の分散処理システムは、第2の実施例における図7、図9の分散処理システムと同様なので、図7、図9の符号を用いて説明する。すなわち、本実施例の分散処理システムは、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。
分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。分散処理制御部5は、各リングノード3[k](k=1,・・・,K)に対して、制御用ネットワーク6を介して、これら各リングノードの機能を、分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定する。ただし、この指定において、分散処理ノード3a[j](j=1,・・・,N-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bのうち少なくとも1つを介して、前後の番号の分散処理ノード3a[j+1]と接続されるように、指定される必要がある。
図15は本実施例の分散処理ノード3a[n]の構成例を示すブロック図である。各分散処理ノード3a[n]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13bと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、機能設定部18とを備えている。
図16は分散処理制御部5の構成例を示すブロック図である。分散処理制御部5は、第1の実施例および本実施例のように各リングノード3[k](k=1,・・・,K)を分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定する機能指定部50と、分散処理ノード3a[n](n=1,・・・,N)からの障害検知通知を受信する障害検知通知受信部51と、障害検知通知を受信したときに、各リングノード3[k](k=1,・・・,K)の機能指定を変更する機能指定変更部52とを備えている。
図17、図18に、各リングノード3[k](k=1,・・・,K)が、分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定された状態を示す。なお、図17、図18では中継ノード3bおよび制御用ネットワーク6の記載を省略している。また、図17、図18における80は集約通信の流れを示し、81は分配通信の流れを示している。各分散処理ノード3a[n](n=1,・・・,N)や中継ノード3bの機能は、第2の実施例において説明したものと同じである。
分散処理ノード3a[f](f=1,・・・,N-1)として機能するリングノード3は、第2の実施例と同様に分散データD[m,f]を生成する。f=1の場合、すなわち1番目の分散処理ノード3a[1]の場合は、自ノードで生成された分散データD[m,1]を中間集計データR*[m,1]として、次の番号の分散処理ノード3a[2]に向けて送信する。f>1の場合、すなわち中間の分散処理ノード3a[f]の場合は、自ノードで生成された分散データD[m,f]と分散処理ノード3a[f-1]から受信した中間集計データR*[m,f-1]とから中間集計データR*[m,f]を生成して、次の番号の分散処理ノード3a[f+1]に向けて送信する。
分散処理ノード3a[f+1](f=2,・・・,N-1)として機能するリングノード3は、分散データD[m,f+1]を生成する。f<N-1の場合、分散処理ノード3a[f+1]は、自ノードで生成された分散データD[m,f+1]と分散処理ノード3a[f]から受信した中間集計データR*[m,f]とから中間集計データR*[m,f+1]を生成して、次の番号の分散処理ノード3a[f+2]に向けて送信する。
f=N-1の場合、分散処理ノード3a[N]は、自ノードで生成された分散データD[m,N]と分散処理ノード3a[N-1]から受信した中間集計データR*[m,N-1]とから集計データR[m]を生成して、前の番号の分散処理ノード3a[N-1]に向けて送信する。この分配通信により、全ての分散処理ノード3a[n](n=1,・・・,N)は、同一の集計データR[m]を取得することができる。
その後、集計データR[m]を取得した各分散処理ノード3a[n](n=1,・・・,N)は、集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う。
重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3a[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3a[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
分散処理ノード3a[n](n=1,・・・,N)の集計データ送信部13bは、隣接する分散処理ノード3a(前の番号または次の番号の分散処理ノード3a)として機能するリングノード3との間で、中間集計データR*あるいは集計データRを転送できない障害を検知するための障害検知機能を有する。また、集計データ送信部13bは、障害を検知したときに、制御用ネットワーク6を介して分散処理制御部5に、障害検知を通知する機能を有する。
分散処理制御部5の障害検知通知受信部51は、分散処理ノード3a[n]の集計データ送信部13bから障害検知の通知を受信する。分散処理制御部5の機能指定変更部52は、障害検知の通知を受信した場合、各リングノード3[k](k=1,・・・,K)の機能指定の変更(分散処理ノード3a[n]の指定の変更)によって、障害を回避させる。
各リングノード3[k](k=1,・・・,K)の機能指定の変更後、分散処理システムは、上記の障害によって中断された集約通信処理とノード間集計処理と分配通信処理の再処理を行い、その後の集約通信処理とノード間集計処理と分配通信処理を継続する。
図17は、分散処理制御部5により、各リングノード3が分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定された状態を示しており、第1の実施例に示した分散処理システムと等価な系が構築されている。図17では、障害が発生しておらず、正常な処理が継続的に行われる。
ここで、分散処理ノード3a[f](f=1,・・・,N-1)から分散処理ノード3a[f+1]に中間集計データR*[m,f]を転送できない、または分散処理ノード3a[f+1]から分散処理ノード3a[f]に集計データR[m]を転送できない障害を検知した場合、分散処理ノード3a[f]または分散処理ノード3a[f+1]のうち少なくとも一方の集計データ送信部13bが、分散処理制御部5に障害検知を通知する。
なお、上記の障害は、完全に転送ができない障害のみならず、転送中のデータに対する誤り率が高いために再送等の処理が頻発し、正常なシステム運用が困難となるような場合(誤り率が閾値を超過するような場合)を含むことができる。
また、分散処理ノード間でのデータ転送ができない障害を検知するのではなく、通信路を介して接続された任意のリングノード間において信号断や誤り率劣化を検出し、前記のリングノード間の通信路を介して通信する分散処理ノード間での障害として扱うことも可能である。すなわち、リングノード3が中継ノード3bとして機能する場合に、この中継ノード3bの集計データ送信部13bは、中間集計データR*または集計データRを転送すべき方向に存在する隣接するリングノード3に中間集計データR*または集計データRを転送できないとき(または誤り率が閾値を超過したとき)に、分散処理制御部5に障害検知を通知することができる。
障害検知の通知を受けた分散処理制御部5の機能指定変更部52は、各リングノード3[k](k=1,・・・,K)の機能指定を変更することで、障害が発生している分散処理ノード3a[f]と分散処理ノード3a[f+1]との間の通信路4および中継ノード3bを使用しない、分散処理ノード3a[n’](n’=1,・・・,N-1)から構成される系、すなわち障害を検知する前と等価な分散処理システムに変更する。この変更は、分散処理ノード3a[n](n=1,・・・,N)として機能していた各リングノード3を、分散処理ノード3a[n’](n’=n-f、ただしn-f<1の場合はn’=n-f+N)として機能させるものである。
図18は、障害を検知した後に、分散処理制御部5により、各リングノード3が分散処理ノード3a[n’](n’=1...N)あるいは中継ノード3bの何れかに指定された状態を示しており、障害を検知する前の系と同じく、第1の実施例に示した分散処理システムと等価な系となっている。
障害を検知する前に分散処理ノード3a[f]であったリングノード3は、分散処理ノード3a[N]に変更される。また、障害を検知する前に分散処理ノード3a[f+1]であったリングノード3は、分散処理ノード3a[1]に変更される。また、変更後の分散処理ノード3a[n’](n=1,・・・,N-1)に指定されたリングノード3は、1個以上の通信路4を介して、あるいは1個以上の通信路4と1個以上の中継ノード3bとを介して、分散処理ノード3a[n’+1]と接続されるように変更される。
このように、本実施例では、分散処理ノード3aと隣接する分散処理ノード3aとの間で中間集計データR*や集計データRを転送できない障害が発生した場合に、この障害を回避しつつ、障害前と等価な分散処理システムに変更することができるため、障害に対してロバストなシステムを提供することができる。
[第4の実施例]
次に、本発明の第4の実施例について説明する。第2の実施例、第3の実施例、および本実施例の深層学習用分散処理システムは、リングシステムであり、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。
第2の実施例および第3の実施例では、第1の実施例に示した分散処理システムをリングシステム上に構築する例について説明した。本実施例は、異なる2つの分散処理システムを、1つのリングシステム上に構築する例について説明する。
なお、3つ以上の分散処理システムを、1つのリングシステム上に構築することも可能であるが、リングノードに対する機能要件は同じであり、説明を簡単にするため、2つの分散処理システム(グループAとグループB)を構築する場合について説明する。
分散処理制御部5は、制御用ネットワーク6を介して、各リングノード3[k](k=1,・・・,K)を、グループAに属するNa個の分散処理ノード3aA[γ](γ=1,・・・,Na)のうちの1つ、グループBに属するNb個の分散処理ノード3aB[δ](δ=1,・・・,Nb)のうちの1つ、あるいは中継ノード3bの何れかに指定する。リングノード3のノード数Kは、リングシステムに同時に存在し得る各グループに属する分散処理ノードの個数の和以上である必要があり、本実施例では、K≧Na+Nbが必要要件となる(Na,Nbはそれぞれ2以上の整数で、NaとNbの和はK以下)。
また、グループAに属する分散処理ノード3aA[γ](γ=1,・・・,Na-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bと他グループ(グループB)の1個以上の分散処理ノード3aB[δ]のうち少なくとも1つを介して、同じグループAに属する前後の番号の分散処理ノード3a[γ+1]と接続されるように、指定される必要がある。
同様に、グループBに属する分散処理ノード3aB[δ](δ=1,・・・,Nb-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bと他グループ(グループA)の1個以上の分散処理ノード3aA[γ]のうち少なくとも1つを介して、同じグループBに属する前後の番号の分散処理ノード3a[δ+1]と接続されるように、指定される必要がある。
グループが3個以上となる場合も同様であり、各グループに属する分散処理ノード3aは、1個以上の通信路4と1個以上の中継ノード3bと他グループの1個以上の分散処理ノード3aのうち少なくとも1つを介して、同じグループに属する前後の番号の分散処理ノード3aと接続されるように、指定される必要がある。
図19(A)、図19(B)に、各リングノード3[k](k=1,・・・,K)を、グループAに属するNa個(ここではNa=5)の分散処理ノード3aA[γ](γ=1,・・・,Na)、グループBに属するNb個(ここではNb=6)の分散処理ノード3aB[δ](δ=1,・・・,Nb)、あるいは中継ノード3bの何れかに指定した状態を示す。なお、図19(A)、図19(B)では中継ノード3bと分散処理制御部5のおよび制御用ネットワーク6の記載を省略している。
図19(A)は、同一グループに属する分散処理ノード間の経路と他のグループに属する分散処理ノード間の経路とが重なっている区間がない構成を示している。図19(B)は、同一グループに属する分散処理ノード間の経路と他のグループに属する分散処理ノード間の経路とが重なっている区間がある構成を示している。どちらの構成についても、分散処理ノードとして機能する各リングノード3が後述する処理を行うことによって、各構成の2グループは、それぞれ、独立した第1の実施例の分散処理システムとして動作することができる。
なお、中継ノード3bとして機能する各リングノード3については、第2の実施例において説明した処理と同じ処理を行えばよく、通信路4を介して接続された隣接するリングノード3から受け取った中間集計データR*または集計データRを、これらデータを転送すべき方向に存在する隣接するリングノード3に転送すればよい。この転送処理は、中間集計データR*または集計データRを送受信する分散処理ノードのグループに依存しない。
図20はグループAに属する分散処理ノード3aA[γ]の構成例を示すブロック図であり、図2、図10と同一の構成には同一の符号を付してある。各分散処理ノード3aA[γ]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13cと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、機能設定部18aとを備えている。
本実施例の機能設定部18aは、自分散処理ノードの前後の番号の分散処理ノード3aのアドレスを含む、全ての分散処理ノード3aのアドレスを分散処理制御部5から受け取ると共に、自分散処理ノードのグループ識別子を分散処理制御部5から受け取る。
グループBに属する分散処理ノード3aB[δ]の構成も、分散処理ノード3aA[γ]と同様である。
図21は本実施例の分散処理制御部5の構成例を示すブロック図である。本実施例の分散処理制御部5は、機能指定部50aと、障害検知通知受信部51と、機能指定変更部52aとを備えている。
機能指定部50aは、第2、第3の実施例と同様に各リングノード3[k](k=1,・・・,K)を分散処理ノード3aA[γ],3aB[δ]あるいは中継ノード3bの何れかに指定する際に、各分散処理ノード3aA[γ],3aB[δ]に対して全ての分散処理ノード3aA[γ],3aB[δ]のアドレスを通知すると共に、グループ識別子を通知する。
機能指定変更部52は、第3の実施例と同様に各リングノード3[k](k=1,・・・,K)の機能指定を変更する際に、変更後の各分散処理ノード3aA[γ],3aB[δ]に対して変更後の全ての分散処理ノード3aA[γ],3aB[δ]のアドレスを通知すると共に、変更後のグループ識別子を通知する。
グループAまたはBに属する1番目の分散処理ノード3aA[1]または3aB[1]として機能するリングノード3[h]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,f]を生成する。
そして、分散処理ノード3aA[1]または3aB[1]の集計データ送信部13cは、自ノードで生成された分散データD[m,1]を中間集計データR*[m,1]として、次の番号のリングノード3[h+](h+=h+1、ただしh=Kの場合はh+=1)に通信路4[h]を介して送信する。すなわち、集計データ送信部13cは、同じグループに属する次の番号の分散処理ノード3aA[2]または3aB[2]に向けて中間集計データR*[m,1]を送信する。
中継ノード3bとして機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
グループAまたはBに属する中間の分散処理ノード3aA[i]または3aB[i](i=2,・・・,N-1)として機能するリングノード3[z]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,i](m=1,・・・,M)を生成する。
中間の分散処理ノード3aA[i]または3aB[i]の受信部14aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]から通信路4[z-]を介して、同じグループに属する分散処理ノード3aA[i-1]または3aB[i-1]が生成・送信した中間集計データR*[m,i-1]を受信する。
中間の分散処理ノード3aA[i]または3aB[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する。
そして、中間の分散処理ノード3aA[i]または3aB[i]の集計データ送信部13cは、自ノードで生成された中間集計データR*[m,i]を、次の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]に通信路4[z]を介して送信する。すなわち、集計データ送信部13cは、同じグループに属する次の番号の分散処理ノード3aA[i+1]または3aB[i+1]に向けて中間集計データR*[m,i]を送信する。
グループAまたはBに属する最終の分散処理ノード3aA[N]または3aB[N]として機能するリングノード3[e]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,N](m=1,・・・,M)を生成する。
最終の分散処理ノード3aA[N]または3aB[N]の受信部14aは、前の番号e-(e-=e-1、ただしe=1の場合はe-=K)のリングノード3[e-]から通信路4[e-]を介して、同じグループに属する分散処理ノード3aA[N-1]または3aB[N-1]が生成・送信した中間集計データR*[m,N-1]を受信する。
最終の分散処理ノード3aA[N]または3aB[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する。
そして、最終の分散処理ノード3aA[N]または3aB[N]の集計データ送信部13cは、自ノードで生成された集計データR[m]を、前の番号e-のリングノード3[e-]に送信する。すなわち、集計データ送信部13cは、同じグループに属する前の番号の分散処理ノード3aA[N-1]または3aB[N-1]に向けて集計データR[m]を送信する。最終の分散処理ノード3aA[N]または3aB[N]の重み更新処理部16の動作は、第1の実施例と同様である。
グループAまたはBに属する中間の分散処理ノード3aA[i]または3aB[i](i=2,・・・,N-1)として機能するリングノード3[z]の受信部14aは、後の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]から通信路4[z+]を介して、同じグループに属する分散処理ノード3aA[i+1]または3aB[i+1]が送信した集計データR[m]を受信する。
中間の分散処理ノード3aA[i]または3aB[i]の集計データ送信部13cは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]に通信路4[z-]を介して集計データR[m]を送信する。すなわち、集計データ送信部13cは、同じグループに属する前の番号の分散処理ノード3a[i-1]に向けて集計データR[m]を送信する。中間の分散処理ノード3aA[i]または3aB[i]の重み更新処理部16の動作は、第1の実施例と同様である。
グループAまたはBに属する1番目の分散処理ノード3aA[1]または3aB[1]として機能するリングノード3[h]の受信部14aは、後の番号h+(h+=h+1、ただしh=Kの場合はh+=1)のリングノード3[h+]から通信路4[h+]を介して、同じグループに属する分散処理ノード3aA[2]または3aB[2]が送信した集計データR[m]を受信する。1番目の分散処理ノード3aA[1]または3aB[1]の重み更新処理部16の動作は、第1の実施例と同様である。
重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3aA[γ](γ=1,・・・,Na),3aB[δ](δ=1,・・・,Nb)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3aA[γ],3aB[δ]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
以上の処理は、グループAまたはBに属する分散処理ノード3aA[γ]または3aB[δ]が、同じグループに属する分散処理ノードが生成したデータを受信した場合の処理であり、第2の実施例で説明した分散処理ノードの処理と同様である。
一方、他のグループに属する分散処理ノードが生成した中間集計データR*や集計データRを受信した分散処理ノードは、これら中間集計データR*や集計データRに対して中継ノード3bとして機能する。
具体的には、あるグループに属する分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した、他のグループの分散処理ノードによって生成された中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。また、このリングノード3[t]は、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]から通信路4[t+]を介して受信した、他のグループの分散処理ノードから送信された集計データRを、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]に通信路4[t-]を介して転送する。このように、分散処理ノード3aA[γ]または3aB[δ]は、自グループに属さない分散処理ノードによって生成・送信されたデータを隣接するリングノード3から受け取った場合、このデータをそのまま他方の隣接するリングノード3に送出する。
第2の実施例では、各分散処理ノード3a[n](n=1,・・・,N-1)が生成した中間集計データR*[m,n](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に送信する集約通信を行う。また、分散処理ノード3a[n]が生成した集計データR[m](m=1,・・・,M)を、番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に送信する分配通信を行う。
本実施例においても第2の実施例と同様に、分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3は、データをパケット化して送受信するが、このリングノード3の集計データ送信部13cは、自ノードがどのグループに属するか(パケットがどのグループに属するか)を示すグループ識別子を、集約通信パケットおよび分配通信パケットに付与する。上記のとおり、グループ識別子は、分散処理制御部5から通知される。
さらに、分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3の集計データ送信部13cは、受信部14aで受信した集約通信パケットまたは分配通信パケットに付与されたグループ識別子に基づいて、同じグループに属する分散処理ノードが生成・送信したパケット(自グループに属するパケット)か否かを判定する。
分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3の集計データ送信部13cは、受信した集約通信パケットまたは分配通信パケットが自グループのパケットであれば、これらのパケットから取得したデータ(中間集計データR*または集計データR)を、同じグループに属する分散処理ノードが生成・送信したデータとして第2、第3の実施例と同様に処理する。また、集計データ送信部13cは、受信した集約通信パケットまたは分配通信パケットが自グループのパケットでない場合は、これらのパケットから取得したデータ(中間集計データR*または集計データR)を、転送すべき方向に存在する隣接するリングノード3に送出する。
なお、上記のグループ識別子は、集約通信パケットまたは分配通信パケット内の定められた位置に配置すればよい。パケットがイーサネット(登録商標)フレームの形式に準拠するのであれば、宛先MAC(Media Access Control )アドレスあるいは宛先MACアドレスの一部に、VLANタグ(VLAN-ID)を付与して、このVLANタグをグループ識別子とする、などの実装が可能である。
本実施例では、K個(Kは3以上の整数)のリングノードから構成される物理的なリングシステムを、同時に複数の深層学習を行うシステムとして構成することが可能となる。また、本実施例では、合計の分散処理ノード数がリングノード数以下であるという条件の下、各深層学習においてその学習の規模(サンプルデータ数や計算量)に応じて適切な分散処理ノード数を定めることができる。したがって、1つの深層学習では使いきれなかったリングノードを別の深層学習に割り当てることができるため、効率的な(リングノードの稼働率が高い)システムの運用が可能となる。
なお、本実施例では、第2の実施例において複数の分散処理システムを1つのリングシステム上に構築する例で説明しているが、第3の実施例において複数の分散処理システムを1つのリングシステム上に構築してもよいことは言うまでもない。
第1~第4の実施例で説明した分散処理ノード1とリングノード3(分散処理ノード3a、中継ノード3b)と分散処理制御部5の各々は、CPU(Central Processing Unit)、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。分散処理ノード1とリングノード3と分散処理制御部5の各々のCPUは、各々の記憶装置に格納されたプログラムに従って第1~第4の実施例で説明した処理を実行する。
本発明は、ニューラルネットワークの機械学習を行う技術に適用することができる。
1,3a…分散処理ノード、2…分散処理用ネットワーク、3…リングノード、3b…中継ノード、4…通信路、5…分散処理制御部、6…制御用ネットワーク、10…サンプル入力部、11…勾配計算処理部、12…ノード内集計処理部、13,13a,13b,13c…集計データ送信部、14,14a…受信部、15…集計データ生成部、16…重み更新処理部、17…ニューラルネットワーク、18,18a…機能設定部、50,50a…機能指定部、51…障害検知通知受信部、52,52a…機能指定変更部。

Claims (8)

  1. ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードを備え、
    各分散処理ノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、
    N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、
    N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、
    N個の分散処理ノードのうち、予め定められた最終の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信し、
    各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  2. 請求項1記載の分散処理システムにおいて、
    各分散処理ノードは、
    自ノードが前記1番目の分散処理ノードである場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する集計データ送信部と、
    自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを生成する集計データ生成部と、
    自ノードが前記1番目または前記中間の分散処理ノードである場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードである場合に、前記第1の集計データを受信する受信部と、
    前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とする分散処理システム。
  3. リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードと、
    前記K個のリングノードの各々を、分散処理ノードあるいは中継ノードの何れかに指定する分散処理制御部とを備え、
    K個のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、
    N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、
    K個のリングノードのうち、前記中継ノードとして機能する各リングノードは、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信し、
    各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  4. 請求項3記載の分散処理システムにおいて、
    各リングノードは、
    自ノードが前記1番目の分散処理ノードとして機能する場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、自ノードが前記中継ノードとして機能する場合に、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する集計データ送信部と、
    自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを生成する集計データ生成部と、
    自ノードが前記1番目または前記中間の分散処理ノードとして機能する場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第1の集計データを受信する受信部と、
    自ノードが前記分散処理ノードとして機能する場合に、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とする分散処理システム。
  5. 請求項3または4記載の分散処理システムにおいて、
    前記分散処理制御部は、
    前記K個のリングノードの各々を、前記分散処理ノードあるいは前記中継ノードの何れかに指定する機能指定部と、
    前記第1の集計データまたは前記第2の集計データを転送先の分散処理ノードに送信できない障害が発生したときに、この障害を回避するように各リングノードの機能指定を変更する機能指定変更部とを備えることを特徴とする分散処理システム。
  6. 請求項3乃至5のいずれか1項に記載の分散処理システムにおいて、
    前記分散処理制御部は、前記分散処理ノードとして指定するリングノードの各々を、複数の異なるグループのうちいずれか1つのグループに属するように指定し、
    N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、予め定められた最終の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、
    N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、
    各分散処理ノードは、同じグループの分散処理ノードで生成・送信された前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  7. ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードの各々が、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、
    N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第2のステップと、
    N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第3のステップと、
    N個の分散処理ノードのうち、予め定められた最終の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する第4のステップと、
    各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第5のステップとを含むことを特徴とする分散処理方法。
  8. リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードが、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、
    N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第2のステップと、
    N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第3のステップと、
    N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第4のステップと、
    N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードが、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第5のステップと、
    K個のリングノードのうち、中継ノードとして機能する各リングノードが、前記第1の集計データまたは前記第2の集計データを受信したときに、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する第6のステップと、
    各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第7のステップとを含むことを特徴とする分散処理方法。
JP2018110926A 2018-06-11 2018-06-11 分散処理システムおよび分散処理方法 Active JP7135468B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018110926A JP7135468B2 (ja) 2018-06-11 2018-06-11 分散処理システムおよび分散処理方法
US16/973,717 US20210209443A1 (en) 2018-06-11 2019-05-05 Distributed Processing System and Distributed Processing Method
PCT/JP2019/019895 WO2019239802A1 (ja) 2018-06-11 2019-05-20 分散処理システムおよび分散処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018110926A JP7135468B2 (ja) 2018-06-11 2018-06-11 分散処理システムおよび分散処理方法

Publications (2)

Publication Number Publication Date
JP2019215603A JP2019215603A (ja) 2019-12-19
JP7135468B2 true JP7135468B2 (ja) 2022-09-13

Family

ID=68842478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018110926A Active JP7135468B2 (ja) 2018-06-11 2018-06-11 分散処理システムおよび分散処理方法

Country Status (3)

Country Link
US (1) US20210209443A1 (ja)
JP (1) JP7135468B2 (ja)
WO (1) WO2019239802A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7412699B2 (ja) 2020-01-14 2024-01-15 慶應義塾 情報処理システム、情報処理装置、及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017168950A (ja) 2016-03-15 2017-09-21 株式会社日立製作所 通信制御装置、通信システム、および、通信制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083383A (ja) * 1996-09-09 1998-03-31 Toshiba Corp ニューロ演算装置
US11436433B2 (en) * 2017-12-28 2022-09-06 Intel Corporation Malleable fabric attached virtual artificial intelligence (AI) training appliances
US10728091B2 (en) * 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017168950A (ja) 2016-03-15 2017-09-21 株式会社日立製作所 通信制御装置、通信システム、および、通信制御方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HEGDE, V., et al.,"Parallel and Distributed Deep Learning",[online],2016年06月09日,Pages 1-8,[平成31年3月12日検索], インターネット, <URL: https://stanford.edu/~rezab/classes/cme323/S16/projects_reports/hedge_usmani.pdf>.
SHOU KING FOO, et al.,"Parallel Implementation of Backpropagation Neural Networks on a Heterogeneous Array of Transputers",IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics),1997年02月,Vol.27, No.1,Pages 118-126,ISSN: 1083-4419, <DOI: 10.1109/3477.552191>.

Also Published As

Publication number Publication date
US20210209443A1 (en) 2021-07-08
WO2019239802A1 (ja) 2019-12-19
JP2019215603A (ja) 2019-12-19

Similar Documents

Publication Publication Date Title
US10541861B2 (en) Network system, method, and switch device
CN113098773B (zh) 数据处理方法、装置及系统
CN114567598B (zh) 一种基于深度学习和跨域协作的负载均衡方法及装置
CN103348638A (zh) 通信系统、控制装置、通信节点以及通信方法
CN110891019B (zh) 一种基于负载均衡的数据中心流量调度方法
WO2020095678A1 (ja) 分散処理システムおよび分散処理方法
US20230134135A1 (en) Real-time detection of completion of sensor wrap completion in gnmi telemetry of a network device
JP2017118438A (ja) パケット送信プログラム、情報処理装置、および、障害検出方法
JP7135468B2 (ja) 分散処理システムおよび分散処理方法
Tuyishimire et al. Modelling and analysis of interference diffusion in the internet of things: An epidemic model
Pinyoanuntapong et al. Toward scalable and robust AIoT via decentralized federated learning
Carro-Calvo et al. A genetic algorithm with switch-device encoding for optimal partition of switched industrial Ethernet networks
CN111901237B (zh) 源路由选路方法及系统、相关设备及计算机可读存储介质
CN101237408A (zh) 基于距离完全蚁群算法的多播路由方法
WO2019159784A1 (ja) 分散処理システムおよび分散処理方法
KR101913745B1 (ko) 소프트웨어 정의 네트워크에서 데이터 평면 애플리케이션을 활용하여 전송 경로를 설정하는 장치 및 방법
JP7272460B2 (ja) 分散深層学習システム
CN110431824B (zh) 通过对等消息彼此通信的节点的计算机网络以及关联的用于使节点之间互连的方法
WO2020245864A1 (ja) 分散処理システムおよび分散処理方法
WO2020085058A1 (ja) 分散処理システムおよび分散処理方法
Srivastava et al. Combined resource allocation and route optimization in multiagent networks: A scalable approach
JP7074018B2 (ja) 分散処理システムおよび分散処理方法
CN113705826B (zh) 面向分布式机器学习的参数同步组播方法
JP7283577B2 (ja) 分散深層学習システムおよび分散深層学習方法
CN115277217B (zh) 一种异域网络靶场虚拟网络的构建系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

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: 20220802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220815

R150 Certificate of patent or registration of utility model

Ref document number: 7135468

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150