JP6197791B2 - 分散処理装置及び分散処理システム並びに分散処理方法 - Google Patents

分散処理装置及び分散処理システム並びに分散処理方法 Download PDF

Info

Publication number
JP6197791B2
JP6197791B2 JP2014528023A JP2014528023A JP6197791B2 JP 6197791 B2 JP6197791 B2 JP 6197791B2 JP 2014528023 A JP2014528023 A JP 2014528023A JP 2014528023 A JP2014528023 A JP 2014528023A JP 6197791 B2 JP6197791 B2 JP 6197791B2
Authority
JP
Japan
Prior art keywords
distributed processing
processes
collective communication
communication
division pattern
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
JP2014528023A
Other languages
English (en)
Other versions
JPWO2014020959A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2014020959A1 publication Critical patent/JPWO2014020959A1/ja
Application granted granted Critical
Publication of JP6197791B2 publication Critical patent/JP6197791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

本発明は、集団通信を伴う分散処理技術に関する。
機械学習、データマイニングは、データから規則やパターンを見つける方法であり、情報推薦、顔認証、音声認識、文書分類などの様々な場面で用いられている。このような機械学習、データマイニングに関し様々な手法が提案されている。これら提案手法の多くでは、データを説明するモデルを設計し、そのモデルのデータの説明度合いを表す関数(例えば対数尤度)を生成し、その関数に対してモデルパラメータの最適化(対数尤度なら最大化)を行うことで学習が行われる。
上記最適化には、例えば、最急降下法、確率的勾配降下法、EM(Expectation Maximization)アルゴリズムなどが用いられる。最適化処理は、学習対象のデータが大きくなればなるほど多くの時間が必要となるため、大規模データで学習を行う場合には、処理の並列及び分散処理化が望まれる。
そこで、最適化処理を並列分散で行う方法として、DGD(Distributed Gradient Descent)法、IPM(Iterative Parameter Mixtures)法が提案されている(下記非特許文献1及び2参照)。DGD法は、最急降下法を並列分散で行う方法である。DGD法は、データをN分割し、各分割において並列にサブデータセットの勾配を計算し、それらを足しあわせることで勾配を求め、モデルの更新を行う。DGD法は、イテレーティブ(iterative)なアルゴリズムであるため、上記処理を収束するまで繰り返す。IPM法は、データをN分割し、各分割データに対して並列に確率的勾配降下法を適用する。これにより、N個の異なるモデルが算出されるため、それらを平均化する。IPM法も、イテレーティブ(iterative)なアルゴリズムであるため、そのような処理を収束するまで繰り返す。
下記非特許文献1では、構造化パーセプトロンや最大エントロピー法において、IPM法による最適化が高速であるという実験結果が示されている。また、DGD法やIPM法を実装する場合、どちらの方法も分散処理フレームワークであるMapReduce(下記非特許文献3参照)を利用することができる。このため、これらの方法は分散プログラミングに関して知識が無い者でも容易に実装が行えるという利点がある。
Keith B. Hall, Scott Gilpin, Gideon Mann, "MapReduce/Bigtable for Distributed Optimization", NIPS LCCC Workshop 2010 Ryan McDonald, Keith Hall, Gideon Mann, "Distributed Training Strategies for the Structured Perceptron", Human Language Technologies, The 2010 Annual Conference of the North American Chapter of the ACL, pages 456-464, Los Angeles, California, June 2010 Jeffrey Dean, Sanjay Ghemawat, "MapReduce: Simplified Data Processing on Large Clusters", USENIX Association, 6th Symposium on Operating Systems Design and Implementation, 2004
しかしながら、上述したDGD法やIPM法には、次のような問題がある。DGD法やIPM法のアルゴリズムは、分散された全モデルパラメータの勾配を足し合わせる処理を含む。この処理には、データが分散されている全マシンにおいて通信が生じる。よって、このような通信がボトルネックとなり、DGD法やIPM法では、分散処理を行うマシン台数を増やしたとしても、処理の高速化には限度がある。即ち、分散処理フレームワークとしてのMapReduceにおけるReduceや、MPI(Message Passing Interface)におけるAllreduceが、処理のボトルネックとなってしまう。
本発明は、上述のような事象に鑑みてなされたものであり、集団通信を伴う分散処理を高速に実行する技術を提供する。
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
第1の態様は、複数の分散処理装置により起動される複数のプロセスの中の少なくとも1つを起動する分散処理装置に関する。第1態様に係る分散処理装置では、起動された少なくとも1つのプロセスが、上記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、その局所集団通信の後、その局所集団通信において用いられた第1分割パターンとは異なる第2分割パターンを選択し、上記複数のプロセスがその第2分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、上記局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信手段に実行させる通信制御手段と、を有する。
第2の態様は、複数のコンピュータにより起動される複数のプロセスの中の少なくとも1つを起動するコンピュータで実行される分散処理方法に関する。第2態様に係る分散処理方法は、当該コンピュータが、上記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、その局所集団通信の後、その局所集団通信において用いられた第1分割パターンとは異なる第2分割パターンを選択し、上記複数のプロセスが第2分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、その局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、ことを含む。
第3の態様に係る分散処理システムは、上記第1態様に係る複数の分散処理装置と、各分散処理装置についてプロセッサコア数及び接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部と、接続ネットワークが共通の分散処理装置、及び、前記プロセッサコア数が多い分散処理装置の少なくとも一方から優先的に、前記複数のプロセスの少なくとも1つを起動させる分散処理装置を選択する実行対象決定部と、実行対象決定部により選択された各分散処理装置に、前記プロセスの実行指示をそれぞれ送信する実行指示部と、を備える分散処理管理装置と、を含む。
なお、本発明の他の態様としては、上記第1態様に係る構成をコンピュータに実現させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
上記各態様によれば、集団通信を伴う分散処理を高速に実行する技術を提供することができる。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施形態、およびそれに付随する以下の図面によってさらに明らかになる。
第1実施形態における分散処理システムの構成例を概念的に示す図である。 第1実施形態におけるマスタ装置の構成例を概念的に示す図である。 第1実施形態におけるスレーブ装置の構成例を概念的に示す図である。 Allreduceの例(加算)を示す図である。 4つのプロセスに関する3つの分割パターンの例を示す図である。 8つのプロセスに関する3つの分割パターンの例を示す図である。 8つのプロセスに関する3つの分割パターンの例を示す図である。 第1実施形態における分散処理システムの動作例を示す図である。 第1実施形態における各プロセスの動作例を示すフローチャートである。 第2実施形態におけるスレーブ装置の構成例を概念的に示す図である。 第2実施形態における各プロセスの動作例を示すフローチャートである。 第2実施形態におけるプロセス割り当ての例を概念的に示す図である。 実施例における分散処理システムの構成を概念的に示す図である。 変形例におけるスレーブ装置の構成例を概念的に示す図である。
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
本実施形態に係る分散処理装置は、複数の分散処理装置により起動される複数のプロセスの中の少なくとも1つを起動する。本実施形態に係る分散処理装置では、この少なくとも1つのプロセスが、上記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、その局所集団通信の後、その局所集団通信において用いられた第1分割パターンとは異なる第2分割パターンを選択し、上記複数のプロセスがその第2分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、上記局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信手段に実行させる通信制御手段と、を有する。
本実施形態に係る分散処理方法は、複数のコンピュータにより起動される複数のプロセスの中の少なくとも1つを起動するコンピュータで実行される。本実施形態に係る分散処理方法は、当該コンピュータが、上記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、その局所集団通信の後、その局所集団通信において用いられた第1分割パターンとは異なる第2分割パターンを選択し、上記複数のプロセスが第2分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、その局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、ことを含む。
上述の分割パターンとは、複数のプロセスをグループ分けする1つのグルーピング手法を示す。よって、第1分割パターンとは異なる第2分割パターンとは、第1分割パターンのグルーピング手法とは異なる他のグルーピング手法を意味する。
上述の複数のプロセスは、構造化パーセプトロンや最大エントロピー法などを分散で実行する。本実施形態が最大エントロピー法を用いた分散学習処理において効果的に作用することは、例えば、次の参考文献の内容等から明らかである。
参考文献:Gideon Mann, Ryan McDonald, Mehryar Mohri, "Efficient Large-Scale Distributed Training of Conditional Maxmum Entropy Models", NIPS, 2009
また、上述のプロセスとは、ソフトウェア(プログラム)の任意の実行単位を意味し、スレッド、タスク等と区別する意図で利用される文言ではない。
上述の集団通信とは、複数のプロセスが持つ複数の処理対象データを対象に所定の処理が施され、得られたデータが当該複数のプロセスに分配されることを意味する。この集団通信において、複数の処理対象データを複数のプロセスから収集し、その収集されたデータに所定の処理を施すプロセスは、1つのプロセスであってもよいし、複数のプロセスであってもよい。当該所定の処理自体は、何ら制限されず、例えば、加算等である。
本実施形態では、複数のプロセスを第1分割パターンで分割することで形成される各プロセスグループ内において、局所集団通信がそれぞれ行われる。本実施形態における局所集団通信では、各プロセスグループ内に存在するプロセスのみを対象に上述の集団通信が行われる。よって、当該局所集団通信では、所属するプロセスグループが異なるプロセス間での通信は発生しない。
各プロセスグループ内で局所集団通信が完了すると、各プロセスグループ内の複数プロセスが有する複数の処理対象データに対して所定の処理を施すことにより得られる各データが、各プロセスグループ内の複数プロセス間でそれぞれ共有される。以降、プロセスグループ内の複数プロセスが有する複数の処理対象データに対して所定の処理を施すことにより得られるデータを局所処理データと表記する場合もある。つまり、本実施形態によれば、プロセスグループ毎の局所集団通信により、各プロセスグループ内のプロセスが持つ処理対象データが反映された局所処理データがプロセスグループ毎に共有される。
本実施形態では、次の局所集団通信を行うために、先の局所集団通信において用いられた第1分割パターンとは異なる第2分割パターンが選択される。そして、この第2分割パターンに対応する各プロセスグループにおいて先の局所集団通信の結果に基づくデータを用いて次の局所集団通信が行われる。ここで、次の局所集団通信は、先の局所集団通信により得られた局所処理データをそのまま用いて実施されてもよいし、先の局所集団通信により得られた局所処理データに対して各プロセスがそれぞれ更なる処理を施すことにより得られるデータを用いて実施されてもよい。次の局所集団通信では、具体的には、新たなプロセスグループ内の複数プロセスが持つ、先の各局所集団通信の結果がそれぞれ反映された複数の処理対象データを対象に、所定の処理が行われ、得られたデータがその新たなプロセスグループ内の複数プロセスに分配される。第2分割パターンは第1分割パターンとは異なるため、各プロセスにとって、次の局所集団通信時には、先の局所集団通信時に集団通信相手に含まれていなかった少なくとも1つのプロセスが集団通信相手となる。更に、各プロセスは、次の局所集団通信時には、先の局所集団通信時に同一プロセスグループに属していた他のプロセスが持つ処理対象データが反映された局所処理データ又はその局所処理データに対して更なる処理が施されたデータをそれぞれ持っている。よって、次の局所集団通信が完了すると、各プロセスは、先の局所集団通信完了時よりも多くの処理対象データが反映された局所処理データをそれぞれ持つことになる。
本実施形態によれば、このような局所集団通信を繰り返すことにより、複数のプロセスに分散配置されていた全ての処理対象データが反映された所望のデータを取得することができる。但し、本実施形態は、所望のデータを得るために局所集団通信のみを繰り返すことに限定しているわけではない。
更に、本実施形態によれば、所望のデータを得るにあたり、全プロセス間での通信ではなく局所的なグループ内通信を行っているため、通信が分散処理高速化のボトルネックになることを防ぐことができる。これにより、本実施形態によれば、通信負荷による高速処理の限界を抑制し、集団通信を伴う分散処理の高速化を実現することができる。
以下、上述の実施形態について更に詳細を説明する。
[第1実施形態]
〔システム構成〕
図1は、第1実施形態における分散処理システムの構成例を概念的に示す図である。第1実施形態における分散処理システム1は、マスタ装置10、複数のスレーブ装置20(#1、#2、・・・、#n)を有する。以降、各スレーブ装置20(#1、#2、・・・、#n)は、特に個々を区別する必要がある場合を除き、スレーブ装置20と総称する。
スレーブ装置20は、集団通信を伴う分散処理を実行する。上述の分散処理装置及び分散処理方法は、スレーブ装置20に適用される。これにより、スレーブ装置20は、分散処理装置と呼ぶこともできる。マスタ装置10は、ユーザからの要求に応じて、複数のスレーブ装置20に分散処理を実行させる。このため、マスタ装置10は、分散処理管理装置と呼ぶこともできる。
このように、分散処理の管理を行う装置をその他の装置と区別するために、マスタ装置10とスレーブ装置20とを区別するが、両者は特に区別されなくてもよい。これは、マスタ装置10及びスレーブ装置20のいずれも分散処理システム1内で分散処理プログラムを実際に実行し得るからである。しかし、以降の説明では、説明の便宜のために、分散処理プログラムを実際に実行し得るコンピュータはスレーブ装置20のみとする。
マスタ装置10とスレーブ装置20とは通信網9を介して通信可能に接続される。通信網9は、インターネット等のような公衆網、WAN(Wide Area Network)、LAN(Local Area Network)、無線通信ネットワーク等である。なお、本実施形態において、マスタ装置10とスレーブ装置20との間、及び、スレーブ装置20間の通信形態は限定されない。
マスタ装置10及びスレーブ装置20は、いわゆるコンピュータであり、相互にバス5で接続されるCPU(Central Processing Unit)2、メモリ3、入出力インタフェース(I/F)4等を有する。メモリ3は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク、可搬型記憶媒体等である。入出力I/F4は、通信網9を介して、他のコンピュータ(マスタ装置10及びスレーブ装置20)と通信を行う通信装置7等と接続される。また、入出力I/F4は、入力部(図示せず)や出力部(図示せず)と接続されてもよい。入力部は、キーボード、マウス等のようなユーザ操作の入力を受け付ける装置である。出力部は、ディスプレイ装置やプリンタ等のようなユーザに情報を提供する装置である。
なお、マスタ装置10及びスレーブ装置20のハードウェア構成は制限されない。図1では、マスタ装置10及びスレーブ装置20はそれぞれ1つずつのCPU2を有する構成例が示されるが、それらは複数のCPU2を有してもよい。
〔装置構成〕
〈マスタ装置〉
図2は、第1実施形態におけるマスタ装置10の構成例を概念的に示す図である。図2に示されるように、マスタ装置10は、スレーブ情報格納部11、初期設定部12、スレーブ制御部13、実行指示部14、実行要求取得部15等を有する。これら各処理部は、例えば、メモリ3に格納されるプログラムがCPU2により実行されることにより実現される。当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F4を介してインストールされ、メモリ3に格納される。
スレーブ情報格納部11は、各スレーブ装置20に関し、マシン名やIPアドレス等のような、マスタ装置10が各スレーブ装置20を特定し、各スレーブ装置20と通信するための各種情報を格納する。なお、DNS(Domain Name System)サービスを用いる場合には、マシン名のみが格納されていてもよい。
初期設定部12は、マスタ装置10の初期設定を行う。初期設定部12は、マスタ装置10の起動後に、ユーザにより指定された上述のようなスレーブ装置20に関する情報をスレーブ情報格納部11に格納する。スレーブ装置20に関する情報は、例えば、入力部を操作することによりユーザにより入力されてもよいし、ユーザにより生成された設定ファイルから取得されてもよい。
スレーブ制御部13は、スレーブ情報格納部11に格納されているスレーブ装置20に関する情報に基づいて、複数のスレーブ装置20の起動及び停止を行う。
実行要求取得部15は、分散処理プログラムの実行要求を取得する。例えば、この実行要求では、複数のスレーブ装置20で実行すべき分散処理プログラムが指定される。また、その実行要求には、分散処理プログラムにより実現されるプロセスの数が含まれてもよい。なお、実行要求において分散処理プログラムやプロセス数が指定されない場合には、それらに予め設定された情報が利用されてもよい。また、その実行要求は、入力部(図示せず)から入力されてもよいし、他のコンピュータから取得されてもよい。
実行指示部14は、分散処理の実行指示を各スレーブ装置20にそれぞれ送る。実行指示部14は、実行要求取得部15により取得されたプロセス数に応じて、分散処理のためのプロセスを起動させるスレーブ装置20、各スレーブ装置20のプロセス数を決定し、これら決定情報を実行指示に含める。
〈スレーブ装置〉
図3は、第1実施形態におけるスレーブ装置20の構成例を概念的に示す図である。図3に示されるように、スレーブ装置20は、指示取得部21、プログラム取得部22、プログラム実行部23、スレーブ情報格納部24等を有する。これら各処理部は、例えば、メモリ3に格納されるプログラムがCPU2により実行されることにより実現される。当該プログラムは、例えば、CD、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F4を介してインストールされ、メモリ3に格納される。
指示取得部21は、マスタ装置10から、分散処理の実行指示を受ける。この実行指示には、実行すべき分散処理プログラムの情報、起動プロセス数、分散処理に参加する複数のスレーブ装置20の情報が含まれる。指示取得部21は、スレーブ装置20の情報についてはスレーブ情報格納部24に格納する。
スレーブ情報格納部24は、分散処理に参加する複数のスレーブ装置20に関する情報を格納する。具体的には、分散処理に参加する各スレーブ装置20に関し、マシン名、IPアドレス、起動プロセス数等がそれぞれ格納される。
プログラム取得部22は、指示取得部21が受けた分散処理の実行指示で指定される分散処理プログラムを取得する。実行指示に、分散処理プログラムの所在情報が設定されている場合には、プログラム取得部22は、その所在情報に基づいて、他のコンピュータから指定された分散処理プログラムを取得する。また、実行指示と共に、分散処理プログラムがマスタ装置10から送られてもよい。
プログラム実行部23は、プログラム取得部22により取得された分散処理プログラムを、指示取得部21により取得された実行指示で指定されるプロセス数分、実行する。このとき、プログラム実行部23は、同一スレーブ装置20上で起動される各プロセスを区別するために、各プロセスのIDを固有にそれぞれ付する。各スレーブ装置20で分散処理プログラムに基づいて起動される分散処理を行う各プロセスは、プロセス25と表記される。これにより、マスタ装置10から分散処理の実行指示を受けた各スレーブ装置20では、少なくとも1つのプロセス25がそれぞれ生成される。
プロセス25は、集団通信部26、通信制御部27等を有する。集団通信部26及び通信制御部27は、分散処理プログラムの実行により実現されるため、集団通信手段、通信制御手段と呼ぶこともできる。
集団通信部26は、上述の実施形態における分散処理装置の集団通信手段と同様に、或る分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行う。集団通信部26は、或るプロセスグループ内の複数のプロセスのみを対象として、例えば、MPIにおけるAllreduceを実行する。
図4は、Allreduceの例(加算)を示す図である。符号N1、N2、N3及びN4はそれぞれプロセス25を示す。即ち、図4は、或るプロセスグループ内に4つのプロセスN1からN4が存在する例を示す。各プロセスは、INT(整数)型のベクトルを持つ。図4の例によれば、プロセスN1の集団通信部26は、他のプロセスN2、N3及びN4からそれぞれベクトルを取集し、全ベクトルの各要素をそれぞれ加算する。プロセスN1の集団通信部26は、加算の結果得られるベクトル(6,7,9)を他のプロセスN2、N3及びN4に配布する。
このように、局所集団通信により、そのプロセスグループ内の全プロセスが持つ全データが反映された局所処理データがそのプロセスグループ内の全プロセスで共有される。図4の例では、1つのプロセスN1にデータが集められ、そのプロセスN1で所定処理が実行された。このような実装はシンプルではあるが非効率であるため、より効率的なRecursive Halving And Doublingと呼ばれる手法が利用されてもよい。
通信制御部27は、上述の実施形態における分散処理装置の通信制御手段と同様に、局所集団通信を行う単位(プロセスグループ)を決めるための分割パターンを選択する。具体的には、通信制御部27は、選択され得る複数の分割パターンに関する情報、及び、複数の分割パターンの選択順序に関する情報を保持し、これら保持情報に基づいて、先の局所集団通信に用いられた分割パターンとは異なる分割パターンとなるように、次の局所集団通信に用いられる分割パターンを選択する。
以下、分割パターン及び分割パターンの選択順序について図5、図6及び図7を用いて説明する。図5は、4つのプロセス25に関する3つの分割パターンの例を示す図である。図5の例では、各々2つのプロセス25を含む2つのプロセスグループに分割される。通信制御部27は、図5に示される3つの分割パターンに関する情報を保持すると共に、局所集団通信が所定回数繰り返された後、複数のプロセス25が持つ複数の対象データが反映されたデータが複数のプロセス25の各々でそれぞれ共有されるような選択順序に関する情報を保持する。図5に示される分割パターンでは、次の2つの選択順序が保持され得る。
選択順序1:分割パターンA−1と分割パターンA−2とを交互に繰り返し選択する。
選択順序2:分割パターンA−1、分割パターンA−2、分割パターンA−3を順に繰り返し選択する。
選択順序1及び2が実行される場合のデータ処理の流れは次のようになる。ここで、各プロセスN1、N2、N3及びN4が持つ対象データをD1、D2、D3及びD4と表記し、対象データD1と対象データD2とが反映された演算結果データはデータD1D2と表記する。1ステップ目において、プロセスN1とプロセスN2との間での局所集団通信により、データD1D2がプロセスN1及びN2で共有され、プロセスN3とプロセスN4との間での局所集団通信により、データD3D4がプロセスN3及びN4で共有される。次のステップでは、プロセスN1とプロセスN4との間での局所集団通信により、データD1D2D3D4がプロセスN1及びN4で共有され、プロセスN2とプロセスN3との間での局所集団通信により、データD1D2D3D4がプロセスN2及びN3で共有される。
このように、選択順序1及び2が実行される場合、プロセスN1からN4が持つ全対象データが反映された演算結果データ(D1D2D3D4)が、2回の局所集団通信により、全プロセスN1からN4で共有される。
図6は、8つのプロセス25に関する3つの分割パターンの例を示す図である。図6の例では、各々2つのプロセス25を含む4つのプロセスグループに分割される。ここで、8つのプロセス25を2プロセスずつ分割する分割パターンは、105通り存在する(8!/(4!2!2!2!2!)=105)。この中の3つの分割パターンが図6に示される。図6に示される3つの分割パターンを用いる場合、次の2つの選択順序が取られ得る。
選択順序1:分割パターンB−1と分割パターンB−2とを交互に繰り返し選択する。
選択順序2:分割パターンB−2と分割パターンB−3とを交互に繰り返し選択する。
選択順序1及び2によれば、4ステップ、即ち、4回の局所集団通信により、プロセスN1からN8が持つ全対象データが反映された演算結果データが全プロセスN1からN8で共有される。なお、分割パターンB−1、分割パターンB−2、分割パターンB−3を順に繰り返し選択するという選択順序でも、数ステップで、プロセスN1からN8が持つ全対象データが反映された演算結果データを全プロセスN1からN8で共有することができる。
ところが、図6に示される3つの分割パターンを用いる場合、分割パターンB−1と分割パターンB−3とを何回交互に繰り返しても、プロセスN1からN8が持つ全対象データが反映された演算結果データを全プロセスN1からN8で共有することはできない。よって、通信制御部27は、このような選択順序を用いない。
図7は、8つのプロセス25に関する3つの分割パターンの例を示す図である。図7の例では、各々4つのプロセス25を含む2つのプロセスグループに分割される。ここで、8つのプロセス25を4プロセスずつ分割する分割パターンは、35通り存在する。この中の3つの分割パターンが図7に示される。図7に示される3つの分割パターンを用いる場合、いずれか2つの分割パターンを交互に繰り返し選択する選択順序や、3つの分割パターンを順に繰り返し選択する選択順序が実行され得る。これらの選択順序によれば、2ステップで、プロセスN1からN8が持つ全対象データが反映された演算結果データを全プロセスN1からN8で共有することができる。
通信制御部27は、このように選択された分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、先の局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信部26に実行させる。
〔動作例〕
以下、第1実施形態における分散処理方法について図8及び図9を用いて説明する。図8は、第1実施形態における分散処理システム1の動作例を示す図である。
分散処理システム1では、マスタ装置10が、各スレーブ装置20と通信するために、各スレーブ装置20の情報をそれぞれスレーブ情報格納部11に格納する(S81)。スレーブ情報格納部11には、例えば、次のように、各スレーブ装置20に関するマシン名及びIPアドレスがそれぞれ格納される。
Node_A, 192.168.0.2
Node_B, 192.168.0.3
Node_C, 192.168.0.4
Node_D, 192.168.0.5
Node_E, 192.168.0.6
Node_F, 192.168.0.7
マスタ装置10は、スレーブ情報格納部11に格納される情報に基づいて、各スレーブ装置20をそれぞれ起動させる(S82)。マスタ装置10から起動要求を受けた各スレーブ装置20は、それぞれ起動する(S83)。上記例によれば、Node_AからNode_Fの6台のスレーブ装置20が起動する。なお、各スレーブ装置20は、マスタ装置10からの要求によらず、独自に、起動されてもよい。この場合には、工程(S82)は省かれる。
マスタ装置10は、分散処理プログラムの実行要求を取得する(S84)。この実行要求には、例えば、次のような情報が含まれる。
分散処理プログラム /home/userA/modified_ipm
起動プロセス数 8
マスタ装置10は、その実行要求に応じて、分散処理のためのプロセスを起動させるスレーブ装置20、各スレーブ装置20のプロセス数を決定し、対象に決定された各スレーブ装置20に分散処理の実行指示をそれぞれ送る(S85)。例えば、マスタ装置10は、上述の6台のスレーブ装置20を対象に決定し、各スレーブ装置20のプロセス数を次のように決定する。
Node_A, プロセス数=2
Node_B, プロセス数=2
Node_C, プロセス数=1
Node_D, プロセス数=1
Node_E, プロセス数=1
Node_F, プロセス数=1
マスタ装置10は、上記実行指示と共に、分散処理プログラムの情報、分散処理の対象に決定されたスレーブ装置20の情報、各スレーブ装置20のプロセス数等を、各スレーブ装置20に送信する。
スレーブ装置20は、分散処理の実行指示を受けると、実行指示と共に取得された各スレーブ装置20の情報をスレーブ情報格納部24に格納する(S86)。
続いて、スレーブ装置20は、当該実行指示と共に取得された情報に基づいて、分散処理プログラムを取得する(S87)。例えば、ホームディレクトリがNFS(Network File System)等で共有されている場合、ネットワークアクセスにより、各スレーブ装置20は、分散処理プログラム(/home/userA/modified_ipm)を取得する。
各スレーブ装置20は、取得された分散処理プログラムを、指定されたプロセス数分実行する(S88)。上述の例によれば、Node_A及びNode_Bのスレーブ装置20がそれぞれ2つのプロセス25を起動し、他のスレーブ装置20はそれぞれ1つのプロセス25を起動する。分散処理プログラムに基づいて起動された各プロセス25において局所集団通信がそれぞれ実行される。各プロセス25の動作については後述する。各スレーブ装置20は、各プロセス25が終了すると、各プロセス25による分散処理の結果をマスタ装置10にそれぞれ送る。
マスタ装置10は、各スレーブ装置20からの分散処理の結果を受け、結果データを出力する(S89)。結果データの出力の具体的形態は、制限されず、例えば、入出力I/F4を介して表示部や他の出力装置(プリンタなど)等で実現される。
マスタ装置10は、各スレーブ装置20に停止要求を送る(S90)。この停止要求を受けた各スレーブ装置20は停止する(S91)。各スレーブ装置20の停止は、シャットダウンであってもよいし、省電力モード等のような所定の動作モードへの移行であってもよい。また、各スレーブ装置20は、マスタ装置10からの要求によらず、独自に、停止してもよい。この場合には、工程(S90)は省かれる。
図9は、第1実施形態における各プロセス25の動作例を示すフローチャートである。ここでは、図7の例に基づいて、次のような形態でプロセスが起動されていると仮定する。
Node_A:プロセスN1
Node_A:プロセスN2
Node_B:プロセスN3
Node_B:プロセスN4
Node_C:プロセスN5
Node_D:プロセスN6
Node_E:プロセスN7
Node_F:プロセスN8
プロセス25は、起動されると、保持される複数の分割パターンの中から1つの分割パターンを選択する(S95)。各プロセス25は、同じ分散処理プログラムに基づいて生成されているため、同一の分割パターンをそれぞれ選択する。ここで、各プロセス25において、図7に示される分割パターンC−1及びC−2が保持されており、選択順序として、分割パターンC−1及びC−2を交互に繰り返す選択順序が保持されていると仮定する。この仮定によれば、プロセス25は、まず、分割パターンC−1を選択する。
続いて、プロセス25は、選択された分割パターンに関する情報を取得する(S96)。ここで取得される情報には、各プロセス25が局所集団通信を行う相手となる同一プロセスグループ内に属する他のプロセス25の情報やその局所集団通信の具体的実現手法が含まれる。局所集団通信の具体的実現手法により、局所集団通信における各プロセス25の役割(データを送る側、データを受ける側、所定演算を行うか否か等)等が示される。
図7の例において、プロセス25がプロセスN1であると仮定すると、プロセスN1は、同一プロセスグループ内に属するプロセスN2からN4に関するマシン名、IPアドレス等を取得する。また、例えば、プロセスN1は、局所集団通信の役割として、他のプロセスN2からN4からデータを収集し、収集されたデータに対して所定の演算を施し、演算結果を他のプロセスN2からN4に配布する役割を持つことを認識する。
プロセス25は、分割パターンに関する情報に基づいて、工程(S95)で選択された分割パターンに対応する同一プロセスグループ内の複数のプロセス25間で局所集団通信を実行する(S97)。図7の例によれば、プロセスN1からN4で局所集団通信が行われ、プロセスN5からN8で局所集団通信が行われる。
プロセス25は、局所集団通信を完了すると、局所集団通信の実行ステップ(実行回数)が所定ステップ(所定回数)分完了したか否かを判定する(S98)。所定ステップは、各プロセス25が持つ全対象データが反映された演算結果データを全プロセス25で共有することができる回数を示す。プロセス25は、所定ステップ分完了した場合には(S98;YES)、処理を終了する。一方、所定ステップ分完了していない場合には(S98;NO)、プロセス25は、工程(S95)に戻り、処理を継続する。
次ステップでの工程(S95)では、プロセス25は、保持される選択順序の情報に基づいて、前回選択された分割パターンとは異なる分割パターンを選択する。図7の例によれば、プロセス25は、分割パターンC−2を選択する。これにより、次ステップでは、プロセスN3からN6で局所集団通信が行われ、残りのプロセスで局所集団通信が行われる。
〔第1実施形態における作用及び効果〕
このように第1実施形態では、上述の実施形態における分散処理装置及び分散処理方法のように、選択された分割パターンに基づいて、全プロセスが複数のプロセスグループに分割された各プロセスグループ内のプロセス間で局所集団通信が行われる。即ち、第1実施形態では、複数の局所集団通信が並列に実行され、各局所集団通信に参加するプロセス数は、全プロセスで集団通信を行うのに比べて、減少する。
従って、第1実施形態によれば、集団通信に伴う通信負荷を拡散することができ、集団通信に伴う通信が分散処理高速化のボトルネックとなることを防ぐことができる。これにより、第1実施形態によれば、集団通信を伴う分散処理の高速化を実現することができる。
更に、第1実施形態では、各スレーブ装置20で起動される分散処理のための各プロセス25において、複数の分割パターン、及び、局所集団通信が所定回数繰り返された後、全プロセスが持つ対象データが反映されたデータが全プロセスで共有されるような複数の分割パターンの選択順序が保持されており、これら情報に基づいて選択される分割パターンに基づいて、各ステップでの局所集団通信がそれぞれ実行される。
これにより、第1実施形態によれば、局所集団通信の繰り返し回数が抑制されるため、繰り返し回数の増加に伴う処理速度の低下を抑制することができる。更に、第1実施形態によれば、局所集団通信の繰り返し回数が抑制されたとしても、所望の分散処理結果を得ることができる。
[第2実施形態]
第2実施形態では、各プロセス25を起動させるスレーブ装置20及び各スレーブ装置20で起動させるプロセス数が、各スレーブ装置20のプロセッサコア数及び接続ネットワークにより決定される。以下、第2実施形態における分散処理システム1について、第1実施形態と異なる内容を中心説明する。以下の説明では、第1実施形態と同様の内容については適宜省略する。
〔装置構成〕
スレーブ情報格納部11は、各スレーブ装置20に関し、第1実施形態で示された情報に加えて、プロセッサコア数及び接続ネットワーク情報を更にそれぞれ格納する。接続ネットワーク情報は、各スレーブ装置20が接続されるネットワークセグメントやイーサネットセグメント(イーサネットは登録商標)を区別し得る情報である。よって、同一ネットワークセグメントに属する各スレーブ装置20については同じ接続ネットワーク情報が設定される。
実行指示部14は、スレーブ情報格納部11に格納される情報に基づいて、接続ネットワーク毎のプロセッサコア数の合計が多くかつプロセッサコア数が多いスレーブ装置20から優先的に、分散処理を実行させるスレーブ装置20を選択し、更に、プロセッサコア数に応じてその選択されたスレーブ装置20に起動させるプロセス数を決定する。これにより、実行指示部14は、対象決定手段と呼ぶこともできる。実行指示部14は、このように選択された各スレーブ装置20に、分散処理に参加するスレーブ装置20に関する接続ネットワーク情報及びプロセッサコア数、並びに、決定されたプロセス数を含む実行指示をそれぞれ送信する。
図10は、第2実施形態におけるスレーブ装置20の構成例を概念的に示す図である。図10に示されるように、第2実施形態におけるスレーブ装置20は、第1実施形態の構成に加えて、プロセス決定部29を更に有する。プロセス決定部29は、分散処理プログラムの実行により実現されるため、プロセス決定手段と呼ぶこともできる。
プロセス決定部29は、自プロセス25が、通信制御部27により最初に選択された分割パターンの中のどのプロセス25に対応するのかを決定する。プロセス決定部29は、マスタ装置10から実行指示と共に受信された分散処理に参加する各スレーブ装置20に関する情報に基づいて、局所集団通信において、通信ができる限り発生せず、かつ、通信のレイテンシが出来る限り抑えられるように、上記決定を行う。プロセス決定部29による具体的決定方法については図11を用いて後述される。
〔動作例〕
以下、第2実施形態における分散処理システム1の動作例について図8及び図11を用いて説明する。
第2実施形態では、工程(S81)において、マスタ装置10は、次のような情報をスレーブ情報格納部11に格納する。
Node_A, 192.168.0.2, コア数(4), ネットワークA
Node_B, 192.168.0.3, コア数(2), ネットワークB
Node_C, 192.168.0.4, コア数(2), ネットワークC
Node_D, 192.168.0.5, コア数(2), ネットワークA
Node_E, 192.168.0.6, コア数(1), ネットワークA
Node_F, 192.168.0.7, コア数(2), ネットワークA
Node_G, 192.168.0.8, コア数(4), ネットワークB
マスタ装置10は、工程(S84)において、次のような情報を含む分散処理プログラムの実行要求を取得する。
分散処理プログラム: /home/userA/modified_ipm
起動プロセス数: 8
マスタ装置10は、工程(S85)において、次のように、分散処理の実行指示の送信先となるスレーブ装置20を選択する。マスタ装置10は、スレーブ情報格納部11から上述のようなスレーブ情報を取得し、接続ネットワーク毎のプロセッサコア数の合計を算出し、接続ネットワークをその合計値の降順にソートする。上記スレーブ情報の例によれば、次のようなリストが算出される。
ネットワークA: コア数(9)
ネットワークB: コア数(6)
ネットワークC: コア数(2)
更に、マスタ装置10は、上記リストの上位のネットワークから優先的に、実行要求で指定される起動プロセス数(8)を満足するように、ネットワークを選択する。上記例によれば、起動プロセス数(8)を満足するネットワークAのみが選択される。これにより、通信レイテンシが小さい同一ネットワークに接続するスレーブ装置20から優先的に選択されるようになる。
マスタ装置10は、この選択されたネットワークAに接続されており、かつ、プロセッサコア数が多いスレーブ装置20から優先的に、実行要求で指定される起動プロセス数(8)を満足するスレーブ装置20を選択する。上記例によれば、次のような3つのスレーブ装置20が選択される。これにより、ノード間通信をできる限り発生させないスレーブ装置20が優先的に選択されるようになる。
Node_A, 192.168.0.2, コア数(4), ネットワークA
Node_D, 192.168.0.5, コア数(2), ネットワークA
Node_F, 192.168.0.7, コア数(2), ネットワークA
マスタ装置10は、このように選択されたスレーブ装置20を分散処理に参加するスレーブ装置20に決定し、更に、各スレーブ装置20で実行させるプロセス数をそれぞれのプロセッサコア数に応じて決定する。上記例では、Node_Aのスレーブ装置20のプロセッサ数が4に決定され、Node_Dのスレーブ装置20のプロセッサ数が2に決定され、Node_Fのスレーブ装置20のプロセッサ数が2に決定される。
マスタ装置10は、このように選択された各スレーブ装置20に、プロセス数と共に分散処理の実行指示をそれぞれ送る(S85)。上述のような選択手法により、ノード間通信ができる限り発生せず、通信レイテンシが小さくなるようなスレーブ装置20を分散処理に参加する装置として選択することができる。
図11は、第2実施形態における各プロセス25の動作例を示すフローチャートである。ここでは、各プロセス25において、図7に示される分割パターンC−1及びC−2が保持されており、選択順序として、分割パターンC−1及びC−2を交互に繰り返す選択順序が保持されていると仮定する。
プロセス25は、起動されると、保持される複数の分割パターンの中から1つの分割パターンを選択する(S111)。上記仮定により、各プロセス25は、分割パターンC−1をそれぞれ選択する。
続いて、プロセス25は、今回の局所集団通信が初回の場合に(S112;YES)、次のように動作する。プロセス25は、選択された分割パターンで分割された各プロセスグループに蔵するプロセス集合のリストを生成する(S113)。図7の例によれば、次のようなプロセス集合のリストが生成される。
(プロセス集合のリスト)
{プロセスN1,プロセスN2,プロセスN3,プロセスN4}
{プロセスN5,プロセスN6,プロセスN7,プロセスN8}
プロセス25は、各プロセスグループに関するプロセス集合のリストを、要素の数(プロセスの数)が多い順にソートする(S114)。図7の例では、どちらのプロセス集合も要素数が同じ(4)であるため、ソート結果は変わらない。
プロセス25は、分散処理に参加するスレーブ装置20の情報をマスタ装置10から指定された起動プロセス数が多い順にソートする(S115)。
(スレーブ装置リスト)
Node_A, 192.168.0.2, プロセス数(4), ネットワークA
Node_D, 192.168.0.5, プロセス数(2), ネットワークA
Node_F, 192.168.0.7, プロセス数(2), ネットワークA
プロセス25は、プロセス集合のリストの上位のプロセス集合に含まれる各プロセスを優先的に、スレーブ装置リストの上位のスレーブ装置20に順に割り当てていく(S116)。図7の例によれば、図12に示される割り当てが決定される。図12は、第2実施形態におけるプロセス割り当ての例を概念的に示す図である。
プロセス25は、この割り当て結果及び自プロセスが起動されているスレーブ装置20の情報に応じて、自プロセスが分割パターンにおけるどのプロセスに対応するかを認識する(S117)。図7の例において、Node_Dのスレーブ装置20で起動されたプロセス25は、図12に示される割り当て結果に基づいて、自プロセスが分割パターンC−1におけるプロセスN5又はN6であることを認識する。
続いて、プロセス25は、この認識結果に基づいて、選択された分割パターンに関する情報を取得する(S118)。
プロセス25は、取得された情報に基づいて、工程(S111)で選択された分割パターンに対応する同一プロセスグループ内の複数のプロセス25間で局所集団通信を実行する(S119)。この分割パターンC−1での各局所集団通信では、Node_Dのスレーブ装置20とNode_Fのスレーブ装置20との間でしか通信は発生しない。
一方、プロセス25は、今回の局所集団通信が初回でない場合には(S112;NO)、上述の工程(S113)から工程(S117)を実行しない。既に、自プロセスが分割パターンにおけるどのプロセスに対応するかの認識が完了しているからである。以降、第1実施形態における図9の工程(S98)と同様の工程(S120)が実行される。
〔第2実施形態における作用及び効果〕
このように、第2実施形態では、各スレーブ装置20のプロセッサコア数及び接続ネットワークに基づいて、分散処理に参加するスレーブ装置20及びそのスレーブ装置20で起動されるプロセッサの数が決定される。そして、初回選択された分割パターンに各プロセス25が対応付けられる。このような決定及び対応付けは、局所集団通信が、同じスレーブ装置20内のマルチコアでできる限り実行され、かつ、同一ネットワークに接続されるスレーブ装置20間でできる限り実行されるように実行される。
従って、第2実施形態によれば、各局所集団通信においても、通信が発生せず、かつ、通信レイテンシが小さくなるように制御されるため、集団通信を伴う分散処理の高速化を実現することができる。
以下に実施例を挙げ、上述の第1実施形態を更に詳細に説明する。
図13は、実施例における分散処理システム1の構成を概念的に示す図である。分散処理システム1は、上述の各実施形態で示した装置(マスタ装置10及びスレーブ装置20)に加えて、DNSサーバ装置52、NFSサーバ装置53、クライアント装置51を更に有する。本実施例では、通信網9がLANとして実現される。また、スレーブ装置20は8台存在する。クライアント装置51、DNSサーバ装置52及びNFSサーバ装置53は、マスタ装置10やスレーブ装置20と同様に、いわゆるコンピュータである。
マスタ装置10、スレーブ装置20及びクライアント装置51は、NFSサーバ装置53のホームディレクトリをマウントしているため、マスタ装置10及びスレーブ装置20は、クライアント装置51がNFSサーバ装置53に保存したファイルにアクセスすることができる。
本実施例では、マスタ装置10のマシン名がMAT1であり、8台のスレーブ装置20のマシン名がSLV1からSLV8であると仮定する。コンピュータ同士が通信する場合には、DNSサーバ装置52により提供されるDNSサービスにより、マシン名MAT1を名前解決することにより、対応するIPアドレスが取得される。
マスタ装置10のスレーブ情報格納部11には、スレーブ装置20のマシン名SLV1からSLV8が格納されている。また、8台のスレーブ装置20も起動されている。この状態で、ユーザは、クライアント装置51を操作することにより、分散処理プログラムの実行要求をマスタ装置10へ送る。本実施例では、実行要求と共に、次のような情報が送られる。
分散処理プログラム: /home/userA/sperceptron
起動プロセス数: 8
ここで、分散処理プログラムは、次のような構造化パーセプトロンの分散学習プログラムである。
(分散処理プログラム:/home/userA/sperceptron)
1.w=0 //重みベクトル初期化
2.Data={(x1,y1),(x2,y2),・・・(xn,yn)}
//データを読み込む(xは特徴、yはラベル)
3.For i=1:Max //以下の(1)、(2)をMax回繰り返す
(1)Foreach (x,y) in Data
a)現在の推定が間違っていればw更新
(2)w=PseudoAllredcue(w,i,4)
//4台ずつのAllreduce(局所集団通信)
4.w=Allreduce(w)/n
マスタ装置10は、クライアント装置51から上述の実行要求を受信すると、スレーブ情報格納部11から起動可能なスレーブ装置20のマシン名SLV1からSLV8を取得する。当該実行要求において起動プロセス数8が指定されているため、マスタ装置10は、各スレーブ装置20に1プロセスずつ起動させる。具体的には、マスタ装置10は、8台のスレーブ装置20の各々にアクセスし、分散処理プログラムが存在する場所、実行を担当するスレーブ装置20のマシン名(SLV1からSLV8)を送信する。
スレーブ装置20は、マスタ装置10からの実行指示と共に送られるスレーブ装置20のマシン名をスレーブ情報格納部24に格納する。次に、スレーブ装置20は、分散処理プログラムを/home/userA/sperceptronから読み出し、実行する。これにより、各スレーブ装置20では、構造化パーセプトロンの分散学習処理を行う1つずつのプロセスがそれぞれ起動される。
本実施例では、次のような、各スレーブ装置20と各プロセスとの対応関係が実現される。
SLV1 : プロセスN1
SLV2 : プロセスN2
SLV3 : プロセスN3
SLV4 : プロセスN4
SLV5 : プロセスN5
SLV6 : プロセスN6
SLV7 : プロセスN7
SLV8 : プロセスN8
上述のように、分散処理プログラムは、Max回の反復計算を行う。1回の反復のたびに、PseudoAllredcueが実行される。本実施例におけるPseudoAllreduceの実行が集団通信部26に相当する。集団通信部26の引数に、反復の数iと、局所集団通信が行われる台数(m=4)が提供される。
通信制御部27は、図7に示される分割パターンC−1及びC−2の情報、それらを交互に繰り返す選択順序を保持している。通信制御部27は、上記引数iの値が奇数か偶数かにより、図7の分割パターンC−1か分割パターンC−2かを決定する。例えば、iが1の場合には、分割パターンC−1が選択される。
これにより、引数iが1の場合の局所集団通信は、SLV1からSLV4のスレーブ装置20間、及び、SLV5からSLV8のスレーブ装置20間で行われる。次のステップ(引数iが2の場合)には、局所集団通信は、SLV1、SLV2、SLV7及びSLV8のスレーブ装置20間、及び、SLV3からSLV6のスレーブ装置20間で行われる。
[変形例]
上述の各実施形態では、局所集団通信は所定ステップ数繰り返されたが、局所集団通信の結果(局所処理データ)に応じて、局所集団通信の繰り返しが終了されるようにしてもよい。
図14は、変形例におけるスレーブ装置20の構成例を概念的に示す図である。変形例におけるスレーブ装置20では、プロセス25が、上述の各実施形態の構成に加えて、評価部31を更に有する。評価部31は、分散処理プログラムの実行により実現されるため、評価手段と呼ぶこともできる。
評価部31は、局所集団通信の結果(局所処理データ)に基づくデータを評価する。評価部31は、局所集団通信の結果そのものを評価してもよいし、局所集団通信の結果に対して処理が施されることで得られるデータを評価してもよい。例えば、評価部31は、前回の局所集団通信の結果と今回の局所集団通信の結果との差分が所定閾値よりも小さい場合に、その局所処理データが所望のレベルを満たすと評価する。また、評価部31は、所定の評価関数を持ち、その評価関数に局所処理データを与えることにより得られる結果で、その局所処理データが所望のレベルを満たすと評価してもよい。
通信制御部27は、評価部31の評価結果に応じて、プロセスを続行させるか否かを判定する。この判定により、集団通信部26により次の局所集団通信が実行されるか否かが決まり得る。通信制御部27は、評価部31の評価結果がその局所処理データが所望のレベルを満たすことを示す場合には、プロセスを終了させる。これにより、集団通信部26の処理が行われなくなる。一方、通信制御部27は、評価部31の評価結果がその局所処理データが所望のレベルを満たしていないことを示す場合には、プロセスを続行させる。これにより、集団通信部26により次の局所集団通信が実行される。
この変形例によれば、局所集団通信の繰り返し回数を一層抑制することができ、集団通信を伴う分散処理の高速化を実現することができる。
また、上述の各実施形態では、図5、図6及び図7の例に示されるように、各プロセスグループ内のプロセス数が全ての分割パターンにおいて同じに設定されていたが、各分割パターンで、プロセスグループ内のプロセス数が異なっていてもよい。
局所集団通信が繰り返されるにつれ、局所処理データには多くの対象データが反映されており、局所処理データの習熟度は高いと言える。そこで、一般的には、局所処理データを所望レベルに到達させるためには、繰り返し初期に比べ、繰り返し後期のほうがより多くの情報量が必要となる。そこで、繰り返し後期では、通信制御部27は、各プロセスグループ内のプロセス数が繰り返し初期よりも多い分割パターンを選択するようにしてもよい。
この場合、通信制御部27は、プロセスグループ内のプロセス数が異なる複数の分割パターンを保持し、評価部31の評価結果に応じて、複数の分割パターンの中から、次の局所集団通信に用いられる分割パターンを選択するようにしてもよい。また、通信制御部27は、繰り返し後期にプロセスグループ内のプロセス数が多くなるような選択順序を予め保持し、この選択順序に応じて、各プロセスグループ内のプロセス数が先の局所集団通信のときよりも多い分割パターンを次の局所集団通信のための分割パターンとして選択するようにしてもよい。
この変形例によれば、局所集団通信の結果を早く所望のレベルに到達させることができるため、局所集団通信の繰り返し回数を一層抑制することができ、ひいては、集団通信を伴う分散処理の高速化を実現することができる。
また、上述の各実施形態では、複数の分割パターンが通信制御部27により保持されている例が示されたが、次の局所集団通信に用いる分割パターンは動的に決められてもよい。具体的には、各プロセス25の通信制御部27が、各プロセス25の局所処理データをマスタ装置10に送り、マスタ装置10が収集された局所処理データに基づいて分割パターンを動的に決定し、各プロセス25の通信制御部27が、その決定された分割パターンを次の局所集団通信に利用するようにしてもよい。
上述の第2実施形態では、各スレーブ装置20のプロセッサコア数及び接続ネットワーク情報の両方が考慮されたが、いずれか一方に基づいて、分散処理に参加させるスレーブ装置20が選択されてもよい。この場合、マスタ装置10のスレーブ情報格納部11は、各スレーブ装置20について、プロセッサコア数又は接続ネットワーク情報をそれぞれ格納すればよい。また、マスタ装置10の実行指示部14は、接続ネットワークが同じスレーブ装置20を優先的に選択するか、又は、プロセッサコア数が多い分スレーブ装置20を優先的に選択するようにすればよい。このような形態であっても、各局所集団通信において通信が抑制されるか、又は、通信レイテンシが小さくなるように制御されるため、集団通信を伴う分散処理の高速化を実現することができる。
なお、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、本実施形態で実行される工程の実行順序は、その記載の順番に制限されない。本実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
この出願は、2012年7月30日に出願された日本特許出願特願2012−168698を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (13)

  1. 複数の分散処理装置により起動される複数のプロセスの中の少なくとも1つを起動する分散処理装置において、
    前記少なくとも1つのプロセスが、
    前記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、
    前記局所集団通信の後、前記局所集団通信において用いられた前記第1分割パターンとは異なる第2分割パターンを選択し、前記複数のプロセスが、該第2分割パターンで分割された、複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、前記局所集団通信の結果に基づくデータを用いて次の局所集団通信を前記集団通信手段に実行させる通信制御手段と、を備え、
    前記通信制御手段は、前記局所集団通信が所定回数繰り返された後、前記複数のプロセスが持つ複数の対象データが反映されたデータが前記複数のプロセスの各々でそれぞれ共有されるような、前記第1分割パターン及び前記第2分割パターンを含む複数の分割パターンの選択順序を保持し、該選択順序に基づいて、前記次の局所集団通信に用いられる分割パターンを選択する、分散処理装置。
  2. 前記局所集団通信の結果に基づくデータを評価する評価手段、
    を更に備え、
    前記通信制御手段は、前記評価手段の評価結果に応じて、前記集団通信手段に、前記次の局所集団通信を実行させるか否かを判定する、
    請求項1に記載の分散処理装置。
  3. 前記局所集団通信の結果に基づくデータを評価する評価手段、
    を更に備え、
    前記通信制御手段は、前記評価手段の評価結果に基づいて、前記次の局所集団通信に用いられる分割パターンを選択する、
    請求項1又は2に記載の分散処理装置。
  4. 前記通信制御手段は、各プロセスグループ内のプロセス数が前記第1分割パターンよりも多い分割パターンを前記第2分割パターンとして選択する、
    請求項1から3のいずれか1項に記載の分散処理装置。
  5. 請求項1から4のいずれか1項に記載の複数の分散処理装置と、
    前記各分散処理装置について、プロセッサコア数、及び、前記各分散処理装置が接続されたネットワークである接続ネットワークを識別可能な情報である接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部と、
    前記接続ネットワークが共通する分散処理装置、及び、前記プロセッサコア数が多い分散処理装置の少なくとも一方から優先的に、前記複数のプロセスの少なくとも1つを起動させる分散処理装置を選択する実行対象決定部と、
    前記実行対象決定部により選択された各分散処理装置に、前記プロセスの実行指示をそれぞれ送信する実行指示部と、
    を備える分散処理管理装置と、
    を含む分散処理システム。
  6. 請求項1から4のいずれか1項に記載の複数の分散処理装置と、
    前記各分散処理装置について、プロセッサコア数、及び、前記各分散処理装置が接続されたネットワークである接続ネットワークを識別可能な情報である接続ネットワーク情報をそれぞれ格納する情報格納部と、
    接続ネットワーク毎に接続された前記分散処理装置のプロセッサコア数の合計が多くかつプロセッサコア数が多い分散処理装置から優先的に、前記複数のプロセスの少なくとも1つを起動させる分散処理装置を選択し、前記プロセッサコア数に応じて該分散処理装置に起動させるプロセス数を決定する実行対象決定部と、
    前記実行対象決定部により選択された各分散処理装置に、前記実行対象決定部により決定されたプロセス数を含む、前記プロセスの実行指示をそれぞれ送信する実行指示部と、
    を備える分散処理管理装置と、
    を含む分散処理システム。
  7. 複数のコンピュータにより起動される複数のプロセスの中の少なくとも1つを起動するコンピュータで実行される分散処理方法において、
    前記複数のプロセスが第1分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、
    前記局所集団通信の後、前記局所集団通信において用いられた前記第1分割パターンとは異なる第2分割パターンを選択し、
    前記複数のプロセスが前記第2分割パターンで分割された複数のプロセスグループの中の1つのプロセスグループ内の複数のプロセス間で、前記局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、ことを含み、
    前記第2分割パターンの選択は、前記局所集団通信が所定回数繰り返された後、前記複数のプロセスが持つ複数の対象データが反映されたデータが前記複数のプロセスの各々でそれぞれ共有されるような、前記第1分割パターン及び前記第2分割パターンを含む複数の分割パターンの選択順序に基づいて行われる、分散処理方法。
  8. 前記局所集団通信の結果に基づくデータを評価し、
    その評価の結果に応じて、前記次の局所集団通信を実行させるか否かを判定する、
    ことを更に含む請求項7に記載の分散処理方法。
  9. 前記局所集団通信の結果に基づくデータを評価する、
    ことを更に含み、
    前記第2分割パターンの選択は、前記局所集団通信の結果に基づくデータを評価した結果に基づいて行われる、
    請求項7又は8に記載の分散処理方法。
  10. 前記第2分割パターンの選択は、各プロセスグループ内のプロセス数が前記第1分割パターンよりも多い分割パターンを前記第2分割パターンとして選択する、
    請求項7から9のいずれか1項に記載の分散処理方法。
  11. 前記コンピュータ又は他のコンピュータが、
    前記各コンピュータについて、プロセッサコア数、及び、前記各コンピュータが接続されたネットワークである接続ネットワークを識別可能な情報である接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部を参照し、
    前記接続ネットワークが共通するコンピュータ、及び、前記プロセッサコア数が多いコンピュータの少なくとも一方から優先的に、前記複数のプロセスの少なくとも1つを起動させるコンピュータとして選択し、
    前記選択された各コンピュータに、前記プロセスの実行指示をそれぞれ送信する、
    ことを更に含む請求項7から10のいずれか1項に記載の分散処理方法。
  12. 前記コンピュータ又は他のコンピュータが、
    前記各コンピュータについて、プロセッサコア数、及び、前記各コンピュータが接続されたネットワークである接続ネットワークを識別可能な情報である接続ネットワーク情報をそれぞれ格納する情報格納部を参照し、
    接続ネットワーク毎に接続された前記コンピュータのプロセッサコア数の合計が多くかつプロセッサコア数が多いコンピュータから優先的に、前記複数のプロセスの少なくとも1つを起動させるコンピュータとして選択し、
    前記プロセッサコア数に応じて前記選択された各コンピュータに起動させるプロセス数をそれぞれ決定し、
    前記選択された各コンピュータに、前記決定されたプロセス数を含む、前記プロセスの実行指示をそれぞれ送信する、
    ことを更に含む請求項7から10のいずれか1項に記載の分散処理方法。
  13. 請求項7から12のいずれか1項に記載の分散処理方法をコンピュータに実行させるプログラム。
