ディープラーニングの分散トレーニングにおける大きなバッチサイズと学習率の関係をどのように理解すればよいでしょうか?

ディープラーニングの分散トレーニングにおける大きなバッチサイズと学習率の関係をどのように理解すればよいでしょうか?

[[207640]]

この記事は、Zhihu の質問「ディープラーニングの分散トレーニングにおける大規模バッチ サイズと学習率の関係をどのように理解すればよいですか?」に対する Tan Xu の回答から生まれました。

問題の詳細:

ディープラーニングで分散トレーニングを実行する場合、同期データ並列処理、つまりトレーニングに大きなバッチ サイズが使用されることがよくあります。ただし、一般的に、大規模なバッチは、小規模なベースライン バッチ サイズよりもパフォーマンスが低下します。大規模なバッチで小規模なバッチと同じ収束精度と速度を達成できるように学習率を調整する方法を理解するにはどうすればよいでしょうか?

答え:

最近、マルチ GPU 分散トレーニングを実施する際に、大規模なバッチと学習率を理解してデバッグするという問題にも遭遇しました。ベースラインのバッチサイズと比較すると、マルチマシン同期並列処理(同期並列通信フレームワーク NCCL を紹介した以前の回答がありました(Tan Xu: Nvidia のマルチ GPU マルチカード通信フレームワーク NCCL を理解するには?)ので、興味があれば確認してください)は、バッチサイズを増やすことと同等です。慎重に設計しないと、大きなバッチの収束効果は、ベースラインの小さなバッチ サイズよりも悪くなることがよくあります。そこで、私の理解と実験を以下のようにまとめます。これは主に3つの側面に分かれています。(1) SGD、ミニバッチSGD、GDの理解、(2) 大規模バッチと学習率のデバッグ関係、(3) 私たちの実験です。

(1)SGD、ミニバッチSGD、GDの理解

機械学習の最適化アルゴリズムでは、GD (勾配降下法) が最も一般的に使用される方法の 1 つです。簡単に言えば、トレーニング セット全体の現在の勾配を計算し、更新のステップ サイズを選択します。 GD の利点は、データセット全体から取得された勾配に基づいて勾配推定が比較的正確であり、更新プロセスがより正確になることです。ただし、欠点もいくつかあります。 1 つは、トレーニング セットが大きい場合、GD の勾配計算に時間がかかることです。第二に、現代のディープラーニング ネットワークの損失関数は非凸であることが多く、凸最適化理論に基づく最適化アルゴリズムは局所最小値にしか収束できません。したがって、GD を使用してディープ ニューラル ネットワークをトレーニングする場合、最終的な収束点は初期点の近くの局所的最小値に落ちる可能性が高く、良好な収束パフォーマンスを達成することは容易ではありません。

もう一方の極端な例は SGD (確率的勾配降下法) で、勾配を計算するために毎回 1 つのサンプルのみを使用します。この利点は、計算が高速であり、オンライン学習データがストリーミング方式で到着するシナリオに非常に適していることです。ただし、欠点は、単一のサンプルによって生成される勾配推定が不正確になることが多いため、非常に小さい学習率を使用する必要があることです。さらに、現代のコンピューティング フレームワークでは CPU/GPU がマルチスレッド化されているため、単一のサンプルでは CPU/GPU を完全に活用することが難しいことが多く、コンピューティング リソースが無駄になります。

妥協案はミニバッチであり、バッチサイズのサンプルを使用して一度に勾配を推定します。この方法により、勾配推定は SGD よりも正確になります。同時に、バッチ サイズは CPU/GPU のコンピューティング リソースを最大限に活用でき、GD のようにトレーニング セット全体を計算する必要はありません。同時に、ミニバッチは適切な勾配ノイズを持つことができるため[8]、GDが初期点付近の局所最小値に直接陥って収束性が悪くなるという欠点をある程度緩和できるため、ミニバッチ法は最も一般的に使用されています。

バッチ サイズの増加が勾配推定の精度に与える影響は、次のように分析されます。

バッチサイズが m であると仮定すると、ミニバッチの場合、損失は次のようになります。

勾配

ミニバッチ全体の勾配分散は次のようになります。

各サンプル

は訓練サンプルセットのサンプルからランダムに取得され、iid仮定を満たすので、サンプル勾配の分散は等しくなり、

SGD の勾配分散と同様に、バッチ サイズを m 倍に増やすことは勾配の分散を m 倍に減らすことと同等であり、勾配がより正確になることがわかります。

分散を元の SGD と同じに保ちたい場合 (これは、大きな分散帯域幅容量を与えることと同等です)、lr を増やしてこの分散容量を最大限に活用することができます。上記の式にlrを加え、分散変化の式を使うと、次の式が得られます。

したがって、lrをsqrt(m)倍に増やすことでトレーニング速度を向上させることができます。これは、線形スケーリングルール[4]の前にlrを増やすために多くの人が使用する方法でもあります。次のセクションでは、lr の増加の問題について詳しく説明します。

