e4exp / paper_manager_abstract

0 stars 0 forks source link

SWARM Parallelism: Training Large Models Can Be Surprisingly Communication-Efficient #667

Open e4exp opened 2 years ago

e4exp commented 2 years ago

概要:

多くの深層学習アプリケーションでは、何十億ものパラメータを持つ大規模なモデルを使用することで利益を得ています。 これらのモデルは、低レイテンシーかつ高帯域幅のインターコネクトを必要とする特殊な分散学習アルゴリズムでしか学習できません。 そのため、大規模モデルの学習には、導入・運用コストが非常に高い専用のGPUクラスターを使用するのが一般的です。 これに対して、安価な「プリエンプティブル」インスタンスを使用したり、複数の地域の既存リソースをプールしたりするなど、より安価な分散学習セットアップもあります。 しかし、これらの方法では、従来のモデル並列処理では大規模なモデルを学習することができないという課題があります。 本研究では、これらの課題を慎重に分析し、大規模なモデルの学習に必要な通信量が少なくなる構成を見つけました。

これらの結果に基づき、SWARM Parallelism (Stochastically Wired Adaptively Rebalanced Model Parallelism)を提案します。 このアルゴリズムは、接続が不十分で信頼性のない異種のデバイスの群れを対象としたモデル並列学習アルゴリズムです。 SWARMは、利用可能なノード間で一時的にランダム化されたパイプラインを作成し、障害が発生した場合にはバランスを取り直します。 さらに、ネットワーク使用量を削減するために、圧縮を考慮したアーキテクチャの改良を行い、そのトレードオフを評価しました。 最後に、我々の洞察を組み合わせて、1.1Bの共有パラメータ(共有前は約13B)を持つ大規模なTransformer言語モデルを、400Mb/s以下のネットワークスループットで、プリエンピブルなT4 GPUの群上で学習させました。

https://github.com/iclr2022-submit/swarm

e4exp commented 2 years ago

1 INTRODUCTION

