(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6227813
(24)【登録日】2017年10月20日
(45)【発行日】2017年11月8日
(54)【発明の名称】分散深層学習装置及び分散深層学習システム
(51)【国際特許分類】
G06N 3/08 20060101AFI20171030BHJP
【FI】
G06N3/08
【請求項の数】2
【全頁数】9
(21)【出願番号】特願2017-11699(P2017-11699)
(22)【出願日】2017年1月25日
【審査請求日】2017年4月21日
【早期審査対象出願】
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100114720
【弁理士】
【氏名又は名称】須藤 浩
(74)【代理人】
【識別番号】100177895
【弁理士】
【氏名又は名称】山田 一範
(74)【代理人】
【識別番号】100184583
【弁理士】
【氏名又は名称】上田 侑士
(74)【代理人】
【識別番号】100188662
【弁理士】
【氏名又は名称】浅見 浩二
(72)【発明者】
【氏名】秋葉 拓哉
【審査官】
大塚 俊範
(56)【参考文献】
【文献】
国際公開第2014/020959(WO,A1)
【文献】
SEIDE, Frank et al.,1-Bit Stochastic Gradient Descent and its Application to Data-Parallel Distributed Training of Speech DNNs,INTERSPEECH 2014 [online],2014年 9月14日,[検索日 2017.06.14],p.1058-1062,URL,http://www.microsoft.com/en-us/research/wp-content/uploads/2016/02IS140694.pdf
【文献】
SU, Hang et al.,EXPERIMENTS ON PARALLEL TRAINING OF DEEP NEURAL NETWORK USING MODEL AVERAGING [online],2016年 6月18日,[検索日 2017.06.14],URL,https://arxiv.org/pdf/1507.01229v2.pdf
【文献】
久保 陽太郎,ニューラルネットワーク研究のフロンティア,人工知能,日本,人工知能学会,2016年 3月 1日,第31巻, 第2号,第180-188頁,ISSN:2188-2266
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00−99/00
(57)【特許請求の範囲】
【請求項1】
少なくとも1以上の学習装置との間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習装置であって、
他の学習装置との間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に0より大きく1より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部と
を備えた分散深層学習装置。
【請求項2】
1以上のマスターノードと、1以上のスレーブノードとの間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習システムであって、
前記マスターノードは、
前記スレーブノードとの間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に0より大きく1より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に対して、前回集約勾配を量子化した時の集約勾配剰余分に0より大きく1より小さい所定倍率を乗算して加算する集約勾配剰余加算部と、
前記集約勾配剰余加算部で剰余分が加算された集約勾配について量子化を行う集約勾配量子化部と、
前記集約勾配量子化部で量子化した時の剰余分を記憶させる集約勾配剰余記憶部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部
とを備え、
前記スレーブノードは、
前記マスターノードに対して量子化された勾配を送信し、前記マスターノードから前記集約勾配量子化部で量子化された集約勾配を受信する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に0より大きく1より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された集約勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記勾配復元部で復元した集約勾配に基づいてパラメータを更新するパラメータ更新部
とを備えた分散深層学習システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算の効率と通信量の削減とを両立させた分散深層学習装置及び分散深層学習システムに関するものである。
【背景技術】
【0002】
従来、機械学習、深層学習において採用される関数の最適化手法の一つとして確率的勾配降下法(Stochastic Gradient Descent:以下、SGDともいう)が存在する。
【0003】
特許文献1は、深い階層を持つニューラルネットワーク学習方法において、学習が短時間で完了するものを提供することを目的としたものであり、学習工程において確率的勾配降下法を用いることが開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2017−16414号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数の計算装置を並列化して、複数の計算装置によって処理を行う分散深層学習が行われる場合がある。その際に、得られた勾配(gradient)を量子化(quantize)して共有することで、通信量と精度(=学習速度)とのトレードオフを制御可能であることがわかっている。
【0006】
一般に、量子化を行うことにより各学習ノードにおける剰余成分が発生することから、剰余成分を次回のイテレーションに繰り込んで各学習ノードにおける計算を行う。先行研究においては、剰余成分の情報を残すことにより学習を効率化することを期待している。
【0007】
しかし、量子化により勾配の剰余成分が次のイテレーションに継承されることで、SGDの収束が遅くなることが分かっていなかった。すなわち、計算の効率と通信量の削減とを両立できないという問題がある。
【0008】
本発明は、上記問題点に鑑みなされたものであり、計算の効率と通信量の削減とを両立させた分散深層学習装置及び分散深層学習システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
少なくとも1以上の学習装置との間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習装置であって、他の学習装置との間で通信によって量子化された勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備えるようにしたことを特徴とする。
【0010】
また、分散深層学習装置は、前記所定倍率は、0より大きく1より小さいものであることを特徴とする。
【0011】
本発明に係る分散深層学習システムは、1以上のマスターノードと、1以上のスレーブノードとの間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習システムであって、前記マスターノードは、前記スレーブノードとの間で通信によって量子化された勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、前記勾配集約部で集約された勾配に対して、前回集約勾配を量子化した時の集約勾配剰余分に所定倍率を乗算して加算する集約勾配剰余加算部と、前記集約勾配剰余加算部で剰余分が加算された集約勾配について量子化を行う集約勾配量子化部と、前記集約勾配量子化部で量子化した時の剰余分を記憶させる集約勾配剰余記憶部と、前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備え、前記スレーブノードは、前記マスターノードに対して量子化された勾配を送信し、前記マスターノードから前記集約勾配量子化部で量子化された集約勾配を受信する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された集約勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記勾配復元部で復元した集約勾配に基づいてパラメータを更新するパラメータ更新部とを備えたことを特徴とする。
【0012】
また、本発明に係る分散深層学習システムは、前記所定倍率は、0より大きく1より小さいものであることを特徴とする。
【発明の効果】
【0013】
本発明に係る分散深層学習装置及び分散深層学習システムによれば、勾配の剰余部分をイテレーション毎に適切に減衰させることで、Quantized SGDの剰余成分が次のイテレーションに残ることによるStale Gradientの影響を減じつつ、分散深層学習を安定的に、かつネットワーク帯域を効率的に利用して実施できる。すなわち、分散深層学習における学習の計算の効率を維持しつつ、通信量を削減し、限られた帯域において大規模な分散深層学習を実現することが可能となる。
【図面の簡単な説明】
【0014】
【
図1】本発明に係る分散深層学習装置10の構成を表したブロック図である。
【
図2】本発明に係る分散深層学習装置10におけるパラメータ更新処理の流れを表したフローチャート図である。
【
図3】本発明に係る分散深層学習装置10による学習について減衰率毎に反復回数とテスト精度の関係を表したグラフである。
【発明を実施するための形態】
【0015】
[第1の実施の形態]
以下、図面を参照しながら、本発明に係る分散深層学習装置10について説明する。
図1は、本発明に係る分散深層学習装置10の構成を表したブロック図である。なお、分散深層学習装置10は、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものであるものとする。この場合に、分散深層学習装置10は、一般的なコンピュータが通常備えているであろうCPU(Central Processing Unit:中央演算処理装置)、GPU(Graphics Processing Unit:画像処理装置)、メモリ、ハードディスクドライブ等のストレージを具備しているものとする(図示省略)。また、これらの一般的なコンピュータを本例の分散深層学習装置10として機能させるためにプログラムよって各種処理が実行されることは言うまでもない。
【0016】
図1に示すように、分散深層学習装置10は、通信部11と、勾配計算部12と、量子化剰余加算部13と、勾配量子化部14と、勾配復元部15と、量子化剰余記憶部16と、勾配集約部17と、パラメータ更新部18とを少なくとも備えている。
【0017】
通信部11は、量子化された勾配を分散深層学習装置の間で通信によって交換する機能を有する。交換には、MPI(Message Passing Interface)におけるallgather(データの集約機能)を用いてもよいし、他の通信パターンを用いてもよい。この通信部11において、全ての分散深層学習装置間で勾配を交換する。
【0018】
勾配計算部12は、現在のパラメータにおけるモデルを用い、与えられた学習データによるロス関数に対するパラメータの勾配を計算する機能を有する。
【0019】
量子化剰余加算部13は、前回のイテレーションにおいて量子化剰余記憶部16に記憶した量子化時の剰余分に所定倍率を乗算したものを勾配計算部12で求めた勾配に加える機能を有する。ここで、所定倍率は、0.0より大きく1.0より小さいものとする。というのも、倍率を1.0とすると普通のquantized SGDとなってしまい、倍率を0.0とすると剰余分を使わないケース(学習が安定しないため有用性なし)となってしまい、本例の意図するところではなくなってしまうためである。このときの倍率は、固定倍率としてもよいし、可変倍率としてもよい。
【0020】
勾配量子化部14は、量子化剰余加算部13によって所定倍後の剰余分が加算された勾配を、所定の手法に従って量子化する機能を有する。量子化する手法としては、例えば、1-bit SGD、sparse gradient、random quantizationなどが考えられる。この勾配量子化部14で量子化された勾配は通信部11に送られ、量子化時の剰余分は、後述する量子化剰余記憶部16に送られる。
【0021】
勾配復元部15は、通信部11によって交換された量子化された勾配を、本来の精度の勾配に復元する機能を有する。この勾配復元部15における復元の具体的な手法は、勾配量子化部14における量子化手法に対応したものである。
【0022】
量子化剰余記憶部16は、勾配量子化部14から送信された量子化時の剰余分を記憶する機能を有する。記憶させた剰余分は、量子化剰余加算部13において次回の勾配計算部12の計算結果に対して加算するために利用される。また、所定倍率の乗算は、量子化剰余加算部13において行うものとして説明したが、この量子化剰余記憶部16において所定倍率を乗算した上で記憶させるようにしてもよい。
【0023】
勾配集約部17は、通信部で集められた勾配を集約し、分散深層学習装置間での集約された勾配を計算する機能を有する。ここでの集約とは、平均又は何らかの計算を想定したものである。
【0024】
パラメータ更新部18は、勾配集約部17で集約された勾配に基づいてパラメータを更新する機能を有する。
【0025】
以上の構成の分散深層学習装置10は、他の分散深層学習装置と相互に通信を行って量子化された勾配を交換する。他の分散深層学習装置との接続は、例えば、パケットスイッチ装置のようなものが利用される。また、同一の端末において仮想的に複数の分散深層学習装置を駆動させて、仮想の分散深層学習装置間で量子化された勾配を交換する構成であってもよい。また、クラウド上で仮想的に複数の分散深層学習装置を駆動させる場合も同様である。
【0026】
次に、本発明に係る分散深層学習装置10における処理の流れについて説明する。
図2は、本発明に係る分散深層学習装置10におけるパラメータ更新処理の流れを表したフローチャート図である。この
図2において、パラメータ更新処理は、現在のパラメータに基づいて勾配の計算を行うことによって開始される(ステップS11)。次に、求めた勾配に対して、前回のイテレーションで記憶させた前回量子化時の剰余分に所定倍率を乗算したものを加算する(ステップS12)。ここでの所定倍率は、0<所定倍率<1の条件を満たす値に設定される。例えば、所定倍率=0.9の場合は、剰余分×0.9の値を求めた勾配に加えることになる。なお、この所定倍率0.9を乗算した場合を、減衰率=0.1と表現するものとする。次に、所定倍後の剰余分を加算した勾配を量子化して他装置に送信するとともに、今回の量子化時の剰余分を記憶させる(ステップS13)。ここでいう他装置とは、並列化して一緒に分散深層学習を実現するための他の分散深層学習装置のことであり、他の分散深層学習装置においても同様のパラメータ更新処理を行っており、他装置からは量子化された勾配が送信されてくることになる。他装置から受信した量子化された勾配を元の精度に復元する(ステップS14)。次に、他装置との通信で得られた勾配を集約して、集約された勾配を計算する(ステップS15)。ここでの集約の計算は、何らかの演算処理を行うが、例えば、集約した勾配の平均を求める演算処理を行う。そして、集約した勾配に基づいてパラメータを更新する(ステップS16)。そして、更新されたパラメータを記憶させて(ステップS17)、パラメータ更新処理を終了する。
【0027】
図3は、本発明に係る分散深層学習装置10による学習について減衰率毎に反復回数とテスト精度の関係を表したグラフである。分散学習を行わずに1台の学習装置で演算を行った場合、分散した場合に比較して少ない反復回数でテスト精度の向上が認められるが、一回のイテレーションに要する処理時間が分散した場合に比較して膨大になってしまう。また、16台の分散深層学習装置で処理を分散した場合については、減衰率=1.0(所定倍率=0.0)、すなわち量子化剰余分を加えない場合については、学習が安定せずにテスト精度の向上が見られない結果であった。これに対して、16台の分散深層学習装置で処理を分散し、減衰率=0.0、0.1、0.5、0.9とした各場合については、反復回数を増やすことでほぼ同じテスト精度に収束するという結果が得られた。減衰率=0.0については剰余分をそのまま加える場合であり、減衰率=0.1については剰余分に所定倍率=0.9を乗算して加える場合であるが、これらはテスト精度が大きく変動する傾向があるものの、最終的にほぼ同じテスト精度に収束している。また、減衰率=0.9(所定倍率=0.1)の場合については、大幅に剰余分を減衰させているが、最終的にほぼ同じテスト精度に収束していることが分かる。
【0028】
以上のように、本発明に係る分散深層学習装置10によれば、勾配の剰余部分をイテレーション毎に適切に減衰させることで、Quantized SGDの剰余成分が次のイテレーションに残ることによるStale Gradientの影響を減じつつ、分散深層学習を安定的に、かつネットワーク帯域を効率的に利用して実施できる。すなわち、分散深層学習における学習の計算の効率を維持しつつ、通信量を削減し、限られた帯域において大規模な分散深層学習を実現することが可能となる。
【0029】
[第2の実施の形態]
前記第1の実施の形態においては、分散深層学習装置10のそれぞれが同様に、勾配の演算、所定倍後の剰余分の加算、勾配の量子化、剰余分の記憶、勾配の復元、勾配の集約、パラメータの更新の各機能を実行するものとして説明を行っていたが、これに限定されるものではない。
【0030】
例えば、1つのマスターノードと、1以上のスレーブノードとで分散深層学習システムを構成するようにしてもよい。1つのマスターノードとしての分散深層学習装置10aは、第1の実施の形態における分散深層学習装置10と同様に、通信部11、勾配計算部12、量子化剰余加算部13、勾配量子化部14、勾配復元部15、量子化剰余記憶部16、勾配集約部17、パラメータ更新部18を備え、これに加えて、勾配集約部17で集約された勾配に対して前回のイテレーション時の集約勾配剰余分に所定倍率を乗算して加算する集約勾配剰余加算部19と、剰余分が加算された集約勾配について量子化を行う集約勾配量子化部20と、集約勾配量子化部20で量子化した時の剰余分を記憶させる集約勾配剰余記憶部21とを備えるようにする。集約勾配を量子化したものを通信部11を介してスレーブノードとしての分散深層学習装置10bに送信する。
【0031】
他方、1以上のスレーブノードとしての分散深層学習装置10bは、第1の実施の形態における分散深層学習装置10と同様に、通信部11、勾配計算部12、量子化剰余加算部13、勾配量子化部14、勾配復元部15、量子化剰余記憶部16、パラメータ更新部18を備えるが、勾配集約部17は備えておらず、集約勾配を量子化したものを勾配復元部15において復元し、直接パラメータ更新部18に与えるようにする。すなわち、スレーブノードにおけるパラメータの更新は、マスターノードから受信した集約勾配を用いて行われることになる。
【0032】
なお、1つのマスターノードである分散深層学習システムとして説明したが、2以上のマスターノードからなる分散深層学習システムであってもよい。マスターノードが複数の場合には、複数のマスターノードでパラメータを分担し、各マスターノードは担当したパラメータについて処理を行うようにしてもよい。
【符号の説明】
【0033】
10 分散深層学習装置
11 通信部
12 勾配計算部
13 量子化剰余加算部
14 勾配量子化部
15 勾配復元部
16 量子化剰余記憶部
17 勾配集約部
18 パラメータ更新部
19 集約勾配剰余加算部
20 集約勾配量子化部
21 集約勾配剰余記憶部
【要約】
【課題】計算の効率と通信量の削減とを両立させた分散深層学習装置を提供すること。
【解決手段】複数の学習装置との間で量子化勾配を交換して分散して深層学習を行うための分散深層学習装置であって、他の学習装置との間で通信によって量子化勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、通信部で受信した量子化勾配を本来の精度の勾配に復元する勾配復元部と、勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備える。
【選択図】
図1