(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-04
(45)【発行日】2023-12-12
(54)【発明の名称】分散処理ノードおよび分散処理システム
(51)【国際特許分類】
G06N 3/098 20230101AFI20231205BHJP
【FI】
G06N3/098
(21)【出願番号】P 2022511456
(86)(22)【出願日】2020-04-02
(86)【国際出願番号】 JP2020015157
(87)【国際公開番号】W WO2021199396
(87)【国際公開日】2021-10-07
【審査請求日】2022-08-01
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【氏名又は名称】山川 政樹
(74)【代理人】
【識別番号】100121669
【氏名又は名称】本山 泰
(72)【発明者】
【氏名】伊藤 猛
(72)【発明者】
【氏名】田仲 顕至
(72)【発明者】
【氏名】有川 勇輝
(72)【発明者】
【氏名】寺田 和彦
(72)【発明者】
【氏名】坂本 健
【審査官】渡辺 順哉
(56)【参考文献】
【文献】国際公開第2019/181374(WO,A1)
【文献】国際公開第2020/003849(WO,A1)
【文献】竹本一馬 ほか,FPGAスイッチを用いたディープラーニングのパラメータ更新の検討,組込みシステムシンポジウム2017論文集,日本,一般社団法人 情報処理学会,2017年08月17日,Vol.2017,pp.13-16
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
学習対象のモデルに学習データを入力した出力結果から損失関数の勾配データを計算し、前記勾配データの集計データに基づいて前記モデルのパラメータを更新するように構成された複数の演算デバイスと、
他の分散処理ノードとの間で前記勾配データを集計するように構成されたインタコネクトデバイスと、
前記複数の演算デバイスおよび前記インタコネクトデバイスと接続されたバスデバイス内に設けられ、前記複数の演算デバイスからの勾配データの処理および前記インタコネクトデバイスからの勾配データの処理のうち少なくとも一方を行うように構成された演算機能部と、
前記複数の演算デバイスと前記バスデバイスとの間の勾配データのDMA転送、および前記バスデバイスと前記インタコネクトデバイスとの間の勾配データのDMA転送を制御するように構成されたDMAコントローラと、
外部から要求された学習ジョブを前記複数の演算デバイスのうちの少なくとも1つに割り当てるように構成された制御部とを備えることを特徴とする分散処理ノード。
【請求項2】
請求項1記載の分散処理ノードにおいて、
前記演算機能部は、学習ジョブ毎に設けられることを特徴とする分散処理ノード。
【請求項3】
請求項2記載の分散処理ノードにおいて、
前記複数の演算デバイスから前記バスデバイスへのDMA転送に関する情報を前記DMAコントローラから取得し、前記学習ジョブの要求に応じて前記演算デバイスによって計算され前記バスデバイスへ転送された勾配データを、前記DMAコントローラから取得した情報に基づいて、前記学習ジョブに対応する前記演算機能部に振り分けるように構成された振り分け部をさらに備えることを特徴とする分散処理ノード。
【請求項4】
請求項2または3記載の分散処理ノードにおいて、
前記複数の演算デバイスから前記バスデバイスへのDMA転送に関する情報を前記DMAコントローラから取得し、取得した情報に基づいて前記バスデバイス内の演算機能部から前記インタコネクトデバイスへのDMA転送の順位とタイミングとを決定するように構成されたスケジューラ部をさらに備えることを特徴とする分散処理ノード。
【請求項5】
請求項1乃至4のいずれか1項に記載の分散処理ノードにおいて、
前記演算機能部に供給されるクロック信号の周波数は、前記インタコネクトデバイスに供給されるクロック信号の周波数よりも高く、
前記演算機能部の動作速度は、前記インタコネクトデバイスの動作速度よりも速いことを特徴とする分散処理ノード。
【請求項6】
請求項1乃至5のいずれか1項に記載の分散処理ノードを複数備えると共に、
前記複数の分散処理ノードを制御するように構成された制御ノードを備え、
前記制御ノードは、
外部からの学習ジョブの要求情報を受け付けるように構成されたジョブ受付部と、
各分散処理ノードのリソース情報を管理するように構成された管理データベース部と、
前記ジョブ受付部からの要求情報と前記管理データベース部で管理されているリソース情報とを基に、学習ジョブを割り当てる演算デバイスの情報を含む制御指示情報を各分散処理ノード向けに作成するように構成された制御指示部とを備え、
各分散処理ノードの制御部は、前記制御指示情報によって指示された自ノードの演算デバイスに学習ジョブを割り当てて学習ジョブを開始させることを特徴とする分散処理システム。
【請求項7】
請求項6記載の分散処理システムにおいて、
各分散処理ノードは、前記モデルのパラメータを格納するように構成されたパラメータ格納部をさらに備え、
前記制御ノードの管理データベース部は、各分散処理ノードのリソース情報とモデルに関する情報とを管理し、
前記制御ノードの制御指示部は、学習ジョブを割り当てる演算デバイスの情報の他に、学習対象のモデルに関する情報とパラメータの情報とを含む前記制御指示情報を作成し、
各分散処理ノードの制御部は、前記制御指示情報に従って自ノードの前記パラメータ格納部から学習対象のモデルのパラメータを読み出すことを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、深層学習等を複数の分散処理ノードで分散協調して実行する分散処理システムに係り、複数の演算デバイス間での集団通信を効率的、かつ高速・低レイテンシに処理することで、情報処理を高速、高効率に処理することが可能な分散処理ノードおよび分散処理システムに関するものである。
【背景技術】
【0002】
近年、シリコンプロセスの微細化の限界によりムーアの法則が適用できない、いわゆるポストムーア時代の到来が言われてきている。このポストムーア時代に向けて、CPU(Central Processing Unit)などの演算デバイスのシリコンプロセス微細化による演算性能限界を打破して、デバイスの演算性能を飛躍的に向上しようとする取り組みが行われている。
【0003】
このような取り組みとして、1つのプロセッサ内に演算コアを複数持たせるマルチコア化のアプローチがある。しかし、マルチコアは、1つのシリコンチップの大きさの限界などのために、単体のプロセッサの飛躍的な性能向上には限界があった。そこで、単体のプロセッサの限界を超えるため、演算デバイスを搭載した複数のサーバを大容量のインタコネクトで接続した分散処理システムを用いることにより、単一のデバイスや単一のサーバでは難しかった高負荷のタスクを高速で処理する分散処理システム技術が注目されつつある。
【0004】
例えば、高負荷のジョブの1例である深層学習では、多層のニューロンモデルからなる学習対象について、各ニューロンモデルの重み(前段のニューロンモデルが出力した値に乗じる係数)を、入力した大量のサンプルデータを用いて更新することにより、推論精度を改善する。
【0005】
通常、推論精度を改善する手法には、ミニバッチ法が用いられている。ミニバッチ法では、サンプルデータ毎に重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて勾配を集計する(サンプルデータ毎に得られた勾配を重み別に合算する)集計処理と、集計した勾配に基づいて各重みを更新する重み更新処理と、を繰り返す。
【0006】
また、分散処理システム技術を適用した分散深層学習では、集計処理を行うために、分散処理ノード毎に得られた分散データを集計処理ノードに集約するための、各分散処理ノードから集計処理ノードへの集約通信と、集計処理ノードでの全ノード集計処理と、集計処理ノードが集計したデータを各分散処理ノードに転送するための、集計処理ノードから分散処理ノードへの分配通信とが必要となる。
【0007】
分散深層学習に必要な処理、特に集約通信や分配通信といった集団通信は、多数回の通信を必要とするが、深層学習の推論精度を向上させるために、重みの個数や入力するサンプルデータの個数を増加させると、通信時間が増加すると共に、深層学習に要する時間が増大する。このため、推論精度を向上させ、なおかつ、深層学習に要する時間を増加さないために、分散処理ノード内に演算デバイスを複数高密度に実装し、分散処理ノード自体の処理性能を向上させるアクセラレーション技術が用いられる。
【0008】
図10はアクセラレーション技術を用いた従来の分散処理システムの1例を示すブロック図である。各分散処理ノード500-1~500-4は、伝送路504によって互いに接続されている。各分散処理ノード500-1~500-4は、それぞれ複数の演算デバイス501と、FPGA(Field Programmable Gate Array)からなるインタコネクトデバイス502と、演算デバイス501とインタコネクトデバイス502とを接続する汎用バス503とを備えている。
【0009】
図10に示すように、分散処理ノード500-1~500-4に複数の演算デバイス501を実装することで、分散処理ノード500-1~500-4の処理性能を向上させようとする場合、集約通信における演算を例えばインタコネクトポートを有するインタコネクトデバイス502のハードウェアによって行わせる。
【0010】
その後、伝送路504によって接続された分散処理ノード500-1~500-4間で、集団通信における演算を各分散処理ノード500-1~500-4に搭載されたインタコネクトデバイス502のハードウェアによって行う。これにより、集団通信の演算を高速に行い、ノード内と同様に分散処理の高速化を実現することができる。
【0011】
しかし、分散処理ノード500-1~500-4内に複数の演算デバイス501を実装した場合、各演算デバイス501から同時に演算結果がノード内の汎用バス503を通してインタコネクトデバイス502へ送られる。このため、インタコネクトデバイス502の入力側で複数の演算デバイス501からのデータ同士の衝突による輻輳が発生し、この輻輳が通信ボトルネックになり、演算性能を劣化させてしまうという問題が生じる。
【0012】
また、ノード内の集団通信を効率的に行う技術として、NCCL(NVIDIA Collective Communications Library)が提案されている(非特許文献1参照)。しかしながら、このNCCLでは、複数の演算デバイスを巡回するようにして演算を行うので、演算デバイスで行う集団通信の処理時間にバラつきがあり、処理能力が低下してしまうという問題があった。
【0013】
また、演算デバイスとインタコネクトデバイス間で汎用バスを介してダイレクトメモリアクセス(DMA:Direct Memory Access)転送によって、ノード内のデータ移動およびノード間のデータ移動を効率化することによって、処理を高速化する技術が提案されている(非特許文献2参照)。しかし、非特許文献2に開示された技術では、複数の演算デバイスからの通信がインタコネクトデバイスに集中してしまう際の輻輳を回避することができず、大幅な処理効率の改善は難しい。
【0014】
このような輻輳を回避する類似技術として、SHARP(Scalable Hierarchical Aggregation and Reduction Protocol)(登録商標)という技術が提案されている(特許文献1参照)。この特許文献1に開示された技術を分散処理システムに適用した場合、分散処理ノード間にスイッチ装置を設置することによりノード間の集団通信での輻輳は回避できるが、ノード内での輻輳による処理低下という問題が残存してしまう。
【先行技術文献】
【特許文献】
【0015】
【非特許文献】
【0016】
【文献】Nathan Luehr,NVIDIA Corporation,“Fast Multi-GPU collectives with NCCL”,2016,<https://devblogs.nvidia.com/fast-multi-gpu-collectives-nccl/>
【文献】Mellanox Technologies Ltd. ,“Mellanox OFED GPUDirect RDMA”,2018,<https://www.mellanox.com/related-docs/prod_software/PB_GPUDirect_RDMA.PDF>
【発明の概要】
【発明が解決しようとする課題】
【0017】
本発明は、上記のような事情を考慮してなされたものであり、演算デバイスを複数搭載した分散処理ノード同士をインタコネクトデバイスで接続した分散処理システムにおいて、分散処理ノード内での通信輻輳を解消し、輻輳による通信ボトルネックや集団通信の演算処理を均一化することで、高効率な分散処理ノードおよび分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【0018】
本発明の分散処理ノードは、学習対象のモデルに学習データを入力した出力結果から損失関数の勾配データを計算し、前記勾配データの集計データに基づいて前記モデルのパラメータを更新するように構成された複数の演算デバイスと、他の分散処理ノードとの間で前記勾配データを集計するように構成されたインタコネクトデバイスと、前記複数の演算デバイスおよび前記インタコネクトデバイスと接続されたバスデバイス内に設けられ、前記複数の演算デバイスからの勾配データの処理および前記インタコネクトデバイスからの勾配データの処理のうち少なくとも一方を行うように構成された演算機能部と、前記複数の演算デバイスと前記バスデバイスとの間の勾配データのDMA転送、および前記バスデバイスと前記インタコネクトデバイスとの間の勾配データのDMA転送を制御するように構成されたDMAコントローラと、外部から要求された学習ジョブを前記複数の演算デバイスのうちの少なくとも1つに割り当てるように構成された制御部とを備えることを特徴とするものである。
【0019】
また、本発明の分散処理ノードの1構成例において、前記演算機能部は、学習ジョブ毎に設けられることを特徴とするものである。
また、本発明の分散処理ノードの1構成例は、前記複数の演算デバイスから前記バスデバイスへのDMA転送に関する情報を前記DMAコントローラから取得し、前記学習ジョブの要求に応じて前記演算デバイスによって計算され前記バスデバイスへ転送された勾配データを、前記DMAコントローラから取得した情報に基づいて、前記学習ジョブに対応する前記演算機能部に振り分けるように構成された振り分け部をさらに備えることを特徴とするものである。
また、本発明の分散処理ノードの1構成例は、前記複数の演算デバイスから前記バスデバイスへのDMA転送に関する情報を前記DMAコントローラから取得し、取得した情報に基づいて前記バスデバイス内の演算機能部から前記インタコネクトデバイスへのDMA転送の順位とタイミングとを決定するように構成されたスケジューラ部をさらに備えることを特徴とするものである。
また、本発明の分散処理ノードの1構成例において、前記演算機能部に供給されるクロック信号の周波数は、前記インタコネクトデバイスに供給されるクロック信号の周波数よりも高く、前記演算機能部の動作速度は、前記インタコネクトデバイスの動作速度よりも速い。
【0020】
また、本発明の分散処理システムは、分散処理ノードを複数備えると共に、前記複数の分散処理ノードを制御するように構成された制御ノードを備え、前記制御ノードは、外部からの学習ジョブの要求情報を受け付けるように構成されたジョブ受付部と、各分散処理ノードのリソース情報を管理するように構成された管理データベース部と、前記ジョブ受付部からの要求情報と前記管理データベース部で管理されているリソース情報とを基に、学習ジョブを割り当てる演算デバイスの情報を含む制御指示情報を各分散処理ノード向けに作成するように構成された制御指示部とを備え、各分散処理ノードの制御部は、前記制御指示情報によって指示された自ノードの演算デバイスに学習ジョブを割り当てて学習ジョブを開始させることを特徴とするものである。
【0021】
また、本発明の分散処理システムの1構成例において、各分散処理ノードは、前記モデルのパラメータを格納するように構成されたパラメータ格納部をさらに備え、前記制御ノードの管理データベース部は、各分散処理ノードのリソース情報とモデルに関する情報とを管理し、前記制御ノードの制御指示部は、学習ジョブを割り当てる演算デバイスの情報の他に、学習対象のモデルに関する情報とパラメータの情報とを含む前記制御指示情報を作成し、各分散処理ノードの制御部は、前記制御指示情報に従って自ノードの前記パラメータ格納部から学習対象のモデルのパラメータを読み出すことを特徴とするものである。
【発明の効果】
【0022】
本発明では、多量の情報処理を行う大規模な分散処理システムにおいて、1つの大きい学習ジョブを高速で処理させる場合や、複数の学習ジョブを高速かつ効率的に処理させる場合において、複数の演算デバイスとインタコネクトデバイス間の汎用バス経路に、集団通信などの演算処理を行うバスデバイスを設け、このバスデバイスに演算機能部を設けて、演算機能部に勾配データの処理を行わせる。したがって、本発明では、処理が行われた勾配データをインタコネクトデバイスに転送しても、インタコネクトデバイスでの輻輳が発生せず、輻輳による待ち時間が発生することがないので、学習ジョブなどの情報処理を高速、高効率に行うことができる。
【図面の簡単な説明】
【0023】
【
図1】
図1は、本発明の第1の実施例に係る分散処理システムの構成を示すブロック図である。
【
図2】
図2は、本発明の第1の実施例に係る分散処理ノードの演算デバイスとDMAコントローラの動作を説明するフローチャートである。
【
図3】
図3は、本発明の第1の実施例に係る分散処理ノードのDMAコントローラの動作を説明するフローチャートである。
【
図4】
図4は、本発明の第1の実施例に係る分散処理ノードのインタコネクトデバイスとDMAコントローラの動作を説明するフローチャートである。
【
図5】
図5は、本発明の第1の実施例に係る分散処理ノードのインタコネクトデバイスとDMAコントローラの動作を説明するフローチャートである。
【
図6】
図6は、本発明の第2の実施例に係る分散処理システムの構成を示すブロック図である。
【
図7】
図7は、本発明の第3の実施例に係る分散処理システムの構成を示すブロック図である。
【
図8】
図8は、本発明の第4の実施例に係る分散処理システムの構成を示すブロック図である。
【
図9】
図9は、本発明の第1~第4の実施例に係る分散処理ノードを実現するコンピュータの構成例を示すブロック図である。
【
図10】
図10は、従来の分散処理システムの構成を示すブロック図である。
【発明を実施するための形態】
【0024】
[第1の実施例]
以下、本発明の実施例について図面を参照して説明する。
図1は本発明の第1の実施例に係る分散処理システムの構成を示すブロック図である。分散処理システム101は、複数の分散処理ノード102と、複数の分散処理ノード102間を接続する伝送路101Aとから構成される。
【0025】
各分散処理ノード102は、GPU(Graphics Processing Unit)などからなる複数の演算デバイス103と、伝送路を介したデータ通信機能を備えたFPGAと光トランシーバとからなるインタコネクトデバイス104と、PCI-Expressなどの汎用バスによって演算デバイス103とのデータ通信を行う機能と演算機能とを備えたFPGAからなるバスデバイス105と、バスデバイス105内に設けられ、演算デバイス103やインタコネクトデバイス104からのデータを処理する演算機能部106とを備えている。
【0026】
また、各分散処理ノード102は、バスデバイス105の演算機能部106に高速なクロック信号を供給する高速クロック部107と、演算デバイス103とバスデバイス105との間のデータのDMA転送、およびバスデバイス105とインタコネクトデバイス104との間のデータのDMA転送を制御するDMAコントローラ108と、外部から要求された学習ジョブを複数の演算デバイス103のうちの少なくとも1つに割り当てる制御部111と、モデルのパラメータを記憶するパラメータ格納部112とを備えている。
【0027】
より具体的には、例えば分散処理ノード102として、Supermicro社製SYS-4028GR-TR2サーバ(以降、単にサーバと称す)を用いる。このサーバのCPUマザーボードには、CPUとしてIntel社製Xeon(登録商標)プロセッサE5-2600V4が2台搭載され、メインメモリとしてDDR4-2400 DIMM(Dual Inline Memory Module)32GBのメモリカードが8枚搭載されている。
【0028】
また、CPUマザーボードには、PCI-Express3.0(Gen3)の16レーンスロットのドーターボードが実装されている。このドーターボードのスロットには、演算デバイス103としてNVIDIA社製のGPUであるV100が4台搭載され、インタコネクトデバイス104としてXillinx社製のVCU118 Evaluationボード1台が搭載されている。さらに、このEvaluationボードには、QSFP28の光トランシーバ2台が搭載されている。分散処理ノード102同士は、光ファイバからなる伝送路101Aによってリング状に接続されている。
【0029】
また、サーバのマザーボードには、バスデバイスとして、PCIeルートコンプレックスデバイスが搭載されている。しかし、このPCIeルートコンプレックスデバイスには、演算デバイス間の集団通信に必要な加算処理などの演算機能が搭載されていない。そこで、本実施例では、PCIeルートコンプレックスデバイスに演算機能部106の機能を付与したデバイスをバスデバイス105として用いる。
【0030】
また、サーバでは、通常、100MHzのクロック信号がPCIeルートコンプレックスデバイスに供給される。本実施例では、高速クロック部107を新たに設けることにより、500MHzのクロック信号を高速クロック部107からバスデバイス105の演算機能部106に供給する。
【0031】
また、マザーボードに搭載されているDMAコントローラ108としては、バスデバイス105を介しても動作するように変更したものが搭載されている。なお、
図1では、DMAコントローラ108をインタコネクトデバイス104の外部に配置しているが、インタコネクトデバイス104を構成するFPGAの内部にDMAコントローラ108を設けるようにしてもよい。
【0032】
また、サーバには、OS(Operating System)をインストールするための記憶媒体として480GB容量のSSD(Solid State Drive)が搭載されている。OSとしては、Ubuntu18.04LTEを使用する。このOSには、後述する演算フレームワークが組み込まれている。
【0033】
図1の分散処理システム101を用いて、従来技術の動作と対比させながら、本実施例の動作を説明する。ここでは、画像データベースであるimagenet(http://www.image-net.org/)に蓄積されている画像を分類するAI(Artificial Intelligence)の分散深層学習を、学習モデルの1つであるResnet50を用いて行う場合を例に挙げて説明する。なお、深層学習プラットフォームとしてはTensor Flowベースのものを用いることとする。
【0034】
本発明では、深層学習で実行されるジョブを学習ジョブと称する。ユーザが同じでも学習ジョブが異なる場合が有り得る。
【0035】
制御部111は、例えばCPUから構成される。制御部111は、例えばTensor Flowベースの深層学習プラットフォームなどのソフトウエアに従って、数学モデルをソフトウェア的に構築する機能と、学習対象のモデルのパラメータ(重みなど)をパラメータ格納部112から読み出す機能と、モデルのパラメータをパラメータ格納部112に書き込む機能と、リソース、すなわち空いている演算デバイスを確保して演算デバイス103に学習ジョブを割り当てる機能と、外部から画像データ等の学習データを読み出して演算デバイス103に渡す機能などを備えている。
インタコネクトデバイス104は、他の分散処理ノード102との間でデータを集計する。
【0036】
図2は分散処理ノード102とDMAコントローラ108の動作を説明するフローチャートである。
分散処理ノード102の各演算デバイス103は、imagenetの画像データを制御部111を介して受け取り、自ノード内の学習対象のモデル(Resnet50のニューラルネットワーク)の複数の重みの各々についてモデルの損失関数の勾配を計算して、画像データ毎の勾配を集計した勾配データを重み毎に生成する(
図2ステップS100)。
【0037】
モデルの重み、モデルの性能の悪さを示す指標である損失関数、および損失関数の勾配については周知の技術であるので、詳細な説明は省略する。本実施例では、例えばミニバッチサイズ32枚分に対して学習ジョブのタスクの1つである勾配計算処理を行うものとする。
【0038】
DMAコントローラ108は、各演算デバイス103における勾配計算処理の終了後、各演算デバイス103によって計算された勾配データを自ノードのバスデバイス105の演算機能部106を経由してインタコネクトデバイス104内のメモリ1040にDMA転送する(
図2ステップS101)。このDMA転送については後述する。
【0039】
図3は分散処理ノード102のDMAコントローラ108の動作を説明するフローチャートである。
各分散処理ノード102の演算デバイス103によって勾配データが生成されると(
図3ステップ200)、この勾配データは、重み毎にバスデバイス105の演算機能部106へDMA転送される(
図3ステップ201)。
各分散処理ノード102のバスデバイス105の演算機能部106は、自ノードのDMAコントローラ108によって自ノードの全ての演算デバイス103からの勾配データがDMA転送されると(
図3ステップS202)、受信した勾配データの和を重み毎に求める(
図3ステップS203)。
【0040】
DMAコントローラ108は、演算機能部106によって加算された勾配データを自ノードのインタコネクトデバイス104のメモリ1040にDMA転送する(
図3ステップS204)。
【0041】
図10に示した従来の技術では、各演算デバイス501からの勾配データがインタコネクトデバイス502(FPGA)に集約され、インタコネクトデバイス502が加算処理を行う。各演算デバイス501からのデータの大きさが100MB、演算デバイス501とインタコネクトデバイス502とを接続するバス503の実行帯域が10GB/sとすると、1つの演算デバイス501からインタコネクトデバイス502へのデータ転送に10msecかかる。
【0042】
したがって、従来の技術では、インタコネクトデバイス502での輻輳により、単一の演算デバイスからのデータ転送に比べ、輻輳によって30msec転送に余分に時間がかかってしまう。以降、この余分の時間を待ち時間と称する。
【0043】
これに対して、本実施例によれば、4つの演算デバイス103から転送された勾配データをバスデバイス105の演算機能部106に集約して加算処理を行う。このため、4つの演算デバイス103から勾配データが同時にバスデバイス105に入力された場合、演算機能部106によって加算処理が行われた後は、データ量が1/4に圧縮される。
【0044】
したがって、加算処理が行われた勾配データをインタコネクトデバイス104に転送しても、インタコネクトデバイス104での輻輳が発生しないため、輻輳による待ち時間が発生しない。例えば、バスデバイス105の演算機能部106において演算処理に40サイクルかかったとすると、処理時間は80nsecである。この処理時間は、従来発生していた待ち時間に対して極めて小さい時間になる。
【0045】
次に、インタコネクトデバイス104を介して各分散処理ノード102間で勾配データが更に集約され、加算処理される。
図4は各分散処理ノード102のうち規定の親ノードのインタコネクトデバイス104とDMAコントローラ108の動作を説明するフローチャート、
図5は各分散処理ノード102のうち親ノード以外の子ノードのインタコネクトデバイス104とDMAコントローラ108の動作を説明するフローチャートである。
【0046】
親ノードのインタコネクトデバイス104は、自ノードのDMAコントローラ108によって勾配データがDMA転送されると(
図4ステップS300においてYES)、この勾配データを伝送路101Aを介して次の番号の子ノード(例えば時計回りの方向の子ノード)にDMA転送する(
図4ステップS301)。
【0047】
子ノードのインタコネクトデバイス104は、隣接する親ノードまたは子ノード(例えば反時計回りの方向の親ノードまたは子ノード)から勾配データを受信すると(
図5ステップS400においてYES)、受信した勾配データと自ノードのDMAコントローラ108によってDMA転送された勾配データとの和を重み毎に求める(
図5ステップS401)。
【0048】
そして、子ノードのインタコネクトデバイス104は、加算処理した勾配データを伝送路101Aを介して次の番号のノード(例えば時計回りの方向のノード)にDMA転送する(
図5ステップS402)。
【0049】
図5のステップS400~S402の処理が伝送路101Aによってリング状に接続された各子ノードにおいて順番に行われることにより、各分散処理ノード102の勾配データを加算した結果が得られる。以降、各分散処理ノード102での加算処理が終了した勾配データを集計データと称する。
【0050】
親ノードのインタコネクトデバイス104は、隣接する子ノード(例えば反時計回りの方向の子ノード)から集計データを受信すると(
図4ステップS302においてYES)、受信した集計データを次の番号の子ノード(例えば時計回りの方向の子ノード)にDMA転送する(
図4ステップS303)。
【0051】
親ノードのDMAコントローラ108は、隣接する子ノードから自ノードのインタコネクトデバイス104が受信した集計データをインタコネクトデバイス104内のメモリ1040から演算デバイス103へのDMA転送をトリガとして、まず自ノードのバスデバイス105にDMA転送する(
図4ステップS304)。
【0052】
子ノードのインタコネクトデバイス104は、隣接する親ノードまたは子ノード(例えば反時計回りの方向の親ノードまたは子ノード)から集計データを受信すると(
図5ステップS403においてYES)、受信した集計データを次の番号の子ノード(例えば時計回りの方向の子ノード)にDMA転送する(
図5ステップS404)。
【0053】
子ノードのDMAコントローラ108は、隣接する親ノードまたは子ノードから自ノードのインタコネクトデバイス104が受信した集計データをインタコネクトデバイス104内のメモリ1040から演算デバイス103へのDMA転送をトリガとして、まず自ノードのバスデバイス105にDMA転送する(
図5ステップS405)。
こうして、集計データは、分配通信によって各分散処理ノード102で共有される。
【0054】
次に、各分散処理ノード102のDMAコントローラ108は、自ノードのインタコネクトデバイス104からバスデバイス105に転送した集計データを、自ノードの各演算デバイス103にDMA転送する(
図3ステップS205,S206)。
【0055】
演算デバイス103は、自ノードのDMAコントローラ108によって集計データがDMA転送されると(
図2ステップS102においてYES)、集計データに基づいて、自ノード内のモデル(Resnet50のニューラルネットワーク)の重みを更新する重み更新処理を行う(
図2ステップS103)。更新対象の重みは、パラメータ格納部112に格納されている。
【0056】
重み更新処理においては、例えば集計データが示す、損失関数の勾配に基づいて損失関数が最小になるように重みを更新すればよい。重みの更新は周知の技術であるので、詳細な説明は省略する。
【0057】
重み更新処理の終了により、1回の学習が終了する。各分散処理ノード102は、imagenetの新たな画像データを用いて学習を行う。こうして、学習を繰り返すことにより、モデルの推論精度を向上させる。
【0058】
以上のように、本実施例では、複数の演算デバイス103によって計算された勾配データをバスデバイス105内に集約して集団通信に必要な演算を行うので、インタコネクトデバイスでの輻輳による待ち時間が発生することがない。また、本実施例では、複数の演算デバイスを巡回して演算を行う必要がないので、処理時間のバラつきを抑制することができる。その結果、本実施例では、高速、低レイテンシ、かつ安定な処理を実現することが可能となる。
【0059】
本実施例では、インタコネクトデバイス104内の加算処理(ステップS401)についても、ノード間を接続する伝送仕様である100Gイーサネット(登録商標)で用いられる分周クロックの周波数195.3125MHzに縛られることなく、これより高い周波数のクロック信号を用いることが可能である。このような高い周波数のクロック信号を用いることにより、ノード間の集団通信に伴う加算処理に要する時間も短くなり、全体の処理時間の更なる短縮化が可能となるのは言うまでもない。
【0060】
本実施例の1つのポイントは、演算機能部106に高速なクロック信号を供給する高速クロック部107を分散処理ノード102内に設けることにより、従来のようにインタコネクトデバイスでノード内加算処理を行う場合に比べて演算処理時間を短くできる点である。
【0061】
例えば、従来のインタコネクトデバイスでの加算処理と本実施例の演算機能部106での加算処理において、1クロックで処理するビット幅が共に512ビットとする。この512ビット幅の加算処理は、32ビットの浮動小数点の加算処理を行う加算器を用いる場合、加算器を16個並列に設けることになる。従来のインタコネクトデバイスでの加算処理のビット幅と本実施例の演算機能部106での加算処理のビット幅が同じ場合、1クロックの周波数によって処理速度に差が生じる。
【0062】
本実施例では、高速クロック部107から演算機能部106に供給されるクロック信号の周波数が500MHzであり、インタコネクトデバイス104内のクロック信号の周波数が195.3125MHzである。したがって、インタコネクトデバイスでノード内加算処理を行う場合と比較して、演算機能部106の処理速度は2.62倍速くなり、ノード内加算処理による処理遅延を、インタコネクトデバイスで加算処理を行う場合よりも短縮化できる。このような処理遅延の短縮化は、バスデバイス105の演算機能部106の処理速度がインタコネクトデバイス104の処理速度以上の場合で効果を発揮することになる。
【0063】
次に、演算デバイス103とインタコネクトデバイス104間でのDMA転送について、詳細に説明する。勾配データを分散処理ノード102内や分散処理ノード102間で転送するための集約通信や、集計データを各分散処理ノード102に分配するための分配通信では、高速にデータを移動させる必要がある。
【0064】
このため、分散処理ノード102内では、演算デバイス103とバスデバイス105間、およびバスデバイス105とインタコネクトデバイス104間において、各デバイスに内蔵されるメモリ領域を固定化して、それぞれの固定したメモリアドレスどうしでデータ転送を行うDMA転送技術が用いられる。同様に、各分散処理ノード102のインタコネクトデバイス104間においてもDMA転送技術が用いられる。
【0065】
本実施例では、各演算デバイス103での演算終了後、バスデバイス105へDMA転送された勾配データが加算された後に、インタコネクトデバイス104のメモリ1040へDMA転送される。従来の集団通信の場合には、4つの演算デバイスからそれぞれインタコネクトデバイスの異なるメモリ領域に勾配データをDMA転送するので、メモリ領域が4つ必要となる。
【0066】
一方、本実施例では、勾配データをバスデバイス105で加算した後にインタコネクトデバイス104へDMA転送するので、従来のDMA用に割り当てられた4つのメモリ領域の内、3つにはデータ転送が不要となり、インタコネクトデバイス104のメモリ領域が無駄になる。
【0067】
そこで、本実施例のDMAコントローラ108は、バスデバイス105によって加算処理された勾配データを、インタコネクトデバイス104内の1つのメモリ領域にDMA転送すればよい。こうして、インタコネクトデバイス104にバスデバイス105からのDMA転送用のメモリ領域を4つ持たせる必要がなくなり、メモリ領域の効率的な利用が可能となる。インタコネクトデバイス104のメモリ領域の効率的利用によって分散処理システム101での更なる効率化を図ることができる。このような効率化は、以降の実施例で説明するように、ユーザが増加し、複数の学習ジョブが並列で行われる際にも効果を発揮する。
【0068】
[第2の実施例]
次に、本発明の第2の実施例について説明する。
図6は本発明の第2の実施例に係る分散処理システムの構成を示すブロック図である。本実施例の分散処理システム201は、複数の分散処理ノード202と、複数の分散処理ノード202間を接続する伝送路201Aとから構成される。
【0069】
各分散処理ノード202は、GPUなどからなる複数の演算デバイス203a,203bと、伝送路を介したデータ通信機能を備えたFPGAと光トランシーバとからなるインタコネクトデバイス204と、汎用バスによって演算デバイス203a,203bとのデータ通信を行う機能と演算機能とを備えたFPGAからなるバスデバイス205と、バスデバイス205内に設けられ、演算デバイス203a,203bやインタコネクトデバイス204からのデータを処理する複数の学習ジョブ別の演算機能部206a,206bとを備えている。
【0070】
また、各分散処理ノード202は、演算機能部206a,206bに高速なクロック信号を供給する高速クロック部207と、演算デバイス203a,203bとバスデバイス205との間のデータのDMA転送、およびバスデバイス205とインタコネクトデバイス204との間のデータのDMA転送を制御するDMAコントローラ208と、バスデバイス205内に設けられ、演算機能部206a,206bからインタコネクトデバイス204へのDMA転送の順位とタイミングとを決定するスケジューラ部209と、外部から要求された学習ジョブを複数の演算デバイス203a,203bのうちの少なくとも1つに割り当てる制御部211と、モデルのパラメータを記憶するパラメータ格納部212とを備えている。
【0071】
第1の実施例との差分は、複数の演算デバイス203aと複数の演算デバイス203bとが異なる学習ジョブを行うことと、演算デバイス203a用の演算機能部206aと演算デバイス203b用の演算機能部206bとスケジューラ部209とがバスデバイス205に設けられていることである。4つの演算デバイス203aは演算機能部206aと固定的に接続され、2つの演算デバイス203bは演算機能部206bと固定的に接続されている。
【0072】
次に、本実施例の分散処理システム201の動作を説明する。本実施例においても、分散処理システム201の処理の流れは第1の実施例と同様であるので、
図2~
図5の符号を用いて説明する。
【0073】
インタコネクトデバイス204には、メモリ2040内に演算デバイス203a用のメモリ領域2040aと、演算デバイス203b用のメモリ領域2040bとが用意されている。
【0074】
各分散処理ノード202のDMAコントローラ208は、演算デバイス203aでの勾配計算処理の終了後(
図2ステップS100)、各演算デバイス203aによって計算された勾配データを自ノードのバスデバイス205の演算機能部206aを経由してインタコネクトデバイス204内のメモリ2040aにDMA転送する(
図2ステップS101)。
【0075】
2つの演算デバイス203bでは、演算デバイス203aと異なる学習ジョブが行われる。異なる学習ジョブの例としては、例えば異なる画像データを用いてモデルに学習させたり、同じ画像データを用いて複数のモデルを学習させたりすること等がある。
【0076】
DMAコントローラ208は、演算デバイス203bでの勾配計算処理の終了後、各演算デバイス203bによって計算された勾配データを自ノードのバスデバイス205の演算機能部206bを経由してインタコネクトデバイス204内のメモリ2040bにDMA転送する(ステップS101)。
【0077】
各分散処理ノード202のバスデバイス205の演算機能部206aは、DMAコントローラ208によって勾配データがDMA転送されると(
図3ステップS202においてYES)、受信した勾配データの和を重み毎に求める(
図3ステップS203)。同様に、演算機能部206bは、DMAコントローラ208によって勾配データがDMA転送されると、受信した勾配データの和を重み毎に求める(ステップS203)。
【0078】
各分散処理ノード202のDMAコントローラ208は、自ノードの演算機能部206aによって加算された勾配データを自ノードのインタコネクトデバイス204のメモリ領域2040aにDMA転送する(
図3ステップS204)。同様に、DMAコントローラ208は、自ノードの演算機能部206bによって加算された勾配データを自ノードのインタコネクトデバイス204のメモリ領域2040bにDMA転送する(ステップS204)。
【0079】
本実施例では、このようなステップS204のDMA転送が実施される際に、どの演算機能部によって加算処理された勾配データをどのようなタイミングでインタコネクトデバイス204へ転送するかをスケジューラ部209によって制御する。
ここでは、4つの演算デバイス203aでの勾配計算処理の終了後に、2つの演算デバイス203bでの勾配計算処理が終了する場合について説明する。
【0080】
バスデバイス205内のスケジューラ部209は、演算デバイス203aまたは203bからバスデバイス205の演算機能部206aまたは206bへのDMA転送に関する情報をDMAコントローラ208から取得して記憶している。DMA転送に関する情報としては、DMA転送したデータサイズ、DMA転送のタイミング情報、演算デバイス203aまたは203bの学習ジョブのID(identification)などがある。
【0081】
スケジューラ部209は、これらのDMA転送に関する情報を、学習ジョブのID毎(演算機能部毎)に記憶している。また、スケジューラ部209は、演算機能部206a,206bのそれぞれの処理に要する時間を記憶している。
【0082】
スケジューラ部209は、DMA転送に関する情報と演算機能部206a,206bの処理時間の情報とを基に、演算機能部206a,206bのうちのどちらから勾配データをインタコネクトデバイス204に転送するかを決定する。
【0083】
例えば、4つの演算デバイス203aからの勾配データが先に演算機能部206aに到達し、加算処理が開始されたものの、処理時間が長く、2つの演算デバイス203bからの勾配データを処理する演算機能部206bの方が処理が早く終わると予想されるものとする。この場合、スケジューラ部209は、演算機能部206aによって加算処理される勾配データよりも、演算機能部206bによって加算処理される勾配データを先にインタコネクトデバイス204に転送するよう、DMAコントローラ208に通知する。
【0084】
こうして、本実施例では、勾配データのDMA転送が途中で停止してしまうような事態を回避することができ、DMAコントローラ208による確実なDMA転送が可能となる。したがって、本実施例では、複数の学習ジョブを効率的かつ安定的に処理することが可能となる。
【0085】
演算機能部206a,206b、インタコネクトデバイス204の動作は、第1の実施例の演算機能部106、インタコネクトデバイス104の動作と同様である。演算デバイス203a,203bによって生成される勾配データには、学習ジョブのIDが付加されている。したがって、演算機能部206a,206bとインタコネクトデバイス204とは、学習ジョブ別に第1の実施例で説明した処理を行うことができる。
【0086】
なお、スケジューラ部209は、加算処理が早く終わると予想される演算機能部ではなく、予め学習ジョブの種類に対して定められた優先順位の情報に基づいて学習ジョブ毎の演算機能部のDMA転送順位を決定するようにしてもよい。
【0087】
[第3の実施例]
次に、本発明の第3の実施例について説明する。
図7は本発明の第3の実施例に係る分散処理システムの構成を示すブロック図である。本実施例の分散処理システム301は、複数の分散処理ノード302と、複数の分散処理ノード302間を接続する伝送路301Aとから構成される。
【0088】
各分散処理ノード302は、GPUなどからなる複数の演算デバイス303-1~303-6と、伝送路を介したデータ通信機能を備えたFPGAと光トランシーバとからなるインタコネクトデバイス304と、汎用バスによって演算デバイス303-1~303-6とのデータ通信を行う機能と演算機能とを備えたFPGAからなるバスデバイス305と、バスデバイス305内に設けられ、演算デバイス303-1~303-6やインタコネクトデバイス304からのデータを処理する複数の演算機能部306a,306bとを備えている。
【0089】
また、各分散処理ノード302は、演算機能部306a,306bに高速なクロック信号を供給する高速クロック部307と、演算デバイス303-1~303-6とバスデバイス305との間のデータのDMA転送、およびバスデバイス305とインタコネクトデバイス304との間のデータのDMA転送を制御するDMAコントローラ308と、バスデバイス305内に設けられ、演算機能部306a,306bからインタコネクトデバイス304へのDMA転送の順位とタイミングとを決定するスケジューラ部309とを備えている。
【0090】
さらに、各分散処理ノード302は、バスデバイス305内に設けられ、学習ジョブの要求に応じて演算デバイス303-1~303-6によって計算されバスデバイス305へ転送された勾配データを、学習ジョブに対応する演算機能部306a,306bに振り分ける振り分け部310と、外部から要求された学習ジョブを複数の演算デバイス303-1~303-6のうちの少なくとも1つに割り当てる制御部311と、モデルのパラメータを記憶するパラメータ格納部312とを備えている。
【0091】
インタコネクトデバイス304には、メモリ3040内に演算デバイス303a用のメモリ領域2040aと、演算デバイス303b用のメモリ領域2040bとが用意されている。
【0092】
第2の実施例との差分は、各演算デバイス303-1~303-6への学習ジョブの割り当てが固定されていないことと、各演算デバイス303-1~303-6からの勾配データを転送元の演算デバイスの学習ジョブに対応する演算機能部206aまたは206bに振り分ける振り分け部310がバスデバイス305に設けられていることである。
【0093】
次に、本実施例の分散処理システム301の動作を説明する。ここでは、分散処理ノード302内で異なる学習ジョブが同時期に実行され、分散処理ノード302間で分散深層学習などの情報処理を行う場合について動作を説明する。本実施例においても、分散処理システム301の処理の流れは第1の実施例と同様であるので、
図2~
図5の符号を用いて説明する。
【0094】
例えば、新たなユーザから学習ジョブの要求があった段階で、分散処理ノード302の制御部311は、空きリソース、すなわち学習ジョブが割り当てられていない演算デバイス303-1~303-6を探索する。
【0095】
図7の例では、6つの演算デバイス303-1~303-6の内、演算デバイス303-1,303-3,303-4,303-6で既に学習ジョブ(以降、学習ジョブa)が行なわれているものとする。したがって、演算デバイス303-2,303-5が空きリソースとなっている。このため、制御部311は、演算デバイス303-2,303-5に新たな学習ジョブ(以降、学習ジョブb)を割り当てる。
【0096】
本実施例では、学習ジョブaでの集団通信に必要な演算機能(4つの演算デバイスからの勾配データの加算処理機能)が演算機能部306aに実装され、学習ジョブbでの集団通信に必要な演算機能(2つの演算デバイスからの勾配データの加算処理機能)が演算機能部306bに実装されているものとする。
【0097】
各分散処理ノード302のDMAコントローラ308は、自ノードの各演算デバイス303-1~303-6での勾配計算処理の終了後、各演算デバイス303-1~303-6によって計算された勾配データを自ノードのバスデバイス305を経由してインタコネクトデバイス304内のメモリ3040にDMA転送する(
図2ステップS101)。
【0098】
このとき、振り分け部310は、演算デバイス303-1~303-6からバスデバイス305へのDMA転送に関する情報をDMAコントローラ308から取得する。DMA転送に関する情報としては、DMA転送したデータサイズ、DMA転送のタイミング情報、演算デバイス303-1~303-6の学習ジョブのID、DMA転送に用いたバスのIDなどがある。
【0099】
振り分け部310は、DMAコントローラ308から取得した情報に基づいて演算デバイス303-1~303-6によって計算された勾配データを演算機能部306aまたは306bに振り分ける。
【0100】
具体的には、振り分け部310は、学習ジョブaを行う演算デバイス303-1,303-3,303-4,303-6によって計算された勾配データを、学習ジョブaに対応する演算機能部306aに振り分ける。また、振り分け部310は、学習ジョブbを行う演算デバイス303-2,303-5によって計算された勾配データを、学習ジョブbに対応する演算機能部306bに振り分ける。
【0101】
本実施例では、振り分け部310によって勾配データの振り分けを行うことで、複数のユーザ、すなわち複数の学習ジョブが分散処理システムを共有する場合、学習ジョブの数や必要なリソース量によって異なる場合であってもこのような振り分けを行うことで、複数のユーザ、すなわち、複数の学習ジョブが分散処理システムを共有する場合、学習ジョブに必要なリソース量が学習ジョブによって異なる場合であっても、異なる学習ジョブによる勾配データが混在することがないので、複数の学習ジョブを効率的かつ安定的に処理することが可能となる。
【0102】
演算機能部306a,306b、スケジューラ部309、インタコネクトデバイス304の動作は、第2の実施例の演算機能部206a,206b、スケジューラ部209、インタコネクトデバイス204の動作と同じである。
【0103】
なお、第2、第3の実施例では、6つの演算デバイスと2つの演算機能部が設けられている場合を例に挙げて説明しているが、これら演算デバイスや演算機能部の数は第2、第3の実施例に限定されることは無い。
【0104】
また、第1~第3の実施例の演算機能部106,206a,206b,306a,306bに実装される演算機能としては、Allreduceと呼ばれる集団通信処理に必要な演算機能を想定している。
【0105】
しかし、アプリケーションに応じて例えば勾配データを集約するreduceと呼ばれる処理や、結果を全てのノードに分配するall-gatherと呼ばれる処理に必要な演算機能であってもよい。また、演算機能部106,206a,206b,306a,306bに実装される演算機能は、集団通信に必要な演算機能でなくてもよい。また、演算機能部106,206a,206b,306a,306bは、機能別に複数に分かれていてもよい。
【0106】
また、演算機能部106,206a,206b,306a,306bを有するバスデバイス105,205,305は、単数でなくてもよく、複数、すなわち複数の汎用バスに対してそれぞれ実装されていてもよい。また、複数のバスデバイスが各々、独立したインタコネクトデバイスに接続されていてもよい。
【0107】
なお、第1~第3の実施例において、演算デバイス103,203a,203b,303-1~303-6と演算機能部106,206a,206b,306a,306bとインタコネクトデバイス104,204,304との接続構成は階層型である。ただし、演算デバイスの数が演算機能部の数以上で、かつ演算機能部の数がインタコネクトデバイスの数以上という制約は無い。
【0108】
例えば、4つの演算デバイスからの勾配データを演算機能部で分配する場合は、演算デバイスの数が4、演算機能部の数が1、インタコネクトデバイスの数が4という実装も可能である。
【0109】
なお、第1~第3の実施例では、演算デバイス103,203a,203b,303-1~303-6からインタコネクトデバイス104,204,304の方向への転送について説明したが、逆方向でも同様の機能があってよい。
【0110】
例えば、分散処理ノード間で加算された集計データを各分散処理ノード内の演算デバイスで共有する場合、演算機能部の機能として、コピー機能が備わっていれば、DMAコントローラから取得した転送先の演算デバイスの情報に基づいて、演算機能部でコピーした集計データを指定の演算デバイスの固定メモリ領域にDMA転送することができる。これにより、逆方向の機能を実現することができる。また、コピー機能は演算機能部ではなく、振り分け部にあってもよい。
【0111】
[第4の実施例]
次に、本発明の第4の実施例について説明する。
図8は本発明の第4の実施例に係る分散処理システムの構成を示すブロック図である。本実施例の分散処理システム401は、複数の分散処理ノード402-1~402-4と、複数の分散処理ノード402-1~402-4間を接続する伝送路401Aと、分散処理ノード402-1~402-4を制御する制御ノード413と、制御ノード413と各分散処理ノード402-1~402-4とを接続する制御網414とから構成される。
【0112】
各分散処理ノード402-1~402-4は、複数の演算デバイス303-1~303-6と、インタコネクトデバイス304と、バスデバイス305と、バスデバイス305内に設けられた複数の演算機能部306a,306bと、高速クロック部207と、DMAコントローラ308と、スケジューラ部309と、振り分け部310と、制御部311と、パラメータ格納部312とを備えている。
【0113】
第1~第3の実施例との差分は、例えば分散処理ノード402-1がビルAに設置され、分散処理ノード402-2がビルBに設置され、分散処理ノード402-3がビルCに設置され、分散処理ノード402-4がビルDに設置されている、というように各分散処理ノード402-1~402-4が異なる建物に設置されていることと、各分散処理ノード402-1~402-4での処理タイミングの同期やシステム全体の管理などのために制御ノード413が設けられていることである。
【0114】
上述した構成を基に、分散深層学習における学習処理を例にとって、本実施例の動作を説明する。第3の実施例と同様に、ビルAに設置されている分散処理ノード402-1では、6つの演算デバイス303-1~303-6の内、演算デバイス303-1,303-3,303-4,303-6で既に学習ジョブaが行なわれているものとする。この状態で、新たな学習ジョブbを実行する場合について説明する。
【0115】
第3の実施例の構成では、他の分散処理ノード、例えば、ビルBに設置されている分散処理ノード402-2の状態は、分散処理ノード402-1からは分からない。このため、本実施例では、各分散処理ノード402-1~402-4と接続される制御ノード413を設けている。
【0116】
制御ノード413は、ユーザから学習ジョブの要求を受け付けるジョブ受付部415と、各分散処理ノード402-1~402-4のリソース情報とモデルに関する情報と学習データに関する情報などを保持・管理する管理データベース部416と、各分散処理ノード402-1~402-4に指示を与える制御指示部417とを備えている。この制御ノード413により分散処理システム401を制御する。
【0117】
ユーザからの新たな学習ジョブbの要求情報は、制御ノード413のジョブ受付部415で受け付けられる。この要求情報には、学習対象のモデルに関する情報、演算データ種別、要求リソース量などの情報が含まれる。
【0118】
制御指示部417は、ジョブ受付部415からの要求情報と管理データベース部416で管理されている情報とを基に、各分散処理ノード402-1~402-4への制御指示情報を作成する。この制御指示情報には、学習対象のモデルに関する情報、演算に必要なデータ、モデルのパラメータの情報、学習ジョブを割り当てる演算デバイスの情報などが含まれる。
【0119】
各分散処理ノード402-1~402-4の制御部311は、制御ノード413の制御指示部417から制御網414を介して制御指示情報を受信すると、この制御指示情報に基づいてリソースを確保する。すなわち、制御部111は、制御指示情報によって指示された自ノードの演算デバイス303に学習ジョブを割り当てる。
【0120】
また、制御部111は、リソースの確保の他に、学習対象のモデルのパラメータの読み出しや学習データの読み出しなどの準備を行う。こうして、学習対象のモデルのパラメータをパラメータ格納部312から読み出すことにより、演算デバイス303に学習ジョブを開始させることが可能となる。
【0121】
上記の例では、ビルAに設置されている分散処理ノード402-1の6つの演算デバイス303-1~303-6の内、演算デバイス303-1,303-3,303-4,303-6で既に学習ジョブaが行なわれている。
【0122】
そこで、制御ノード413の制御指示部417は、分散処理ノード402-1の6つの演算デバイス303-1~303-6の内、学習ジョブaが割り当てられていない演算デバイス303-2,303-5と、分散処理ノード402-2の6つの演算デバイス303-1~303-6の内、学習ジョブaが割り当てられていない演算デバイス303-3,303-4,303-5とに学習ジョブbを割り当てることを決定する。
【0123】
分散処理ノード402-1の制御部111は、制御ノード413の制御指示部417からの制御指示情報によって指示された自ノードの演算デバイス303-2,303-5に学習ジョブbを割り当てる。同様に、分散処理ノード402-2の制御部111は、制御指示情報によって指示された自ノードの演算デバイス303-3,303-4,303-5に学習ジョブbを割り当てる。
【0124】
演算機能部306a,306b、スケジューラ部309、振り分け部310、インタコネクトデバイス304の動作は、第3の実施例と同じである。各分散処理ノード402-1~402-4の演算デバイス303-1~303-6によって生成される勾配データには、学習ジョブのIDが付加されている。
【0125】
したがって、演算機能部306a,306bとスケジューラ部309と振り分け部310とインタコネクトデバイス304とは、学習ジョブ別に第1~第3の実施例で説明した処理を行うことができる。こうして、学習ジョブaに対する分散処理とは別に、学習ジョブbに対する分散処理が行われる。
【0126】
学習ジョブaの分散処理が終了すると、更新処理の結果、すなわち更新されたモデルのパラメータがパラメータ格納部312に書き込まれると共に、学習ジョブaが完了したことを示す情報が制御部311から制御ノード413の管理データベース部416に送られる。
【0127】
同様に、学習ジョブbの分散処理が終了すると、更新処理の結果がパラメータ格納部312に書き込まれ、学習ジョブbが完了したことを示す情報が制御部311から制御ノード413の管理データベース部416に送られる。こうして、分散処理システム401は、次の新たな学習ジョブの待機状態となる。
【0128】
以上説明したように、本実施例では、制御ノード413からの指示に従って各分散処理ノード402-1~402-4が分散処理を行うので、地理的に離れたビルにある分散処理ノード402-1~402-4間で、効率的に分散処理を行うことができる。
【0129】
また、各分散処理ノード402-1~402-4にパラメータ格納部312を設けることにより、例えば分散処理ノードが設置されたエリアでバースト的に発生したセンサ情報などの学習データを用いる学習ジョブの要求が発生したときに、モデルの学習を行った結果をパラメータ格納部312に格納することができる。したがって、処理すべき学習ジョブの要求が再び発生したときには、前回の学習ジョブで得られたパラメータをパラメータ格納部312から得ることができ、このパラメータを利用してモデルの学習が可能となる。
【0130】
本実施例では、分散処理ノード402-1~402-4の構成として第3の実施例の分散処理ノードの構成を用いたが、第1、第2の実施例の分散処理ノードの構成を用いてもよいことは言うまでもない。
【0131】
第1~第4の実施例では、演算デバイス103,203a,203b,303-1~303-6の例として、GPUを例に挙げて説明したが、これに限るものではなく、演算デバイス103,203a,203b,303-1~303-6として、CPU、FPGA、量子演算デバイス、人工知能(ニューロン)チップなどを用いてもよい。
【0132】
なお、上記の文中のDMA転送に関する固定とは、DMA転送が行われるメモリに関し、設定によりメモリのスワップアウトが防止されることを意味している。このため、固定メモリは、ユーザがメモリの特定領域を独占してメモリを利用できることであり、設定により、他のユーザとメモリ領域を共有する場合や、他のユーザのDMA用のメモリ領域として、変更することも可能である。DMA転送に関する固定とは、あらかじめ特定のメモリ領域が固定されていて、変更できないことを意味するものではない。
【0133】
第1~第4の実施例で説明した分散処理ノードの各々は、CPU、GPU等の演算部と記憶装置とインタフェースとを備えたコンピュータと、これらのハードウェア資源を制御するプログラムと、FPGAとによって実現することができる。このコンピュータの構成例を
図9に示す。コンピュータは、演算部600と、記憶装置601と、FPGA603とを備えている。分散処理ノードの各々のCPU、GPU等の演算部600は、各々の記憶装置601に格納されたプログラムに従って第1~第4の実施例で説明した処理を実行する。同様に、制御ノード413についても、コンピュータによって実現することができる。
【産業上の利用可能性】
【0134】
本発明は、深層学習を複数のノードで分散協調して実行する分散処理システムに適用することができる。
【符号の説明】
【0135】
101、201,301,401…分散処理システム、101A,201A,301A,401A…伝送路、102,202,302,402-1~402-4…分散処理ノード、103,203a,203b,303-1~303-6…演算デバイス、104,204,304…インタコネクトデバイス、105,205,305…バスデバイス、106,206a,206b,306a,306b…演算機能部、107,207,307…高速クロック部、108,208,308…DMAコントローラ、111,211,311…制御部、112,212,312…パラメータ格納部、209,309…スケジューラ部、310…振り分け部、413…制御ノード、414…制御網、415…ジョブ受付部、416…管理データベース部、417…制御指示部、1040,2040,3040…メモリ。