JP2014528023A 2012-07-30 2013-04-26 分散処理装置及び分散処理システム並びに分散処理方法 Active JP6197791B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012168698 2012-07-30
JP2012168698 2012-07-30
PCT/JP2013/062479 WO2014020959A1 (ja) 2012-07-30 2013-04-26 分散処理装置及び分散処理システム並びに分散処理方法

Publications (2)

Publication Number Publication Date
JPWO2014020959A1 JPWO2014020959A1 (ja) 2016-07-21
JP6197791B2 true JP6197791B2 (ja) 2017-09-20

Family

ID=50027653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014528023A Active JP6197791B2 (ja) 2012-07-30 2013-04-26 分散処理装置及び分散処理システム並びに分散処理方法

Country Status (4)

Country Link
US (1) US9807152B2 (ja)
EP (1) EP2881862B1 (ja)
JP (1) JP6197791B2 (ja)
WO (1) WO2014020959A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210031347A (ko) * 2019-09-11 2021-03-19 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5850054B2 (ja) * 2011-08-01 2016-02-03 日本電気株式会社 分散処理管理サーバ、分散システム、及び分散処理管理方法
US9608942B1 (en) 2014-02-11 2017-03-28 CQuotient, Inc. Digital data processing methods and apparatus for the automated generation of personalized digital content
US9753770B2 (en) * 2014-04-03 2017-09-05 Strato Scale Ltd. Register-type-aware scheduling of virtual central processing units
JP6227813B1 (ja) * 2017-01-25 2017-11-08 株式会社Preferred Networks 分散深層学習装置及び分散深層学習システム
JP6853678B2 (ja) * 2017-01-27 2021-03-31 キヤノン株式会社 データ処理装置、画像再構成装置、データ処理方法、及びプログラム
JP6809360B2 (ja) 2017-04-26 2021-01-06 富士通株式会社 情報処理装置、情報処理方法及びプログラム
JP2019067084A (ja) * 2017-09-29 2019-04-25 富士通株式会社 情報処理システム、情報処理装置、及び、転送先決定方法
CN111526169B (zh) * 2019-02-01 2022-06-14 阿里巴巴集团控股有限公司 通过网络发送数据的方法、介质、服务器和计算机设备
US11044174B2 (en) * 2019-08-26 2021-06-22 Citrix Systems, Inc. Systems and methods for disabling services in a cluster
CN111723933B (zh) * 2020-06-03 2024-04-16 上海商汤智能科技有限公司 神经网络模型的训练方法和相关产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110362A (ja) * 1997-10-01 1999-04-23 Hitachi Ltd 計算機間データ通信方法
JP3036489B2 (ja) 1997-10-24 2000-04-24 日本電気株式会社 マルチプロセッサシステムにおける集団通信装置
JPH11259441A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd 並列計算機における全対全通信方法
JP4978500B2 (ja) * 2008-02-13 2012-07-18 富士通株式会社 集団通信最適化プログラム、集団通信最適化装置および集団通信最適化方法
JP5540609B2 (ja) * 2009-09-01 2014-07-02 富士通株式会社 並列計算システムおよび通信制御プログラム
JP5664131B2 (ja) * 2010-11-01 2015-02-04 富士通株式会社 情報処理方法、装置及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210031347A (ko) * 2019-09-11 2021-03-19 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체
US11301255B2 (en) 2019-09-11 2022-04-12 Kunlunxin Technology (Beijing) Company Limited Method, apparatus, device, and storage medium for performing processing task

