Connect with us

人工知能

UltraFastBERT: 言語モデリングの指数的に高速化

mm

言語モデルと生成的なAIは、その能力で有名で、AI業界のホットトピックです。世界中の研究者がその有効性と能力を高めています。これらのシステムは、通常、深層学習モデルで、広範なラベル付きデータで事前トレーニングされており、自己注意のニューラルネットワークを組み込んでいます。フィードフォワード、リカレント、埋め込み、注意などのさまざまなレイヤーを使用して、入力テキストを処理し、関連する出力を生成します。

一般に、大規模な言語モデルのフィードフォワードレイヤーには、最も多くのパラメータを持っています。研究によると、これらのモデルは、推論時の出力計算で利用可能なニューロンのわずかな割合しか使用しません。

この記事では、UltraFastBERTを紹介します。UltraFastBERTは、BERTベースのフレームワークで、トップレベルのBERTモデルと同等の有効性を持ちながら、推論時にわずか0.3%のニューロンしか使用しません。具体的には、各レイヤーで4095個のニューロンのうち12個のみを使用します。UltraFastBERTのアーキテクチャ、機能、結果について探っていきましょう。

UltraFastBERT : 指数的に高速な言語モデリングの紹介

伝統的に、言語モデルは、フィードフォワードレイヤー、リカレントレイヤー、埋め込みレイヤー、注意レイヤーなどのさまざまなコンポーネントを使用して、コンテンツ生成機能を備えています。これらのコンポーネントは、トレーニング中にパターンを認識することを学び、最終的に入力テキストに基づいて正確な出力を生成する責任があります。これらのコンポーネントには、いくつかのパラメータがあり、言語モデルでは、フィードフォワードレイヤーがこれらのパラメータの大部分を保持しています。しかし、これらのフィードフォワードレイヤーは、すべての入力に対して100%のニューロンを使用して出力を生成しません。つまり、リソースが浪費され、複雑さ、計算時間、計算コストが増加します。

UltraFastBERTフレームワークの核となる部分は、BERTフレームワークのバリアントで、フィードフォワードレイヤーをより高速なフィードフォワードネットワークに置き換えることで、最終的にUltraFastBERTフレームワークが利用可能なニューロンのわずか0.3%しか使用しないことになります。特に、各レイヤーで4095個のニューロンのうち12個のみを使用します。設計の実装により、UltraFastBERTフレームワークの中間レイヤーは指数的に高速化されます。

高速フィードフォワード(FFF)ネットワークとフィードフォワード(FF)ネットワークを考えてみましょう。各ネットワークにはn個のニューロンがあります。フィードフォワードネットワークのフォワードパスの時間複雑度はO(n)ですが、高速フィードフォワードネットワークの時間複雑度はO(log2n)です。時間複雑度の違いは、高速フィードフォワードネットワークではニューロンがバランスの取れた二分木に組織化されているため、入力が提供されるとネットワークは木の条件付きブランチのみを実行するためです。さらに、高速フィードフォワードネットワークで推論を実行すると、CMM (Conditional Matrix Multiplication) が実行され、入力行が自然な重み列と個別にドット積を計算し、前のドット積演算の出力が次の重み列の重みを決定します。結果として、ネットワークはすべてのニューロンを使用するのはわずかな入力のみであり、入力はネットワークによって処理されるためにニューロンを使用する必要はありません。CMMドット積は、すべての入力と重み列のドット積を計算するDMM (Dense Matrix Multiplication) と対比されます。

要約すると、UltraFastBERTは、BERTベースのフレームワークで、最先端のBERT言語モデルと同等の結果を提供しますが、

  1. 推論ステージで利用可能なニューロンのわずか0.3%しか使用しません。特に、各推論レイヤーで4095個のニューロンのうち12個のみを使用します。
  2. ダウンストリームタスクでファインチューニング戦略を実装することで、最先端のBERTモデルと同等の強力なパフォーマンスを提供します。
  3. 高速フィードフォワードネットワークの基礎となるCMM (Conditional Matrix Multiplication) のネイティブ実装を提供し、ネイティブ最適化DMM (Dense Matrix Multiplication) と比較して78倍のパフォーマンス向上を実現します。

フィードフォワードニューラルネットワーク

フィードフォワードニューラルネットワークは、最もシンプルな人工ニューラルネットワークの一つで、情報を入力ノードから出力ノードへ、隠しノードを経由して前方のみに移動させます。フィードフォワードニューラルネットワークの主な特徴は、ネットワークにループやサイクルがないことであり、RNN (Recurrent Neural Networks) やCNN (Conventional Neural Networks) と比較して構築が簡単です。フィードフォワードニューラルネットワークのアーキテクチャは、入力レイヤー、隠しレイヤー、出力レイヤーの3つのコンポーネントで構成され、各レイヤーにはニューロンと呼ばれるユニットがあり、各レイヤーは重みを使用して相互に接続されています。

