特許第6981329号(P6981329)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

<>
  • 特許6981329-分散深層学習システム 図000005
  • 特許6981329-分散深層学習システム 図000006
  • 特許6981329-分散深層学習システム 図000007
  • 特許6981329-分散深層学習システム 図000008
  • 特許6981329-分散深層学習システム 図000009
  • 特許6981329-分散深層学習システム 図000010
  • 特許6981329-分散深層学習システム 図000011
  • 特許6981329-分散深層学習システム 図000012
  • 特許6981329-分散深層学習システム 図000013
  • 特許6981329-分散深層学習システム 図000014
  • 特許6981329-分散深層学習システム 図000015
  • 特許6981329-分散深層学習システム 図000016
  • 特許6981329-分散深層学習システム 図000017
  • 特許6981329-分散深層学習システム 図000018
  • 特許6981329-分散深層学習システム 図000019
  • 特許6981329-分散深層学習システム 図000020
  • 特許6981329-分散深層学習システム 図000021
  • 特許6981329-分散深層学習システム 図000022
  • 特許6981329-分散深層学習システム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6981329
(24)【登録日】2021年11月22日
(45)【発行日】2021年12月15日
(54)【発明の名称】分散深層学習システム
(51)【国際特許分類】
   G06N 3/08 20060101AFI20211202BHJP
   G06N 3/10 20060101ALI20211202BHJP
【FI】
   G06N3/08 140
   G06N3/10
