(57)【要約】【課題】計算の効率と通信量の削減とを両立させた分散深層学習装置を提供すること。【解決手段】複数の学習装置との間で量子化勾配を交換して分散して深層学習を行うための分散深層学習装置であって、他の学習装置との間で通信によって量子化勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、通信部で受信した量子化勾配を本来の精度の勾配に復元する勾配復元部と、勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備える。【選択図】図１
2018120441.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１以上の学習装置との間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習装置であって、
他の学習装置との間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部と
を備えた分散深層学習装置。
【請求項２】
前記所定倍率は、０より大きく１より小さいものである請求項１記載の分散深層学習装置。
【請求項３】
１以上のマスターノードと、１以上のスレーブノードとの間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習システムであって、
前記マスターノードは、
前記スレーブノードとの間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に対して、前回集約勾配を量子化した時の集約勾配剰余分に所定倍率を乗算して加算する集約勾配剰余加算部と、
前記集約勾配剰余加算部で剰余分が加算された集約勾配について量子化を行う集約勾配量子化部と、
前記集約勾配量子化部で量子化した時の剰余分を記憶させる集約勾配剰余記憶部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部
とを備え、
前記スレーブノードは、
前記マスターノードに対して量子化された勾配を送信し、前記マスターノードから前記集約勾配量子化部で量子化された集約勾配を受信する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された集約勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記勾配復元部で復元した集約勾配に基づいてパラメータを更新するパラメータ更新部
とを備えた分散深層学習システム。
【請求項４】
前記所定倍率は、０より大きく１より小さいものである請求項３記載の分散深層学習システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算の効率と通信量の削減とを両立させた分散深層学習装置及び分散深層学習システムに関するものである。
【背景技術】
【０００２】
従来、機械学習、深層学習において採用される関数の最適化手法の一つとして確率的勾配降下法（Stochastic Gradient Descent：以下、ＳＧＤともいう）が存在する。
【０００３】
特許文献１は、深い階層を持つニューラルネットワーク学習方法において、学習が短時間で完了するものを提供することを目的としたものであり、学習工程において確率的勾配降下法を用いることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１６４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数の計算装置を並列化して、複数の計算装置によって処理を行う分散深層学習が行われる場合がある。その際に、得られた勾配（gradient）を量子化（quantize）して共有することで、通信量と精度（=学習速度）とのトレードオフを制御可能であることがわかっている。
【０００６】
一般に、量子化を行うことにより各学習ノードにおける剰余成分が発生することから、剰余成分を次回のイテレーションに繰り込んで各学習ノードにおける計算を行う。先行研究においては、剰余成分の情報を残すことにより学習を効率化することを期待している。
【０００７】
しかし、量子化により勾配の剰余成分が次のイテレーションに継承されることで、ＳＧＤの収束が遅くなることが分かっていなかった。すなわち、計算の効率と通信量の削減とを両立できないという問題がある。
【０００８】
本発明は、上記問題点に鑑みなされたものであり、計算の効率と通信量の削減とを両立させた分散深層学習装置及び分散深層学習システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
少なくとも１以上の学習装置との間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習装置であって、他の学習装置との間で通信によって量子化された勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備えるようにしたことを特徴とする。
【００１０】
また、分散深層学習装置は、前記所定倍率は、０より大きく１より小さいものであることを特徴とする。
【００１１】
本発明に係る分散深層学習システムは、１以上のマスターノードと、１以上のスレーブノードとの間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習システムであって、前記マスターノードは、前記スレーブノードとの間で通信によって量子化された勾配を交換する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、前記勾配集約部で集約された勾配に対して、前回集約勾配を量子化した時の集約勾配剰余分に所定倍率を乗算して加算する集約勾配剰余加算部と、前記集約勾配剰余加算部で剰余分が加算された集約勾配について量子化を行う集約勾配量子化部と、前記集約勾配量子化部で量子化した時の剰余分を記憶させる集約勾配剰余記憶部と、前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部とを備え、前記スレーブノードは、前記マスターノードに対して量子化された勾配を送信し、前記マスターノードから前記集約勾配量子化部で量子化された集約勾配を受信する通信部と、現在のパラメータの勾配を計算する勾配計算部と、前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に所定倍率を乗算したものを加算する量子化剰余加算部と、前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、前記通信部で受信した量子化された集約勾配を本来の精度の勾配に復元する勾配復元部と、前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、前記勾配復元部で復元した集約勾配に基づいてパラメータを更新するパラメータ更新部とを備えたことを特徴とする。
【００１２】
また、本発明に係る分散深層学習システムは、前記所定倍率は、０より大きく１より小さいものであることを特徴とする。
【発明の効果】
【００１３】
本発明に係る分散深層学習装置及び分散深層学習システムによれば、勾配の剰余部分をイテレーション毎に適切に減衰させることで、Quantized SGDの剰余成分が次のイテレーションに残ることによるStale Gradientの影響を減じつつ、分散深層学習を安定的に、かつネットワーク帯域を効率的に利用して実施できる。すなわち、分散深層学習における学習の計算の効率を維持しつつ、通信量を削減し、限られた帯域において大規模な分散深層学習を実現することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る分散深層学習装置１０の構成を表したブロック図である。
【図２】本発明に係る分散深層学習装置１０におけるパラメータ更新処理の流れを表したフローチャート図である。
【図３】本発明に係る分散深層学習装置１０による学習について減衰率毎に反復回数とテスト精度の関係を表したグラフである。
【発明を実施するための形態】
【００１５】
［第１の実施の形態］
以下、図面を参照しながら、本発明に係る分散深層学習装置１０について説明する。図１は、本発明に係る分散深層学習装置１０の構成を表したブロック図である。なお、分散深層学習装置１０は、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものであるものとする。この場合に、分散深層学習装置１０は、一般的なコンピュータが通常備えているであろうＣＰＵ（Central Processing Unit：中央演算処理装置）、ＧＰＵ（Graphics Processing Unit：画像処理装置）、メモリ、ハードディスクドライブ等のストレージを具備しているものとする（図示省略）。また、これらの一般的なコンピュータを本例の分散深層学習装置１０として機能させるためにプログラムよって各種処理が実行されることは言うまでもない。
【００１６】
図１に示すように、分散深層学習装置１０は、通信部１１と、勾配計算部１２と、量子化剰余加算部１３と、勾配量子化部１４と、勾配復元部１５と、量子化剰余記憶部１６と、勾配集約部１７と、パラメータ更新部１８とを少なくとも備えている。
【００１７】
通信部１１は、量子化された勾配を分散深層学習装置の間で通信によって交換する機能を有する。交換には、MPI（Message Passing Interface）におけるallgather（データの集約機能）を用いてもよいし、他の通信パターンを用いてもよい。この通信部１１において、全ての分散深層学習装置間で勾配を交換する。
【００１８】
勾配計算部１２は、現在のパラメータにおけるモデルを用い、与えられた学習データによるロス関数に対するパラメータの勾配を計算する機能を有する。
【００１９】
量子化剰余加算部１３は、前回のイテレーションにおいて量子化剰余記憶部１６に記憶した量子化時の剰余分に所定倍率を乗算したものを勾配計算部１２で求めた勾配に加える機能を有する。ここで、所定倍率は、０．０より大きく１．０より小さいものとする。というのも、倍率を１．０とすると普通のquantized SGDとなってしまい、倍率を０．０とすると剰余分を使わないケース（学習が安定しないため有用性なし）となってしまい、本例の意図するところではなくなってしまうためである。このときの倍率は、固定倍率としてもよいし、可変倍率としてもよい。
【００２０】
勾配量子化部１４は、量子化剰余加算部１３によって所定倍後の剰余分が加算された勾配を、所定の手法に従って量子化する機能を有する。量子化する手法としては、例えば、1-bit SGD、sparse gradient、random quantizationなどが考えられる。この勾配量子化部１４で量子化された勾配は通信部１１に送られ、量子化時の剰余分は、後述する量子化剰余記憶部１６に送られる。
【００２１】
勾配復元部１５は、通信部１１によって交換された量子化された勾配を、本来の精度の勾配に復元する機能を有する。この勾配復元部１５における復元の具体的な手法は、勾配量子化部１４における量子化手法に対応したものである。
【００２２】
量子化剰余記憶部１６は、勾配量子化部１４から送信された量子化時の剰余分を記憶する機能を有する。記憶させた剰余分は、量子化剰余加算部１３において次回の勾配計算部１２の計算結果に対して加算するために利用される。また、所定倍率の乗算は、量子化剰余加算部１３において行うものとして説明したが、この量子化剰余記憶部１６において所定倍率を乗算した上で記憶させるようにしてもよい。
【００２３】
勾配集約部１７は、通信部で集められた勾配を集約し、分散深層学習装置間での集約された勾配を計算する機能を有する。ここでの集約とは、平均又は何らかの計算を想定したものである。
【００２４】
パラメータ更新部１８は、勾配集約部１７で集約された勾配に基づいてパラメータを更新する機能を有する。
【００２５】
以上の構成の分散深層学習装置１０は、他の分散深層学習装置と相互に通信を行って量子化された勾配を交換する。他の分散深層学習装置との接続は、例えば、パケットスイッチ装置のようなものが利用される。また、同一の端末において仮想的に複数の分散深層学習装置を駆動させて、仮想の分散深層学習装置間で量子化された勾配を交換する構成であってもよい。また、クラウド上で仮想的に複数の分散深層学習装置を駆動させる場合も同様である。
【００２６】
次に、本発明に係る分散深層学習装置１０における処理の流れについて説明する。図２は、本発明に係る分散深層学習装置１０におけるパラメータ更新処理の流れを表したフローチャート図である。この図２において、パラメータ更新処理は、現在のパラメータに基づいて勾配の計算を行うことによって開始される（ステップＳ１１）。次に、求めた勾配に対して、前回のイテレーションで記憶させた前回量子化時の剰余分に所定倍率を乗算したものを加算する（ステップＳ１２）。ここでの所定倍率は、０＜所定倍率＜１の条件を満たす値に設定される。例えば、所定倍率＝０．９の場合は、剰余分×０．９の値を求めた勾配に加えることになる。なお、この所定倍率０．９を乗算した場合を、減衰率＝０．１と表現するものとする。次に、所定倍後の剰余分を加算した勾配を量子化して他装置に送信するとともに、今回の量子化時の剰余分を記憶させる（ステップＳ１３）。ここでいう他装置とは、並列化して一緒に分散深層学習を実現するための他の分散深層学習装置のことであり、他の分散深層学習装置においても同様のパラメータ更新処理を行っており、他装置からは量子化された勾配が送信されてくることになる。他装置から受信した量子化された勾配を元の精度に復元する（ステップＳ１４）。次に、他装置との通信で得られた勾配を集約して、集約された勾配を計算する（ステップＳ１５）。ここでの集約の計算は、何らかの演算処理を行うが、例えば、集約した勾配の平均を求める演算処理を行う。そして、集約した勾配に基づいてパラメータを更新する（ステップＳ１６）。そして、更新されたパラメータを記憶させて（ステップＳ１７）、パラメータ更新処理を終了する。
【００２７】
図３は、本発明に係る分散深層学習装置１０による学習について減衰率毎に反復回数とテスト精度の関係を表したグラフである。分散学習を行わずに１台の学習装置で演算を行った場合、分散した場合に比較して少ない反復回数でテスト精度の向上が認められるが、一回のイテレーションに要する処理時間が分散した場合に比較して膨大になってしまう。また、１６台の分散深層学習装置で処理を分散した場合については、減衰率＝１．０（所定倍率＝０．０）、すなわち量子化剰余分を加えない場合については、学習が安定せずにテスト精度の向上が見られない結果であった。これに対して、１６台の分散深層学習装置で処理を分散し、減衰率＝０．０、０．１、０．５、０．９とした各場合については、反復回数を増やすことでほぼ同じテスト精度に収束するという結果が得られた。減衰率＝０．０については剰余分をそのまま加える場合であり、減衰率＝０．１については剰余分に所定倍率＝０．９を乗算して加える場合であるが、これらはテスト精度が大きく変動する傾向があるものの、最終的にほぼ同じテスト精度に収束している。また、減衰率＝０．９（所定倍率＝０．１）の場合については、大幅に剰余分を減衰させているが、最終的にほぼ同じテスト精度に収束していることが分かる。
【００２８】
以上のように、本発明に係る分散深層学習装置１０によれば、勾配の剰余部分をイテレーション毎に適切に減衰させることで、Quantized SGDの剰余成分が次のイテレーションに残ることによるStale Gradientの影響を減じつつ、分散深層学習を安定的に、かつネットワーク帯域を効率的に利用して実施できる。すなわち、分散深層学習における学習の計算の効率を維持しつつ、通信量を削減し、限られた帯域において大規模な分散深層学習を実現することが可能となる。
【００２９】
［第２の実施の形態］
前記第１の実施の形態においては、分散深層学習装置１０のそれぞれが同様に、勾配の演算、所定倍後の剰余分の加算、勾配の量子化、剰余分の記憶、勾配の復元、勾配の集約、パラメータの更新の各機能を実行するものとして説明を行っていたが、これに限定されるものではない。
【００３０】
例えば、１つのマスターノードと、１以上のスレーブノードとで分散深層学習システムを構成するようにしてもよい。１つのマスターノードとしての分散深層学習装置１０ａは、第１の実施の形態における分散深層学習装置１０と同様に、通信部１１、勾配計算部１２、量子化剰余加算部１３、勾配量子化部１４、勾配復元部１５、量子化剰余記憶部１６、勾配集約部１７、パラメータ更新部１８を備え、これに加えて、勾配集約部１７で集約された勾配に対して前回のイテレーション時の集約勾配剰余分に所定倍率を乗算して加算する集約勾配剰余加算部１９と、剰余分が加算された集約勾配について量子化を行う集約勾配量子化部２０と、集約勾配量子化部２０で量子化した時の剰余分を記憶させる集約勾配剰余記憶部２１とを備えるようにする。集約勾配を量子化したものを通信部１１を介してスレーブノードとしての分散深層学習装置１０ｂに送信する。
【００３１】
他方、１以上のスレーブノードとしての分散深層学習装置１０ｂは、第１の実施の形態における分散深層学習装置１０と同様に、通信部１１、勾配計算部１２、量子化剰余加算部１３、勾配量子化部１４、勾配復元部１５、量子化剰余記憶部１６、パラメータ更新部１８を備えるが、勾配集約部１７は備えておらず、集約勾配を量子化したものを勾配復元部１５において復元し、直接パラメータ更新部１８に与えるようにする。すなわち、スレーブノードにおけるパラメータの更新は、マスターノードから受信した集約勾配を用いて行われることになる。
【００３２】
なお、１つのマスターノードである分散深層学習システムとして説明したが、２以上のマスターノードからなる分散深層学習システムであってもよい。マスターノードが複数の場合には、複数のマスターノードでパラメータを分担し、各マスターノードは担当したパラメータについて処理を行うようにしてもよい。
【符号の説明】
【００３３】
１０            分散深層学習装置
１１            通信部
１２            勾配計算部
１３            量子化剰余加算部
１４            勾配量子化部
１５            勾配復元部
１６            量子化剰余記憶部
１７            勾配集約部
１８            パラメータ更新部
１９            集約勾配剰余加算部
２０            集約勾配量子化部
２１            集約勾配剰余記憶部
【図１】
2018120441.tif 000003
【図２】
2018120441.tif 000004
【図３】
2018120441.tif 000005
【手続補正書】
【提出日】平成29年8月28日(2017.8.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１以上の学習装置との間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習装置であって、
他の学習装置との間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に０より大きく１より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部と
を備えた分散深層学習装置。
【請求項２】
１以上のマスターノードと、１以上のスレーブノードとの間で量子化された勾配を交換して分散して深層学習を行うための分散深層学習システムであって、
前記マスターノードは、
前記スレーブノードとの間で通信によって量子化された勾配を交換する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に０より大きく１より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記通信部で集められた勾配を集約して集約された勾配を計算する勾配集約部と、
前記勾配集約部で集約された勾配に対して、前回集約勾配を量子化した時の集約勾配剰余分に０より大きく１より小さい所定倍率を乗算して加算する集約勾配剰余加算部と、
前記集約勾配剰余加算部で剰余分が加算された集約勾配について量子化を行う集約勾配量子化部と、
前記集約勾配量子化部で量子化した時の剰余分を記憶させる集約勾配剰余記憶部と、
前記勾配集約部で集約された勾配に基づいてパラメータを更新するパラメータ更新部
とを備え、
前記スレーブノードは、
前記マスターノードに対して量子化された勾配を送信し、前記マスターノードから前記集約勾配量子化部で量子化された集約勾配を受信する通信部と、
現在のパラメータの勾配を計算する勾配計算部と、
前記勾配計算部で求めた勾配に対して、前回勾配を量子化した時の剰余分に０より大きく１より小さい所定倍率を乗算したものを加算する量子化剰余加算部と、
前記量子化剰余加算部によって所定倍後の剰余分が加算された勾配を量子化する勾配量子化部と、
前記通信部で受信した量子化された集約勾配を本来の精度の勾配に復元する勾配復元部と、
前記勾配量子化部において勾配を量子化した時の剰余分を記憶する量子化剰余記憶部と、
前記勾配復元部で復元した集約勾配に基づいてパラメータを更新するパラメータ更新部
とを備えた分散深層学習システム。