入力レイヤーのニューロンは入力を受け取り、それを次のレイヤーに転送します。各入力レイヤーのニューロンの数は、入力データの次元によって決定されます。次に、入力や出力に公開されない隠しレイヤーがあり、必要な計算を担当します。各隠しレイヤーのニューロンは、前のレイヤーの出力の重み付き合計を取り、活性化関数を適用し、結果を次のレイヤーに渡し、このプロセスは繰り返されます。最後に、出力レイヤーが入力に対する出力を生成します。フィードフォワードネットワークの各ニューロンは、次のニューロンと完全に接続されており、フィードフォワードニューラルネットワークは完全に接続されたネットワークです。重みは、ニューロン間の接続の強度を表し、ネットワークは出力のエラーに基づいて重みを更新してパターンを学習します。

さらに、フィードフォワードニューラルネットワークの動作には、フィードフォワードフェーズとバックプロパゲーションフェーズの2つの重要なステージがあります。

フィードフォワードフェーズ

フィードフォワードフェーズでは、入力をネットワークに供給し、前方に伝播させます。隠しレイヤーは入力の重み付き合計を計算し、ReLu、Sigmoid、TanHなどの活性化関数を使用して非線形性をモデルに導入します。このプロセスは、重みが出力レイヤーに到達し、モデルが予測を生成するまで繰り返されます。

バックプロパゲーションフェーズ

モデルが予測を生成した後、生成された出力と期待される出力の間のエラーを計算します。エラーはネットワークを逆方向に伝播し、ネットワークは勾配降下最適化アルゴリズムを使用してエラーを最小化するために重みを調整します。

UltraFastBERT : モデルアーキテクチャと動作

UltraFastBERTフレームワークは、crammedBERTアーキテクチャに基づいて構築されており、UltraFastBERTフレームワークはcrammedBERTフレームワークのすべてのコンポーネントを使用しますが、中間レイヤーの性質を除きます。代わりに、UltraFastBERTフレームワークはcrammedBERTフレームワークの中間レイヤーにあるフィードフォワードネットワークのトランスフォーマーエンコーダーを高速フィードフォワードネットワークに置き換えます。UltraFastBERTフレームワークは、元のフィードフォワードネットワークに以下の変更を加えます。

  1. リーフノードとノンリーフノードの違いを、GeLu活性化関数をノード全体で使用し、出力重みを付与し、出力バイアスを完全に削除することで除去します。その後、リーフサイズを1に固定します。
  2. 最後に、複数の高速フィードフォワードネットワークツリーを並列に実行できるようにします。中間出力レイヤーを個別に計算し、それらの合計を中間出力レイヤーとして提示することでこれを実現します。

トレーニングでは、UltraFastBERTフレームワークはcrammedBERTフレームワークで使用されているトレーニング手順に従います。具体的には、事前トレーニングでドロップアウトを無効にし、1サイクルの三角形学習率スケジュールを使用します。モデルは、GLUEベンチマークのタスクの幅広い範囲で最大5エポックでファインチューニングされ、パフォーマンスが最大化されます。

干渉

干渉は、高速フィードフォワードネットワークにとって重要な側面であり、これらの高速フィードフォワードネットワークは、大規模な言語モデルの大部分を形成し、特に優れた加速ポテンシャルで知られています。この加速ポテンシャルを理解するために、最も高度な言語モデルの1つであるGPT-3の例を考えてみましょう。各トランスフォーマーレイヤーのフィードフォワードネットワークには、49,100個を超えるニューロンがあります。トレーニング可能な高速フィードフォワードネットワーク(最大深度15)が元のフィードフォワードネットワークに置き換えられると、導入された高速フィードフォワードネットワークには65,000個を超えるニューロンがありますが、干渉にはこれらのニューロンのわずか16個しか使用されません。これは、GPT-3で利用可能なニューロンの約0.03%に相当します。

アルゴリズムと互換性

UltraFastBERTフレームワークは、高速フィードフォワードの干渉のための再帰的な疑似コードアルゴリズムを使用し、以下の画像に示すように、Bはバッチサイズ、Hは入力レイヤーの幅、Mは列を表します。

計算行列乗算アプローチを使用することによるもう1つの懸念は、高速フィードフォワードネットワークが、既存の深層学習フレームワークで使用されている密な行列乗算プロセスと互換性がない可能性があることです。幸いにも、CMMの使用はパフォーマンスに影響を与えず、互換性にも影響しませんが、キャッシングの複雑さは増加します。