【請求項の数】2
【全頁数】26
(21)【出願番号】特願2018-55734(P2018-55734)
(22)【出願日】2018年3月23日
(65)【公開番号】特開2019-168895(P2019-168895A)
(43)【公開日】2019年10月3日
【審査請求日】2020年2月21日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【弁理士】
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】加藤 順一
(72)【発明者】
【氏名】川合 健治
(72)【発明者】
【氏名】ゴー フィクー
(72)【発明者】
【氏名】有川 勇輝
(72)【発明者】
【氏名】伊藤 猛
(72)【発明者】
【氏名】坂本 健
【審査官】 久保 光宏
(56)【参考文献】
【文献】 特開2014−36436(JP,A)
【文献】 特開2017−27149(JP,A)
【文献】 MU LI, et al.,"Scaling Distributed Machine Learning with the Parameter Server",Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI'14),[online], USENIX Association,2014年10月08日,Pages 583-598,[平成31年3月11日検索], インターネット, <URL: https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-li_mu.pdf>,ISBN: 978-1-931971-16-4.
【文献】 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>.
(58)【調査した分野】(Int.Cl.,DB名)
G06N3/00−99/00
CSDB(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
複数の学習ノードと、
これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、
各学習ノードは、
学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の前記ニューラルネットワークの構成パラメータに対する勾配を計算する勾配計算部と、
前記勾配の複数の成分の値をパケット化して前記コンピューティングインタコネクト装置に送信する第1の送信部と、
前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された複数の値を取得する第1の受信部と、
この第1の受信部が取得した複数の値に基づいて前記ニューラルネットワークの対応する複数の構成パラメータを更新する構成パラメータ更新部とを備え、
さらに、各学習ノードのうちの1つの前記第1の送信部は、前記複数の勾配の成分の値と共に、これらに対応する前記ニューラルネットワークの複数の構成パラメータの現在値をパケット化して前記コンピューティングインタコネクト装置に送信し、
前記コンピューティングインタコネクト装置は、
各学習ノードから送信されたパケットを受信する複数の第2の受信部と、
これら第2の受信部によって受信されたパケットの各々から前記複数の勾配の成分の値を取得すると共に、1つのパケットから前記複数の構成パラメータの現在値を取得する複数の解析部と、
複数の構成パラメータの現在値を記憶する構成パラメータバッファと、
前記ニューラルネットワークの同一の構成パラメータに対する勾配の成分の値を入力とする計算処理を、複数の勾配の成分の値各々について並列に行う複数の演算器と、
これら演算器の複数の計算結果と前記構成パラメータバッファに記憶されている対応する複数の構成パラメータの値とを基に、これら構成パラメータの更新後の値を構成パラメータ毎に計算する構成パラメータ更新演算部と、
前記複数の構成パラメータの更新後の値をパケット化するパケット生成部と、
このパケット生成部によって生成されたパケットを各学習ノードに送信する複数の第2の送信部とを備え、
各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの複数の構成パラメータを、前記第1の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とする分散深層学習システム。
【請求項2】
請求項記載の分散深層学習システムにおいて、
前記コンピューティングインタコネクト装置は、
各学習ノードから送信された前記複数の勾配の成分の値を記憶して、これら複数の勾配の成分の値各々を前記複数の演算器に対して並列に出力することが可能なバッファをさらに備えることを特徴とする分散深層学習システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークを用いた機械学習である深層学習を複数の学習ノードで分散協調して実行する分散深層学習システムに関するものである。
【背景技術】
【0002】
様々な情報、データに対する機械学習の活用により、サービスの高度化・付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要である場合が多い。特に、深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習用データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが1つの解決法になる。
【0003】
例えば、非特許文献1には、図19のように、4台の学習ノード100−1〜100−4と、インフィニバンドスイッチ101と、ヘッドノード102とがインフィニバンドネットワーク(InfiniBand network)を介して接続された分散深層学習システムが開示されている。各学習ノード100−1〜100−4には、それぞれ4台のGPU(Graphics Processing Unit)が搭載されている。この非特許文献1に開示された分散深層学習システムでは、4台の学習ノード100−1〜100−4によって、学習演算を並列処理することによって高速化を図っている。
【0004】
非特許文献2には、8台のGPUを搭載した学習ノード(GPUサーバ)とイーサネット(登録商標)スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献2には、学習ノードを1台、2台、4台、8台、16台、32台、44台用いた場合の例がそれぞれ開示されている。非特許文献2に開示されたシステム上で、分散同期確率的勾配降下法(Distributed synchronous SGD(Stochastic Gradient Descent))を用いて機械学習を行う。具体的には、以下の手順で行う。
【0005】
(I)学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。
(II)ミニバッチをGPUの台数分に分けて、各GPUに割り当てる。
(III)各GPUにおいて、(II)で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解(教師データと呼ぶ)からどれだけ乖離しているかの指標となる損失関数L(w)を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬(forward propagation)と呼ぶ。
【0006】
(IV)各GPUにおいて、(III)で求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。この工程では、ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この工程を逆伝搬(back propagation)と呼ぶ。
(V)各GPU毎に計算した勾配の平均を計算する。
【0007】
(VI)各GPUにおいて、(V)で計算した勾配の平均値を用いて、確率的勾配降下法(SGD:Stochastic Gradient Descent)を用いて、損失関数L(w)がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数L(w)を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数L(w)が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
【0008】
また、非特許文献3には、8台のGPUを搭載した学習ノード128台がインフィニバンドネットワーク(InfiniBand network)を介して接続された構成の分散深層学習システムが開示されている。
【0009】
非特許文献1〜3のいずれの分散深層学習システムにおいても、学習ノード数が増えるに従い、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各学習ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを学習ノード間で送受信するか、あるいは学習ノードと非特許文献1のヘッドノードとの間で送受信することにより、平均値算出等の計算を行う必要がある。
【0010】
一方、並列処理数を増やすために、ノード数を増やすにつれ、必要な通信処理は急速に増大する。従来技術のように、学習ノードやヘッドノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバーヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。
【0011】
非特許文献3には、学習処理を100サイクル行うのにかかる所要時間とこのうちの通信にかかる時間と、GPU数との関係が開示されている。この関係によると、GPU数が増えるにつれて通信にかかる時間が増えており、特にGPU数が512以上のところで急激に増加している。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】Rengan Xu and Nishanth Dandapanthu.,“NVIDIA(登録商標) Tesla(登録商標) P100 GPUによるディープラーニングのパフォーマンス”,デル株式会社,2016年,インターネット<http://ja.community.dell.com/techcenter/m/mediagallery/3765/download>
【非特許文献2】Priya Goyal,Piotr Dollar,Ross Girshick,Pieter Noordhuis,Lukasz Wesolowski,Aapo Kyrola,Andrew Tulloch,Yangqing Jia,Kaiming He,“Accurate,Large Minibatch SGD:Training ImageNet in 1 Hour”,米国コーネル大学ライブラリー,arXiv:1706.02677,2017,インターネット<https://arxiv.org/abs/1706.02677>
【非特許文献3】Takuya Akiba,Shuji Suzuki,Keisuke Fukuda,“Extremely Large Minibatch SGD:Training ResNet-50 on ImageNet in 15 Minutes”,米国コーネル大学ライブラリー,arXiv:1711.04325,2017,インターネット<https://arxiv.org/abs/1711.04325>
【発明の概要】
【発明が解決しようとする課題】
【0013】
本発明の目的は、通信ネットワークに接続した多数の学習ノードによって学習を並列処理して高速化を図りつつ、通信ネットワークで接続された各学習ノード間での協調処理を高速に行うことができる分散深層学習システムを提供することにある。
【課題を解決するための手段】
【0016】
発明の分散深層学習システム(第3の実施例)は、複数の学習ノードと、これら複数の学習ノードと通信ネットワークを介して接続されたコンピューティングインタコネクト装置とを備え、各学習ノードは、学習対象のニューラルネットワークに学習データを入力した出力結果から損失関数の前記ニューラルネットワークの構成パラメータに対する勾配を計算する勾配計算部と、前記勾配の複数の成分の値をパケット化して前記コンピューティングインタコネクト装置に送信する第1の送信部と、前記コンピューティングインタコネクト装置から送信されたパケットを受信して、このパケットに格納された複数の値を取得する第1の受信部と、この第1の受信部が取得した複数の値に基づいて前記ニューラルネットワークの対応する複数の構成パラメータを更新する構成パラメータ更新部とを備え、さらに、各学習ノードのうちの1つの前記第1の送信部は、前記複数の勾配の成分の値と共に、これらに対応する前記ニューラルネットワークの複数の構成パラメータの現在値をパケット化して前記コンピューティングインタコネクト装置に送信し、前記コンピューティングインタコネクト装置は、各学習ノードから送信されたパケットを受信する複数の第2の受信部と、これら第2の受信部によって受信されたパケットの各々から前記複数の勾配の成分の値を取得すると共に、1つのパケットから前記複数の構成パラメータの現在値を取得する複数の解析部と、複数の構成パラメータの現在値を記憶する構成パラメータバッファと、前記ニューラルネットワークの同一の構成パラメータに対する勾配の成分の値を入力とする計算処理を、複数の勾配の成分の値各々について並列に行う複数の演算器と、これら演算器の複数の計算結果と前記構成パラメータバッファに記憶されている対応する複数の構成パラメータの値とを基に、これら構成パラメータの更新後の値を構成パラメータ毎に計算する構成パラメータ更新演算部と、前記複数の構成パラメータの更新後の値をパケット化するパケット生成部と、このパケット生成部によって生成されたパケットを各学習ノードに送信する複数の第2の送信部とを備え、各学習ノードの前記構成パラメータ更新部は、前記ニューラルネットワークの複数の構成パラメータを、前記第1の受信部が取得した当該構成パラメータの更新後の値によって上書きすることを特徴とするものである。
【0017】
また、本発明の分散深層学習システムの1構成例(第1〜第3の実施例)において、前記コンピューティングインタコネクト装置は、各学習ノードから送信された前記複数の勾配の成分の値を記憶して、これら複数の勾配の成分の値各々を前記複数の演算器に対して並列に出力することが可能なバッファをさらに備えることを特徴とするものである。
【発明の効果】
【0018】
本発明によれば、各学習ノードに勾配計算部と第1の送信部と第1の受信部と構成パラメータ更新部とを設け、コンピューティングインタコネクト装置に複数の第2の受信部と複数の解析部と複数の演算器とパケット生成部と複数の第2の送信部とを設けることにより、コンピューティングインタコネクト装置と各学習ノードとの間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、分散深層学習を高速に処理することが可能になる。特に、本発明では、ニューラルネットワークの同一の構成パラメータに対する勾配の成分の値を入力とする計算処理を、複数の勾配の成分の値各々について同時に行うことができるため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【0019】
また、本発明では、コンピューティングインタコネクト装置に、ニューラルネットワークの構成パラメータを予め記憶する構成パラメータメモリと、演算器の複数の計算結果と構成パラメータメモリに記憶されている対応する複数の構成パラメータの値とを基に、構成パラメータの更新後の値を計算する構成パラメータ更新演算部とを設けることにより、高速化を図ることができる。
【0020】
また、本発明では、学習ノードから、複数の勾配の成分の値と、これらに対応するニューラルネットワークの複数の構成パラメータの現在値とをセットで送信し、この複数の構成パラメータの現在値を構成パラメータバッファに記憶させることにより、構成パラメータバッファの必要とされる容量を小さくすることができる。
【図面の簡単な説明】
【0021】
図1図1は、本発明の第1の実施例に係る分散深層学習システムの構成を示すブロック図である。
図2図2は、2層ニューラルネットワークの構成を示すブロック図である。
図3図3は、従来の分散学習処理の手順を説明する図である。
図4図4は、本発明の第1の実施例に係る分散学習処理の手順を説明する図である。
図5図5は、本発明の第1の実施例に係る分散学習処理の別の手順を説明する図である。
図6図6は、本発明の第1の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の動作の概要を説明する図である。
図7図7は、本発明の第1の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の構成を示すブロック図である。
図8図8は、本発明の第1の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の詳細な動作を説明する図である。
図9図9は、本発明の第1の実施例に係る分散深層学習システムの学習ノードの構成例を示すブロック図である。
図10図10は、本発明の第2の実施例に係る分散深層学習システムの構成を示すブロック図である。
図11図11は、本発明の第2の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の動作の概要を説明する図である。
図12図12は、本発明の第2の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の構成を示すブロック図である。
図13図13は、本発明の第2の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の詳細な動作を説明する図である。
図14図14は、本発明の第2の実施例に係る分散深層学習システムの学習ノードの構成例を示すブロック図である。
図15図15は、本発明の第3の実施例に係る分散深層学習システムの構成を示すブロック図である。
図16図16は、本発明の第3の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の構成を示すブロック図である。
図17図17は、本発明の第3の実施例に係る分散深層学習システムのコンピューティングインタコネクト装置の詳細な動作を説明する図である。
図18図18は、本発明の第3の実施例に係る分散深層学習システムの学習ノードの構成例を示すブロック図である。
図19図19は、従来の分散深層学習システムの構成を示すブロック図である。
【発明を実施するための形態】
【0022】
[第1の実施例]
以下、本発明の実施例について図面を参照して説明する。図1は本発明の第1の実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、1台のコンピューティングインタコネクト(CI:Computing Interconnect)装置1と、4台の学習ノード2−0〜2−3とを備えている。
なお、本発明において、コンピューティングインタコネクト装置あるいは学習ノードとは、ネットワーク上に分散配置されている機器を意味する。
【0023】
コンピューティングインタコネクト装置1は、4つの通信ポートP0〜P3を持ち、その各通信ポートP0〜P3と、各学習ノード2−0〜2−3の通信ポートとが通信ネットワーク3を介して接続されている。この通信ネットワーク3としては、イーサネットや、インフィニバンド(InfiniBand)などの、通信パケットをやりとりすることで通信を行うネットワークを用いる。
【0024】
<学習ノードの説明>
学習ノード2−0〜2−3は、数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ装置である。ニューラルネットワークは、各学習ノード2−0〜2−3内に構築される。
【0025】
学習ノード2−0〜2−3の実現方法としては、CPU(Central Processing Unit)やGPU上のソフトウェアで実現してもよいし、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)に形成したLSI(Large Scale Integration)回路で実現してもよい。
【0026】
<学習についての説明>
学習ノード2−0〜2−3におけるニューラルネットワークの学習処理について、教師データ付き学習を例に説明する。図2にニューラルネットワークの例として入力層(第1層)、中間層(第2層)、出力層(第3層)からなるごく単純な2層ニューラルネットワークを示す。図2のNk(i)は第k層、i番目のニューロンである。x1,x2は入力、y1,y2は出力、w1(11), w1(12),・・・,w1(23)は第1層目の重みパラメータ、w2(11), w2(12),・・・,w2(32)は第2層目の重みパラメータである。
【0027】
教師データ付き学習の場合、各学習データには対応する教師データ(正解データ)が予め用意されており、ニューラルネットワークの出力値が教師データに近くなるように、ニューラルネットワークの構成パラメータを更新していく。図2の例の場合のニューラルネットワークの構成パラメータは、重みw1(11), w1(12),・・・,w1(23),w2(11),w2(12),・・・,w2(32)である。これらの構成パラメータを最適化していくことにより、ニューラルネットワークの精度を上げていく。
【0028】
具体的には、ニューラルネットワークの出力値が教師データとどれだけ乖離しているかの指標となる損失関数を定め、この損失関数が小さくなるように構成パラメータを更新していく。この例では、入力学習データx1,x2に対応する出力値をy1,y2、教師データをt1,t2とすると、損失関数Lは、例えば次式のようになる。
【0029】
【数1】
【0030】
次に、この損失関数Lに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル(これを勾配と呼ぶ)を求める。この例では、勾配は以下のようになる。
【0031】
【数2】
【0032】
次に、勾配を用いて、損失関数Lがより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。更新の方法はいろいろあるが、例えば勾配降下法を用いて、それぞれの重みパラメータを以下のように更新する。
【0033】
【数3】
【0034】
ここで、ηは学習率と呼ばれる定数である。式(3)により、各重みパラメータを、勾配と逆の方向、すなわち、損失関数Lを減少させる方向に学習率ηに比例する量だけ変化させている。そのため、更新後のニューラルネットワークの損失関数Lは更新前より小さくなる。
【0035】
このように、1組の入力学習データに対して、損失関数Lの計算、勾配の計算、構成パラメータの更新の処理を行なう。そして、この構成パラメータの更新されたニューラルネットワークに対して、次の入力学習データを入力して同じ処理を行い、構成パラメータを更新する。このサイクルを繰り返すことにより、損失関数Lが小さいニューラルネットワークに更新していくことで、ニューラルネットワークの学習を行う。
【0036】
ここで、損失関数Lを求める工程では、ニューラルネットワークの入力層から出力層に向かって順番に出力値を計算していくことから、この工程を順伝搬(forward propagation)と呼ぶ。一方、勾配を求める工程では、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータに対する勾配を計算していく逆伝搬(back propagation)と呼ぶ手法を用いることが多い。
【0037】
<複数学習ノードによる分散学習処理>
以上のようなニューラルネットワークの学習で十分な精度を達成するには、大量の学習データをニューラルネットワークに入力して学習処理を繰り返す必要があり、長い時間を要する。この学習にかかる所要時間を短縮することは大きなメリットがある。
【0038】
学習にかかる所要時間を短縮するため、同じニューラルネットワークの学習ノードを複数用意して、学習データをそれぞれの学習ノードに分けて並列で学習させることにより、トータルの学習時間を短縮する分散協調学習の手法がとられる。従来の分散学習処理の手順を図3を用いて説明する。
【0039】
最初に、学習データxを学習ノード100−0〜100−3の台数分に分けて、各学習ノード100−0〜100−3に割り当てる。なお、図3では、各学習ノード100−0〜100−3に割り当てる学習データの代表としてx0〜x3を1つずつ記載しているが、学習データx0〜x3はそれぞれ1乃至複数の学習データの集合からなる。
【0040】
次に、各学習ノード100−0〜100−3は、それぞれ学習データx0〜x3をニューラルネットワークに入力して順伝搬(forward propagation)の手法によりそれぞれ損失関数Lを求める(図3ステップS100)。なお、得られる損失関数Lは、各学習ノード100−0〜100−3(各ニューラルネットワーク)につき1つである。
【0041】
続いて、各学習ノード100−0〜100−3は、ステップS100で求めた損失関数Lの勾配を逆伝搬(back propagation)の手法により求める(図3ステップS101)。損失関数Lの勾配とは、式(2)に示すように構成パラメータ毎の成分を含むベクトルである。
【0042】
次に、各学習ノード100−0〜100−3でそれぞれ計算した勾配の平均を例えばヘッドノード102において計算して、計算した結果をヘッドノード102から各学習ノード100−0〜100−3に返送する(図3ステップS102)。この処理をAll−reduce処理と呼ぶ。なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに(1/学習ノード数)を乗じれば、勾配の平均値を求めるのと同じ結果になる。
【0043】
最後に、各学習ノード100−0〜100−3は、ステップS102で計算された勾配の平均値を用いて、ニューラルネットワークの重みパラメータを更新する(図3ステップS103)。
以上で、分散学習の1サイクルが終了する。
【0044】
<本実施例の分散処理>
次に、本実施例の分散学習処理の手順を図4を用いて説明する。本実施例では、各学習ノード2−0〜2−3は、従来と同様に、それぞれ学習データx0〜x3をニューラルネットワークに入力して損失関数Lをそれぞれ計算する(図4ステップS200)。続いて、この損失関数Lの勾配を計算する(図4ステップS201)。そして、各学習ノード2−0〜2−3はそれぞれ計算した勾配の計算値を、各学習ノード2−0〜2−3と通信ネットワークで接続されたコンピューティングインタコネクト装置1に送信する(図4ステップS202)。
【0045】
なお、図3と同様に、図4では、各学習ノード2−0〜2−3に割り当てる学習データの代表としてx0〜x3を1つずつ記載しているが、学習データx0〜x3はそれぞれ1乃至複数の学習データの集合からなる。
【0046】
次に、コンピューティングインタコネクト装置1は、各学習ノード2−0〜2−3から送信された各勾配の平均値を計算し、その計算した結果を各学習ノード2−0〜2−3に送信するAll−reduce処理を行なう(図4ステップS203,S204)。
【0047】
最後に、各学習ノード2−0〜2−3は、コンピューティングインタコネクト装置1から送信された勾配の平均値を用いて、ニューラルネットワークの構成パラメータを更新する(図4ステップS205)。
なお、勾配の平均の代わりに勾配の和を計算するようにしてもよい。このとき、例えば、次の重みパラメータの更新処理時の学習率ηに(1/学習ノード数)を乗じれば、勾配の平均値を求めるのと同じ結果になる。また、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、勾配の二乗平均平方根をとるようにしてもよい。
以上で、本実施例の分散学習の1サイクルが終了する。
【0048】
通常、勾配計算は逆伝搬の手法に従って、ニューラルネットワークの出力層から入力層に向かって順番に各層の構成パラメータ(重みパラメータ)に対する勾配の成分を計算していく。したがって、各学習ノード2−0〜2−3の勾配計算結果をコンピューティングインタコネクト装置1に送信するにあたっては、全ての層の勾配計算が終わるまで待つ必要はない。
【0049】
そこで、各学習ノード2−0〜2−3は、上記と同様に損失関数Lを計算し(図5ステップS200)、損失関数Lの勾配を計算するが(図5ステップS201)、ステップS201においてすべての構成パラメータに対する勾配成分の計算が終了するのを待つことなく、計算が終わった構成パラメータに対する勾配成分からコンピューティングインタコネクト装置1に送信することができる(図5ステップS206)。
【0050】
コンピューティングインタコネクト装置1は、各学習ノード2−0〜2−3から送信された勾配成分の平均値を計算し(図5ステップS207)、計算が終わった勾配成分の平均値を各学習ノード2−0〜2−3に送信する(図5ステップS208)。
【0051】
各学習ノード2−0〜2−3は、コンピューティングインタコネクト装置1から計算結果を受信すると、全ての計算結果を受信するまで待つことなく、受信した勾配成分の平均値を用いて、対応する構成パラメータを更新する(図5ステップS209)。
こうして、勾配計算とAll−reduce処理と構成パラメータ更新とをパイプライン式に処理できるので、更なる高速化が可能である。
【0052】
<コンピューティングインタコネクト装置の動作の概要>
図6(A)、図6(B)はコンピューティングインタコネクト装置1の動作の概要を説明する図である。周知のとおり、通信パケットは、ヘッダ200とデータペイロード201とからなる。
【0053】
各学習ノード2−0〜2−3は、各構成パラメータに対する勾配成分を計算すると、その計算結果を通信パケットRP0〜RP3のデータペイロードに格納してコンピューティングインタコネクト装置1に送信する。例えば、図6(A)の例では、学習ノード2−0が3つの勾配成分値G0_0,G0_1,G0_2を通信パケットRP0のデータペイロードに格納してコンピューティングインタコネクト装置1に送信している。このとき、データペイロードには、この通信パケットのシーケンシャル番号(図6(A)の例では“003”)も格納される。
【0054】
各学習ノード2−0〜2−3からの、シーケンシャル番号が同一の通信パケットに格納された勾配成分同士の和を計算するように制御することで、各学習ノード2−0〜2−3の対応する勾配成分同士を加算演算できるように保証する。
【0055】
本発明では、同一のニューラルネットワークを、同一構成の複数の学習ノード2−0〜2−3に構築して、学習データをそれぞれの学習ノード2−0〜2−3に分けて並列で学習させることを想定している。各学習ノード2−0〜2−3において行われる処理の順番や通信パケットの仕様は、全ての学習ノード2−0〜2−3で同一である。したがって、各学習ノード2−0〜2−3から送信される、シーケンシャル番号が同一の通信パケットには、同一の構成パラメータに対する勾配成分が各通信パケット内の同じ位置に格納される。
【0056】
図6(A)の例では、通信パケットRP0〜RP3に格納された勾配値G0〜G3のうち、「_」以降の符号が同一の値は、ニューラルネットワークの同一の構成パラメータについての勾配成分値であることを示している。例えばG0_0,G1_0,G2_0,G3_0は、同一の構成パラメータについて各学習ノード2−0〜2−3が計算した勾配成分である。また、G0_1,G1_1,G2_1,G3_1は、ニューラルネットワークの別の構成パラメータについて各学習ノード2−0〜2−3が計算した勾配成分である。
【0057】
コンピューティングインタコネクト装置1は、全ての学習ノード2−0〜2−3から同一のシーケンシャル番号の通信パケットRP0〜RP3を受信すると、ニューラルネットワークの同一の構成パラメータに対する勾配成分値同士の和を次式のように計算する。
ΣG_0=G0_0+G1_0+G2_0+G3_0 ・・・(4)
ΣG_1=G0_1+G1_1+G2_1+G3_1 ・・・(5)
ΣG_2=G0_2+G1_2+G2_2+G3_2 ・・・(6)
【0058】
そして、コンピューティングインタコネクト装置1は、計算した勾配成分の和の計算結果ΣG_0,ΣG_1,ΣG_2を通信パケットTP0〜TP3のデータペイロードに格納し、各学習ノード2−0〜2−3に送信する(図6(B))。このとき、コンピューティングインタコネクト装置1は、各学習ノード2−0〜2−3からの通信パケットRP0〜RP3に格納されていた勾配から計算した結果ΣG_0,ΣG_1,ΣG_2を、元の勾配成分と同じ順番で通信パケットTP0〜TP3のデータペイロードに格納する。
【0059】
<コンピューティングインタコネクト装置の構成>
図7に本実施例のコンピューティングインタコネクト装置1の構成を示す。コンピューティングインタコネクト装置1は、学習ノード2−0〜2−3のそれぞれと通信ネットワーク3で接続された送受信用のポートP0〜P3と、学習ノード2−0〜2−3毎に設けられ、学習ノード2−0〜2−3から送信された通信パケットを受信する受信部10−0〜10−3と、学習ノード2−0〜2−3毎に設けられ、各受信部10−0〜10−3が受信した通信パケットのヘッダやデータペイロードを解析するパーサ(解析部)11−0〜11−3と、学習ノード2−0〜2−3毎に設けられ、各受信部10−0〜10−3によって受信された通信パケットに格納されていた複数の勾配の計算結果を一時的に記憶するバッファ12−0〜12−3と、バッファ12−0〜12−3の並列出力段数と同数設けられ、同一の構成パラメータに対する勾配の和を計算する処理を、複数の勾配の各々について並列に行う加算器(演算器)13−0〜13−2と、バッファ12−0〜12−3の並列出力段数と同数設けられ、各加算器13−0〜13−2によって計算された勾配の和の計算結果を一時的に記憶する出力バッファ14−0〜14−2と、出力バッファ14−0〜14−2に記憶された勾配の和の計算結果をデータペイロードに格納した通信パケットを生成するパケット生成部15と、学習ノード2−0〜2−3毎に設けられ、パケット生成部15によって生成された通信パケットを学習ノード2−0〜2−3に送信する送信部16−0〜16−3とを備えている。
【0060】
なお、バッファ12−0〜12−3としてFIFOメモリを用いてもよい。また、加算器13−0〜13−2として、勾配の和を計算する代わりに勾配の平均値を求める演算器を用いてもよい。
【0061】
<コンピューティングインタコネクト装置の動作>
次に、コンピューティングインタコネクト装置1の詳細な動作を図8を用いて説明する。コンピューティングインタコネクト装置1の受信部10−0〜10−3は、それぞれ学習ノード2−0〜2−3からの通信パケットRP0〜RP3を受信する。
【0062】
コンピューティングインタコネクト装置1のパーサ11−0〜11−3は、それぞれ受信部10−0〜10−3によって受信された通信パケットRP0〜RP3のヘッダやデータペイロードの内容を解析し、データペイロードから勾配値を取り出してバッファ12−0〜12−3に格納する。バッファ12−0〜12−3に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケット(すなわち、同一の構成パラメータに対応する通信パケット)であっても、各学習ノード2−0〜2−3から完全に同一のタイミングで到着するとは限らないためである。
【0063】
パーサ11−0〜11−3は、対応する全ての学習ノード2−0〜2−3から受信した、同一のシーケンシャル番号が付与された通信パケットRP0〜RP3から取り出した勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2をバッファ12−0〜12−3に書き込んだ場合、これら勾配成分値をバッファ12−0〜12−3から出力させる。
【0064】
各バッファ12−0〜12−3は、それぞれパーサ11−0〜11−3によって書き込まれる勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2を順番に記憶して、並列に出力することが可能である。各バッファ12−0〜12−3の並列出力段数nbuffが、各通信パケットRP0〜RP3のデータペイロードに格納可能な勾配成分値の最大個数ndataより小さい場合は、ndata個のデータをnbuff個ずつに分けて並列計算を複数回行えばよい。図7図8の例では、nbuff=ndata=3である。すなわち、各バッファ12−0〜12−3は、それぞれ3つの勾配成分値を同時に出力可能である。
【0065】
また、パーサ11−0〜11−3は、バッファ12−0〜12−3から出力させた勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2に対応するシーケンシャル番号(図8の例では“003”)をパケット生成部15に渡す。
【0066】
コンピューティングインタコネクト装置1の各加算器13−0〜13−2は、各バッファ12−0〜12−3から出力された勾配成分値の和を、各バッファ12−0〜12−3の同一の出力段毎に計算する。加算器13−0〜13−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。そして、上記のとおり各パーサ11−0〜11−3は、それぞれ対応する学習ノード2−0〜2−3から受信した、同一のシーケンシャル番号が付与された通信パケットから取り出した勾配成分値をバッファ12−0〜12−3に書き込み、各バッファ12−0〜12−3は、それぞれ対応するパーサ11−0〜11−3によって書き込まれる勾配成分値を順番に記憶する。
【0067】
したがって、各バッファ12−0〜12−3の同一の出力段から出力される各勾配成分値はニューラルネットワークの同一の構成パラメータに対する勾配成分値となるので、各加算器13−0〜13−2は、同一の構成パラメータに対する勾配成分値同士の和ΣG_0〜ΣG_2を式(4)〜式(6)のように計算することになる。
【0068】
コンピューティングインタコネクト装置1の出力バッファ14−0〜14−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各出力バッファ14−0〜14−2は、それぞれ対応する加算器13−0〜13−2によって計算された勾配成分の和の計算結果ΣG_0〜ΣG_2を一時的に記憶する。
【0069】
コンピューティングインタコネクト装置1のパケット生成部15は、パーサ11−0〜11−3から受け取ったシーケンシャル番号を各学習ノード2−0〜2−3宛の通信パケットTP0〜TP3のデータペイロードに格納すると共に、出力バッファ14−0〜14−2に記憶された勾配成分の和の計算結果ΣG_0〜ΣG_2を読み出して、通信パケットTP0〜TP3のデータペイロードに格納する。このとき、パケット生成部15は、各出力バッファ14−0〜14−2に記憶された勾配成分の和の計算結果ΣG_0〜ΣG_2を、出力バッファ14−0〜14−2の順番(すなわち、元の勾配G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2の順番)で通信パケットTP0〜TP3のデータペイロードに格納する。
【0070】
そして、コンピューティングインタコネクト装置1の送信部16−0〜16−3は、パケット生成部15によって生成された通信パケットTP0〜TP3をそれぞれ対応する学習ノード2−0〜2−3へ同時に送信する。
【0071】
以上のようなコンピューティングインタコネクト装置1は、FPGAやASICに形成したLSI回路で実現することができる。以下の実施例のコンピューティングインタコネクト装置についても同様である。
【0072】
図9は学習ノード2−0の構成例を示すブロック図である。学習ノード2−0は、学習データを受け取る入力部20と、学習データが入力されたときに、損失関数Lを計算する損失関数計算部21と、損失関数Lの勾配を計算する勾配計算部22と、勾配計算部22によって計算された勾配値をパケット化してコンピューティングインタコネクト装置1に送信する送信部23と、コンピューティングインタコネクト装置1から送信された通信パケットを受信する受信部24と、コンピューティングインタコネクト装置1から送信された通信パケットに格納されている勾配の和を用いてニューラルネットワークの構成パラメータ(重みパラメータ)を更新する構成パラメータ更新部25と、数学モデルであるニューラルネットワークの出力値を計算する機能をもつニューラルネットワーク26とを備えている。
【0073】
図9の例では、学習ノード2−0の構成を示しているが、他の学習ノード2−1〜2−3の構成も学習ノード2−0と同様である。
各学習ノード2−0〜2−3の勾配計算部22は、損失関数Lの勾配を計算する。
【0074】
各学習ノード2−0〜2−3の送信部23は、勾配計算部22によって計算された勾配成分の計算結果G0_0〜G0_2,G1_0〜G1_2,G2_0〜G2_2,G3_0〜G3_2と、シーケンシャル番号とを通信パケットRP0〜RP3のデータペイロードに書き込んで、コンピューティングインタコネクト装置1に送信する。このとき、各学習ノード2−0〜2−3の送信部23は、勾配計算部22によって計算された勾配成分の計算結果G0_0〜G0_2,G1_0〜G1_2,G2_0〜G2_2,G3_0〜G3_2をニューラルネットワーク26の対応する構成パラメータの順に通信パケットRP0〜RP3のデータペイロードに格納する。
なお、勾配成分の個数が各通信パケットRP0〜RP3のデータペイロードに格納可能な勾配成分値の最大個数ndataより大きい場合は、勾配成分をndataごとに複数の通信パケットに分けて格納して送信すればよい。この場合、各通信パケットに割り振ったシーケンシャル番号によってデータペイロードに格納されたデータがどの勾配成分になるのかを識別する。図8はndata=3の場合を例に示している。
【0075】
各学習ノード2−0〜2−3の受信部24は、コンピューティングインタコネクト装置1から受信した通信パケットTP0〜TP3のデータペイロードから勾配成分の和の計算結果ΣG_0〜ΣG_2を取り出す。
【0076】
上記のとおり、各学習ノード2−0〜2−3からコンピューティングインタコネクト装置1に送信される通信パケットRP0〜RP3のデータペイロードには、ニューラルネットワーク26の構成パラメータの順に勾配成分の計算結果G0_0〜G0_2,G1_0〜G1_2,G2_0〜G2_2,G3_0〜G3_2が格納される。そして、これら勾配成分と同じ順番で通信パケットTP0〜TP3のデータペイロードに格納された勾配成分の和の計算結果ΣG_0〜ΣG_2がコンピューティングインタコネクト装置1から返送される。
【0077】
各学習ノード2−0〜2−3の受信部24が取り出した勾配成分の和の計算結果ΣG_0〜ΣG_2は対応する構成パラメータの順に並んでいるので、各学習ノード2−0〜2−3の構成パラメータ更新部25は、これら勾配成分の和の計算結果ΣG_0〜ΣG_2に基づいて、ニューラルネットワーク26の対応する構成パラメータを更新することが可能である。
【0078】
以上のように、本実施例では、All−reduce処理にコンピューティングインタコネクト装置1を用いることで、各学習ノード2−0〜2−3からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード2−0〜2−3との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【0079】
さらに、本実施例では、各学習ノード2−0〜2−3からの複数の勾配成分の和の計算値ΣG_0〜ΣG_2をコンピューティングインタコネクト装置1の複数の加算器13−0〜13−2で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【0080】
[第2の実施例]
次に、本発明の第2の実施例について説明する。第1の実施例では、コンピューティングインタコネクト装置1で勾配の和の演算を行い、各学習ノード2−0〜2−3でニューラルネットワークの構成パラメータの更新演算を行うが、本実施例では、勾配の和の演算に加えて、ニューラルネットワークの構成パラメータの更新演算もコンピューティングインタコネクト装置で行なう。
【0081】
図10は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、1台のコンピューティングインタコネクト装置1aと、4台の学習ノード2a−0〜2a−3と、コンピューティングインタコネクト装置1aと学習ノード2a−0〜2a−3とを接続する通信ネットワーク3とから構成されている。
【0082】
<コンピューティングインタコネクト装置の動作の概要>
図11(A)、図11(B)は本実施例のコンピューティングインタコネクト装置1aの動作の概要を説明する図である。
第1の実施例と同様に、各学習ノード2a−0〜2a−3は、ニューラルネットワークの構成パラメータに対する損失関数の勾配を計算すると、その計算結果を通信パケットRP0〜RP3のデータペイロードに格納してコンピューティングインタコネクト装置1aに送信する。例えば、図11(A)の例では、学習ノード2a−0が3つの勾配成分値G0_0,G0_1,G0_2を通信パケットRP0のデータペイロードに格納してコンピューティングインタコネクト装置1aに送信している。このとき、データペイロードには、この通信パケットのシーケンシャル番号(図11(A)の例では“003”)も格納される。
【0083】
各学習ノード2a−0〜2a−3からの、シーケンシャル番号が同一の通信パケットに格納された勾配成分同士の和を計算するように制御することで、各学習ノード2a−0〜2a−3の対応する勾配成分同士を加算演算できるように保証する。
【0084】
コンピューティングインタコネクト装置1aは、全ての学習ノード2a−0〜2a−3から同一のシーケンシャル番号の通信パケットRP0〜RP3を受信すると、ニューラルネットワークの同一の構成パラメータに対する勾配成分値同士の和ΣG_0,ΣG_1,ΣG_2を式(4)〜式(6)のように計算する。
【0085】
さらに、コンピューティングインタコネクト装置1aは、計算した勾配成分の和の計算結果ΣG_0,ΣG_1,ΣG_2を基に、ニューラルネットワークの構成パラメータの更新後の値wnew_0,wnew_1,wnew_2を構成パラメータ毎に計算する。そして、コンピューティングインタコネクト装置1aは、構成パラメータの更新後の値wnew_0,wnew_1,wnew_2を通信パケットTP0〜TP3のデータペイロードに格納し、各学習ノード2a−0〜2a−3に送信する(図11(B))。
【0086】
このとき、コンピューティングインタコネクト装置1aは、各学習ノード2a−0〜2a−3からの通信パケットRP0〜RP3に格納されていた勾配成分から計算した構成パラメータの更新後の値wnew_0,wnew_1,wnew_2を、元の勾配成分と同じ順番で通信パケットTP0〜TP3のデータペイロードに格納する。
【0087】
<コンピューティングインタコネクト装置の構成>
図12は本実施例のコンピューティングインタコネクト装置1aの構成を示すブロック図であり、図7と同一の構成には同一の符号を付してある。本実施例のコンピューティングインタコネクト装置1aは、学習ノード2a−0〜2a−3のそれぞれと通信ネットワーク3で接続された送受信用のポートP0〜P3と、受信部10−0〜10−3と、パーサ11−0〜11−3と、バッファ12−0〜12−3と、加算器13−0〜13−2と、出力バッファ14−0〜14−2と、パケット生成部15と、送信部16−0〜16−3と、各学習ノード2a−0〜2a−3の学習対象のニューラルネットワーク26の構成パラメータを記憶する構成パラメータメモリ17と、ニューラルネットワークの構成パラメータ(重みパラメータ)の更新後の値を計算するNN(ニューラルネットワーク)構成パラメータ更新演算部18−0〜18−2とを備えている。
【0088】
<コンピューティングインタコネクト装置の動作>
次に、コンピューティングインタコネクト装置1aの詳細な動作を図13を用いて説明する。学習開始時点において、各学習ノード2a−0〜2a−3のニューラルネットワーク26は、全ての学習ノード2a−0〜2a−3で同じ構成パラメータの初期値が設定されている。この構成パラメータの初期値の全てを、例えば学習ノード2a−0〜2a−3から通信パケットを用いてコンピューティングインタコネクト装置1aに送信する。
【0089】
構成パラメータの初期値を受信したコンピューティングインタコネクト装置1aでは、この構成パラメータの初期値を構成パラメータメモリ17に格納する。これら構成パラメータの初期値は、所定の順番、すなわち各学習ノード2a−0〜2a−3において勾配が計算され、通信パケットに書き込まれる順番で格納されている。
【0090】
第1の実施例と同様に、各学習ノード2a−0〜2a−3は、この構成パラメータの初期値が設定されたニューラルネットワーク26のそれぞれに学習データを入力し、損失関数Lを計算する。次に、その損失関数Lの勾配を計算する。そして、各学習ノード2a−0〜2a−3の送信部23は、勾配計算部22によって計算された勾配成分の計算結果と、シーケンシャル番号とを通信パケットRP0〜RP3のデータペイロードに書き込んで、コンピューティングインタコネクト装置1aに送信する。
【0091】
したがって、コンピューティングインタコネクト装置1aの受信部10−0〜10−3で受信する通信パケットRP0〜RP3のデータペイロードには、それぞれ学習ノード2a−0〜2a−3で計算された勾配成分値(図13のG0_0〜G0_2,G1_0〜G1_2,G2_0〜G2_2,G3_0〜G3_2)と、シーケンシャル番号(図13の例では“003”)とが格納されている。
なお、勾配成分の個数が各通信パケットRP0〜RP3のデータペイロードに格納可能な勾配成分値の最大個数ndataより大きい場合は、勾配成分をndataごとに複数の通信パケットに分けて格納して送信すればよい。この場合、各通信パケットに割り振ったシーケンシャル番号によってデータペイロードに格納されたデータがどの勾配成分になるのかを識別する。図13はndata=3の場合を例に示している。
【0092】
コンピューティングインタコネクト装置1aのパーサ11−0〜11−3は、それぞれ受信部10−0〜10−3によって受信された通信パケットRP0〜RP3のヘッダやデータペイロードの内容を解析し、データペイロードから勾配値を取り出してバッファ12−0〜12−3に格納する。第1の実施例で説明したとおり、バッファ12−0〜12−3に一旦格納する理由は、同一のシーケンシャル番号が付与された通信パケットであっても、各学習ノード2a−0〜2a−3から完全に同一のタイミングで到着するとは限らないためである。
【0093】
パーサ11−0〜11−3は、対応する全ての学習ノード2a−0〜2a−3から受信した、同一のシーケンシャル番号が付与された通信パケットRP0〜RP3から取り出した勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2をバッファ12−0〜12−3に書き込んだ場合、これら勾配成分値をバッファ12−0〜12−3から出力させる。
【0094】
第1の実施例と同様に、各バッファ12−0〜12−3は、それぞれパーサ11−0〜11−3によって書き込まれる勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2を順番に記憶し、並列に出力することが可能である。また、パーサ11−0〜11−3は、バッファ12−0〜12−3から出力させた勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2に対応するシーケンシャル番号(図13の例では“003”)をパケット生成部15に渡す。
【0095】
コンピューティングインタコネクト装置1aの加算器13−0〜13−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、各バッファ12−0〜12−3から出力された勾配成分値の和を、各バッファ12−0〜12−3の同一の出力段毎に計算する。これにより、各加算器13−0〜13−2は、同一の構成パラメータに対する勾配成分値同士の和ΣG_0〜ΣG_2を式(4)〜式(6)のように計算する。
【0096】
コンピューティングインタコネクト装置1aのNN構成パラメータ更新演算部18−0〜18−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各NN構成パラメータ更新演算部18−0〜18−2は、それぞれ対応する加算器13−0〜13−2によって勾配成分の和ΣG_0〜ΣG_2が計算された構成パラメータの初期値wold_0〜wold_2を、構成パラメータメモリ17に記憶されている構成パラメータの初期値の中から取り出す。
【0097】
そして、各NN構成パラメータ更新演算部18−0〜18−2は、取り出した初期値wold_0〜wold_2と、対応する加算器13−0〜13−2によって計算された勾配成分の和ΣG_0〜ΣG_2とを基に、ニューラルネットワークの構成パラメータの更新後の値wnew_0〜wnew_2を計算して出力バッファ14−0〜14−2に出力する。更新方法として例えば、勾配降下法を用いる場合は以下のような計算を行う。
wnew_0←wold_0−η×ΣG_0 ・・・(7)
wnew_1←wold_1−η×ΣG_1 ・・・(8)
wnew_2←wold_2−η×ΣG_2 ・・・(9)
【0098】
ηは学習率と呼ばれる定数である。第1の実施例で説明したとおり、各加算器13−0〜13−2は構成パラメータの順番に従って昇順で配置されているので、各加算器13−0〜13−2から出力される勾配成分の和ΣG_0〜ΣG_2も、構成パラメータの順に並んでいることになる。したがって、NN構成パラメータ更新演算部18−0〜18−2は、昇順に並んでいる構成パラメータの初期値wold_0〜wold_2を、バッファ12−0〜12−3の並列出力段数nbuffと同数だけ一括して構成パラメータメモリ17から取り出すことを繰り返すことにより、加算器13−0〜13−2から出力された勾配成分の和ΣG_0〜ΣG_2に対応する構成パラメータの初期値wold_0〜wold_2を取り出すことが可能である。
【0099】
また、NN構成パラメータ更新演算部18−0〜18−2は、構成パラメータの更新後の値wnew_0〜wnew_2を出力バッファ14−0〜14−2に出力すると同時に、構成パラメータメモリ17に格納されている当該構成パラメータの値wold_0〜wold_2を、更新後の値wnew_0〜wnew_2によって上書きする。
【0100】
第1の実施例と同様に、コンピューティングインタコネクト装置1aの出力バッファ14−0〜14−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、構成パラメータの順番に従って昇順に配置されている。各出力バッファ14−0〜14−2は、それぞれ対応するNN構成パラメータ更新演算部18−0〜18−2によって計算された構成パラメータの更新後の値wnew_0〜wnew_2を一時的に記憶する。
【0101】
コンピューティングインタコネクト装置1aのパケット生成部15は、パーサ11−0〜11−3から受け取ったシーケンシャル番号を各学習ノード2a−0〜2a−3宛の通信パケットTP0〜TP3のデータペイロードに格納すると共に、出力バッファ14−0〜14−2に記憶された構成パラメータの更新後の値wnew_0〜wnew_2を読み出して、通信パケットTP0〜TP3のデータペイロードに格納する。
【0102】
このとき、パケット生成部15は、各出力バッファ14−0〜14−2に記憶された構成パラメータの更新後の値wnew_0〜wnew_2を、出力バッファ14−0〜14−2の順番(すなわち、元の勾配G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2の順番)で通信パケットTP0〜TP3のデータペイロードに格納する。
【0103】
そして、コンピューティングインタコネクト装置1aの送信部16−0〜16−3は、パケット生成部15によって生成された通信パケットTP0〜TP3をそれぞれ対応する学習ノード2a−0〜2a−3へ同時に送信する。
【0104】
以上のようなコンピューティングインタコネクト装置1aは、FPGAやASICに形成したLSI回路で実現することができる。
【0105】
図14は学習ノード2a−0の構成例を示すブロック図であり、図9と同一の構成には同一の符号を付してある。学習ノード2a−0は、入力部20と、損失関数計算部21と、勾配計算部22と、送信部23と、受信部24aと、コンピューティングインタコネクト装置1aから送信された通信パケットに格納されている構成パラメータの更新後の値wnew_0〜wnew_2を用いてニューラルネットワーク26の構成パラメータを更新する構成パラメータ更新部25aと、ニューラルネットワーク26とを備えている。
【0106】
図14の例では、学習ノード2a−0の構成を示しているが、他の学習ノード2a−1〜2a−3の構成も学習ノード2a−0と同様である。
各学習ノード2a−0〜2a−3の受信部24aは、コンピューティングインタコネクト装置1aから受信した通信パケットTP0〜TP3のデータペイロードから構成パラメータの更新後の値wnew_0〜wnew_2を取り出す。
【0107】
各学習ノード2a−0〜2a−3の構成パラメータ更新部25aは、ニューラルネットワーク26の複数の構成パラメータ(上記のwold_0〜wold_2と同じ値)を、構成パラメータの更新後の値wnew_0〜wnew_2によって上書きすることにより、ニューラルネットワーク26を更新する。
【0108】
本実施例では、All−reduce処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置1aを用いることで、各学習ノード2a−0〜2a−3からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード2a−0〜2a−3との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【0109】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配成分の和演算も、構成パラメータの更新演算も、ニューラルネットワーク26の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード2a−0〜2a−3でのニューラルネットワーク26の構成を変えた場合でも、コンピューティングインタコネクト装置1aの演算器は同じ専用演算回路を用いることができるというメリットもある。
【0110】
さらに、本実施例では、各学習ノード2a−0〜2a−3からの複数の勾配成分の和の計算値ΣG_0〜ΣG_2をコンピューティングインタコネクト装置1aの複数の加算器13−0〜13−2で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【0111】
[第3の実施例]
次に、本発明の第3の実施例について説明する。第2の実施例では、コンピューティングインタコネクト装置1aの構成パラメータメモリ17に、学習対象のニューラルネットワークの現在の構成パラメータ値を全て記録しておくようにしたが、本実施例では、学習ノードから勾配データとそれに対応する構成パラメータの現在値とをセットで送信し、この構成パラメータの現在値のみ構成パラメータバッファに記録する。これにより、この構成パラメータバッファは、第2の実施例の、構成パラメータ全部を記録しておく必要がある構成パラメータメモリ17に比べてずっと小さくすることができる。
【0112】
図15は本実施例に係る分散深層学習システムの構成を示すブロック図である。本実施例の分散深層学習システムは、1台のコンピューティングインタコネクト装置1bと、4台の学習ノード2a−0〜2a−2,2b−3と、コンピューティングインタコネクト装置1aと学習ノード2a−0〜2a−2,2b−3とを接続する通信ネットワーク3とから構成されている。
【0113】
<コンピューティングインタコネクト装置の構成>
図16は本実施例のコンピューティングインタコネクト装置1bの構成を示すブロック図であり、図7図12と同一の構成には同一の符号を付してある。本実施例のコンピューティングインタコネクト装置1bは、学習ノード2a−0〜2a−2,2b−3のそれぞれと通信ネットワーク3で接続された送受信用のポートP0〜P3と、受信部10−0〜10−3と、パーサ11−0〜11−2,11b−3と、バッファ12−0〜12−3と、加算器13−0〜13−2と、出力バッファ14−0〜14−2と、パケット生成部15と、送信部16−0〜16−3と、NN構成パラメータ更新演算部18b−0〜18b−2と、構成パラメータバッファ19とを備えている。
【0114】
<コンピューティングインタコネクト装置の動作>
次に、コンピューティングインタコネクト装置1bの詳細な動作を図17を用いて説明する。第1の実施例と同様に、各学習ノード2a−0〜2a−2,2b−3は、構成パラメータの初期値が設定されたニューラルネットワーク26のそれぞれに学習データを入力し、損失関数Lを計算する。次に、その損失関数Lの勾配を計算する。そして、各学習ノード2a−0〜2a−2,2b−3の送信部は、勾配計算部22によって計算された勾配の計算結果と、シーケンシャル番号とを通信パケットRP0〜RP3のデータペイロードに書き込んで、コンピューティングインタコネクト装置1bに送信する。
【0115】
このとき、本実施例では、勾配の計算結果に加えて、その勾配を計算した対象の構成パラメータの現在値も通信パケットのデータペイロードに書き込んでコンピューティングインタコネクト装置1bに送信する。各学習ノード2a−0〜2a−2,2b−3のニューラルネットワーク26の構成パラメータの現在値は、各学習ノード2a−0〜2a−2,2b−3で同じ値である。
【0116】
そこで、本実施例では、学習ノード2b−3においてのみ、ニューラルネットワーク26の構成パラメータの現在値wold_0〜wold_2を通信パケットRP3に書き込んでコンピューティングインタコネクト装置1bに送信する。このとき、構成パラメータの現在値wold_0〜wold_2のそれぞれに対して学習ノード2b−3が計算した勾配成分値がG3_0〜G3_2となる。
【0117】
コンピューティングインタコネクト装置1bのパーサ11−0〜11−2,11b−3は、それぞれ受信部10−0〜10−3によって受信された通信パケットRP0〜RP3のヘッダやデータペイロードの内容を解析し、データペイロードから勾配成分値を取り出してバッファ12−0〜12−3に格納する。
【0118】
さらに、パーサ11b−3は、受信部10−3によって受信された通信パケットRP3のデータペイロードから構成パラメータの値wold_0〜wold_2を取り出して構成パラメータバッファ19に格納する。構成パラメータバッファ19は、パーサ11b−3によって書き込まれる構成パラメータの値wold_0〜wold_2を順番に記憶し、並列に出力することが可能である。
【0119】
パーサ11−0〜11−2,11b−3は、対応する全ての学習ノード2a−0〜2a−2,2b−3から受信した、同一のシーケンシャル番号が付与された通信パケットRP0〜RP3から取り出した勾配成分値G0_0〜G3_0,G0_1〜G3_1,G0_2〜G3_2をバッファ12−0〜12−3に書き込んだ場合、これら勾配成分値をバッファ12−0〜12−3から出力させる。加算器13−0〜13−2の動作は、第1、第2の実施例で説明したとおりである。
【0120】
コンピューティングインタコネクト装置1bのNN構成パラメータ更新演算部18b−0〜18b−2は、バッファ12−0〜12−3の並列出力段数nbuffと同数設けられ、構成パラメータの順番に従って昇順で配置されている。各NN構成パラメータ更新演算部18b−0〜18b−2は、それぞれ対応する加算器13−0〜13−2によって勾配成分の和ΣG_0〜ΣG_2が計算された構成パラメータの値wold_0〜wold_2を、構成パラメータバッファ19から取り出す。
【0121】
そして、各NN構成パラメータ更新演算部18b−0〜18b−2は、取り出した構成パラメータの値wold_0〜wold_2と、対応する加算器13−0〜13−2によって計算された勾配成分の和ΣG_0〜ΣG_2とを基に、ニューラルネットワークの構成パラメータの更新後の値wnew_0〜wnew_2を式(7)〜式(9)のように計算して出力バッファ14−0〜14−2に出力する。
【0122】
なお、本実施例では、更新対象の構成パラメータの現在値が更新の度に学習ノード2b−3から送信されるので、NN構成パラメータ更新演算部18b−0〜18b−2は、第2の実施例のNN構成パラメータ更新演算部18−0〜18−2と異なり、構成パラメータバッファ19に記憶されている値を更新する必要はない。
パケット生成部15と送信部16−0〜16−3の動作は、第2の実施例で説明したとおりである。
【0123】
図18は学習ノード2b−3の構成例を示すブロック図であり、図9図14と同一の構成には同一の符号を付してある。学習ノード2b−3は、入力部20と、損失関数計算部21と、勾配計算部22と、送信部23bと、受信部24aと、構成パラメータ更新部25aと、ニューラルネットワーク26とを備えている。
学習ノード2a−0〜2a−2の構成は図14で説明したとおりである。
【0124】
学習ノード2b−3の送信部23bは、ニューラルネットワーク26の構成パラメータの現在値wold_0〜wold_2と、これらに対応する勾配の計算結果G3_0〜G3_2と、シーケンシャル番号とを通信パケットRP3のデータペイロードに書き込んで、コンピューティングインタコネクト装置1bに送信する。このとき、送信部23bは、構成パラメータの現在値wold_0〜wold_2と、対応する勾配成分の計算結果G3_0〜G3_2とを同じ順番で通信パケットRP3のデータペイロードに格納する。学習ノード2b−3の他の構成は第2の実施例で説明したとおりである。
【0125】
本実施例では、All−reduce処理とニューラルネットワークの構成パラメータの更新演算とにコンピューティングインタコネクト装置1bを用いることで、各学習ノード2a−0〜2a−2,2b−3からの通信パケットの到着時刻のばらつきに基づく僅かな遅延はあるものの、各学習ノード2a−0〜2a−2,2b−3との間の通信パケットの送受信処理を同時並行して高速にハードウェア処理できるため、従来技術のヘッドノードで通信処理や勾配の加算処理をソフトウェア処理する場合に比べて、高速に処理することが可能になる。
【0126】
特に、本実施例では、構成パラメータの更新演算処理についても専用演算回路を用意することで、高速化を図ることができる。また、勾配成分の和演算も、構成パラメータの更新演算も、ニューラルネットワーク26の構成によらず、構成パラメータ毎に独立して同じ演算を行えばよいので、学習ノード2a−0〜2a−2,2b−3でのニューラルネットワーク26の構成を変えた場合でも、コンピューティングインタコネクト装置1bの演算器は同じ専用演算回路を用いることができるというメリットもある。さらに、本実施例では、各学習ノード2a−0〜2a−2,2b−3からの複数の勾配成分の和の計算値ΣG_0〜ΣG_2をコンピューティングインタコネクト装置1bの複数の加算器13−0〜13−2で同時に演算するため、ソフトウェアを用いて逐次的に演算するよりも高速に処理することができる。
【0127】
また、本実施例では、第2の実施例の構成パラメータメモリ17よりも、容量の小さい構成パラメータバッファ19を用意すればよいという利点がある。ただし、第2の実施例には、通信パケットで送るデータ量が小さくてすむという利点がある。
【0128】
第1〜第3の実施例で説明した学習ノードの各々は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)等の演算資源、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。学習ノードの各々のCPU、GPU等の演算資源は、各々の記憶装置に格納されたプログラムに従って第1〜第3の実施例で説明した処理を実行する。
【産業上の利用可能性】
【0129】
本発明は、ニューラルネットワークを用いた機械学習を行う技術に適用することができる。
【符号の説明】
【0130】
1,1a,1b…コンピューティングインタコネクト装置、2−0〜2−3,2a−0〜2a−3,2b−3…学習ノード、3…通信ネットワーク、10−0〜10−3,24,24a…受信部、11−0〜11−3,11b−3…パーサ、12−0〜12−3…バッファ、13−0〜13−2…加算器、14−0〜14−2…出力バッファ、15…パケット生成部、16−0〜16−3,23,23b…送信部、17…構成パラメータメモリ、18−0〜18−2,18b−0〜18b−2…NN構成パラメータ更新演算部、19…構成パラメータバッファ、20…入力部、21…損失関数計算部、22…勾配計算部、25,25a…構成パラメータ更新部、26…ニューラルネットワーク。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19