LLaMA、BERT などの導入課題を解決: 初の 4 ビット浮動小数点量子化 LLM が登場

LLaMA、BERT などの導入課題を解決: 初の 4 ビット浮動小数点量子化 LLM が登場

大規模言語モデル (LLM) 圧縮は常に大きな注目を集めています。トレーニング後の量子化は、一般的に使用されるアルゴリズムの 1 つです。ただし、既存の PTQ 方法のほとんどは整数量子化であり、ビット数が 8 未満の場合、量子化モデルの精度が大幅に低下します。整数 (INT) 量子化と比較して、浮動小数点 (FP) 量子化はロングテール分布をより適切に表現できるため、ますます多くのハードウェア プラットフォームが FP 量子化をサポートし始めています。この記事では、大規模モデルの FP 量子化のソリューションを提供します。この記事はEMNLP 2023に掲載されました。

  • 論文アドレス: https://arxiv.org/abs/2310.16836
  • コードアドレス: https://github.com/nbasyl/LLM-FP4

この記事を理解するには、まず浮動小数点形式と浮動小数点量子化に関する基本的な知識が必要です。まず、浮動小数点数は次の式で表すことができます。

s は符号ビット、m は仮数ビット、e は指数ビットを表します。 p は 0 から 2^e - 1 までの値で、現在の数値をどの指数区間で分割するかを示すために使用されます。d は 0 または 1 の値を取り、i 番目の仮数ビットを示すために使用されます。 b はバイアスであり、指数範囲を調整するために使用される整数値です。

次に、浮動小数点量子化の仕組みを紹介します。まず、入力値はスケールとクリップのステップを経る必要があります。まず、入力は、次の式に示すように、浮動小数点が表現できる最大範囲 (±Qmax) にクリップされます。


整数量子化と同様に、FP 量子化でも、入力を適切な範囲にスケーリングするために、完全精度のスケーリング係数が追加されていることがわかります。行列乗算を実行する場合、スケーリング係数は低ビット行列乗算とは別に計算されるため、大きなオーバーヘッドは発生しません。この完全精度のスケーリング係数を組み込んだ後、異なる量子化テンソルをそれに応じて異なる最大値と最小値の範囲にクリップできます。実際の使用においては、入力テンソルの値の範囲に応じて必要な量子化間隔が決定され、対応するバイアスが式(4)を使用して導出されます。式(4)のバイアスは実数値のスケーリング係数として使用できることに注意してください(式(2)(3)を参照)。

浮動小数点量子化の次のステップは、量子化間隔を決定した後、間隔内の値を対応する量子化間隔に割り当てることです。このステップは比較と量子化と呼ばれます。

上の図は量子化のプロセスを直感的に示しています。現在の入力値は、式 5 を使用して比較された後、異なる量子化間隔に量子化されます。

量子化されたアクティベーションと重みを取得した後、最初にスケーリング係数を計算し、次の効率的な行列乗算を実現して、行列乗算の高速化を完了します。

そして、FP 量子化の精度は指数ビットの設定と量子化間隔に密接に関係していることを指摘しています。

下の図に示すように、異なる FP 形式 (浮動小数点数の指数ビット/仮数ビット設定) 間では量子化誤差に大きな違いがあります。適切な FP 形式を選択した場合にのみ、FP 量子化は INT 量子化よりもロングテール分布をより適切に表現できます。この現象は以前の論文[1]でも検証されている。

この記事では、検索ベースの浮動小数点量子化アルゴリズムを使用して、最も適切な浮動小数点指数ビット/仮数ビット設定と対応する量子化間隔を包括的に検索する、対応するソリューションを提案します。

さらに、さまざまな種類の Transformer モデル (Bert、LLaMA、ViT) に現れる別の現象も、量子化の難しさに重大な影響を及ぼします。つまり、モデルのアクティベーションにおける異なるチャネルの大きさは大きく異なりますが、同じチャネルの大きさは非常に一貫しています。同様の発見は以前LLM.int8 [2]やSmoothQuant [3]でもなされていましたが、この論文ではこの現象はLLMだけでなく他のTransformerモデルでも見られることを指摘しています。以下に示すように、LLaMA、BERT、DeIT-Sの活性化の分布にも同様の現象が見られます。

図からわかるように、異常に大きいチャネルは、残りのチャネルよりもはるかに大きいため、活性化テンソルを量子化するプロセスでは、量子化精度はこれらの異常な値によって大きく決まり、それによって他のチャネル値の量子化間隔が抑制され、最終的に量子化精度への全体的な影響が減少します。これにより、特にビット数が特定のレベルまで低下した場合に、最終的な量子化結果が崩れる可能性があります。下の図に示すように、効率的な行列乗算中にスケーリング係数を抽出できるのはテンソル単位およびトークン単位の量子化のみであり、チャネル単位の量子化では効率的な行列乗算がサポートされていないことに注意してください。

