AIモデルとプラットフォーム
UltraFastBERT: 指数関数で高速化された言語モデリングの紹介
言語モデルと生成的なAIは、AI業界で注目されているトピックです。世界中の研究者がその有効性と能力を高めています。これらのシステムは、通常、深層学習モデルで、広範なラベル付きデータで事前にトレーニングされており、自己注意のニューラルネットワークを含んでいます。入力テキストを処理し、関連する出力を生成するために、フィードフォワード、再帰、埋め込み、注意などのさまざまなレイヤーを使用しています。
大規模な言語モデルのフィードフォワードレイヤーには、最も多くのパラメーターが含まれています。研究によると、これらのモデルは、推論時の出力計算に利用可能なニューロンのわずかな割合しか使用していないことがわかりました。
この記事では、UltraFastBERTという、BERTベースのフレームワークを紹介します。UltraFastBERTは、BERTモデルの有効性に匹敵する結果をもたらしますが、推論時にわずか0.3%のニューロンしか使用しません。具体的には、各レイヤーで4095個のニューロンのうち12個のみを使用します。UltraFastBERTのアーキテクチャ、機能、結果について探究してみましょう。
UltraFastBERT: 指数関数で高速化された言語モデリングの紹介
伝統的に、言語モデルは、フィードフォワードレイヤー、再帰レイヤー、埋め込みレイヤー、注意レイヤーなどのさまざまなコンポーネントを使用して、コンテンツ生成能力を備えています。これらのコンポーネントは、トレーニング中にパターンを学習し、最終的に入力テキストに基づいて正確な出力を生成する責任があります。各コンポーネントには、いくつかのパラメーターがあり、言語モデルでは、フィードフォワードレイヤーがこれらのパラメーターの大部分を保持しています。しかし、これらのフィードフォワードレイヤーは、推論時に利用可能なニューロンの100%を使用して出力を生成しません。これにより、リソースが浪費され、複雑さ、計算時間、計算コストが増加します。
UltraFastBERTフレームワークは、BERTフレームワークのバリエーションで、フィードフォワードレイヤーをより高速なフィードフォワードネットワークに置き換えることで、BERTモデルのようなサイズとトレーニングプロセスで結果をもたらします。特に、ダウンストリームタスクで、UltraFastBERTフレームワークは推論時に利用可能なニューロンの0.3%しか使用しません。
与えられた高速フィードフォワード(FFF)ネットワークとフィードフォワード(FF)ネットワークは、それぞれn個のニューロンを持ちます。フィードフォワードネットワークのフォワードパスの時間複雑度はO(n)ですが、高速フィードフォワードネットワークの時間複雑度はO(log2n)です。これは、高速フィードフォワードネットワークでニューロンがバランスの取れた二分木に組織化されているためであり、入力が提供されると、ネットワークは木の1つの枝のみを条件的に実行します。さらに、高速フィードフォワードネットワークで推論を実行すると、CMM(条件付き行列乗算)が実行され、入力行が自然な重み列と個別にドット積を計算し、前のドット積演算の出力が次の列の重みを決定します。結果として、ネットワークはすべてのニューロンを使用するのはわずかな入力のみであり、入力にはネットワークが処理するために必要なニューロンはほんの少ししかありません。CMMドット積は、DMM(密行列乗算)と対照的であり、すべての入力とすべての重み列のドット積を計算します。
まとめると、UltraFastBERTは、BERTベースのフレームワークで、BERT言語モデルのような結果をもたらしますが、推論時に利用可能なニューロンの0.3%しか使用しません。
- 推論ステージで利用可能なニューロンの0.3%しか使用しません。各推論レイヤーで4095個のニューロンのうち12個のみを使用します。
- ダウンストリームタスクでBERTモデルのような強力なパフォーマンスをもたらします。ファインチューニング戦略を実装して、結果を向上させます。
- CMM(条件付き行列乗算)をネイティブに実装し、DMM(密行列乗算)に比べて78倍の高速化を実現します。
フィードフォワードニューラルネットワーク
フィードフォワードニューラルネットワークは、最も単純な人工ニューラルネットワークの1つで、情報が入力ノードから出力ノードへのみ前方に移動します。フィードフォワードニューラルネットワークの主な特徴は、ネットワークにループやサイクルがないことであり、RNN(再帰ニューラルネットワーク)やCNN(畳み込みニューラルネットワーク)と比べて構築が容易です。フィードフォワードニューラルネットワークのアーキテクチャは、入力レイヤー、隠しレイヤー、出力レイヤーの3つのコンポーネントで構成され、各レイヤーはニューロンと呼ばれるユニットで構成されています。各レイヤーは、重みで接続されています。
入力レイヤーのニューロンは入力を受け取り、次のレイヤーに転送します。各入力レイヤーのニューロンの数は、入力データの次元によって決定されます。次に、隠しレイヤーがあり、入力や出力に公開されていません。隠しレイヤーは、必要な計算を実行する責任があります。各隠しレイヤーのニューロンは、前のレイヤーの出力の加重和を計算し、活性化関数を適用し、結果を次のレイヤーに転送します。このプロセスは繰り返されます。最後に、出力レイヤーがあり、入力に対する出力を生成します。各レイヤーのニューロンは、次のレイヤーのニューロンと完全に接続されています。重みは、ニューロン間の接続の強度を表します。ネットワークは、出力のエラーに基づいて重みを更新して、パターンを学習します。
さらに、フィードフォワードニューラルネットワークには、フィードフォワードフェーズとバックプロパゲーションフェーズの2つの重要なステージがあります。
フィードフォワードフェーズ
フィードフォワードフェーズでは、入力がネットワークに提供され、前方に伝播します。隠しレイヤーは、入力の加重和を計算し、モデルに非線形性を導入するために活性化関数を適用します。このプロセスは、重みが出力レイヤーに到達するまで繰り返され、モデルは予測を出します。
バックプロパゲーションフェーズ
モデルが予測を出した後、生成された出力と期待される出力の間のエラーを計算します。エラーはネットワークを逆方向に伝播し、ネットワークは勾配降下最適化アルゴリズムを使用して、エラーを最小化するために重みを調整します。
UltraFastBERT: モデルアーキテクチャと動作
UltraFastBERTフレームワークは、crammedBERTアーキテクチャに基づいています。UltraFastBERTフレームワークは、crammedBERTフレームワークのすべてのコンポーネントを使用しますが、の中間レイヤーは異なります。UltraFastBERTフレームワークでは、crammedBERTフレームワークの中間レイヤーにあるトランスフォーマーエンコーダーを、高速フィードフォワードネットワークに置き換えます。UltraFastBERTフレームワークは、元のフィードフォワードネットワークに次の変更を加えます。
- 葉ノードと非葉ノードの違いをなくすために、GeLu活性化関数をノード全体で使用し、出力重みを付与し、出力バイアスを完全に削除します。次に、葉のサイズを1に固定します。
- 最後に、UltraFastBERTフレームワークは、複数の高速フィードフォワードネットワークツリーを並列に実行することを可能にします。中間出力レイヤーを共同で計算することでこれを実現します。フレームワークは、個々のツリーの合計を計算し、合計を中間出力レイヤーとして提示します。
トレーニングでは、UltraFastBERTフレームワークは、crammedBERTフレームワークで使用されているトレーニング手順に従います。これには、事前トレーニングでドロップアウトを無効にし、1サイクルの三角形学習率スケジュールを使用することが含まれます。モデルは、GLUEベンチマークのタスクのパフォーマンスを最大化するために、合計5エポックでファインチューニングされます。
干渉
干渉は、高速フィードフォワードネットワークの重要な部分です。高速フィードフォワードネットワークは、大規模な言語モデルの主要な部分であり、卓越した加速ポテンシャルで知られています。加速ポテンシャルを理解するために、最も先進的な言語モデルの1つであるGPT-3の例を考えてみましょう。GPT-3の各トランスフォーマーレイヤーにあるフィードフォワードネットワークには、49,100個のニューロンが含まれています。トレーニング可能な高速フィードフォワードネットワーク(最大深度15)が元のフィードフォワードネットワークに代わることができます。導入された高速フィードフォワードネットワークには、65,000個のニューロンが含まれるでしょうが、干渉にはこれらのニューロンの16個のみを使用します。これは、GPT-3の利用可能なニューロンの約0.03%に相当します。
アルゴリズムと互換性
UltraFastBERTフレームワークは、高速フィードフォワード干渉のための再帰的な疑似コードアルゴリズムを使用します。アルゴリズムは、以下の画像に示されています。

