ASGD の「STALENESS」を解決するにはどうすればよいですか? 分散ディープラーニングのための古さを意識した Async-SGD が論文集中読解の説明を提供します

元の論文:分散深層学習のための陳腐化を意識した Async-SGD

ABS

非同期SGD の使用 SGDSGDではハイパーパラメータをどのように制御するかが重要な問題(学習の進行に応じて学習率をどのように調整するかなど) 非同期SGDではハイパーパラメータの設定が重要 SGDSG D は非常に重要な影響力を持っています。

この記事では、非同期SGD SGDを提案します。勾配遅延に基づいて学習率を調整するSGDのバリアント。そして、アルゴリズムの収束は理論的に保証されています。

1 イントロ

一般的に使用される分散機械学習手法にはSSGD SSGDが含まれますSSGD (同時確率的勾配降下法) およびASGD ASGDSG D (非同期確率勾配降下法)。

SSGD用SSGDSSG Dの場合、各ラウンドですべての作業ノードは、次のラウンドの計算を開始する前に、最も遅い作業ノードが計算を完了するまで待機する必要があり、これはトレーニング速度に大きな影響を与えます。

そしてASGD ASGDについてA、SG 、および Dの場合、すべてのワーク ノードがこのラウンドの計算を完了するのを待つ必要はありません。代わりに、どのワーク ノードも計算を完了しません。ワーク ノードが更新された後、次のラウンドの計算を直接実行できます。これにより、新たな問題が発生します。勾配が最新ではありません。つまり、ノードによって計算されているパラメータが最新のパラメータよりも遅れている可能性があります。この効果は絶大で、トレーニングラウンド数が固定の場合、ASGD ASGDA SG Dのトレーニング効果はSSGD SSGDSSG Dはもっとひどいです。

著者がASGDを発見した ASGDASGD の収束度は、ハイパーパラメータ (学習率やバッチ サイズなど) と分散システムの実装 (同期プロトコル、ノード数など) に大きく影響されます。現時点では、ハイパーパラメータの設定に関する情報が不足しています. ASGD ASGDを改善するA SG Dの効果に関する研究。

そこでこの記事の著者は、学習率を自動的に調整できるASGD ASGDを提案することにしました。A SG DはASGD ASGDほど優れていますSG D はグラジエントの有効期限の問題を回避します。この方法では、勾配の満了が記録され、学習率を勾配の満了の度合いで割って新しい学習率を取得します。そして、この方法の収束率はSSGD SSGDSSG Dと同じ。

これまでの関連研究の中には、学習率を指数関数的なレベルで下げることにより、ノード数が少ない分散システムで良好な結果を達成できるものもありますが、大規模な分散システムでは、学習が進むにつれて学習率が特別な値になります。0 00 )、システム全体の収束が遅くなりすぎます。

2 システムアーキテクチャ

このパートでは、アルゴリズム全体の設計について説明します。2 つのアルゴリズムのアーキテクチャは次のとおりです。

  • n − ソフトシンクプロトコル n-softsync\ プロトコルnソフト同期プロトコル: 勾配有効期限の一部 検出し、ソフト同期を通じて過剰な有効期限防止できます
  • ハードシンク プロトコル ハードシンク\ プロトコルハード同期プロトコル :つまりSSGD SSGD _ _ _ _ _SSGD,作为 B a s e l i n e Baseline 比較バスケットです _

2.1 アーキテクチャの概要

いくつかのパラメータの説明:

  • λ \ラムダλ : 稼働中のノードの数。
  • μ \μμ : 各ノードのバッチサイズ。
  • \アルファα : 学習率。
  • エポック エポックEp oc h : 反復バージョン。
  • タイムスタンプ タイムスタンプタイムスタンプ:タイムスタンプ。パラメータ更新されるたびにタイムスタンプが増加します各グラデーションは現在のタイムスタンプを記録します。
  • τ i , l \tau_{i,l}t: 動作中のノードlllの勾配満了の程度稼働中のノードがii私はすぐにJJを時間jでの勾配、つまり現在送信されている勾配が期限切れになると、τ i , l = i − j \tau_{i,l}=ijt=j

各動作ノードは次の操作を順番に実行します。

  • get ミニバッチ getMinibatchg e tM iniba t c h : このラウンドの計算に使用されたバッチを取得します。
  • プル W エイト pullWeightspull W e i g h t s : パラメータ サーバーから重みを取得します
  • 計算 G radient calcGradientc a l c G r a d i n t : 重みに基づいて現在のバッチの勾配を計算します
  • プッシュ グラディエント プッシュ グラディエントp us h G r a d i e n t : 計算され勾配をパラメータ サーバーに送信します。

パラメータ サーバーは次の操作を実行します。

  • sumGradient sumGradientsum G rad i n t :受信した勾配を集計ます
  • 更新を適用する 更新を適用するa pply Up d a t e : 集約れた勾配を使用してパラメータを更新します

2.2 同期プロトコル