注目するべき点は、高速フィードフォワードネットワークの一部として、シングルスレッド密な行列乗算は、MAC (乗算と累積) 命令の実行に依存し、結果として、DMMをCMMアプローチに置き換えることで、CPUが利益を得ることになります。MAC命令が必要とされるため、層出力ごとに要素ごとに必要です。したがって、UltraFastBERTフレームワークでは、条件付きの「ニューラルブランチング」が、関連するポインタへのメモリオフセットとして機能し、命令ブランチ予測は、CMMの条件付きを促進するために完全に関与しません。関連する重み行のみを個別にロードします。さらに、行列と列のドット積を実行するため、SIMD (単一命令、多重データ) ベクタ並列処理は、特定のデバイスの干渉実装を高速化するための有効な選択肢です。

UltraFastBERT : パフォーマンスと結果

UltraFastBERTフレームワークのパフォーマンスについて、ファインチューニングと干渉タスクの両方で説明し、最先端の言語モデルと比較してフレームワークがどのように機能するかを分析します。

ファインチューニング結果

以下の図は、さまざまなモデルがGLUE-devテストデータセットでどのように機能するかを示しています。ここで、Nはフレームワークにトレーニングに利用可能なニューロンの数を表し、「平均」はすべてのタスクの平均スコアを表します。

明らかなように、UltraFastBERTフレームワークは、A6000 GPUで24時間以上トレーニングされ、GLUEダウンストリームタスクで、元のBERTフレームワークと比較して、約96%の予測パフォーマンスを維持しています。さらに、高速フィードフォワードネットワークの深さが増加すると、フレームワークのパフォーマンスが低下することがわかりますが、パフォーマンスの低下の大部分はCoLaタスクでのみ発生します。CoLaタスクを無視すると、UltraFastBERTフレームワークは約98.6%の予測パフォーマンスを返します。

干渉結果

このセクションでは、フィードフォワードまたは高速フィードフォワードネットワークのパフォーマンスを、3つのレベルにわたって比較します。

  1. レベル1の実装では、スカラー-ベクトル積やベクトル-ベクトルドット積などのBLASレベル1ルーチンを使用します。
  2. レベル2では、バッチ化スカラー-ベクトル積やバッチ化マトリックス-ベクトルドット積などのBLASレベル2ルーチンを使用します。
  3. レベル3では、非バッチ化BLASレベル3マトリックス-マトリックス乗算アプローチを使用します。フィードフォワードネットワークでは最速の実装ですが、高速フィードフォワードネットワークでは利用できないため、計算行列乗算のベクトルレベルのスパース性をライブラリがサポートしていないためです。

さらに、UltraFastBERTフレームワークは、カスタムCUDAまたはPyTorchカーネルを使用してGPU実装を展開します。

上記の表は、UltraFastBERTフレームワークとその前身であるBERTベースのフレームワークのフィードフォワードと高速フィードフォワードレイヤーのパフォーマンスを比較し、各列には、同じ線形代数ルーチンプリミティブを使用する場合の相対的な推論高速フィードフォワード sobre フィードフォワード実装の速度向上を示しています。

しかし、上記の表に報告されている速度向上は、「公平な比較」であることを意図しており、高速フィードフォワードとフィードフォワードの両方の実装が同じ線形代数ルーチンプリミティブ操作を使用している必要があります。さらに、レベル1とレベル2では、高速フィードフォワードネットワークの実装は、最速のフィードフォワード実装よりもそれぞれ48倍と78倍速く推論を実行できます。

最終的な考え

この記事では、UltraFastBERTについて説明しました。UltraFastBERTは、BERTフレームワークのバリアントで、フィードフォワードレイヤーがすべての入力に対して100%のニューロンを使用して出力を生成しないという概念に基づいて構築されており、代わりにフィードフォワードレイヤーをより高速なフィードフォワードネットワークに置き換えることで、最終的にUltraFastBERTフレームワークが利用可能なニューロンのわずか0.3%しか使用しないことになります。特に、各レイヤーで4095個のニューロンのうち12個のみを使用します。設計の実装により、UltraFastBERTフレームワークの中間レイヤーは指数的に高速化されます。

UltraFastBERTフレームワークの強力なパフォーマンスは、LLMが個々の推論にパラメーターのわずかな部分のみを使用して強力なパフォーマンスを提供できることを証明しています。UltraFastBERTフレームワークは、干渉時に利用可能なニューロンのわずか0.3%しか使用しませんが、78倍の速度向上を達成します。

職業はエンジニア、心は作家。クナルは、AIとMLを深く愛し理解しているテクニカルライターで、これらの分野の複雑な概念を魅力的で情報の多いドキュメンテーションを通じて簡素化することに尽力しています。