大規模言語モデル (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年ゴードン・ベル賞発表:最先端のスーパーコンピューターによる「量子レベルの精度」の材料シミュレーションが受賞
パーソナライズされた推奨は、インターネット業界が DAU (Daily Active Users) ...
1 月 11 日、OpenAI は小規模なセルフサービス チーム専用の新しいサブスクリプション プラ...
現在、中国の製造業、農業、飲食業、企業、機関はすべて、自動化からインテリジェンス化、デジタル化への変...
[[346652]]この記事は、陳建宇氏が執筆したWeChatパブリックアカウント「私の脳は揚げ魚で...
ChatGPTを理解するOpenAI によって開発された ChatGPT は、受信した入力に基づいて...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
人工知能(AI)は、最初のコンピュータが発明されて以来、長い道のりを歩んできました。今日、人工知能は...
著者 (Alex Rodriguez、Alessandro Laio) は、さまざまな形状のクラスタ...
北京時間2月15日、海外メディアの報道によると、大規模な人工ニューラルネットワークに基づく人工知能は...
数日前、私は「チャットボットをよりエレガントに設計する方法」という記事を書きました。何人かの友人が私...
「クルミで遊んでいる」骸骨の手を見たことがありますか? この魔法の「手」は、Meta が新たにリリー...
ロボット工学は、ロボットの構想、設計、製造、操作を扱う工学の分野です。ロボット産業はここ数年で驚異的...
現在、コンピューター ビジョン (CV) テクノロジは転換点を迎えており、主要なトレンドが収束して、...
エネルギー効率などの複雑な建物の問題を、人間の介入なしに解決するにはどうすればよいでしょうか。建物の...
YOLOv8 が 2023 年 1 月に正式にリリースされてから 1 年以上経ち、ついに YOLOv...