自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化

發(fā)布于 2024-10-23 13:52
瀏覽
0收藏

一、背景

本文中我們介紹一下最近被 NeurIPS 2024 接收為 Oral Presentation 的 LLM 量化工作 DuQuant。這是一種令旋轉(zhuǎn)變換和排列變換來更有效地緩解 Massive Outlier 和 Normal Outlier 的新方法。其達(dá)到了 4bit 量化的新 SOTA。具體來說:

  • 作者發(fā)現(xiàn) LLM 的 FFN 模塊中,在 down_proj 的輸入中存在明顯的Massive Outlier;這種 Outlier 不同于以往發(fā)現(xiàn)的 Outlier,表現(xiàn)為絕對(duì)值大于幾百的個(gè)別異常值;這些 Outlier 會(huì)顯著限制 4bit 權(quán)重激活量化方法的性能。
  • 作者提出了基于先驗(yàn)知識(shí)(Outlier Channel)的旋轉(zhuǎn)變換來將Massive Outlier旋轉(zhuǎn)至臨近 Channel,考慮效率平衡,作者使用分塊旋轉(zhuǎn)矩陣。而分塊旋轉(zhuǎn)矩陣會(huì)導(dǎo)致部分 Block 的平均激活值的絕對(duì)值大于其他 Block,所以作者進(jìn)一步提出通道置換變換,重新平衡不同 Block 之間的 Outlier,然后使用第二次旋轉(zhuǎn)變換進(jìn)一步最小化 Outlier。
  • DuQuant 的訓(xùn)練非??焖?,可以在 50s 內(nèi)完成 7B 模型的量化過程,即插即用。

對(duì)應(yīng)的 Paper 為:[2406.01721] DuQuant: Distributing Outliers via Dual Transformation Makes Stronger Quantized LLMs [1]

對(duì)應(yīng)的代碼庫為:https://github.com/Hsu1023/DuQuant [2]

二、 引言

2.1 量化方法

在每個(gè) Transformer Block 中,多頭自注意力(MSA)和前饋網(wǎng)絡(luò)(FFN)基本上都由線性層組成,將其表示為:,其中, 是激活輸入, 表示權(quán)重矩陣。

模型量化通過將浮點(diǎn)數(shù)(FP16, BF16)表示的模型權(quán)重或激活值轉(zhuǎn)換為低比特的浮點(diǎn)數(shù)或整數(shù)(INT8、FP8、INT4)來減少內(nèi)存占用,權(quán)重激活量化可以通過使用低比特乘法的算子進(jìn)一步加快模型推理的速度。本文中,作者重點(diǎn)關(guān)注低比特整型量化,旨在獲得更好的硬件支持。具體來說, 位量化過程將 FP16 張量 映射為低位整數(shù):

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

符號(hào) 表示最接近的舍入操作, 是量化步長, 表示零點(diǎn)。遵循主流量化方法,作者對(duì)激活 采用逐 Token 量化,對(duì)權(quán)重 采用逐 Channel 量化,這意味著為 的每個(gè) Token 分配不同的步長(),為    的每個(gè)輸出 Channel 分配不同的步長()。

2.2 動(dòng)機(jī)

作者首次在實(shí)驗(yàn)中發(fā)現(xiàn),LLM FFN 模塊中的 down_proj layer 存在明顯的 [2402.17762] Massive Activations in Large Language Models [3],表現(xiàn)為絕對(duì)值大于幾百的異常值并局限于個(gè)別的 Token 中。這些 Massvie Outlier 造成 [2211.10438] SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models [4] 和 [2308.13137] OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models [5] 等算法在 4bit WA 量化中表現(xiàn)較差。在 down_proj layer 中發(fā)現(xiàn) Massive Outlier 現(xiàn)象為該工作首次提出。

如下圖 Figure 1 (a)(b) 對(duì)比了常見的 Normal Outlier,和在 FFN 中出現(xiàn)的 Massive Outlier。

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

SmoothQuant 中將激活值除以每 Channel 平滑因子并將其乘回權(quán)重矩陣,嘗試將量化難度從激活值轉(zhuǎn)移到權(quán)重。具體來說,SmoothQuant 使用逐 Channel 的平滑對(duì)角矩陣,記為 ,將原始線性層重新表達(dá)為:,對(duì)角矩陣 中的元素 的計(jì)算方式為 ,其中 是一個(gè)超參數(shù),表示遷移強(qiáng)度。

然而,作者觀察到在輸入端進(jìn)行這種轉(zhuǎn)移可能會(huì)導(dǎo)致權(quán)重矩陣也出現(xiàn)明顯的難以量化的 Outlier(如上圖 Figure 1 (d) 所示),這一問題的根源在于 Massive Outlier 使平滑因子 變得異常大。