ハードシンク プロトコル ハードシンク\ プロトコルハード同期プロトコル : 更新の各ラウンド中、パラメーター サーバーは、すべてのノードから送信された勾配受信した後にのみsumGradient sumGradientSum G r a d i n t操作を実行し、Update Update を適用しますapplyUpdate適用更新これら 2 つの操作が完了した場合にのみ作業ノードはプル W 8 の pullWeights渡すことができます。p ull Weight s新しいラウンドのパラメータを取得します。これは、ワーカー ノードは最も遅いワーカー ノードがタスクを完了するまで待機する必要があることを意味ますこの方法は時間がかかりますが、トレーニングの精度は非常に高くなります。

n − ソフトシンク プロトコル n-softsync\ プロトコルnso f t sy n c pro t oc l  : このメソッドでは、パラメーター サーバーは少なくとも c = [ λ n ] c=[\frac{\lambda}{n}] を受け取るだけで済みますc=[n]グラデーションの後、このccを実行できます。cノードの勾配集約操作、その後パラメータが更新されます。この時点で、完了したノードは新しいパラメータを取得してトレーニングを続行できます (ここで、nnn = λ n=\lambdaの場合、 nはハイパーパラメータです。n=λこれは、以前に提案されたASGD ASGDに似ています。SG D同様で、この記事の方法で更新される学習率は動的に変化します)。更新された式は次のとおりです。

ここに画像の説明を挿入します

学習率は呼気の度合いに基づいて計算されます。

2.3 実装の詳細

この記事のメソッドでは、プル W エイト、プルウェイトなどのいくつかの同期メカニズムが引き続き採用されています。プルウェイトプッシュ時のみ適用ます Gradient PushGradientパラメーターは、 pu s h G r a di n tが完了した後にのみ取得できるため、同時実行によりモデルのパラメーターが確実に不一致になる可能性があります。

実装では、コンピュータに複数の動作ノードが存在する場合があります。モデルの並列性は使用されません。

2.4 古さの分析

ハードシンクプロトコルの場合、ハードシンク\プロトコルハード同期プロトコルサーバーは更新前にすべてのノードの勾配を受信する必要があるため、期限切れ 発生しません。つまり、τ = 0 \tau=0t=0

異なる値の場合はnnnで発生する呼気の度合いλ = 30 \lambda=30=30種類の異なるnnn はτ \tauを実行しましたτの計算図 1 に示す1示し ます

ここに画像の説明を挿入します

上記の結果について私が困惑しているのは、n = 1 n=1の場合です。n=1、これはパラメータ サーバーが少なくとも30 30パラメーターは 30 勾配まで更新されません。つまり、この時点ではSSGD SSGDSSG D は同じ動作を生成します。つまり、τ = 0 \tau=0t=0は true ですが、実験結果ではそうではないことが示されているため、ここで受け取った30 30 が30 のグラデーションには同じノードからの 2 つのグラデーションが存在する可能性がありますが、2.3 2.32.3の記述から判断するとpull W 8s pullWeightsプルウェイトセットプッシュグラデーションPushGradient _ _ _ _ _ _p us h gr a di n tは完了した後でのみ実行できますが、これ少し矛盾しているようです

実験を通じて、著者はn −softsync プロトコル n-softsync\ protoclについて次のことを発見しました。nso f t sy n c pro t oc l where  τ \tauτはほぼnnに等しいnこの直感的な理解により、nn許容できる呼気の程度を制御するため

时刻 i i i、ノードlllの学習率は次の式で決定されます:
α i , l = α 0 τ i , lif τ i , l > 0 α i , l = α 0 if τ i , l = 0 \alpha_{i,l} =\frac {\alpha_0}{\tau_{i,l}}\quad if\ \tau_{i,l} > 0\\ \alpha_{i,l}=\alpha_0\quad if\ \tau_{i, l} = 0\\ある=tある0τなら_ >0ある=ある0τなら_ =0

3 理論的分析

この部分は収束を証明していますが、私の能力が低いため、あまり理解できません(主に読みたくないため)。

4 実験結果

4.1 ハードウェアとベンチマーク データセット

このセクションでは、使用した機器とデータセットの詳細を示します。原文でご覧いただけます。

4.2 実行時評価

図 2 図\ 22 ノード数が異なる 2 つのデータセットで勾配を受信せずに更新することによってもたらされる速度の向上を示しています

ここに画像の説明を挿入します

このグラフは、この記事で提案した方法が (ノード数の増加に応じて) ほぼ線形の加速を提供することを示していることがわかります。

4.3 モデルの精度評価

図 3 図\ 33 は、データセット 上のCIFAR 10 CIFAR10を示していますC I F A R 10でのトレーニング エラーとテスト精度の結果

ここに画像の説明を挿入します

図 4 図\ 44 はImage  Net および ImageNetでのことを示していますImage Net結果: _ _

ここに画像の説明を挿入します

写真の比較からわかるように、学習率が呼気の程度に応じて動的に更新される場合、n −softsync n-softsyncnソフト同期SSGDSSGD _ _ _フィット感はSSG Dの方が優れています。

5。結論

この記事の寄稿:

  • 証明されたASGD ASGDSG D はSGD SGDと比較できますSG Dの収束速度は同じです。
  • 一部のデータセットでグラデーションが期限切れになる範囲を定量化しました。同時に、実験では最大30 30が使用されました動作ノードが30であるため、比較的大規模な分散システムへの試みと考えられます。

おすすめ

転載: blog.csdn.net/qq_45523675/article/details/129303946