大規模言語モデル (LLM) 圧縮は常に大きな注目を集めています。トレーニング後の量子化は、一般的に使用されるアルゴリズムの 1 つです。ただし、既存の PTQ 方法のほとんどは整数量子化であり、ビット数が 8 未満の場合、量子化モデルの精度が大幅に低下します。整数 (INT) 量子化と比較して、浮動小数点 (FP) 量子化はロングテール分布をより適切に表現できるため、ますます多くのハードウェア プラットフォームが FP 量子化をサポートし始めています。この記事では、大規模モデルの FP 量子化のソリューションを提供します。この記事はEMNLP 2023に掲載されました。
この記事を理解するには、まず浮動小数点形式と浮動小数点量子化に関する基本的な知識が必要です。まず、浮動小数点数は次の式で表すことができます。 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年ゴードン・ベル賞発表:最先端のスーパーコンピューターによる「量子レベルの精度」の材料シミュレーションが受賞
すべての RSA 暗号化システムでは、強力な暗号化キーまたは類似のキーを作成するために、ユーザーが予...
「テクノロジー春節ガラ」が終了し、Appleは再び世界に数十億の衝撃を与えた。 「史上最高かつ最もプ...
最近、アリババ・タオバオ・テクノロジーと上海交通大学画像通信・ネットワーク工学研究所(IGI)による...
Google サービスには 20 億行のコードが含まれており、自動車システムには 1 億行のコードが...
マイクロソフトは9月12日、Microsoft Designerの適用プラットフォームを拡大し、We...
OpenAI の最近の論争を受けて、AI エンジニアや企業はその API への依存を減らしたり、完全...
【51CTO.comオリジナル記事】 COVID -19の流行がもたらした厳しい課題に直面して、科...
すべての IT 問題には学習曲線と転換点があり、解決策が見つかる「なるほど!」という瞬間があります。...
ビッグデータダイジェスト制作編集者: CoolBoyみなさん、こんにちは! 先月のトップ 10 の機...
モノのインターネット (IoT) は市場で急速に成長しており、ビジネス戦略は変化し、IoT デバイス...