『UltraFastBERT:指数関数的に高速な言語モデリング』
『超高速BERT:指数関数的な言語モデル化』
言語モデルと生成型AIは、その能力で有名であり、AI業界で注目の的です。世界中の研究者は、その効果と能力を向上させています。これらのシステムは、通常、深層学習モデルであり、広範なラベル付きデータで事前トレーニングされており、自己注意のためのニューラルネットワークを組み込んでいます。これらはさまざまなレイヤー(フィードフォワード、再帰、埋め込み、注意)を使用して入力テキストを処理し、関連する出力を生成します。
ほとんどの場合、大規模な言語モデルのフィードフォワードレイヤーには最も多くのパラメータが含まれています。研究によると、これらのモデルは推論時に利用可能なニューロンのほんの一部しか使用しません。
この記事では、UltraFastBERTという、主要なBERTモデルと同等の効果を発揮するが、推論時には12個のニューロンのみを使用するBERTベースのフレームワークについて紹介します。UltraFastBERTのアーキテクチャ、機能、結果について探っていきましょう。
UltraFastBERT:指数的に高速な言語モデリングの紹介
従来の言語モデルは、フィードフォワードレイヤー、再帰レイヤー、埋め込みレイヤー、注意レイヤーなど、さまざまなコンポーネントを使用して、内容の生成能力を備えます。これらのコンポーネントは、トレーニング中にパターン認識を学習し、入力テキストに基づいて正確な出力を生成する責任があります。これらのコンポーネントのそれぞれにはいくつかのパラメータがあり、言語モデルではフィードフォワードレイヤーが大部分のパラメータを保持しています。しかし、これらのフィードフォワードレイヤーは推論時においてすべてのニューロンを100%使用して出力を生成しないため、リソースの無駄遣いとなり、複雑さ、計算時間、計算コストが増加します。
UltraFastBERTフレームワークは、BERTフレームワークのバリエーションであり、このコンセプトを基に構築されています。アーキテクチャ内のフィードフォワードレイヤーを高速フィードフォワードネットワークで置き換えることで、UltraFastBERTフレームワークはごくわずかなニューロンのみを利用し、サイズとトレーニングプロセスが類似したBERTモデルと比較可能な結果を提供します。特に、下流のタスクにおいては。設計上の実装により、UltraFastBERTフレームワークの中間レイヤーは指数的に高速です。
高速フィードフォワード(FFF)ネットワークとフィードフォワード(FF)ネットワークを考えると、それぞれn個のニューロンを持っています。フィードフォワードネットワークの順方向のパスの時間複雑性はO(n)であり、一方、高速フィードフォワードネットワークの時間複雑性はO(log2n)です。この時間複雑性の違いは、高速フィードフォワードネットワークでは、ニューロンがバランスの取れた二分木に組織化され、入力が提供されるとネットワークは条件付きでツリーの一方の枝のみを実行することにより生じます。さらに、高速フィードフォワードネットワークでの推論を行うと、CMMまたは条件付き行列積が生じます。ここでは、入力行が個別に自然重みの列と内積計算され、前のドット積演算の出力が列の重みを決定します。その結果、ネットワークはほんの一部の入力に対してのみすべてのニューロンを使用し、すべての入力に対してはほんのわずかなニューロンで処理する必要があります。CMMドット積は、すべての入力とすべての重み列のドット積を計算するDMMまたは密行列乗算とは対照的です。
要約すると、UltraFastBERTは、推論時にのみ利用可能なニューロンのわずか0.3%を利用し、各推論レイヤーごとに4095個のニューロンのうちわずか12個を使用する、BERTベースのフレームワークです。
順送り型ニューラルネットワーク
フィードフォワードニューラルネットワークは、人工ニューラルネットワークの中でも最も基本的なネットワークの1つで、情報を入力ノードから出力ノードまで、隠れノードを介して前方向にのみ移動させます。高速順方向ニューラルネットワークの主な特徴の1つは、このようなネットワークにはループやサイクルがないことであり、RNN(再帰型ニューラルネットワークや再起型ニューラルネットワーク、CNN(畳み込みニューラルネットワーク)と比較して構築が簡単です。高速順方向ニューラルネットワークのアーキテクチャは、入力層、隠れ層、出力層の3つのコンポーネントで構成されており、各層にはニューロンと呼ばれるユニットがあり、各層は重みの助けを借りて他の層と接続されています。
入力層に存在するニューロンは入力を受け取り、次の層に送ります。各入力層のニューロンの数は入力データの次元によって決まります。次に、入力または出力に露出されていない隠れ層があり、必要な計算を担当します。それぞれの隠れ層のニューロンは前の層から得られた出力の重み付き和を取り、活性化関数を適用し、結果を次の層に渡します。そして、このプロセスを繰り返します。最後に、与えられた入力の出力を生成する出力層があります。高速順送型ニューラルネットワークの各層の各ニューロンは、次の層の各ニューロンと相互に接続されています。これにより、FFFニューラルネットワークは完全に接続されたネットワークとなります。ニューロン間の接続の強度を表すために重みが使用され、ネットワークは出力で発生するエラーに基づいてこれらの重みを更新してパターンを学習します。
次に進むと、高速順送型ニューラルネットワークの動作には2つの重要なステージがあります。順伝播フェーズと逆伝播フェーズです。
順伝播フェーズ
順伝播フェーズでは、入力がネットワークに供給され、前方に伝播されます。その後、隠れ層は入力の重み付き和を計算し、ReLu、Sigmoid、TanHなどの活性化関数を介して入力の和に非線形性を導入します。このプロセスは、重みが出力層に達し、モデルが予測を行うまで繰り返されます。
逆伝播フェーズ
モデルが予測を行った後、生成された出力と期待される出力の間のエラーを計算します。エラーはネットワークを逆伝播し、ネットワークはエラーを最小化するために勾配降下最適化アルゴリズムを使用して重みを調整します。
UltraFastBERT:モデルのアーキテクチャと動作
UltraFastBERTフレームワークは、crammedBERTアーキテクチャに基づいて構築され、UltraFastBERTフレームワークは、crammedBERTフレームワークの中間層に含まれる順伝播ネットワークを高速順送型ネットワークで置き換えます。UltraFastBERTフレームワークでは元の順伝播ネットワークに次の変更が加えられます。
- GElu活性化関数を使用して、葉ノードと非葉ノードの違いをなくし、これらのノードに出力重みを持たせ、出力バイアスを完全に削除します。この後、フレームワークは葉のサイズを1に固定します。
- 最後に、フレームワークは中間出力層を共同で計算することにより、複数の高速順送型ネットワークツリーを並列に許可します。フレームワークは個々のツリーの和をとり、和を中間出力層として提示します。
続いて、トレーニングでは、UltraFastBERTフレームワークは、事前学習時にドロップアウトを無効にし、1サイクル三角形学習率スケジュールを使用するcrammedBERTフレームワークで採用されているトレーニング手順に従います。その後、モデルはGLUEベンチマークのさまざまなタスクのパフォーマンスを最大化するように微調整されます。
干渉
干渉は高速順送型ネットワークの重要な要素であり、これらの高速順送型ネットワーク自体が大型言語モデルの主要な部分を形成し、その優れた高速化の可能性で知られています。この高速化の潜在能力を理解するために、最も進んだ言語モデルの1つであるGPT-3の例を考えてみましょう。各トランスフォーマーレイヤーの順伝播ネットワークは49,100以上のニューロンから構成されています。トレーニング可能な場合、高速順送型ネットワーク(最大15の深さ)が元の順伝播ネットワークを置き換えることができます。導入された高速順送型ネットワークは65,000以上のニューロンを持ちますが、そのうち16個のニューロンのみが干渉に使用され、GPT-3で使用可能なニューロンのおよそ0.03%に相当します。
アルゴリズムと互換性
UltraFastBERTフレームワークは、高速な順送信干渉のために再帰的な擬似コードアルゴリズムを使用しており、そのアルゴリズムは以下のイメージで示されています。
ここで、Bはバッチサイズを、Hは入力層の幅を、Mは列を表しています。計算行列積のアプローチを使用する際の主な懸念事項は、既存のDense Matrix Multiplicationおよび既存のDeep Learningフレームワークで既に使用されているプロセスと高速順送信ネットワークが互換性があるかどうかです。幸い、CMMの使用はパフォーマンスに影響を与えるわけでも互換性を導入するわけでもありませんが、キャッシュの複雑さを増加させます。
順送信ネットワークの一部として、単一スレッドのDense Matrix MultiplicationはMACまたは乗算・加算演算を実行することに依存しており、したがってDMMをCMMアプローチで置き換えることで、各要素ごとのレイヤー出力の計算に必要なMAC命令が少なくなるため、CPUに利益をもたらします。したがって、通常、分岐に関連付けられる条件性を使用しているにもかかわらず、「ニューラル分岐」はフレームワーク内の関連するポインターへのメモリオフセットの追加として機能します。したがって、UltraFastBERTフレームワークでは、CMMの条件性を容易にするために命令の分岐予測は完全に利用されず、重み行列の関連する列のみが個別にロードされます。さらに、フレームワークが行列の行-列ドット積を実行するため、SIMDまたはシングルインストラクションマルチデータベクトル並列処理は、特定のデバイスに対する干渉実装の高速化において依然として良いオプションです。
UltraFastBERT:パフォーマンスと結果
UltraFastBERTフレームワークのファインチューニングおよび干渉タスクに対するパフォーマンスについて説明し、フレームワークが最新の言語モデルに対してどのように優れているかを分析します。
ファインチューニングの結果
以下の図は、GLUE-devテストデータセット上のさまざまなモデルのパフォーマンスを示しています。ここで、Nはモデルのトレーニングに使用可能なニューロンの数を表し、「Avg」はすべてのタスクの平均スコアを表します。
明らかにUltraFastBERTフレームワークは、A6000 GPUで24時間以上トレーニングされたものでありながら、元のBERTフレームワークと比較してGLUE下流タスクの予測パフォーマンスのほぼ96%を保持することができます。さらに、高速順送信ネットワークの深度が増すにつれて、フレームワークのパフォーマンスは低下しますが、その多くのパフォーマンス低下はCoLaタスクにのみ起こります。CoLaタスクを一時的に無視すれば、UltraFastBERTフレームワークは約98.6%の予測パフォーマンススコアを返します。
干渉の結果
このセクションでは、干渉実装におけるいくつかの順送信ネットワークまたは高速順送信ネットワークのパフォーマンスを比較し、これらの実装は3つのレベルに広がっています。
- レベル1実装では、実装はBLASレベル1のルーチン、すなわちスカラー-ベクトル積とベクトル-ベクトル内積を使用して構築されます。
- レベル2では、実装はBLASレベル2のルーチン、すなわちバッチ化されたスカラー-ベクトル積とバッチ化された行列-ベクトル内積を使用して構築されます。
- レベル3では、実装ではバッチ化されていないBLASレベル3の行列-行列乗算アプローチを使用し、これは順送信ネットワークには使用できますが、計算行列積のベクトルレベルのスパース性をサポートしないため、高速順送信ネットワークには使用できません。
さらに、UltraFastBERTフレームワークでは、カスタムCUDAまたはPyTorchカーネルを使用してGPU実装を展開します。
上記の表は、UltraFastBERTフレームワークのFeedforwardおよびFast Feedforwardレイヤーについて、同じ線形代数ルーチンの原始的な操作を使用している場合の相対的な干渉Fast Feedforward over Feedforward実装の高速化を列ごとに含んでおり、以前のBERTベースのフレームワークとのパフォーマンスを比較しています。
ただし、上記の表で報告されている高速化は、「公正な比較」のために意味されています。つまり、高速順送信および順送信実装の両方が同じ線形代数ルーチンの原始的な操作を使用していることに注意してください。さらに、レベル1およびレベル2では、高速順送信ネットワークの実装は、最速の順送信実装と比較してそれぞれ48倍および78倍速く干渉を実行することができます。
最終的な考え
この記事では、UltraFastBERTについて話しました。これはBERTフレームワークのバリアントで、前向きの層が干渉時にすべての入力に対して出力を生成するために利用可能なニューロンの100%を利用していないという概念に基づいています。これにより、リソースの浪費、複雑さの増加、計算時間とコンピュータのコストの増加が生じます。そのため、UltraFastBERTのアーキテクチャでは、前向きの層をより高速な前向きネットワークで置き換えることで、利用可能なニューロンのわずか0.3%しか利用せずに、BERTモデルと同等のサイズとトレーニングプロセスで結果を提供することができます、特に下位タスクで。
UltraFastBERTフレームワークの中間層は、その設計の実装により指数関数的に高速化されています。さらに、UltraFastBERTフレームワークが提供する強力なパフォーマンスは、個々の干渉に対してパラメータの一部しか使用せずに強力なパフォーマンスを提供できることの証拠です。UltraFastBERTフレームワークでは、干渉時に利用可能なニューロンのわずか0.3%しか利用していませんが、干渉時間に対して78倍の高速化を実現しています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- ビデオスワップに会おう:対話型意味ポイント対応でビデオの被写体交換をカスタマイズする人工知能フレームワーク
- エンドツーエンドの労働力管理を取得する: Amazon ForecastおよびAWS Step Functions
- 「つながる点 OpenAIの主張されたQ-Starモデルの解明」
- このAI論文は、高品質な3Dセグメンテーションを実現するために、与えられたシーン内の任意のオブジェクトのためのセグメントエニシングのための高品質(SANeRF-HQ)フレームワークを紹介しています
- 「大規模言語モデルをより効率的に最適化できるのか?LLMの効率性に関するアルゴリズムの進化についての包括的な調査をご覧ください」
- 一緒にAIを学ぶ – Towards AI コミュニティニュースレター第4号
- 「大規模言語モデルの微調整方法:ステップバイステップガイド」