此外,極大的 Outlier 還可能導(dǎo)致基于優(yōu)化的方法出現(xiàn)梯度爆炸的問題,所以基于梯度優(yōu)化的 OmniQuant 和 [2403.12544] AffineQuant: Affine Transformation Quantization for Large Language Models [6] 等工作會(huì)直接跳過 down_proj layer,直接退化為 SmoothQuant 的處理方式。這都表明需要一種更新、更好的方式處理兩種 Outlier,特別是平滑掉 down_proj 輸入側(cè)的 Massive outlier。

三、本文方案

3.1 概覽

DuQuant 提出通過學(xué)習(xí)旋轉(zhuǎn)和置換變換矩陣,在 Activation 矩陣內(nèi)部將 Outlier 轉(zhuǎn)移到其他通道,最終得到平滑的激活矩陣,從而大幅度降低量化難度。如下圖 Figure 2 所示為 DuQuant 算法說明:

  • a. 逐步展示了 DuQuant 算法對(duì) Normal Outlier 的處理過程。
  • b. DuQuant 顯著降低了 Massive Outlier。
  • c. 一個(gè) Example 說明 DuQuant 有效降低了激活矩陣的量化難度。

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

簡單來說,DuQuant 算法包含三個(gè)步驟:

  • 旋轉(zhuǎn)矩陣的構(gòu)造有效利用了特定 Outlier Channel 的位置索引,作者使用分塊對(duì)角的旋轉(zhuǎn)矩陣,在每個(gè) Block 內(nèi)部通過貪心算法將 Outlier 平攤到其他的 Channel 中。
  • 由于 Block Size 的限制,可能導(dǎo)致某些 Block 在旋轉(zhuǎn)之后組內(nèi)的平均值大于其他 Block,因此作者進(jìn)一步使用通道置換技術(shù)重新分配 Activation Channel,利用 zigzag 順序排列使各組均值的方差大幅減小。
  • 進(jìn)一步執(zhí)行一次旋轉(zhuǎn)變換達(dá)到更均勻的 Activation 分布,從而大幅降低量化難度。

3.2 旋轉(zhuǎn)矩陣

作者希望應(yīng)用旋轉(zhuǎn)矩陣 進(jìn)行行或列變換,減輕 Normal Outlier 和 Massive Outlier 的影響。由于 Massive Outlier 通常隨機(jī)分布在激活空間中,直接找到能夠通過單次旋轉(zhuǎn)變換減輕 Outlier 的最優(yōu)旋轉(zhuǎn)矩陣 是具有挑戰(zhàn)性的。為了解決這一問題,作者采用帶有先驗(yàn)知識(shí)的貪心搜索方法來計(jì)算旋轉(zhuǎn)矩陣 ,從而近似理想的旋轉(zhuǎn)矩陣 。具體來說, 的計(jì)算包括以下步驟:

  1. 識(shí)別 Outlier 主要集中的特征維度 ,即:, 其中, 表示 中第 行和第 列的元素。
  2. 基于搜索到的維度 ,構(gòu)建旋轉(zhuǎn)矩陣如下: 是用于交換激活值的第 1 列和第 列的交換矩陣, 表示一個(gè)正交初始化的旋轉(zhuǎn)矩陣,其第 1 行均勻分布。這樣做的目的是通過 變換后減輕第 1 列中的 Outlier。為了進(jìn)一步增加隨機(jī)性,作者保留了減輕 Outlier 后的第 1 列,并通過與隨機(jī)正交矩陣 相乘,隨機(jī)旋轉(zhuǎn)其他列。
  3. 設(shè) 為貪心搜索的步數(shù),則近似的旋轉(zhuǎn)矩陣為 ,其中 。每個(gè) 根據(jù)上述公式和識(shí)別到的特征維度 構(gòu)建。

通過這種構(gòu)建方式,可以確保近似的最優(yōu)旋轉(zhuǎn)矩陣 能夠有效減輕具有較大幅度 Outlier,而不僅僅是使用隨機(jī)選擇的正交旋轉(zhuǎn)矩陣。然而,直接構(gòu)建整個(gè)旋轉(zhuǎn)矩陣非常耗時(shí),并且會(huì)導(dǎo)致大量的內(nèi)存開銷。為了實(shí)現(xiàn)快速矩陣乘法,參考 [2306.11987] Training Transformer with 4ibts [6],作者選擇以分塊的方式近似旋轉(zhuǎn)矩陣 ,

其中, 表示第 個(gè)塊的方陣,該矩陣按照上述三步構(gòu)建。塊的數(shù)量 通過 計(jì)算得出。

3.3 通道置換矩陣

盡管采用了塊對(duì)角旋轉(zhuǎn)矩陣 來提高時(shí)間和存儲(chǔ)效率,但其專注于局部信息的特性帶來了進(jìn)一步減少 Outlier 的潛在限制。由于在每個(gè)小塊內(nèi)進(jìn)行的旋轉(zhuǎn)變換無法整合跨不同塊的信息,一個(gè)塊中可能有相對(duì)較大的 Outlier,而另一個(gè)塊中則有較小的 Outlier,導(dǎo)致不同塊之間存在較高的方差。因此,作者提出利用通道置換矩陣平衡不同 Block 之間 Outlier 的幅度。