ここで、Bはバッチサイズ、Hは入力レイヤーの幅、Mは列を表します。計算行列乗算アプローチを使用することによるもう1つの懸念は、高速フィードフォワードネットワークが、既存のディープラーニングフレームワークで使用されている密行列乗算プロセスと互換性がない可能性があることです。幸いにも、CMMの使用はパフォーマンスに影響を与えず、互換性も損なわないですが、キャッシングの複雑さは増加します。
重要な点は、高速フィードフォワードネットワークの一部として、シングルスレッドの密行列乗算は、MAC(乗算と累加)命令の実行に依存し、結果として、レイヤーの出力ごとに要素ごとに必要なMAC命令が少なくなるため、CPUに利益をもたらすことです。したがって、通常は分岐と関連付けられる条件性を使用するにもかかわらず、「ニューラル分岐」は、フレームワーク内の関連ポインターのメモリオフセットに追加として機能し、CMMの条件性を促進するために、インストラクションブランチ予測は完全に活性化されず、重み行列の関連列のみを個別にロードします。さらに、フレームワークが行列と列のドット積を実行するため、SIMD(単一命令、複数データ)ベクター並列処理は、特定のデバイスの干渉実装を高速化するための有効なオプションです。
UltraFastBERT: パフォーマンスと結果
ここでは、UltraFastBERTフレームワークのファインチューニングと干渉のパフォーマンスについて説明します。UltraFastBERTフレームワークは、BERTベースのフレームワークと比較して、どのようにパフォーマンスを発揮するかを分析します。
ファインチューニング結果
以下の図は、GLUE-devテストデータセットでのさまざまなモデルのパフォーマンスを示しています。ここで、Nはトレーニングに利用可能なニューロンの数を表し、「平均」はすべてのタスクの平均スコアを表します。