効率的な行列乗算を維持しながらこの問題を解決するために、この論文では、小さな一連のキャリブレーション データを使用して、各アクティベーション チャネルの最大値を事前に計算し、スケーリング係数を計算します。次に、スケーリング係数は 2 つに分割され、テンソルごとの実数にチャネルごとの 2 の累乗が乗じられます。この 2 の整数乗は、FP の指数バイアスによって表されます。完全なプロセスは次の式で表すことができます。

さらに、キャリブレーションが完了すると、チャネルごとの指数バイアスは変化しなくなるため、重み量子化と一緒に事前計算して、チャネルごとの指数バイアスを量子化された重みに統合し、量子化の精度を向上させることができます。完全なプロセスは次のとおりです。

事前シフト後、元のアクティベーション内のフル精度のチャネルごとのバイアスがテンソル単位の実数スケーリング係数に変換され、分解された整数のチャネルごとのバイアスが、式 4 に示すように、重み内の元の整数バイアスの位置に移動されることがわかります。

したがって、この方法 (事前シフトされた指数バイアス) は、効率的な行列乗算の原理を維持しながら、量子化精度をより向上させることができます。この方法の直感的な表示を次の図に示します。

最後に、この記事では浮動小数点量子化 (FPQ) 方式について説明します。LLaMA、BERT、ViTs モデルでは、4 ビット量子化により SOTA をはるかに上回る結果が達成されました。特に、この記事では、ゼロショット推論タスクで平均スコア 63.1 を達成する 4 ビット量子化 LLaMA-13B モデルについて説明します。これは、フル精度モデルよりもわずか 5.8 ポイント低く、以前の SOTA 方式よりも 12.7 ポイント高いスコアです。これは、実行可能な数少ない既知の 4 ビット量子化方式の 1 つです。

<<:  ChatGPT が突然大きなバグを発見しました!フル機能のGPT-4は無料で使用でき、ネットユーザーは大喜びしている

>>:  2023年ゴードン・ベル賞発表:最先端のスーパーコンピューターによる「量子レベルの精度」の材料シミュレーションが受賞

ブログ    
ブログ    
ブログ    

推薦する

Daguan 推奨アルゴリズムの実装: 協調フィルタリングのアイテム埋め込み

レコメンデーションシステムの本質は、ユーザーのニーズが不明確な場合の情報過多の問題を解決し、ユーザー...

人工知能は若者を失業させるでしょうか? 996に圧倒されないでください。そうしないとチャンスがなくなります。

教育部が2019年3月に発表した新規登録学部専攻を例にとると、最も人気のある専攻は人工知能です。上海...

ディープラーニングの背後にあるさまざまなアイデアや考え方を徹底的に理解する

ディープ ニューラル ネットワークは、ディープラーニング モデルが画像分類や音声認識などの従来の機械...

NVIDIA は 3 か月で 800 トンの H100 を販売しました。黄氏が1兆ドル規模のGPU覇者の「3つのノー」戦略を明かす

今年の第 2 四半期だけで、Nvidia は 816 トンの H100 を販売しました。同じペースで...

GitHub の機械学習プロジェクトのトップ 5。残念です!

機械学習は急速に発展しています。実用的で高度な機械学習プロジェクトを見つけたい場合、第一の選択肢は ...

BEV におけるデータセット間レーダーカメラ融合に関する実験的研究

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

機械学習に効果的なデータを取得する方法 小さなデータを扱うための 7 つのヒント (一読の価値あり)

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

あなたの顔データはどこに保存されますか?

AI顔変換ソフト「ZAO」やMegviiのキャンパス顔認識をめぐる論争に続き、17万件の顔データが...

民主化と自動化: 機械学習の参入障壁を下げる 6 つのツール

かつて、機械学習という用語は科学的な光輪に包まれており、複雑なアルゴリズムにデータを「入力」して有用...

業界の開発者にとって朗報です! Baidu PaddlePaddle のディープラーニング機能が Inspur AI サーバーに導入

8月28日、北京で開催されたAICC 2019人工知能コンピューティングカンファレンスで、Baidu...

tf.keras と Eager Execution を使用して複雑な問題を解決する方法

生成モデルとシーケンス モデルは、常に私を魅了してきました。これらのモデルは、機械学習を初めて学ぶと...

過大評価されすぎた人工知能バブルは、どのように崩壊するのでしょうか。

実は、似たような事件は以前にも起きている。江蘇省衛星テレビの番組「The Brain」では、百度脳が...

...

フォーブス誌の2020年のAIに関するトップ10予測: 人工知能はますます「疎外」されつつある!

人工知能 (AI) は間違いなく 2010 年代のテクノロジーのテーマであり、新しい 10 年が始ま...

ディープラーニング:先入観、限界、そして未来

ブログのタイトルに使うには奇妙な言葉だとは思いますが、先日、私が今考えている疑問のいくつかにまさに当...