ホームページ  >  記事  >  テクノロジー周辺機器  >  バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

WBOY
WBOYオリジナル
2024-05-29 09:29:50666ブラウズ
バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等
AIxivコラムは、当サイトが学術的・技術的な内容を掲載するコラムです。過去数年間で、このサイトの AIxiv コラムには 2,000 件を超えるレポートが寄せられ、世界中の主要な大学や企業のトップ研究室がカバーされ、学術交流と普及を効果的に促進しています。共有したい優れた作品がある場合は、お気軽に寄稿するか、報告のために当社までご連絡ください。提出メール: liyazhou@jiqizhixin.com; zhaoyunfeng@jiqizhixin.com

ディープラーニングの大規模言語モデルの人気が高まるにつれて、大規模言語モデルはますます大きくなり、推論コストも増加しています。モデルの定量化は人気のある研究トピックになっています。

最近、ByteDance は新しい定量化のアイデアを立ち上げ、従来の定量化パラダイムを放棄し、数学的最適化の観点から定量化タスクをモデル化しました。記事は arXiv に投稿されており、コードはオープンソース化されており、記事内のすべての結果をワンクリックで再現できます。この定量化のアイデアは、数学的最適化に基づいており、数学的最適化の観点から定量化タスクをモデル化し、目的関数を最大化するか損失関数を最小化することによって最適解を見つけます。このアイデアは実験で良好な結果をもたらし、満足のいく結果を達成しました。

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

  • ペーパーリンク: https://arxiv.org/abs/2404.12759

  • プロジェクトリンク: https://github.com/bytedance/decoupleQ

  • W2 オペレーター: https:// /github.com/NVIDIA/TensorRT-LLM/pull/1568

1. 背景

大規模テクノロジーの急速な発展により、推論のコストがますます高くなっています。モデルの定量化は、推論コストを削減するための技術的ソリューションとして、ますます注目され、研究が行われています。ただし、従来の量子化パラダイムでは、モデルの精度は非常に低いビットで急速に低下します。これに基づいて、著者らは新しい定量化のアイデアを提案しました。モデルのパラメータを整数部分と浮動小数点部分に分離し、数学的最適化の観点から定量化タスクをモデル化することで、モデルがより高い精度を維持できるようにしました。この利点は明らかです。敏感なチャネルの扱い方や外れ値の扱い方など、量子化固有の問題に焦点を当てる必要がなくなりました。代わりに、量子化の問題を数学的にモデル化し、次の値を見つけるだけで済みます。適切な最適化目的関数を選択し、この関数を解きます。

2. 従来の量子化

従来、モデルの定量化の考え方は次のとおりです。

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

ここで、 s と z は量子化前のモデルの線形変換係数であり、スケールと z は次のとおりです。ゼロ点; α と β は、整数表現範囲の上限と下限です。たとえば、int4 量子化の場合、α = -8、β = 7 は、一般に最も近い値に丸められる丸め関数を表します。整数。 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 s と z の値に関して、一般的に言えば、非対称量子化では次のようにすることができます:

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 このようにして、

に分散された浮動小数点の重みは

の区間範囲に線形にマッピングされます。 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等逆量子化では、一般に次の公式が使用されます:

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等この従来の量子化スキームでは、量子化に特有の多くの詳細な問題に注意を払う必要があります。外れ値については、外れ値処理方法があります。頭痛を治療し、頭痛を治療するというこの処理パラダイムは、複雑で常に変化するビジネス シナリオに対処するのが困難です。バイトダンスの研究者は、これらの問題を抽象化し、定量化の問題をマクロな観点から見ようとしています。抽象的な最適化目的関数を確立し、この目的関数を解くだけで済みます。

3.デカップルQ

数量化における式(1)~(3)の役割を観察すると、考え方を変えると、実際には式(1)と(2)を知る必要がないことがわかります。大規模なモデルを定量化し、それを下流のエンジンの学習者に提供した後は、式 (3) の バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 と (s,z) を知るだけで済みます。つまり、式(3)の(s,z)は、通常のアフィン変換の係数とみなしてよく、式(2)においてその意味を保持する必要はない。アフィン変換係数は、数学的最適化手法を通じて取得できます。