(2)大規模バッチと学習率

分散トレーニングでは、データ並列ワーカーの数が増えるにつれてバッチ サイズも増加します。ベースラインのバッチ サイズが B、学習率が lr、トレーニング エポック数が N であると仮定します。ベースラインの学習率を維持すると、通常、良好な収束速度と精度は得られません。理由は次のとおりです。収束速度については、ワーカーが k 個あり、毎回渡されるサンプル数が kB であると仮定すると、1 エポックでの更新回数はベースラインの 1/k となり、各更新の lr は変化しません。したがって、ベースラインと同じ更新数を達成するには、エポックの数を増やす必要があり、最大で k*N エポックを追加する必要があります。したがって、収束加速係数は k よりもはるかに低くなります。収束精度に関しては、バッチサイズの増加により、勾配推定がバデライン勾配よりも正確になり、ノイズが減少し、近くの局所最小値に収束しやすくなります。これは、GD の効果に似ています。

この問題を解決する 1 つの方法は、lr を増やすことです。バッチが大きくなるにつれて、勾配推定はより正確になり、ベースラインの勾配よりも確実になります。したがって、lr を増やすと、より正確な勾配を使用して収束速度を上げることができます。同時に、lr を増やして各ステップの振幅を可能な限り大きくします。鋭い極小値[8](鋭い極小値という用語はまだ議論の余地があるため、ここではこの用語を使用します)に遭遇した場合、そこから抜け出してより良い場所に収束できる可能性があります。

ただし、lr を制御なしに増加させることはできません。その理由は以下のように分析されます。ディープ ニューラル ネットワークの損失面は、多くの場合、高次元で高度に非線形です。滑らかな y=x^2 曲線とは異なり、損失面は凹凸があることがわかります。そのため、現在の重みに基づいて計算された勾配に基づき、前方に更新される学習率が大きい場合、損失面の接線に沿って大きなステップが踏まれ、元の損失面から大きく偏ってしまう可能性があります。例を次の図(a)に示します。点線は電流勾配の方向、つまり電流損失面の接線方向です。学習率が大きすぎる場合、このステップは接線方向に沿った大きなステップになります。この状態が続くと、図(b)に示すように、誤った損失面になる可能性が高くなります。学習率が小さい場合、接線方向に沿って毎回小さなステップのみが実行されます。多少の偏差はあるものの、図 (c) に示すように、損失表面の最急降下曲線に沿って大まかに降下し、最終的には良好な局所最小値に収束することができます。

同時に、凸収束理論[2]に従ってlrの上限も得ることができます:lr<1/L、ここでLは損失面の勾配曲線のリプシッツ因子です。 L は損失勾配の変化振幅の上限として理解できます。変化の振幅が大きい場合、L は大きくなり、lr は小さくなります。変化の振幅が小さい場合、L は小さくなり、lr は非常に大きくなる可能性があります。これは上の図の分析と一致しています。

では、大規模バッチと学習率の関係をどのように判断するのでしょうか?

ベースラインとk人の労働者の大規模バッチを比較するための更新式[7]は次のとおりです。

これは、ベースライン (バッチ サイズ B) と大規模バッチ (バッチ サイズ kB) の更新式です。 (4)の1ステップで大きなバッチが通過するデータの量は、(3)のベースラインがkステップで通過するデータの量に等しい。損失と勾配は、見つかったデータの量に基づいて平均化されます。したがって、同じデータ利用率を保証するためには、(4)の学習率はベースラインのk倍である必要があり、これは学習率の線形スケール規則である。

線形スケール規則にはいくつかの制約があり、そのうちの 1 つは重量に関するものです。式(3)の各ステップで更新される重みは、前のステップで更新された重みに基づいています。したがって、それは小さな一歩を踏み出すことと同じです。各ステップは現在の実際の重みに基づいて更新され、勾配を計算します。式(4)の大きなステップ(ベースラインと比較してkステップに相当)は、時刻tにおける重みに基づいて更新される。これらの k ステップ内で W(t+j) ~ W(t) の場合、2 つの間の近似に大きな問題はなく、つまり線形スケール規則は大きな問題ではありません。ただし、重みが急激に変化すると問題が発生します。特に、モデルのトレーニングを開始したばかりで、損失が特に速く、重みが急速に変化する場合は、W(t+j) ~ W(t) が満たされません。したがって、初期のトレーニング段階では、通常、lr は直接 k 倍に増加されるのではなく、ベースライン lr がゆっくりと k 倍までウォームアップされ、線形スケール規則がそれほど明白に違反されることが防止されます。これはFacebookがImageNetを1時間でトレーニングするために使用したアプローチでもあります[7]。 2 番目の制約は、lr を任意に拡大できないことです。上記の分析によると、lr が大きすぎると、損失正接に沿って遠くまで実行され、収束の問題が発生します。