明らかなように、A6000 GPUで24時間以上トレーニングされたUltraFastBERTフレームワークは、GLUEのダウンストリームタスクで、元のBERTフレームワークと比較して、約96%の予測パフォーマンスを維持しています。さらに、高速フィードフォワードネットワークの深さが増加すると、フレームワークのパフォーマンスが低下することがわかりますが、ほとんどのパフォーマンス低下はCoLaタスクでのみ発生します。CoLaタスクを無視すると、UltraFastBERTフレームワークは約98.6%の予測パフォーマンススコアを返します。
干渉結果
ここでは、フィードフォワードネットワークまたは高速フィードフォワードネットワークの干渉実装のパフォーマンスを比較します。これらの実装は、3つのレベルに分かれています。
- レベル1の実装は、スカラー-ベクトル積とベクトル-ベクトルドット積などのBLASレベル1ルーチンを使用して構築されます。
- レベル2では、実装は、バッチ化されたスカラー-ベクトル積とバッチ化された行列-ベクトルドット積などのBLASレベル2ルーチンを使用します。
- レベル3では、実装は、非バッチ化されたBLASレベル3行列-行列乗算アプローチを使用します。フィードフォワードネットワークの場合、これは最速の実装ですが、高速フィードフォワードネットワークの場合、ライブラリが計算行列乗算のベクトルレベルのスパース性をサポートしていないため、利用できません。
さらに、UltraFastBERTフレームワークは、カスタムCUDAまたはPyTorchカーネルを使用してGPU実装を展開します。

上の表は、UltraFastBERTフレームワークとその前身であるBERTベースのフレームワークのフィードフォワードレイヤーと高速フィードフォワードレイヤーのパフォーマンスを比較しています。各列には、同じ線形代数ルーチンプリミティブを使用するフィードフォワードと高速フィードフォワードの実装の相対的な干渉高速化が含まれます。
しかし、上の表に示されている高速化は、「公平な比較」のために意図されています。つまり、高速フィードフォワードとフィードフォワードの両方の実装が同じ線形代数ルーチンプリミティブ操作を使用します。さらに、レベル1とレベル2では、高速フィードフォワードネットワークの実装は、最速のフィードフォワード実装よりもそれぞれ48倍と78倍速く干渉を実行できます。
最終的な考え
この記事では、UltraFastBERTについて説明しました。UltraFastBERTは、BERTフレームワークのバリエーションで、フィードフォワードレイヤーをより高速なフィードフォワードネットワークに置き換えることで、BERTモデルのようなサイズとトレーニングプロセスで結果をもたらします。特に、ダウンストリームタスクで、UltraFastBERTフレームワークは推論時に利用可能なニューロンの0.3%しか使用しません。
UltraFastBERTフレームワークの設計実装により、中間レイヤーは指数関数的に高速化されます。さらに、UltraFastBERTフレームワークによって実現される強力なパフォーマンスは、LLMが個々の干渉に対してパラメーターのわずかな割合のみを使用して強力なパフォーマンスをもたらすことができることを証明しています。UltraFastBERTフレームワークは、推論時に利用可能なニューロンの0.3%しか使用しませんが、干渉時間については78倍の高速化を実現します。