過去数年間、深層学習コミュニティは、大規模なプリトレインモデルへの依存度をますます高めてきました。 この傾向の最も簡単な例は自然言語処理であり、モデルのパラメータ数が数億(Vaswani et al., 2017; Radford et al., 2018; Devlin et al., 2019)から数十億(Narayanan et al, 2021; Rosset; Raffel et al., 2020; Wang & Komatsuzaki, 2021; Sun et al., 2021)から数千億(Brown et al., 2020; Lepikhin et al., 2020; Fedus et al., 2021)まで、一貫して品質を向上させています(Kaplan et al. 同様に、コンピュータビジョンの多くのモデルは、10億パラメータ規模に達しつつあります(Henighanら、2020年、Rameshら、2021年、Zhaiら、2021年、Riquelmeら、2021年、Daiら、2021年、Dhariwal & Nichol、2021年)。 この規模になると、モデルが単一の加速器に収まらなくなり、デバイス間でモデルパラメータを分割する専用の学習アルゴリズムが必要になります(Krizhevsky et al. これらのモデル並列アルゴリズムは、異なるパーティショニング戦略を使用していますが、デバイス間の集中的な通信を実行する必要があることは共通しています(Narayanan et al. さらに、単一のデバイスが故障すると、トレーニング全体が壊れてしまいます。 そのため、モデル並列アルゴリズムは一般的に、専用のHPC2クラスタやスーパーコンピュータに導入されます(Shoeybi et al.2019; Rajbhandari et al.2020; Narayanan et al.2021)。 このようなインフラは、構築や運用に費用がかかることで知られており、資金力のある一部の大学や大企業しか利用できません(Larreaら、2019年、Strohmaierら、2021年、Langston、2020年)。 ほとんどの研究者、特に発展途上国の研究者は、自分のアイデアを適切に評価するために必要な実験を行う余裕がありません。 そのため、「非主流」言語でのNLP問題の解決など、多くの重要な研究分野の科学的進歩が最終的に制限されてしまいます。

最近のいくつかの研究では、よりコスト効率の高い分散型トレーニング戦略が提案されています。 この戦略では、ハードウェアや電力の需要が少ない地域に動的に割り当てられる一時的な「プリエンプティブル」インスタンスのフリートを使用することで、専用のものに比べて2~10倍のコストを削減することができます(Harlapら、2017)。 また、既存のリソースをプールしたり、ボランティアの力を借りたりして、「共同作業」でトレーニングするという解決策もあります(Diskin et al.2021; Atre et al.2021; Ryabinin & Gusev, 2020)。 しかし、これらのいずれかの設定でトレーニングを行うには、作業員の数の変化に適応し、異種のデバイスを利用し、ハードウェアやネットワークの障害から回復できるような専門的なアルゴリズムが必要です。 信頼性の低いハードウェアに対応する実用的なアルゴリズムはいくつかありますが(Kijsipongseら、2018年、Linら、2020年、Ryabininら、2021年)、それらは最小のデバイスのメモリに収まる比較的小さなモデルしか学習できません。 ほとんどの計算負荷の高いワークロードでは、通常、数十億個のパラメータを持つモデルをトレーニングするため、このことは、コスト効率の高い戦略の実用的な影響を制限します。 本研究では、信頼性の低いヘテロジニアスデバイスと低速のインターコネクトを用いて、大規模なモデルを学習する実用的な方法を見つけることを目的としています。

e4exp commented 2 years ago

2 背景と関連研究

2.1 モデル並列トレーニング

ディープラーニングのコミュニティでは、大規模なモデルをトレーニングするための複数のアルゴリズムが開発されました。 これらのアルゴリズムの多くは、モデルを複数の作業者に分割することで動作しており、これをモデル並列化と呼びます。 これらのアルゴリズムでは、モデルの分割方法によって、学習性能やサポートできる最大モデルサイズが大きく変わります。

従来のモデル並列処理。

大規模なモデルを学習するための最初の一般的な戦略は、各デバイスに各モデル層のサブセット(例えば、ニューロンのサブセット)を計算させ、その活性化を相互に通信するというものでした(Krizhevsky et al. この手法では,各デバイスが層のパラメータの一部を記憶するため,1台のGPUに収まらないような極めて広い層を学習することができます. しかし,従来のモデル並列処理をディープモデルに適用すると,各レイヤーの後にすべての通信を行う必要があるため,大きな性能低下を伴います. その結果、層内並列方式は今でも広く使用されていますが(Shazeerら、2018年、Rajbhandariら、2020年)、通常は他の戦略と組み合わせて1つの物理サーバー内で適用されます(Krizhevsky、2014年、Chilimbiら、2014年、Jiaら、2019年、Narayananら、2021年)。

パイプライン並列

各デバイスに1つまたは複数のフルレイヤーを割り当てることで、高価な全対全通信の必要性を回避する(Huang et al. フォワードパスの間、各ステージは前のステージから供給された入力にレイヤーのサブセットを適用し、最終レイヤーの出力を次のステージに送る。 バックプロパゲーションでは、このプロセスが逆になり、各パイプラインステージは、以前に入力アクティベーションを供給したのと同じデバイスにグラデーションを渡します。 利用可能なデバイスをより有効に活用するために、パイプラインは1ステップにつき複数のマイクロバッチを処理し、各ステージが異なるバッチの入力に対して並行して実行できるようにする必要があります。 実際には、マイクロバッチの数は利用可能なデバイスのメモリによって制限され、その結果、最初と最後のマイクロバッチを処理する際にデバイスの利用率が低下し、これは「バブル」オーバーヘッドとして知られている(Huang et al.、2019)。

この問題に対処するために、後続の研究では、アクティベーション・チェックポインティング、インターリーブ・スケジューリング、さらには非同期トレーニングを使用することが提案されています(Narayananら、2019年、2021年、Huangら、2019年、Shoeybiら、2019年、Yangら、2019年)。 パイプライン並列のもう一つの限界は、パイプラインのステージに計算負荷を均等に分ける必要があることで、Narayanan et al.(2019)は、モデル層の計算コストが不均一な場合には適用が難しい。 最後に、大規模なモデルの学習に使用できるアルゴリズムには、動的なパラメータロードを伴うデータ並列(Rajbhandariら、2020年、Pudipeddiら、2020年、Renら、2021年)と、分散Mixture-of-Experts(Jacobsら、1991年、Shazeerら、2017年、Lepikhinら、2020年、Fedusら、2021年)のような層に依存するアルゴリズムがあります。これらのアルゴリズムについては、付録A

2.2 HPC以外での分散トレーニング

2.1節で紹介した分散トレーニング技術は,高速で信頼性の高い通信が可能な同一デバイスのクラスタを対象に設計されているため,HPC(High-Performance Computing)環境に適しています. しかし,先に述べたように,このようなインフラを常に利用できるとは限りませんし,価格も手頃ではありません. より費用対効果の高い代替案としては、「プリエンピティブル」インスタンス(Liら、2019年、Zhangら、2020年、Harlapら、2017年)やボランティアコンピューティング(Diskinら、2021年、Kijsipongseら、2018年、Atreら、2021年、Ryabinin & Gusev、2020年)を使用することが挙げられます。 しかし、これらの環境では、ハードウェアの故障や需要の急増により、各マシンが突然トレーニングから離れることがあるため、分散型トレーニングには難しい。 さらに、地域ごとに利用できるインスタンスの数は限られているため、大規模なトレーニングを行うには、複数の地域で運用したり、複数の種類のインスタンスを使用したりする必要があります。

要約すると、非HPC環境での分散型トレーニングには、主に5つの制限があります。 (1)時間の経過に伴うノードの加入・離脱、 (2)ノードやネットワークの障害、 (3)異機種間での性能のばらつき、 (4)地域間のネットワーク帯域の低さと (5)高いレイテンシー。

動的な数のワーカーで学習するために、深層学習の実務者は弾性的な学習アルゴリズムを考え出した(TorchElastic; ElasticHorovod)。 トレーニングの途中で1つのピアが離脱または故障した場合、これらのアルゴリズムは残りのデバイス間の負荷を動的に再バランスし、トレーニングを継続します(Harlapら、2017年、Ryabininら、2021年)。 トレーニングの途中で新しいデバイスが加わった場合、彼らは仲間から最新のトレーニングパラメータをダウンロードし、彼らと一緒にトレーニングを行います。 別の研究ラインでは、性能にばらつきのある異種のデバイス上での分散トレーニングに取り組んでいる。 この問題を解決する1つの方法は、非同期トレーニングを使用することであり、デバイスは自分のペースで勾配を計算し、パラメータサーバー(Rechtら、2011年、Kijsipongseら、2018年)または分散型通信ネットワーク(Lianら、2017年)のいずれかを使用してそれらを集約します。 このアイデアは、非同期アルゴリズムが個々のデバイスを十分に活用することを可能にしますが、「陳腐な」勾配を使用するために収束率が低下する可能性があります(Recht et al.、2011; Aji & Heafield, 2019)。

最後に、いくつかの研究(Li et al., 2020; Ryabinin et al., 2021; Ren et al., 2021; Diskin et al., 2021)では、反復ごとの収束性を維持しつつ、いくつかの同期のボトルネックを取り除くハイブリッド技術が提案されています。 しかし、これらのユースケースはいずれもデータ並列学習に依存しているため、各計算ノードがモデル全体を実行できなければならないという基本的な制限があります。 一方、最も計算負荷の高いタスクでは、数十億個のパラメータを持つモデルを学習する必要がありますが、これはほとんどのローエンドGPUではGPUとホストメモリの両方に負担がかかります。 また、2.1節のモデル並列アルゴリズムは、データ並列学習とは異なり、冗長性がないため、ハードウェアやネットワークの障害に弱いという欠点があります。 実際、1台のノードが故障しただけでも、学習したパラメータが永久に失われ、他のノードはフォワードパスやバックワードパスを実行できなくなります。 私たちの知る限り、信頼性の低いデバイスを使った大規模モデルのトレーニングに関する研究は1件しかありませんが (Ryabinin & Gusev, 2020)、この研究はMixture-of-Expertsのみをサポートしており、おもちゃの実験であっても少なくとも1Gb/sのインターコネクトが必要です。

2.3 通信の効率化と圧縮技術

このセクションでは,ネットワークの帯域幅が限られている場合や,レイテンシーが高い場合のトレーニングに対応する技術として,グラジエント圧縮や,計算と通信のフェーズをオーバーラップさせる方法について説明します.

効率的なパラメータ勾配通信

データ並列学習では、バックプロパゲーションの各パスの後に勾配を同期させる必要がありますが、モデルに多くのパラメータがある場合や、ネットワークの帯域が限られている場合にはコストがかかります。 Deep Gradient Compression(Lin et al., 2018)は、同期する前に勾配をスパース化することでこの問題に取り組み、スパースな更新で動作するように運動量を補正します。 PowerSGD (Vogels et al., 2019) は、因数分解によってグラデーションを圧縮し、エラーフィードバックを使用して時間の経過とともに近似誤差を相殺します。 1ビットSGD(Seide et al., 2014)、1ビットAdam(Tang et al., 2021)、1ビットLAMB(Li et al., 2021)などの技術は、勾配を直接同期するのではなく、エラー補正された1ビットのローカルオプティマイザーの統計を同期するものである。 Dettmers(2015)は非線形8ビット量子化を用いて、通信前にグラデーションを圧縮している。 この手法は、圧縮を意識したアーキテクチャと組み合わせて使用しています。 グラデーションを直接圧縮する以外にも、レイヤ共有(Lan et al., 2020)を利用することで、同期が必要なパラメータ・グラデーションの量を、レイヤが再利用される回数の係数で削減することも有効な手法です。

通信と計算の重なり。

モデル並列、パイプライン並列、データ並列は、それぞれレイヤー、ステージ、パラメータ更新ごとに特定の同期ポイントがあり、通信を要するグラデーションやアクティビティの転送が必要になります。 通常、これらの転送が完了するまでモデルの学習は進みません。 このコストを削減する効果的な方法の1つは、通信と計算をオーバーラップさせることで、転送による同期の待ち時間を隠すことです。 これは、複数の並列化技術を組み合わせること(Krizhevsky, 2014; Rajbhandari et al., 2020)、バックプロパゲーションでパラメータ勾配を層ごとにロックステップで同期すること(Paszke et al., 2019)、または純粋なパイプライン並列化を使用すること(Huang et al., 2019; Narayanan et al. しかし、純粋なパイプライン並列は、通信を効果的に隠すために多くのパイプラインステージを必要とします。 この問題を解決するために、比較的少ないパイプラインステージでもうまく動作する圧縮考慮アーキテクチャを開発します。 もう一つのアプローチは、通信をオーバーラップさせる代わりに、計算/通信の比率を向上させることです。この比率は、勾配累積(Ott et al., 2018)または大きなバッチサイズ(You et al., 2020)を使用することで改善できます。

モデルの圧縮方法。

圧縮に関する代表的な研究として、剪定、量子化、ハフマン符号化のパイプラインを用いて推論用のニューラルネットワークを圧縮するHanら(2016)の研究がある。 Courbariauxら(2014)は、学習時の数値精度と最終的なテストエラーの間のトレードオフを探っています。 1ビット量子化に関する研究では、予測性能とスピードアップのトレードオフを模索している(Rastegari et al.2016; Courbariaux et al.2015)。 小さなモデルや畳み込みネットワークには極端な圧縮方法がうまく使われていますが(Qin et al. 2020)、大きなモデルやトランスフォーマーの量子化はより困難です(Ramesh et al. 2021)。

e4exp commented 2 years ago

image

image

3 通信効率の良いモデル並列処理

3.1 深層学習のSQUARE-CUBE法則

モデル並列処理の一般的なスケーリング特性をより良く理解するためには、モデルアーキテクチャ、ミニバッチサイズ、システム設計などのアプリケーション固有のパラメータを排除する必要があります。 そのために、まず単純化したパイプライン並列のモデルを考えます。 この「パイプライン」はk個のステージで構成され、それぞれがn×nの行列で表されます。 直感的には、最初のステージが入力データを表し、後続のステージはすべてそのデータに「レイヤー」を適用することになります。 このモデルは、単一のアプリケーションの詳細を説明するものではありませんが、後に実世界のケースに適用される直感を捉えるために使用することができます。

トレーニング」では、ステージが反復的に行列の乗算を実行し、その出力をスループットが制限されたネットワークを介して後続のパイプラインステージに送信します。 この2つの演算には、異なるスケーリング特性があります。 素朴な行列乗算の計算時間は、O(n^3 )となります。 これは理論的にはさらに減らすことができますが(Coppersmith & Winograd, 1990; Alman & Williams, 2021)、非常に大きな行列にしか使用されません(Zhang & Gao, 2015; Fatahalian et al., 2004; Huang et al., 2020)、ニューラルネットワークの標準はO(n 3 )アルゴリズムを使用することです。

翻って通信フェーズでは、アクティベーション(またはグラディエント)のバッチを転送するのに、最大でO(n^2 )時間を必要とします。 したがって、モデルのサイズが大きくなると、どの行列乗算アルゴリズムを使用しても、計算時間は通信時間よりも速くなります。 この考え方を、物理学の原理にちなんで「正方立方体の法則」と呼んでいます(Galileo, 1638; Allen, 2013)。 この原理は、いくつかの混同された変数があるものの、現実の多くのニューラルネットワークアーキテクチャに適用されます。 畳み込みニューラルネットワーク(Fukushima, 1980)では、計算時間はO(BHW C^2 )、通信はO(BHW C)となります。 ここで、B、H、W、Cは、バッチサイズ、高さ、幅、チャンネル数を表します。 リカレントニューラルネットワーク(Rumelhart et al., 1986; Hochreiter & Schmidhuber, 1995)は、アーキテクチャに応じて、バッチサイズ、シーケンス長、隠れたサイズのそれぞれについて、O(BLH^2 )の計算と、O(BLH)またはO(BH)の通信を必要とします。 同じ表記で、トランスフォーマー(Vaswani et al., 2017)は、注意層の場合はO(BL^2H)計算、フィードフォワード層の場合はO(BLH^2 )計算が必要ですが、どちらの場合もO(BLH)通信しか必要ありません。

これらの観察結果から、パイプラインの並列処理は、モデルサイズに応じて自然に通信効率が高くなると結論づけています。 正確には,隠れた次元を増やすことで,単位時間当たりのデバイスあたりの通信負荷が減り,低いネットワーク帯域幅と高いレイテンシーで効率的にモデルを学習することが可能になります4. 正確な実用上の効果はユースケースによって異なりますが、セクション4.1では、パイプライン並列処理で学習された大規模なモデルの一部が、わずか数百Mb/sの帯域幅ですでにピーク効率で学習できることを示しています。

不思議なことに、スクエアキューブの原理はレイヤー内の並列処理にも適用されますが(Krizhevsky et al.2012; Jacobs et al.1991)、この手法を500Mb/sで使用できるのは、レイヤーサイズが65536ユニットを超えるような非現実的な大きさの場合のみです。 シャーディングやオフロードを用いたデータ並列学習では、通信時間がアクティベーションではなくモデルパラメータの大きさに比例するため、スケーリングがうまくいきません。 しかし、低ランク勾配近似を用いた別のデータ並列学習では、同様のスケーリングを実現できる可能性があります(Vogels et al.、2019)。

3.2 SWARM PARALLELISM

従来のパイプライン並列は、通信効率を高めることができますが、それだけでは十分ではありません。 各スウォームの参加者はそれぞれ異なる計算能力やネットワーク能力を持っているため、このようなデバイスで構成されたパイプラインは、最も弱いリンク、つまりトレーニングのスループットが最も小さい参加者がボトルネックとなってしまいます。 その結果、パイプライン上のより強力なノードは、入力の不足や後続のステージの遅さのために十分に活用されなくなります。 さらに、1つのピアが失敗したり、トレーニングを早期に終了したりすると、トレーニング手順全体が停止してしまいます。 これら2つの課題を克服するために、厳格なパイプライン構造を、各反復の間にその場で形成されるランダム化された一時的な「パイプライン」に置き換えます。 各参加者は、次のパイプラインステージを提供するどのピアにも出力を送ることができます。 このため、あるピアが他のピアよりも圧倒的に高い計算能力を持っている場合、そのピアは複数の前任者からの入力を処理し、その出力を複数の弱いピアに分配して利用率を最大化することができます。 さらに、トレーニング中に参加者が離脱した場合、その前任者はリクエストをその隣人に再ルーティングすることができ、各パイプラインステージに少なくとも1人のアクティブな参加者がいる限り、トレーニングを続行することができます(この点については、付録Cで詳しく説明します)。

その結果、図2に示すように、複数の連続したスウォームで構成されるインフラとなります。 1つのスウォーム内のピアは、同じパイプラインステージ(すなわち、モデルレイヤーの同じサブセット)を担当します。 フォワードパスでは、ピアはランダムな前任者から入力のマイクロバッチを受け取り、次のステージのランダムなピアにアクティベーションを送信します。 バックワードパスでは、ピアは出力に対するグラデーションを受け取り、層の入力に対するグラデーションを計算し、パラメータに対するグラデーションを蓄積します。 他のパイプライン実装(Huang et al., 2019; Narayanan et al., 2021)と同様に、SWARMはアクティベーションチェックポインティング(Griewank & Walther, 2000; Chen et al., 2016)を使用してメモリフットプリントを削減する。 十分な勾配が蓄積されると、ピアはグループを形成し、All-Reduceを実行してそれぞれのパイプラインステージ内の勾配を集約し、グローバルオプティマイザのステップを実行します。 SWARMでは、DPU(Delayed Parameter Updates)を使用して、次のバッチの実行と並行してオプティマイザーステップを実行することで、デバイスの使用率をさらに向上させることができます。 これは技術的には非同期ですが、DPUは完全に同期したトレーニングと同様の反復ごとの収束を達成することが示されています(Ren et al.2021; Diskin et al.2021)。

確率的配線。

個々のデバイスの能力をよりよく活用するために、各入力を各ステージに動的に「配線」し、トレーニングのスループットに比例してデバイスを選択します。 SWARMは、複数の「トレーナー」プロセスを作成し、初期順序をランダム化したインターリーブ加重ラウンドロビンアルゴリズム(Tabatabaee et al.、2020)を使用して、異なるパイプラインステージを通過させます。 これらのプロセスはGPUを使用せず、学習可能なパラメータもありません。

適応型スウォームのリバランス

セクション2.2で説明したように、我々のワーカーはいつでもトレーニングに参加、離脱することができます。 あるパイプラインステージで多くのピアを失った場合、残りのステージは処理負荷の増加に対処しなければならず、必然的にボトルネックを形成します。 SWARMの並列処理では、ピアがパイプラインステージを動的に切り替えて、トレーニングのスループットをリバランスさせることで、この問題に対処しています。 T=300秒ごとに、ピアは各パイプラインステージの使用率をキューサイズとして測定します。 そして、最も利用率の低いパイプラインステージにいたピアは、最も利用率の高いパイプラインステージに切り替え(図2参照)、新しい隣人から最新のトレーニング状態をダウンロードし、トレーニングを継続します。 同様に、トレーニングの途中で新しいピアが加わった場合も、同じプロトコルに従って、最も使用率の高いパイプラインステージを自動的に見つけます。 副次的な効果として、この技術は、各パイプラインステージの計算要求に比例してピアを割り当てることにより、SWARMが不均等なパイプラインステージで動作することを可能にします。

3.3 圧縮を考慮したアーキテクチャ

パイプライン並列処理では、複数の異なる通信ポイントが存在するため、これらの通信ポイントでのフィーチャーのサイズを小さくすることで、ネットワークのオーバーヘッドを大幅に削減することができます。 これを利用するために、これらのポイントで極端な圧縮を行う圧縮考慮型のアーキテクチャを開発しました。 本研究では、圧縮ネットワークの2つの異なる方法を研究しています。

(1)線形ボトルネック層による圧縮, (2)maxout活性化関数によって誘導されるボトルネックによる圧縮(Goodfellow et al.

また,圧縮を考慮したアーキテクチャに,8ビット量子化とハフマン符号化を組み合わせることで,通信オーバーヘッドをさらに62%削減しています.

完全連結型レイヤー - ベースライン

トランスフォーマーの完全連結層は、1つの隠れ層と非線形活性化関数を持つ多層パーセプトロンで構成されています。 バイアスがなく、入力から出力への残差接続(He et al., 2015)がある場合、これは次のように記述されます。

image

ここで,x∈R b×s×m,w1∈R m×h ,w2∈R h×m,σ(-)は,ReLU(Krizhevsky et al., 2012)などの非線形活性化関数であり,b,s,m,hは,変換ニューラルネットワークのバッチ,シーケンス,モデル,隠れ次元である。 MLP層の出力を圧縮するためには,2つのステージの間に圧縮層を適用したいところです。 例えば、24の層と4つのステージがある場合、これらのステージを橋渡しする3つの圧縮層を層6、12、18に用意します。

ボトルネック・レイヤー

ボトルネック層は、MLPの出力特徴を線形投影して圧縮するという単純なもので、実験を行いました。

image

ここで,x∈R^{b×s×m},w1∈R^{m×h} ,w2∈R^{h×m},σ(-)は,ReLU(Krizhevsky et al., 2012)などの非線形活性化関数であり,b,s,m,hは,変換ニューラルネットワークのバッチ,シーケンス,モデル,隠れ次元である。 MLP層の出力を圧縮するためには,2つのステージの間に圧縮層を適用したいところです。 例えば、24の層と4つのステージがある場合、これらのステージを橋渡しする3つの圧縮層を層6、12、18に用意します。

ボトルネック・レイヤー

ボトルネック層は、MLPの出力特徴を線形投影して圧縮するという単純なもので、実験を行いました。

image

ここで、wc∈R m×c , wd∈R c×mは、圧縮次元c<mの圧縮・伸張パラメータであり、発散のない学習を保証するために、レイヤノルム(Ba et al. パラメータテンソルwcは1つのステージに存在し、その出力はパラメータwdを保持する次のステージに転送されるため、元のモデルに比べてm/c倍の通信量で済みます。

マックスアウト圧縮。

ボトルネック圧縮と比較して、マックスアウト圧縮は、線形投影ではなく、マックスアウト活性化関数(Goodfellow et al., 2013)を圧縮に使用することで機能します。 因子kのmaxout関数は,dの隠れ次元を持つ入力を受け取り,k個の特徴の非重複ウィンドウごとに最大値を計算することで,この次元を因子kで削減します. maxoutによる圧縮は以下のように行います。

image

ここで、出力は前段のmaxout関数によってk倍に縮小され、これらの出力は、伸長行列wd∈R m/k×mを保持する次段に送られる。