JP2019212111A - 分散学習方法及び分散学習装置 - Google Patents
分散学習方法及び分散学習装置 Download PDFInfo
- Publication number
- JP2019212111A JP2019212111A JP2018108754A JP2018108754A JP2019212111A JP 2019212111 A JP2019212111 A JP 2019212111A JP 2018108754 A JP2018108754 A JP 2018108754A JP 2018108754 A JP2018108754 A JP 2018108754A JP 2019212111 A JP2019212111 A JP 2019212111A
- Authority
- JP
- Japan
- Prior art keywords
- gradient
- distributed learning
- parameter
- parameter group
- parameters
- 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.)
- Pending
Links
Images
Abstract
【課題】高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現する方法及び装置を提供する。【解決手段】複数のパラメータの分散学習装置10は、複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順101と、複数のパラメータをグループ化したパラメータグループ毎に統計量を計算する統計量計算手順102と、前記統計量と予め設定された送信割合とに基づいて、前記勾配が送信される送信パラメータグループを判定する判定手順103と、前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により複数のコンピュータ間で共有する共有手順105と、前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順106とを実行する。【選択図】図3
Description
本発明は、分散学習方法及び分散学習装置に関する。
近年、通信ネットワークを介して接続された複数の計算ノードを用いて、これらの複数の計算ノード間で分散して深層学習(DL:Deep Learning)を行う手法が知られるようになってきた。このような手法は、分散深層学習とも称される。
分散深層学習では、ニューラルネットワークのパラメータ数に比例して各計算ノード間の通信量が増大する。このため、例えばイーサネット(登録商標)等の比較的低速な通信媒体を用いた通信ネットワークでは、計算ノードの計算時間と比較して、各計算ノード間の通信時間が大幅に大きくなる場合があり、学習速度が通信ネットワークの通信速度に律速されてしまうことがある。これに対して、例えばインフィニバンド等の比較的高速な通信媒体を用いることも考えられるが、コストが高くなるという問題がある。
ここで、分散深層学習では、主に、各計算ノードで計算した勾配に対する全計算ノードでの平均を計算するために通信が行われる。そこで、各計算ノード間で通信される勾配を量子化したり、或る閾値以上の勾配のみを各計算ノード間で通信したりすること等で、通信量を圧縮する様々な手法が提案されている(例えば、非特許文献1〜4参照)。このように、各計算ノード間で通信される勾配の通信量を圧縮(削減)する手法は勾配圧縮とも称される。
F. Seide, H. Fu, J. Droppo, G. Li, D. Yu. "1-bit stochastic gradient descent and its application to data-parallel distributed training of speech DNNs", In INTERSPEECH-2014, 1058-1062.
N. Strom. "Scalable distributed DNN training using commodity GPU cloud computing", In INTERSPEECH-2015, 1488-1492.
D. Alistarh, J. Li, R. Tomioka, M. Vojnovic. "QSGD: Randomized quantization for communication-optimal stochastic gradient descent", arXiv:1610.02132, 2016.
Y. Tsuzuku, H. Imachi, T. Akiba. "Variance-based Gradient Compression for Efficient Distributed Deep Learning", arXiv preprint arXiv:1802.06058, 2018.
しかしながら、従来の手法では、例えば、学習後のニューラルネットワークの認識精度の高さと通信量の圧縮率の高さとを両立させることが困難であったり、ハイパーパラメータの調整が困難であったりする。
本発明の実施の形態は、高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現することを目的とする。
上記目的を達成するため、本発明の実施の形態は、複数のコンピュータで複数のパラメータを学習する分散学習方法であって、前記コンピュータが、前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順と、前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算手順と、前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定手順と、前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記複数のコンピュータ間で共有する共有手順と、前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順と、を実行することを特徴とする。
高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現することができる。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。本発明の実施の形態では、複数の計算ノード間で分散深層学習を行う際に、通信量の高い圧縮率を達成しつつ、学習後のニューラルネットワークの認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習システム1について説明する。
ここで、「圧縮率」とは、(総パラメータ数)×(計算ノード数)/(総パラメータのうち、各計算ノードで勾配が送信されたパラメータ数の合計)で示される値のことである。圧縮率が高い程、圧縮の性能が良いことを意味する。
また、「精度」とは、ニューラルネットワークの学習後に、学習時に使わなかったデータ(これは「テストデータ」とも称される。)を用いて評価した精度(validation accuracy)のことである。
<システム構成>
まず、本発明の実施の形態における分散学習システム1のシステム構成について、図1を参照しながら説明する。図1は、本発明の実施の形態における分散学習システム1のシステム構成の一例を示す図である。
まず、本発明の実施の形態における分散学習システム1のシステム構成について、図1を参照しながら説明する。図1は、本発明の実施の形態における分散学習システム1のシステム構成の一例を示す図である。
図1に示すように、本発明の実施の形態における分散学習システム1には、複数の分散学習装置10が含まれる。また、各分散学習装置10は、通信ネットワークを介して通信可能に接続されている。通信ネットワークとしては、例えば、LAN(Local Area Network)等が用いられる。なお、通信ネットワークに用いられる通信媒体や通信手法、通信方式等は任意のものを用いることができる。
分散学習装置10は、分散深層学習の計算ノード(以降、単に「ノード」とも表す。)として機能するコンピュータである。各分散深層装置10は、分散深層学習によりニューラルネットワークのパラメータを更新する。分散深層学習では、学習データ(これは、「訓練データ」とも称される。)を用いて各分散学習装置10がそれぞれ勾配を計算した後、これらの勾配に対する全ての分散学習装置10での平均(勾配平均)が計算される。そして、この勾配平均を用いて、ニューラルネットワークのパラメータが更新される。
これにより、分散深層学習では、大量の学習データを用いて、パラメータ数が膨大であるニューラルネットワーク(DNN:Deep Neural Network)の学習を複数の分散学習装置10で並列的に実行することが可能となる。ここで、勾配とは、ニューラルネットワークの各パラメータに関する誤差関数のそれぞれの偏微分の或るデータ点(例えば、後述するミニバッチを構成する学習データにより示される点)における値である。勾配は、例えば、誤差逆伝播法により計算される。なお、誤差関数は、損失関数等とも称される。
なお、上述したように、分散深層学習では、勾配平均を計算する際に分散学習装置10間で通信(勾配の送受信)が行われ、この通信量はパラメータ数に比例する。このため、例えばイーサネット等の比較的低速な通信媒体を用いた通信ネットワークを介して接続される分散学習装置10により、パラメータ数が膨大なニューラルネットワーク(DNN)の学習を行う場合、分散深層学習に要する時間は、勾配平均を計算する際の通信に要する時間に律速される。
本発明の実施の形態では、ニューラルネットワークのパラメータをグループ分けした上で、各分散学習装置10が、グループ毎に、このグループに属するパラメータに関する勾配を他の分散学習装置10に送信するか否かを判定し、送信すると判定された勾配のみを他の分散学習装置10に送信する。これにより、本発明の実施の形態に係る分散学習システム1では、分散学習装置10間の通信量を圧縮(削減)することができるようになる。
なお、本発明の実施の形態では、分散学習システム1にはP台の分散学習装置10が含まれるものとし、各分散学習装置10を区別して表す場合は、「分散学習装置101」,「分散学習装置102」,・・・,「分散学習装置10p」,・・・,「分散学習装置10P」と表す。
<ハードウェア構成>
次に、本発明の実施の形態における分散学習装置10のハードウェア構成について、図2を参照しながら説明する。図2は、本発明の実施の形態における分散学習装置10のハードウェア構成の一例を示す図である。
次に、本発明の実施の形態における分散学習装置10のハードウェア構成について、図2を参照しながら説明する。図2は、本発明の実施の形態における分散学習装置10のハードウェア構成の一例を示す図である。
図2に示すように、本発明の実施の形態における分散学習装置10は、プロセッサ11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、補助記憶装置14と、外部I/F15と、通信I/F16とを有する。
プロセッサ11は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等であり、各種処理を実行する演算装置である。なお、分散学習装置10は、プロセッサ11として、CPU及びGPUの両方を有していても良い。分散学習装置10がプロセッサ11としてGPUを有している場合、分散学習システム1はGPUクラスタを備える構成となる。また、分散学習装置10は、例えば、FPGA(field-programmable gate array)等の専用の半導体チップを備えていても良い。
RAM12は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM13は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。
補助記憶装置14は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置14に格納されているプログラムやデータには、分散学習装置10が有する各種機能を実現する1以上のプログラムや学習データ等がある。
外部I/F15は、外部装置とのインタフェースである。外部装置には、例えば、CDやDVD、SDメモリカード、USBメモリカード等の外部記録媒体がある。外部記録媒体には、例えば、分散学習装置10が有する各種機能を実現する1以上のプログラムや学習データ等が記録されていても良い。
通信I/F16は、分散学習装置10を通信ネットワークに接続するためのインタフェースである。分散学習装置10は、通信I/F16を介して、他の分散学習装置10との間で各種通信を行うことができる。
本発明の実施の形態における分散学習装置10は、図2に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図2に示すハードウェア構成は一例であって、他の構成であっても良い。例えば、分散学習装置10は、キーボードやマウス等の入力装置と、ディスプレイ等の表示装置とを有していても良い。
<機能構成>
次に、本発明の実施の形態における分散学習装置10の機能構成について、図3を参照しながら説明する。図3は、本発明の実施の形態における分散学習装置10の機能構成の一例を示す図である。
次に、本発明の実施の形態における分散学習装置10の機能構成について、図3を参照しながら説明する。図3は、本発明の実施の形態における分散学習装置10の機能構成の一例を示す図である。
図3に示すように、本発明の実施の形態における分散学習装置10は、勾配計算部101と、統計量計算部102と、送信グループ判定部103と、量子化部104と、勾配共有部105と、最適化部106と、通信部107とを有する。これら各部は、分散学習装置10にインストールされた1以上のプログラムが、プロセッサ11に実行させる処理により実現される。
勾配計算部101は、学習データを入力して、各パラメータに関する勾配を計算する。このとき、勾配計算部101は、各分散学習装置10にそれぞれ割り当てられた学習データの集合(ミニバッチ)から各パラメータに関する勾配を計算する。ここで、分散深層学習では、1回のイテレーションで用いられる学習データの集合(バッチ)がノード間でミニバッチに分割される。したがって、各分散学習装置10は、自身に割り当てられたミニバッチを用いて、勾配計算部101により各パラメータに関する勾配を計算する。なお、イテレーションとは、パラメータの更新を行う際の繰り返しのことである。
統計量計算部102は、予め決められたパラメータのグループ(以降、「パラメータグループ」と表す。)毎に、勾配計算部101により計算された勾配を用いて、パラメータグループの統計量を計算する。各パラメータをどのようにグループ化するかや統計量の計算方法等の具体例については後述する。
送信グループ判定部103は、統計量計算部102により計算された統計量を用いて、勾配が送信されるパラメータのパラメータグループ(以降、「送信パラメータグループ」と表す。)を判定する。送信パラメータグループに属するパラメータに関する勾配は、通信部107により他の分散学習装置10に送信され、各分散学習装置10で勾配平均が共有される。
量子化部104は、送信パラメータグループに属するパラメータに関する勾配を量子化する。量子化とは、浮動小数点形式の勾配をより少ないビット数で表現することである。勾配を量子化することにより、分散学習装置10間で送受信される勾配のデータ量をより削減することができる。
勾配共有部105は、通信部107により、MPI(Message Passing Interface)集団通信の1つであるAllReduceを行って、各分散学習装置10で勾配平均を共有する。
最適化部106は、勾配共有部105によって各分散学習装置10で共有された勾配平均を用いて、パラメータを更新する。各イテレーションでパラメータの更新が繰り返し行われることで、パラメータが最適化される。パラメータの最適化手法としては、例えば、確率的勾配降下法(SGD:stochastic gradient descent)、Momentum、AdaGrad、Adam等の任意の最適化手法を用いることができる。
通信部107は、他の分散学習装置10との間で各種情報の送受信を行う。他の分散学習装置10との間で送受信される情報としては、例えば、各分散学習装置10の統計量計算部102が統計量を計算するための情報(具体的には、例えば、後述する遅延勾配バッファの絶対値の平均等)、送信パラメータグループに属するパラメータに関する勾配等が挙げられる。
<分散学習処理>
次に、本発明の実施の形態における分散学習システム1が実行する分散学習処理について説明する。以降で説明する分散学習処理では、ニューラルネットワークのパラメータ数と同じサイズの配列である遅延勾配バッファriを用いる。なお、iは各パラメータのインデックスである。これらの遅延勾配バッファriの初期値は0である。
次に、本発明の実施の形態における分散学習システム1が実行する分散学習処理について説明する。以降で説明する分散学習処理では、ニューラルネットワークのパラメータ数と同じサイズの配列である遅延勾配バッファriを用いる。なお、iは各パラメータのインデックスである。これらの遅延勾配バッファriの初期値は0である。
また、ハイパーパラメータとして量子化ビット数k及び送信割合πを用いる。量子化ビット数kは1以上の任意の整数値、送信割合πは0より大で1未満の任意の値に設定することができるが、典型的には、例えば、k=3,π=0.2等と設定することが考えられる。
(実施例1)
まず、実施例1における分散学習処理について、図4を参照しながら説明する。図4は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート(実施例1)である。以降のステップS101〜ステップS109の処理は、所定の回数だけ繰り返し実行される。このような繰り返し回数は、例えば、ハイパーパラメータとして指定されても良いし、ハイパーパラメータとしてエポック数と1回のイテレーションあたりの学習データ数(バッチサイズ)とが指定されることで決定されても良い。以降では、1回のイテレーションにおける分散学習処理について説明する。
まず、実施例1における分散学習処理について、図4を参照しながら説明する。図4は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート(実施例1)である。以降のステップS101〜ステップS109の処理は、所定の回数だけ繰り返し実行される。このような繰り返し回数は、例えば、ハイパーパラメータとして指定されても良いし、ハイパーパラメータとしてエポック数と1回のイテレーションあたりの学習データ数(バッチサイズ)とが指定されることで決定されても良い。以降では、1回のイテレーションにおける分散学習処理について説明する。
ステップS101:各分散学習装置10の勾配計算部101は、自身に割り当てられたミニバッチから各パラメータに関する勾配を計算する。以降では、ニューラルネットワークの各パラメータを「wi」、パラメータwiに関する勾配を「gi」と表す。
ステップS102:各分散学習装置10の統計量計算部102は、パラメータwi毎に、当該パラメータwiに関する勾配giを遅延勾配バッファriに加算する。
ステップS103:各分散学習装置10の統計量計算部102は、パラメータグループs毎に、当該パラメータグループsに属するパラメータwiに対応する遅延勾配バッファriの絶対値の平均μsを計算する。
すなわち、パラメータグループsに属するパラメータwiを「wi s」と表した場合、統計量計算部102は、これらのパラメータwi sにそれぞれ対応する遅延勾配バッファri sの絶対値|ri s|の平均μsを計算する。これにより、各分散学習装置10において、パラメータグループs毎に、平均μsが得られる。
ここで、各パラメータwiは、例えば、ニューラルネットワークの線形層(全結合層又はアフィン層とも称される。)であれば、各行をそれぞれ1つのパラメータグループsとすれば良い。例えば、或る線形層Lの第M行に属するパラメータwiを、1つのパラメータグループsL,Mとすれば良い。
また、他の例として、各パラメータwiは、例えば、畳み込みニューラルネットワークの畳み込み層であれば、同一の出力チャネルに対応するパラメータwiを1つのパラメータグループsとすれば良い。例えば、或る畳み込み層Cの出力チャネルRに対応するパラメータwiを、1つのパラメータグループsC,Rとすれば良い。又は、これと同様に、同一入力チャネルに対応するパラメータwiを1つのパラメータグループsとしても良い。
なお、以降では、パラメータグループsの数をSであるとして、パラメータグループsをそれぞれ区別して表す場合は、「パラメータグループ1」,「パラメータグループ2」,・・・,「パラメータグループS」と表す。
ステップS104:各分散学習装置10の統計量計算部102は、パラメータグループs毎に、上記のステップS103で計算された平均μsの全ノード(全ての分散学習装置10)での平均μs´を計算する。この平均μs´は、例えば、次のようにして得られる。
分散学習装置10p(p=1,2,・・・,P)の統計量計算部102により上記のステップS103で計算された平均μsを「μs p」と表した場合、各分散学習装置10pの通信部107は、平均μs pをAllreduceする。これにより、各分散学習装置10pはμs pのp=1,2,・・・,Pに関する和(Σμs p)を得るので、その後、各分散学習装置10pの統計量計算部102は、このΣμs pをPで除算して、平均μs´を計算すれば良い。なお、この平均μs´が、パラメータグループsの統計量の一例である。
ここで、上記のステップS104では、平均μs´を計算するために分散学習装置10間で通信が行われるが、この通信の通信量はパラメータグループsの数に比例する。他方で、パラメータをグループ化する方法から分かるように、パラメータグループsの数Sは、パラメータwiの数(すなわち、勾配giの数)と比べると十分小さい。このため、上記のステップS104で平均μs´を計算するために行われる通信の通信量は、分散学習処理全体の通信量に対して無視できる程に小さい。
ステップS105:各分散学習装置10の送信グループ判定部103は、パラメータグループsのうち、上記のステップS104で得られたμs´が上位πの割合に入るグループs(言い換えれば、μs´の大きさの順位が上位πの割合に入るパラメータグループs)を送信パラメータグループsと判定する。
例えば、π=0.2である場合、送信グループ判定部103は、パラメータグループ1,パラメータグループ2,・・・,パラメータグループSのうち、μs´が上位20%の割合に入るパラメータグループsを送信パラメータグループsと判定する。なお、上記のステップS104で得られたμs´は、全ての分散学習装置10で共通であるため、送信パラメータグループsと判定されるパラメータグループsも同一である。
以降では、送信パラメータグループsに属するパラメータwiを「送信パラメータwi」、送信パラメータwiに関する勾配giを「送信勾配gi」とも表す。
ステップS106:各分散学習装置10の量子化部104は、送信勾配giを量子化する。なお、送信勾配giの量子化は必ずしも行われなくても良い。ただし、送信勾配giを量子化した方が、分散深層学習の通信量を更に削減することができる。
ここで、量子化部104による量子化手法としては任意の手法を用いることができるが、以下では、一例として、特に好ましい量子化手法について説明する。以下の(1−1)〜(1−4)では、或る1つの送信パラメータグループsに属する送信パラメータwiに関する勾配gi(送信勾配gi)を量子化する場合について説明する。この量子化方法では、パラメータwiのインデックスを他の分散学習装置10に送信する必要がないため、通信量を効率的に削減することが可能となる。
(1−1)まず、量子化部104は、当該送信パラメータwiに関する送信勾配giの絶対値の最大値をMとする。すなわち、これらの送信勾配giに対して、M=max|gi|とする。
(1−2)次に、量子化部104は、各送信勾配giの絶対値をMで除算して正規化する。すなわち、xi=|gi|/Mとする。このとき、0≦xi≦1である。また、送信勾配giの符号(正又は負)をσiとする。
(1−3)次に、量子化部104は、l={0,1,・・・,2k−1}として、各xiに対して、1/2l≦xi<1/(2l−1)を満たすl(これを「li」と表す。)を算出し、xiをliに量子化する。これにより、各xiがそれぞれliに量子化される。
ただし、l=2k−1である場合、1/2l=0と見做すものとする。例えば、k=3である場合、l=23−1=7である。したがって、この場合、1/27=0と見做すものとする。
(1−4)以上により、Mと、符号σiと、liとが得られる。これらが送信勾配giを量子化した結果である。ここで、Mは各送信勾配giと同一のビット数(例えば単精度であれば32ビット)であり、符号σiは1ビット、liはkビットである。このため、例えば、或る1つの送信パラメータグループsに属する送信パラメータwiの送信勾配giがNs個であり、かつ、各送信勾配giが32ビットである場合、これらの送信勾配giは、量子化により、1つのMと、Ns個のσiと、Ns個のliとで表すことができる。したがって、この場合、これらの送信勾配giは、32+(1+k)×Nsビットに圧縮される。
なお、上記で各送信勾配giを量子化することで得られた情報(すなわち、M、σi、li)は、例えば、更に、可逆圧縮アルゴリズム等によって圧縮されても良い。
以降のステップS107〜ステップS109において、単に、「送信勾配gi」と表した場合、上記のステップS106が実行された場合は量子化された送信勾配gi(すなわち、例えば、M、σi、li)を表し、上記のステップS106が実行されなかった場合は量子化されていない送信勾配giを表すものとする。これらの送信勾配giは、他の分散学習装置10に送信するためのバッファ領域である送信バッファに格納されている。
ステップS107:各分散学習装置10の勾配共有部105は、送信勾配giの全ノード(全ての分散学習装置10)での平均hiを、全ノードで共有する。すなわち、分散学習装置10pでの送信勾配をgi pと表した場合、各分散学習装置10の勾配共有部105は、平均hi=(gi 1+・・・+gi P)/Pを、全ノードで共有する。この平均hiが勾配平均であり、例えば、Allreduceにより得られる。Allreduceのアルゴリズムは任意のものを利用することができるが、例えば、以下の(2−1)〜(2−3)により勾配平均を得ることができる。
(2−1)分散学習装置10p(p=1,2,・・・,P)の通信部107は、送信バッファをP個のブロック領域B1,・・・,BPに分割した上で、分割したブロック領域B1,・・・,BPにそれぞれ格納されている送信勾配giを、当該ブロック領域Bpに対応する分散学習装置10pに送信する。ただし、ブロック領域Bpに対応する分散学習装置10pが自分自身である場合は、当該分散学習装置10pの通信部107は、当該ブロック領域Bpに格納されている送信勾配giを送信しない。
例えば、分散学習装置101の通信部107は、ブロック領域B2,・・・,ブロック領域BPにそれぞれ格納されている送信勾配giを、分散学習装置102,・・・,分散学習装置10Pにそれぞれ送信する。同様に、分散学習装置102の通信部107は、ブロック領域B1,ブロック領域B3,・・・,ブロック領域BPにそれぞれ格納されている送信勾配giを、分散学習装置101,分散学習装置103,・・・,分散学習装置10Pにそれぞれ送信する。以降も同様に、分散学習装置10pの通信部107は、ブロック領域B1,・・・,ブロック領域Bp−1,ブロック領域Bp+1,・・・,ブロック領域BPにそれぞれ格納されている送信勾配giを、分散学習装置101,・・・,分散学習装置10p−1,分散学習装置10p+1,・・・,分散学習装置10Pにそれぞれ送信する。
これにより、各分散学習装置10pは、全ノードのブロック領域Bpに格納されていた送信勾配gi(自身のブロック領域Bpに格納されている送信勾配giも含む)を得る。
(2−2)次に、各分散学習装置10pの勾配共有部105は、上記の(2−1)で得られた送信勾配giの勾配平均hiを計算する。このとき、送信勾配giが量子化されている場合、勾配共有部105は、送信勾配giを浮動小数点形式に復元した上で、復元後の送信勾配giから勾配平均hiを計算する。
(2−3)次に、各分散学習装置10pの通信部107は、上記のステップ(2−2)で計算した勾配平均hiをAllgatherする。これにより、各分散学習装置10p(p=1,2,・・・,P)で勾配平均hiが共有される。上記の(2−1)〜(2−3)は勾配平均hiを得るための和が1回のみであるため、送信勾配giの復元が1度で済み、また精度を保ち易い。なお、各分散学習装置10pは、Allgatherの前に、再度量子化を行っても良い。このときの量子化ビット数kは、上記のステップS106で用いた量子化ビット数kと異なっていても良い。
なお、分散学習装置10p(p=1,2,・・・,P)は、上記のステップS104と同様に、通信部107により、送信勾配giをAllreduceしても良い。これにより、各分散学習装置10pはgi pのp=1,2,・・・,Pに関する和(Σgi p)を得るので、その後、各分散学習装置10pの勾配共有部105は、このΣgi pをPで除算して、勾配平均hiを計算しても良い。
ステップS108:各分散学習装置10の統計量計算部102は、送信パラメータwiに対応する遅延勾配バッファriを0にクリアする。このように、統計量計算部102は、他の分散学習装置10に送信された勾配gi(送信勾配gi)に対応する遅延勾配バッファriを0にクリアする。
一方で、他の分散学習装置10に送信されなかった勾配giに対応する遅延勾配バッファriについてはそのままとする。すなわち、これらの遅延勾配バッファriの値は、次のイテレーションに持ち越される。これにより、例えば、或るイテレーションで勾配giの大きさが小さい場合(言い換えれば、パラメータwiの重要度が低い場合)であっても、イテレーションを繰り返すことで、当該勾配giに対応するパラメータwiも更新され得る。
ステップS109:各分散学習装置10の最適化部106は、勾配共有部105により共通された勾配平均hiを用いて、予め決められた任意の最適化手法によってパラメータwiを更新する。
(実施例2)
次に、実施例2における分散学習処理について、図5を参照しながら説明する。図5は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート(実施例2)である。実施例2では、いくつかのパラメータグループsを1つのサブグループtにまとめた上で、サブグループt毎に、このサブグループtに含まれるパラメータグループsのうち、勾配giが送信されるパラメータwiのパラメータグループsを判定する場合に説明する。
次に、実施例2における分散学習処理について、図5を参照しながら説明する。図5は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート(実施例2)である。実施例2では、いくつかのパラメータグループsを1つのサブグループtにまとめた上で、サブグループt毎に、このサブグループtに含まれるパラメータグループsのうち、勾配giが送信されるパラメータwiのパラメータグループsを判定する場合に説明する。
これにより、例えば、パラメータグループs間で、勾配giの大きさに偏りがある場合等に、この偏りをサブグループt内に局所化させることができる。すなわち、例えば、1つの線形層の各行をそれぞれ1つのパラメータグループs、これらのパラメータグループs(すなわち、同一の線形層のパラメータグループs)を1つのサブグループtとすることで、上述した偏りを1つの線形層内に局所化させることができる。この場合、例えば、線形層Lの第m行(m=1,・・・,M)に属するパラメータwiをグループ化したパラメータグループをsL,mとした場合、サブグループtL={sL,1,・・・,sL,M}とすれば良い。
同様に、例えば、畳み込みニューラルネットワークの畳み込み層であれば、同一の畳み込み層のパラメータグループsを1つのサブグループtとすれば良い。この場合、例えば、畳み込み層Cの出力チャネルがR、G、Bの3チャネルで、同一の出力チャネルに対応するパラメータwiをグループ化したパラメータグループをそれぞれsC,R、sC,G、及びsC,Bとした場合、サブグループtC={sC,R,sC,G,sC,B}とすれば良い。
上記のように同一層のパラメータグループsを1つのサブグループtとすることで、実施例2では、例えば、上述した偏りによって或る特定の層のパラメータwiのみが更新されてしまうような事態を防止することができる。
なお、図5のステップS101〜ステップS104及びステップS106〜ステップS109は、図4と同様であるため、その説明を省略する。
ステップS205:各分散学習装置10の送信グループ判定部103は、サブグループt毎に、このサブグループtに属するパラメータグループsのうち、ステップS104で得られたμs´が上位πの割合に入るグループsを送信パラメータグループsと判定する。これにより、サブグループt毎に、送信パラメータグループsが判定される。なお、πは、サブグループt毎に異なる値が設定されても良い。
<本発明の効果>
ここで、本発明の実施の形態における分散学習システム1の効果を図6及び図7に示す。図6(a)は、π=0.2に設定した上で、実施例1により分散学習処理を行った場合における精度を示す。図6(b)は、π=0.02に設定した上で、実施例1により分散学習処理を行った場合における精度を示す。
ここで、本発明の実施の形態における分散学習システム1の効果を図6及び図7に示す。図6(a)は、π=0.2に設定した上で、実施例1により分散学習処理を行った場合における精度を示す。図6(b)は、π=0.02に設定した上で、実施例1により分散学習処理を行った場合における精度を示す。
また、図6(c)は、π=0.2に設定した上で、実施例1により分散学習処理を行った場合における圧縮率を示す。図6(d)は、π=0.02に設定した上で、実施例1により分散学習処理を行った場合における圧縮率を示す。
他方で、図7(a)は、π=0.2に設定した上で、実施例2により分散学習処理を行った場合における精度を示す。図7(b)は、π=0.02に設定した上で、実施例2により分散学習処理を行った場合における精度を示す。
また、図7(c)は、π=0.2に設定した上で、実施例2により分散学習処理を行った場合における圧縮率を示す。図7(d)は、π=0.02に設定した上で、実施例2により分散学習処理を行った場合における圧縮率を示す。
なお、図6(a)〜図6(b)及び図7(a)〜図7(b)の「baseline」は、非圧縮時の最大到達精度を表す。また、図6(c)〜図6(d)及び図7(c)〜図7(d)の縦軸は10を底とした対数値を表す。
図6及び図7に示されているように、本発明の実施の形態における分散学習システム1では、非圧縮時からの精度の低下を抑止しつつ、高い圧縮率が達成できていることがわかる。
<まとめ>
以上のように、本発明の実施の形態における分散学習システム1では、パラメータグループs毎に、このパラメータグループsに属するパラメータwiの勾配giを送信するか否かを判定する。これにより、本発明の実施の形態における分散学習システム1では、分散学習において、分散学習装置10間の通信量を高い圧縮率で圧縮(削減)することができるようになる。
以上のように、本発明の実施の形態における分散学習システム1では、パラメータグループs毎に、このパラメータグループsに属するパラメータwiの勾配giを送信するか否かを判定する。これにより、本発明の実施の形態における分散学習システム1では、分散学習において、分散学習装置10間の通信量を高い圧縮率で圧縮(削減)することができるようになる。
また、本発明の実施の形態における分散学習システム1では、或るイテレーションで送信パラメータグループsと判定されなかったパラメータグループsも、イテレーションが繰り返されることで、送信パラメータグループsと判定され得る。このため、例えば、勾配giの大きさが小さく、重要度が低いと考えられるパラメータwiも適切に更新され、このようなパラメータwiが更新されないことによる精度の低下を抑止することができる。
また、本発明の実施の形態における分散学習システム1では、各分散学習装置10で同一のパラメータグループsが送信パラメータグループsとして判定される。このため、各分散学習装置10は、送信勾配giに関するパラメータwiのインデックスを他の分散学習装置10に送る必要がない。また、このため、効率的な集団通信のアルゴリズムを使用することができ、ノード数(分散学習装置10の数)が多い場合であっても、効率的に勾配平均を共有することができる。
更に、本発明の実施の形態における分散学習システム1では、送信パラメータグループsを判定する際に用いるハイパーパラメータπは、勾配giが送信されたパラメータwiの割合を表しているため、ユーザが直観的に容易に設定することができる。また、このため、各イテレーション間での送信勾配giの割合が同一であるため、学習の経過時間の予測を容易に行うこともできるようになる。
加えて、本発明の実施の形態における分散学習システム1では、送信勾配giを更に量子化することもできる。これにより、分散学習装置10間の通信量を更に圧縮することができる。また、このとき、適切な量子化手法を用いることで、量子化による精度の低下も抑止することができる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
1 分散学習システム
10 分散学習装置
101 勾配計算部
102 統計量計算部
103 送信グループ判定部
104 量子化部
105 勾配共有部
106 最適化部
107 通信部
10 分散学習装置
101 勾配計算部
102 統計量計算部
103 送信グループ判定部
104 量子化部
105 勾配共有部
106 最適化部
107 通信部
Claims (8)
- 複数のコンピュータで複数のパラメータを学習する分散学習方法であって、前記コンピュータが、
前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順と、
前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算手順と、
前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定手順と、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記複数のコンピュータ間で共有する共有手順と、
前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順と、
を実行することを特徴とする分散学習方法。 - 前記統計量計算手順は、
前記パラメータグループ毎に、該パラメータグループに含まれるパラメータに関する誤差関数の勾配を、該勾配に対応する遅延勾配バッファに加算し、
加算後の遅延勾配バッファの絶対値の平均を、前記パラメータグループの統計量として計算する、
ことを特徴とする請求項1に記載の分散学習方法。 - 前記統計量計算手順は、
前記勾配平均が前記複数のコンピュータ間で共有された後、前記加算後の遅延勾配バッファをゼロクリアする、
ことを特徴とする請求項2に記載の分散学習方法。 - 前記判定手順は、
前記複数のパラメータグループに対してそれぞれ計算された前記統計量のうち、該統計量の大きさの順位が、前記送信割合が示す割合に含まれる統計量に対応するパラメータグループを、前記送信パラメータグループと判定する、
ことを特徴とする請求項1に記載の分散学習方法。 - 前記コンピュータが、更に、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配を量子化する量子化手順を実行し、
前記共有手順は、
前記複数のコンピュータ間で前記量子化後の勾配を集団通信することにより前記勾配平均を共有する、
ことを特徴とする請求項1に記載の分散学習方法。 - 前記統計量計算手順は、
前記複数のパラメータのうち、ニューラルネットワークの線形層における各行のパラメータを同一のグループにグループ化したパラメータグループ又は畳み込みニューラルネットワークの畳み込み層における同一出力チャネル若しくは同一入力チャネルのパラメータを同一グループにグループ化したパラメータグループのいずれかのパラメータグループ毎に、前記統計量を計算する、
ことを特徴とする請求項1に記載の分散学習方法。 - 前記統計量計算手順は、
複数の前記パラメータグループを複数のグループにそれぞれグループ化したサブグループ毎に、該サブグループに含まれる複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する、
ことを特徴とする請求項1に記載の分散学習方法。 - 複数のパラメータの分散学習を行う分散学習装置であって、
前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算部と、
前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算部と、
前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定部と、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記分散学習装置と1以上の他の分散学習装置とでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記分散学習装置と1以上の他の分散学習装置との間で共有する共有部と、
前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新部と、
を実行することを特徴とする分散学習装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018108754A JP2019212111A (ja) | 2018-06-06 | 2018-06-06 | 分散学習方法及び分散学習装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018108754A JP2019212111A (ja) | 2018-06-06 | 2018-06-06 | 分散学習方法及び分散学習装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019212111A true JP2019212111A (ja) | 2019-12-12 |
Family
ID=68845324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018108754A Pending JP2019212111A (ja) | 2018-06-06 | 2018-06-06 | 分散学習方法及び分散学習装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019212111A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021140643A1 (ja) * | 2020-01-10 | 2021-07-15 | 富士通株式会社 | ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム |
WO2022050440A1 (ko) * | 2020-09-03 | 2022-03-10 | 엘지전자 주식회사 | 복수의 디바이스들의 학습 결과에 기초하여, 서버가 최종 학습 결과물을 도출하는 분산학습을 위한 통신방법 및 서버 |
-
2018
- 2018-06-06 JP JP2018108754A patent/JP2019212111A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021140643A1 (ja) * | 2020-01-10 | 2021-07-15 | 富士通株式会社 | ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム |
JP7453563B2 (ja) | 2020-01-10 | 2024-03-21 | 富士通株式会社 | ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム |
WO2022050440A1 (ko) * | 2020-09-03 | 2022-03-10 | 엘지전자 주식회사 | 복수의 디바이스들의 학습 결과에 기초하여, 서버가 최종 학습 결과물을 도출하는 분산학습을 위한 통신방법 및 서버 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110852421B (zh) | 模型生成方法和装置 | |
CN106062786B (zh) | 用于训练神经网络的计算系统 | |
US11531932B2 (en) | Systems and methods for compression and distribution of machine learning models | |
US11010518B2 (en) | Mapping logical qubits on a quantum circuit | |
US20190156213A1 (en) | Gradient compressing apparatus, gradient compressing method, and non-transitory computer readable medium | |
US20210224447A1 (en) | Grouping of pauli strings using entangled measurements | |
US11907818B2 (en) | Compression of machine-learned models via entropy penalized weight reparameterization | |
WO2019216277A1 (ja) | 情報処理装置、演算装置、及び情報処理方法 | |
US11615301B2 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
US20220156633A1 (en) | System and method for adaptive compression in federated learning | |
JP2019212111A (ja) | 分散学習方法及び分散学習装置 | |
US20230130638A1 (en) | Computer-readable recording medium having stored therein machine learning program, method for machine learning, and information processing apparatus | |
CN114374440A (zh) | 量子信道经典容量的估计方法及装置、电子设备和介质 | |
CN115391298A (zh) | 基于内容的动态混合数据压缩 | |
CN115104305A (zh) | 用于图压缩的多上下文熵编码 | |
US20230106736A1 (en) | System and method for low-distortion compaction of floating-point numbers | |
WO2020177863A1 (en) | Training of algorithms | |
US20230024977A1 (en) | Method of processing data, data processing device, data processing program, and method of generating neural network model | |
US20220083870A1 (en) | Training in Communication Systems | |
US20220292342A1 (en) | Communication Efficient Federated/Distributed Learning of Neural Networks | |
US11342933B2 (en) | Lossy significance compression with lossy restoration | |
US20220188077A1 (en) | Arithmetic processing device, arithmetic processing method, and storage medium | |
KR102429040B1 (ko) | 대용량 그래프의 희소 요약 방법 및 시스템 | |
CN116776155B (zh) | 一种基于联邦学习的模型训练方法、装置、设备和介质 | |
US10740213B1 (en) | Counter overflow management for asynchronous data mover facility |