具體來說,在每個(gè)小塊中,將維度 中最大的 Outlier 記為 。同時(shí), 表示第 個(gè)塊中所有 的平均值,其中 ,各個(gè)塊之間激活幅度的方差可以表示為:

作者引入了之字形置換矩陣 。具體來說,通過生成一個(gè)之字形序列,首先將激活值最高的通道分配給第一個(gè)塊,接著,將激活值次高的通道按遞減順序分配到后續(xù)的塊,直到第 個(gè)塊。在到達(dá)最后一個(gè)塊后,順序反轉(zhuǎn),從下一個(gè)激活值最高的通道開始,按遞增順序分配。這個(gè)往復(fù)模式貫穿所有塊,確保沒有單個(gè)塊持續(xù)接收最高或最低激活值的通道。通過使用之字形置換,DuQuant 實(shí)現(xiàn)了不同塊之間 Outlier 的均衡分布,從而能夠使用額外的旋轉(zhuǎn)變換進(jìn)一步平滑 Outlier,如圖 Figure 2 所示。

需要說明的是:

  1. 通道置換其實(shí)是非常重要的一步,也很簡單快速(對(duì)于推理效率的影響很小,可見后面實(shí)驗(yàn)部分),即可以避免像 [2405.16406] SpinQuant: LLM quantization with learned rotations [7] 那樣復(fù)雜的訓(xùn)練流程,也比 [2404.00456] QuaRot: Outlier-Free 4-Bit Inference in Rotated LLMs [8] 的 Hadamard 旋轉(zhuǎn)性能表現(xiàn)更好。
  2. 旋轉(zhuǎn)矩陣和置換變換矩陣都是正交矩陣,保證了 輸出的不變性,作者還通過嚴(yán)謹(jǐn)?shù)睦碚撏茖?dǎo)證明了兩種變換有效降低了量化誤差,具體證明可以閱讀 Paper 里面的 Appendix。

四、實(shí)驗(yàn)和結(jié)果

4.1 主要結(jié)果

作者基于提出的方案驗(yàn)證了 LLaMA、Vicuna、Mistral 系列模型,其在 PPL、QA、MMLU 和 MT-Bench 等任務(wù)上都明顯提升了量化模型的性能。

如下圖 Table 1 所示,相比幾種常見的 W4A4 量化方案,DuQuant 在 LLaMA-1 和 LLaMA-2 模型上的量化達(dá)到了 SOTA 效果:

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

如下圖 Table 4 所示,DuQuant 在 LLaMA3 模型的量化效果,4-bit 下同樣達(dá)到了 SOTA:

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

如下圖 Table 3 所示,DuQuant 在 Vicuna-v1.5-13B 模型上的量化效果,0-shot 和 5-shot 任務(wù)同樣都打到了 SOTA:

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

4.2 推理速度

作者在 NVIDIA RTX 3090 GPU 上進(jìn)行了推理速度測試,其 W4A4 Kernel 來自 Quarot。如下圖 Table 9 所示,結(jié)果表明 DuQuant 在 Prefiling 階段相比 FP16 加速比可以達(dá)到 2.08x(LLaMA2-7B)、2.34x(LLaMA2-13B)。同時(shí),如下圖 Figure 5 所示,DuQuant 相比 INT4 推理速度會(huì)降低 10% 左右,略微高于 QuaRot,但帶來更多精度提升。

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

4.3 與 QuaRot 對(duì)比

DuQuant 與使用 Hadamard 旋轉(zhuǎn)矩陣的 QuaRot 主要有以下兩點(diǎn)不同:

1. DuQuant 構(gòu)造的旋轉(zhuǎn)矩陣?yán)昧讼闰?yàn)知識(shí)(具體的 Outlier Channel 索引),因此 DuQuant的 旋轉(zhuǎn)矩陣可以比 QuaRot 更好地平滑激活空間,如下圖 Figure 4 展示了 DuQuant 單次旋轉(zhuǎn)和 Hadamard 旋轉(zhuǎn)對(duì) LLaMA2-7B Attention Key_proj 輸入的變換效果。

2. QuaRot 依賴于耗時(shí)的 GPTQ 算法來提升性能,而作者引入的通道置換矩陣可以幫助 DuQuant 在極短時(shí)間內(nèi)進(jìn)一步平衡 Outlier 的分布,從而取得了更好的量化效果,如下圖 Table 7 所示。

DuQuant:通過正交變換分散 LLM 離群值,實(shí)現(xiàn) SOTA 4bit 量化-AI.x社區(qū)

五、參考鏈接

1. https://arxiv.org/abs/2406.01721

2. https://github.com/Hsu1023/DuQuant

3. https://arxiv.org/abs/2402.17762

4. https://arxiv.org/abs/2211.10438

5. https://arxiv.org/abs/2308.13137

6. https://arxiv.org/abs/2306.11987

7. https://arxiv.org/abs/2405.16406

8. https://arxiv.org/abs/2404.00456

本文轉(zhuǎn)載自??AI閑談??,作者: AI閑談 ????

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