同時に、いくつかの文献[5]では、バッチサイズが大きくなると、良好なテスト結果を得るために許容されるlrの範囲が狭くなることが指摘されている。つまり、バッチ サイズが非常に小さい場合、適切な LR を見つけて良好な結果を得るのが簡単になります。バッチ サイズが大きくなると、より良い結果を得るために適切な lr を慎重に見つける必要がある場合があります。これにより、実際の大規模バッチ分散トレーニングにも困難が生じます。

(3)私たちの実験

最近、私はNLP関連の深層モデルの分散トレーニングの問題について検討しています。実験の詳細は以下の通りです。一部の作業については現時点では公開することが不都合なため、比較的簡単な実験の詳細のみを提供します。

モデルのベースライン パラメータはバッチ サイズ 32、lr 0.25、最終精度は BLEU スコア 28.35 です。現在、分散拡張は複数のカードに並行して実行されます。

実験 1: 並列ワーカーの数のみを増やし (バッチ サイズを増やすのと同じ)、ベースライン lr0 は変更しません。

バッチ サイズが大きくなるにつれて、lr が変わらない場合、モデルの精度は徐々に低下することがわかります。これは上記の分析と一致しています。

実験2: バッチサイズが増加すると、それに応じてlrも増加する

lr を 5*lr0 に増やすこと (理論的には lr を 8 倍に増やす必要がありますが、実際の効果は良くないため 5 倍にしか増やしていません)、および lr をウォームアップすることで、ベースラインと同様の Bleu 効果が得られることがわかります。最終的な収束速度は約 5 倍速く、つまり 8 枚のカードで 5 倍の収束加速を実現できます (システム通信同期にかかる時間を考慮せず、つまりシステム加速比を考慮せず)。

ディープラーニングの並列トレーニングは、モデルのトレーニング速度を大幅に向上させることができますが、実際の使用では、システムレベルのアーキテクチャ設計、アルゴリズムレベルのパラメータのデバッグなど、一連の問題に直面します。興味のある友人は、さらに議論することを歓迎します。

<<:  OpenStack における稀だが便利な操作

>>:  Hadoop 擬似分散セットアップ操作手順ガイド

推薦する

鉄道省は12306公募弁護士に回答し、回答は的外れであると指摘した。

弁護士董正偉氏が記者団に鉄道省の対応を示す北京ニュース(劉春瑞記者)北京の著名な人権弁護士董正偉氏は...

クラウドデータ移行における6つの隠れたボトルネック

ペタバイト単位のデータをクラウドに移動するのは困難な作業です。クラウドでアクセスするとアプリケーショ...

朱偉坤が百度の重みについて重要な考えを共有

最近、多くの SEO 愛好家がグループ内で「なぜ私の Baidu の重みは昨日 3 だったのに、今日...

男性の財布を空にしているのはどのインターネット企業でしょうか? ユーザーの定着率を高める5つのヒント

女性は買い物に行き、男性はバッグを持つものだと信じているに違いありません。同様に、多くの人の印象では...

Baidu アプリクラウドワールド妊娠と子育て SEO: 未来はどこにあるのか?

親子や子育てに関するウェブサイトを作成しているウェブマスターは数多くいます。このテーマは、第一にロン...

統合ネットワークマーケティングに関する簡単な説明

メディア多様化の時代では、伝統的なメディアと新しいメディアが視聴者をめぐって競争し、視聴者自身のニー...

「莫言熱」が文学のトレンドを引き起こした。文芸界は鉄は熱いうちに打つかもしれない

今日、莫言がノーベル文学賞を受賞してから1週間が経ったが、ネットユーザーたちの驚きの声、メディアのコ...

知識決済業界のグローバルな展望

知識決済ビジネスは一定の市場があるものの、知名度を上げるのは容易ではありません。一方では、自社の知識...

K8Sエコシステムの選択と落とし穴をすべて網羅

[[320104]]収益の増加とコストの削減は、企業が利益を増やすための 2 つの主要な方向性です。...

ブランドかプラットフォームか:中小規模のインターネット起業家はどこへ向かうのか?

序文:紆余曲折を経ての思い昨年の3月から、私はいくつかの小さなウェブサイトを運営しています。いくつか...

ライトイヤーフォーラムの閉鎖理由の理解と分析(パート1)

現在、Light Years Forum を開いても、その中のコンテンツは表示されなくなり、代わりに...

百度とテンセントが共同で安全検索同盟を構築

原題: 百度とテンセントが共同で安全検索同盟を構築深セン特区日報(王暁青記者)フィッシングや詐欺など...

ガートナーのマジック・クアドラント:仮想化のリーダーとしての VMware の地位は失われる

VMware が仮想化の唯一のプレーヤーであると自負するのはますます難しくなってきています。もちろん...

ザック:SEOの技術的な内容

ブログやフォーラムでは、SEO の技術的な内容に関する議論をよく見かけます。 SEO を疑う人は、S...

同じページでもキーワードによってランキングが全く異なる

このタイトルを見ると、これはナンセンスだと言うかもしれません。もちろん、同じページでもキーワードによ...