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

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

[[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の勾配計算に時間がかかることです。2つ目は、現代のディープラーニングネットワークの損失関数は非凸であることが多く、凸最適化理論に基づく最適化アルゴリズムは局所最小値にしか収束できません。そのため、GDを使用してディープニューラルネットワークをトレーニングする場合、最終的な収束点は初期点近くの局所最小値に収束する可能性が高く、良好な収束性能を達成するのは容易ではありません。

もう 1 つの極端な例は 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) の場合、両者の近似に大きな問題はなく、つまり線形スケール規則は大きな問題ではありません。ただし、重みが急速に変化すると問題が発生します。特に、モデルのトレーニングを開始したばかりで、損失が特に速く、重みが急速に変化する場合は、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 倍の収束加速を実現できます (システム通信同期にかかる時間を考慮せず、つまりシステム加速比を考慮せず)。

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

<<:  一連のリリースによりマルチシナリオのインテリジェントサービスが生まれ、Deephi Technologyは本格的に商用化段階に突入

>>:  AI人材が年間数百万ドルを稼ぐ理由

ブログ    
ブログ    
ブログ    

推薦する

インテリジェント運転認識システムのテスト技術を説明する記事

導入近年、人工知能とそのソフトウェア・ハードウェア技術の進歩により、自動運転は急速に発展しています...

...

...

...

AI革命はネットゼロデータセンターに終止符を打つのでしょうか?

これらの施設は重要であるにもかかわらず、あまり理解されていません。しかし、最近ではデータセンターに注...

...

「説明可能な」AIが金融セクターへの信頼を高める

[[423755]]人工知能は、詐欺の特定や金融犯罪の撲滅から、顧客への革新的なデジタル体験の提供に...

今日、私たちはすべてのお金を AI に与える勇気があるでしょうか?

お金を稼ぐこと以上に満足できることがあるでしょうか? もちろん、何もせずにお金を稼ぐことです。私たち...

自動運転における機械学習の核となるのはモデルではなくパイプラインである

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

この線虫は単純ではありません!脳は高精度に修復され、ダイナミックに前進できる

最高精度の「線虫脳」、ここに登場。この「脳」は、Caenorhabditis elegans 線虫の...

ML プロジェクトを実行するときに、タスクが多数あり、些細な場合はどうすればよいでしょうか?このセルフチェックリストはあなたの心を整理するのに役立ちます

機械学習プロジェクトには、データ処理、モデルの最適化など、多くの要素が関係します。開発者は混乱したり...

...

すべてがUniSimに: 統合自動運転シミュレーションプラットフォーム

最近、トロント大学、MIT、Waabi AIの研究者らがCVPR 2023の論文で新しい自動運転シミ...

機密コンピューティングが生成型AIの導入を確実にする方法

生成 AI は、新しい製品、ビジネス、業界、さらには新しい経済に情報を提供することができます。しかし...

マスク氏がテスラFSD V12の試乗を生放送!世界初のエンドツーエンドAI自動運転、10,000台のH100でトレーニング

現地時間8月26日、マスク氏は自らオンラインにアクセスし、FSD Beta V12の試乗ライブ放送を...