(3) をさらに掘り下げると、大規模なモデルのパラメーターを整数部分 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 と浮動小数点部分 (s,z) に分離できます。このように分離した後、モデルの量子化のプロセスは、モデルの整数部分 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 と浮動小数点部分 (s,z) を解くプロセスとみなすことができます。ソリューションを最適化することもできます。この目的を達成するには、最適化の目的関数とその制約を決定する必要があります。

線形層の場合、次の最適化目的関数を構築できます:

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

ここで、バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等は層の入力、バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等は対称行列です(Xの列がすべて0でない場合、Hは正定対称行列 )。

一般的に言えば、量子化の精度を向上させるために、モデルの重みに対してチャネルごとの量子化を使用できます。チャネルごとの量子化では、式 (4) を最適化するときに、バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 の各列が個別に最適化されます。したがって、列の 1 つにのみ注目する必要があります。

この時点で、最適化目標は次のように記述できます: (表記を簡単にするために、記事内では記号が再定義されています):

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

ここで、最適化目的関数は

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

です。 , wはバイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等の特定の列、bはバイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等の対応する列にあります。他のシンボルの定義は以前と同じです。

実際、最適化目的関数 (6) は (4) と完全に一致しており、バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 は逆量子化プロセスです。

定量的問題を形式 (5) の数学的最適化問題に変換することが、decoupleQ を従来の定量的論文と区別する鍵となります。 この変換により、方程式 (5) を解くことだけに集中できるようになり、外れ値などの量子化自体の細部に対処する必要がなくなりました。

方程式 (5) の解は簡単ではありません。なぜなら、バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 には制約、特に非凸制約 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 があるからです。論文の中で、著者は別の解決策のアイデアを示しています。つまり、(s,z) と w について適切な初期化を行った後、(s,z) と w を交互に反復的に解決します。 (s,z) を解くときは、方程式 (5) が (s,z) に関する制約のない二次形式であることに注意してください。目的関数を直接導出し、導関数をゼロにして解析的解を得ることができます。 w を解くとき、著者は 2 つのレベルの近似を採用します。最初のレベルの近似は収束が高くなりますが、解は遅くなります。2 番目のレベルの近似は、収束がわずかに劣る GPTQ [1] のアイデアをサンプリングします。のほうが速いです。

量子化モデルの精度をさらに向上させるために、著者は、mse 最小化を層レベルで実行することに加えて、mse 最小化をブロック レベルでも実行できることを指摘しました。つまり、

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

このステップでは、著者はトランスブロック レベルで、各線形レイヤーを量子化した後、その整数部分 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 を修正し、浮動小数点部分 (s, z) とレイヤー ノルムの関連パラメーターを微調整します。実験結果は、この微調整ステップによりモデルの精度がさらに向上することを示しています。

4. W2 オペレーターの実装

量子化モデルを推論するには、業界で利用可能な既製の w2a16 オペレーターが必要です。 w2a16 モデルの効率的な推論を実現するために、w2 の Gemm cuda カーネルを開発しました。

量子化モデル自体は 2 ビットの重みの形式でビデオ メモリにロードおよび保存されるため、比較的少量のビデオ メモリを占有します。私たちの cuda カーネルは、実行時に 2 ビットの重みをレジスタにロードし、ハードウェア命令を使用してそれを bf16 形式に効率的に変換し、アクティブ化して gemm 操作を実行します。このシナリオはレイテンシによって制限されるため、現時点では、行列の乗算は重みメモリ アクセスによって制限され、メモリ アクセスの量が大幅に削減され、モデルのパフォーマンスが向上します。実装プロセスでは、アルゴリズム検索と SpiltK Parallel Reduce を組み合わせてモデルのパフォーマンスをさらに向上させます。実際の測定によれば、batchsize=1 の場合、L カード上の w2a16 Gemm のパフォーマンスは 1.4 倍から 1.7 倍向上します。 w4a16と比較。 aoperatorリンク:https://github.com/nvidia/tensort-llm/pull/1568

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

5 、オープンソース実験との比較結果は次のとおりです: 内部実験結果は次のとおりです:

この表では、著者はワード誤り率 (WER) を使用して ASR の精度を測定しています。著者らは、さまざまな方法を使用してモデルを W2A16g64 に定量化することを試みました。量子化前の浮動小数点モデルのウェルは 6.68% で、GPTQ [1] を使用した量子化後のウェルは 6.83% です。この結果は、量子化後のブロック最小化のウェルと非常に似ています。量子化前の浮動小数点モデル。定量化に必要な時間もレポートします。高い量子化精度の代償として、量子化には長い時間がかかります。実際のビジネスでは、decupleQ を用いてモデルを定量化した後、整数部分を固定し、ラベル付きデータセットを使用してスケールとゼロを微調整することで、モデルの精度がさらに向上します。

オープンソースの比較実験の結果は次のとおりです:

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

この表は、Llama-1/2 における decoupleQ と他の手法の定量的結果の比較です。評価指標にはパープレキシティ(PPL)を使用します。同じ量子化設定では、ほとんどの場合、deoucpleQ の PPL が他の方法よりも低くなることがわかります。

6. ビジネス上の利点

decoupleQ 定量化テクノロジーは現在、ByteDance の音声部門で広く使用されています。音声生成モデル(Text-to-Speech)や音声認識モデル(自動音声認識)などに導入されており、Doubao、Feishu、Douyinなどの製品に実装されています。多くのオンライン ビジネスは、decoupleQ の定量化に基づいて、W4A16 の推論精度が fp16/bf16 の推論と完全に同等であることを示しています。W2A16 の精度は fp16/bf16 の精度よりわずかに劣るだけです (浮動小数点部分 sft を除いた場合)。精度は fp16/bf16 と同レベルです)。この論文では重みのみの定量化のみを紹介していますが、実際のビジネスでは、重みを適切に定量化した後、活性化の定量化ははるかに簡単になります。

fp16、w8fp16、w4fp16 と比較すると、ハードウェア アクセラレーションの点で優れたアクセラレーション効果が得られ、小規模バッチでは、w2 行列乗算のパフォーマンスは fp16 の 5 ~ 6 倍、w4 の 1.5 ~ 1.7 倍になります。 。内部ビジネス モデルに関しては、w2fp16 は fp16 と比較して 3 ~ 5 倍、w4fp16 と比較して 1.25 ~ 1.4 倍パフォーマンスが向上しています。また、モデルの重みによって占有されるメモリも大幅に削減され、より優れたメモリが提供されます。ランタイムに多くのスペースを使用します。

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等

7. 概要と考察

概要と考察のセクションでは、著者は、decoupleQ が現在抱えている 2 つのリスクも指摘しました:

1.前後の損失が最小限に抑えられます。ただし、層レベルまたはブロック レベルでの L2 損失の最小化は、

と (s,z) を解く際の最終モデルの最適な精度を必ずしも表すとは限りません。 )、キャリブレーション データのごく一部のみが解決されるため、decoupleQ がキャリブレーション データをオーバーフィットしやすくなります。

それにもかかわらず、著者は、モデルパラメータを整数部分と浮動小数点部分に分離するというアイデアは非常に意味があるとも指摘しました。ラベル付きデータセットが存在する場合、量子化後に整数部分を修正し、そのラベル付きデータセットを使用して (s, z) を具体的にトレーニングすることで、モデルの精度をさらに向上させることができます。これにより、モデルの汎化パフォーマンス (固定整数部分 バイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等 による) が保証されるだけでなく、(浮動小数点部分の微調整により) 特定のサブタスクでその能力を発揮することもできます。 ByteDance の実際のビジネスでは、前のバージョンのモデルが定量化されてオンラインになった後、次のバージョンが更新されると、モデルの浮動小数点部分のみをトレーニングできます。

参考文献:

【1】Elias Frantar、Saleh Ashkboos、Torsten Hoefler、および Dan Alistarh: 生成事前学習変換器の正確な量子化、2022 年。

【2】Wenqi Shao、Mengzhao Chen、Zhaoyang Zhang、Peng Xu、Lirui Zhao、Zhiqian Li、Kaipeng Zhang、Peng Gao、Yu Qiao、および Ping Luo: arXiv プレプリント用の全方向的に調整された量子化。 arXiv:2308.13137、2023

【3】Ji Lin、Jiaming Tang、Haotian Tang、Shang Yang、Xingyu Dang、および Song Han: arXiv プレプリント arXiv のアクティベーション対応重み量子化。 2306.00978、2023.

以上がバイトのオープンソース大規模モデルの定量化のための新しいアイデア、2 ビット量子化モデルの精度は fp16 と同等の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。