Also Published As

Publication number Publication date
US20150215379A1 (en) 2015-07-30
EP2881862A4 (en) 2016-03-16
US9807152B2 (en) 2017-10-31
WO2014020959A1 (ja) 2014-02-06
EP2881862A1 (en) 2015-06-10
EP2881862B1 (en) 2018-09-26
JPWO2014020959A1 (ja) 2016-07-21

Similar Documents

Publication Publication Date Title
JP6197791B2 (ja) 分散処理装置及び分散処理システム並びに分散処理方法
Liu et al. Adaptive asynchronous federated learning in resource-constrained edge computing
US10572290B2 (en) Method and apparatus for allocating a physical resource to a virtual machine
US20140130059A1 (en) Lattice Computing
EP2524322A2 (en) A virtualization and consolidation analysis engine for enterprise data centers
WO2013080152A1 (en) Dynamically configurable placement engine
JP6972796B2 (ja) ソフトウェアサービス実行装置、システム、及び方法
WO2016145904A1 (zh) 一种资源管理方法、装置和***
US10108463B2 (en) System, method of controlling to execute a job, and apparatus
US9141677B2 (en) Apparatus and method for arranging query
Garala et al. A performance analysis of load Balancing algorithms in Cloud environment
US8028291B2 (en) Method and computer program product for job selection and resource allocation of a massively parallel processor
Bosque et al. A load index and load balancing algorithm for heterogeneous clusters
US20150365474A1 (en) Computer-readable recording medium, task assignment method, and task assignment apparatus
Shabeera et al. Optimising virtual machine allocation in MapReduce cloud for improved data locality
Jain et al. Critical analysis of load balancing strategies for cloud environment
US10592473B2 (en) Method for improving energy efficiency of map-reduce system and apparatus thereof
Meddeber et al. Tasks assignment for Grid computing
Hamadi et al. Boosting distributed constraint satisfaction
Nzanywayingoma et al. Task scheduling and virtual resource optimising in Hadoop YARN-based cloud computing environment
Bragard et al. Synchronisation for dynamic load balancing of decentralised conservative distributed simulation
Gad-Elrab et al. Genetic-Based Task Scheduling Algorithm with Dynamic Virtual Machine Generation in Cloud Computing
Khan et al. Computational performance analysis of cluster-based technologies for big data analytics
Lim et al. A parallel maximal matching algorithm for large graphs using pregel
Ranaweera et al. Non-local data fetch scheme based on delay distribution for Hadoop clusters in public cloud

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170807

R150 Certificate of patent or registration of utility model

Ref document number: 6197791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150