国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

LLM推理優(yōu)化:AWQ 與 GPTQ 的模型壓縮策略與量化技術(shù)解析

原創(chuàng) 精選
人工智能
本文將主要圍繞如何降低模型大小展開,重點探討通過算法優(yōu)化的方式來壓縮模型的策略,旨在為提升LLM推理加速提供有效的解決方案。

作者 | 崔皓

審校 | 重樓

開篇

在當(dāng)今人工智能領(lǐng)域,大語言模型(LLM)正以前所未有的速度發(fā)展。隨著模型參數(shù)的不斷增加,大模型變得愈發(fā)“聰明”,在語言理解、文本生成、知識問答等眾多任務(wù)中展現(xiàn)出了卓越的性能,為自然語言處理等相關(guān)領(lǐng)域帶來了巨大的變革。

然而,這種參數(shù)規(guī)模的急劇增長也帶來了一系列挑戰(zhàn)。在模型推理階段,需要大量的硬件資源來支撐。顯存作為存儲模型參數(shù)的關(guān)鍵部件,其容量需求也隨之大幅提升。當(dāng)GPU執(zhí)行大模型的向量運算時,需要依次將顯存中的數(shù)據(jù)加載到GPU運算寄存器、緩存,最終加載到具體的SM(流式多處理器)中進(jìn)行計算。

但在這個模型參數(shù)的搬運過程中,往往會成為推理的瓶頸,導(dǎo)致推理速度變慢,效率降低。 為了解決這一問題,量化技術(shù)應(yīng)運而生。量化的核心思想是將模型變小,通過降低模型參數(shù)的精度,減少數(shù)據(jù)的存儲空間和傳輸量,從而加速參數(shù)從顯存搬運到運算單元的過程,進(jìn)而加快整個計算過程,最終提升推理效率。本文將主要圍繞如何降低模型大小展開,重點探討通過算法優(yōu)化的方式來壓縮模型的策略,旨在為提升LLM推理加速提供有效的解決方案。

模型參數(shù)量化

在探索降低模型大小以加速 LLM 推理的過程中,對模型進(jìn)行量化是一種極為有效的減少模型參數(shù)的方法。我們首先要了解,模型主要由參數(shù)和代碼兩部分構(gòu)成。在模型的訓(xùn)練階段,它會不斷學(xué)習(xí)數(shù)據(jù)中的特征和規(guī)律,并將學(xué)習(xí)到的這些內(nèi)容以權(quán)重或參數(shù)的形式保存下來。 一般而言,模型越大,其在處理各種復(fù)雜任務(wù)時就會表現(xiàn)得越精準(zhǔn)、越 “聰明”,這是因為它能夠?qū)W習(xí)和存儲更多的數(shù)據(jù)特征和模式。

而與之對應(yīng)的是,模型越大,其包含的參數(shù)數(shù)量就越多,并且這些參數(shù)的精度也越高。以著名的 GPT-3 為例,它有多個不同規(guī)模的版本,其中最大的版本具有 1750 億個參數(shù)。

這里提到的精度,常見的有 FP32、FP16、INT8 等。FP32 即單精度浮點數(shù),它使用 32 位二進(jìn)制來表示一個浮點數(shù),F(xiàn)P16 就是 16 位二進(jìn)制來表示一個浮點數(shù),INT8 就是 8 位二進(jìn)制表示一個整數(shù)。

如下圖所示,F(xiàn)loat16 和 Float32 以科學(xué)計數(shù)法的形式展示。

Float16 和 Float32 的展示方式可以通過如下公式理解:

  • Sign(符號位):1 位,0 表示正數(shù),1 表示負(fù)數(shù)。
  • Exponent(指數(shù)位):表示指數(shù)部分,需減去一個 “偏移量(Bias)” 來表示正負(fù)指數(shù)。
  • Bias(偏移量):2指數(shù)位長度?1?1,例如:Float16: 25-1-1=15
  • Fraction(小數(shù)位 / 尾數(shù)位):表示有效數(shù)字的小數(shù)部分,結(jié)合隱含的 “1.” 形成完整的有效數(shù)字。

通過上圖可以看出,模型參數(shù)精度越高,模型就更加精準(zhǔn),所需的存儲空間就越高,推理時需要傳輸?shù)牧烤驮酱螅托枰嗟挠布Y源。反之,低精度的參數(shù),例如 INT8,所需的存儲空間就越小,推理時需要傳輸?shù)牧烤驮叫。托枰俚挠布Y源。

在實際應(yīng)用中,為了提高效率,像 GPT - 3 這類模型也會采用量化技術(shù)將其量化為更低的精度,如 INT8 等。

其實原理在前面也介紹過,參數(shù)精度越高,參數(shù)所占用的存儲空間就越大,也就意味著需要更多的顯存來存儲這些參數(shù)。在數(shù)據(jù)傳輸過程中,大量的數(shù)據(jù)需要從顯存搬運到運算單元,這就容易成為推理的瓶頸,導(dǎo)致推理速度變慢。因此,為了提高推理效率,通常采用的通用方法就是降低參數(shù)的精度,這種降低參數(shù)精度的操作就被稱為量化。通過量化,可以在一定程度上犧牲模型的精度,換取更小的模型大小和更快的推理速度,從而有效緩解硬件資源的壓力,提升整體的推理性能。

后訓(xùn)練量化

在前面的討論中,我們已經(jīng)了解到提升LLM推理效率可以通過量化模型參數(shù)來實現(xiàn),例如將原本的FP32精度降低到INT8,這樣能顯著減少模型大小和計算量,從而加快推理速度。然而,凡事有利就有弊,這種操作就像一把雙刃劍。對模型參數(shù)進(jìn)行量化,固然能帶來效率上的提升,但同時也會降低模型的精度,進(jìn)而影響模型的精準(zhǔn)性。

畢竟,模型之所以能夠表現(xiàn)出強大的智能,很大程度上依賴于其較高的精度,精度越高,模型的推理能力往往越強。為了在降低模型精度的同時,又不降低模型的精準(zhǔn)性,也就是要讓模型既小又快,還能保持相對較高的智能水平,這時后訓(xùn)練量化(Post - Training Quantization,PTQ)技術(shù)應(yīng)運而生。

后訓(xùn)練量化在LLM推理加速的研究中,是一項關(guān)鍵的模型壓縮技術(shù)。它具有獨特的優(yōu)勢,無需對模型進(jìn)行額外的訓(xùn)練或微調(diào),這大大節(jié)省了時間和計算資源。PTQ通過使用少量校準(zhǔn)數(shù)據(jù),能夠?qū)㈩A(yù)訓(xùn)練好的高精度模型(如FP32或FP16)的權(quán)重和/或激活值轉(zhuǎn)換為低精度格式(如INT4或INT8)。在實際應(yīng)用中,高精度的模型雖然具有較好的性能,但往往占用大量的內(nèi)存和計算資源,這在資源受限的環(huán)境中會成為部署和推理的瓶頸。而PTQ的出現(xiàn),正是為了解決這一問題。其目的在于顯著減少模型的內(nèi)存占用和計算開銷,從而提高LLM的推理效率,使得大型語言模型能夠在更多的設(shè)備上快速、高效地運行。

PTQ的兩大階段分解

現(xiàn)有的量化方法通常是多種技術(shù)的組合,為了更好地理解這些復(fù)雜的量化方法,研究人員將量化過程解耦為兩個關(guān)鍵步驟。

如下圖所示,在量化之前要進(jìn)行“預(yù)量化變換”,在量化之后要執(zhí)行“量化誤差緩解”。

預(yù)量化變換 (Pre - quantization Transformation)

此階段的目的是在量化之前對數(shù)據(jù)(權(quán)重和激活值)進(jìn)行預(yù)處理。在模型的數(shù)據(jù)中,存在著離群值(Outliers),這些離群值的存在會給量化帶來困難。預(yù)量化變換的核心問題就是減輕離群值的影響,將其平坦和順滑,使得數(shù)據(jù)更利于量化。在LLM技術(shù)中,AWQ(采用縮放Scaling)就對應(yīng)這一階段。

前面這句話看上去太抽象了,說人話就是,由于量化之后模型中的參數(shù)會出現(xiàn)一些特別“大”或者特別“小”的值,就好像一個人不合群,我們把這種值稱為“離群值(Outliers)”。我們擔(dān)心這種“離群值(Outliers)”在量化過程中把模型的精度“帶跑偏”,所以需要讓其“平坦和順滑”,可以理解為對“刺頭”進(jìn)行打磨棱角。

量化誤差緩解 (Quantization Error Mitigation)

該階段的主要任務(wù)是在量化過程中或之后補償量化引入的誤差。當(dāng)進(jìn)行低比特量化時,不可避免地會導(dǎo)致精度損失,這是量化過程中需要解決的核心問題。在LLM技術(shù)里,GPTQ(采用自補償Self - compensation)對應(yīng)這一階段,它致力于解決低比特量化導(dǎo)致的精度損失問題。

這里還是需要用人話解釋一遍,在完成對模型參數(shù)降低精度之后,會出現(xiàn)降低過頭的情況。就好像為了節(jié)約成本,把一大幫大學(xué)生員工換成了一幫中學(xué)生,你擔(dān)心這幫中學(xué)生的素質(zhì)無法勝任工作,于是對其能力或者素質(zhì)進(jìn)行“補償”。

好了到這里我們知道在模型量化的前后分別存在兩個階段:預(yù)量化變換和量化誤差緩解。那么就需要對應(yīng)兩個算法實現(xiàn)這兩個階段完成的任務(wù)。

如下圖所示,前后兩個階段需要通過 AWQ-激活感知權(quán)重量化(Activation - aware Weight Quantization)和 GPTQ-生成式預(yù)訓(xùn)練 Transformer 量化(Generative Pre -trained Transformers Quantization)兩個算法來實現(xiàn)。

下面我們會針對這兩個算法進(jìn)行討論。

激活感知權(quán)重量化(Activation - aware Weight Quantization)

AWQ是一種權(quán)重獨有(Weight-Only)量化方法,專注于通過縮放進(jìn)行預(yù)量化轉(zhuǎn)換 。AWQ的核心理念是識別并“保護(hù)”模型中對輸出影響最大的“顯著權(quán)重”(Salient Weights)。為什么要找這個所謂的顯著權(quán)重呢?

鑒別顯著權(quán)重

在大型語言模型(LLM)的推理過程中,并非所有權(quán)重都對推理結(jié)果有著同等程度的影響。僅有0.1% - 1%的小部分顯著權(quán)重對模型輸出精度起著關(guān)鍵作用。如果能夠精準(zhǔn)地鑒別出這一小部分顯著權(quán)重,并使其保持原來的高精度(如FP16),而對其他權(quán)重進(jìn)行低比特量化,那么就可以在幾乎不損失模型精度的前提下,大幅降低模型的內(nèi)存占用,同時顯著提升推理速度。這對于提高LLM在實際應(yīng)用中的效率和性能具有重要意義。

那么如何漸變顯著權(quán)重,如下圖所示,總結(jié)了幾個方法的效果。

Perplexity(困惑度,PPL)是衡量語言模型性能的關(guān)鍵指標(biāo),可理解為 “模型預(yù)測下一個詞時的平均‘困惑程度’”,數(shù)值越低,模型性能越好。模型對文本的概率預(yù)測越準(zhǔn)確,PPL 越低。

直接說結(jié)論就是,基于激活值分布挑選(based on act)的方式相比FP16幾乎沒有精度損失。說明基于激活值分布來鑒別顯著權(quán)重能夠更精準(zhǔn)地找到對模型輸出精度至關(guān)重要的權(quán)重,從而在量化過程中有效地保留關(guān)鍵信息,保證模型在低比特量化后的性能。 

隨機挑選

隨機挑選顯著權(quán)重的方法簡單粗暴,就是隨機選出0.1% - 1%的權(quán)重作為顯著權(quán)重。然而,這種方法缺乏科學(xué)性,沒有考慮到權(quán)重在模型中的實際作用和重要性,就如同“聽天由命”一般,難以保證挑選出的權(quán)重能夠真正對模型精度產(chǎn)生關(guān)鍵影響。

基于權(quán)重分布挑選(base on W)

這種方法是對權(quán)重矩陣(例如自注意力機制中的相關(guān)矩陣)中的元素按絕對值大小由大到小進(jìn)行排序,認(rèn)為絕對值越大的元素越顯著,然后選擇前0.1% - 1%的元素作為顯著權(quán)重。很多傳統(tǒng)的量化方法都采用這種方式來挑選顯著權(quán)重,它基于權(quán)重本身的數(shù)值特征進(jìn)行判斷,但可能沒有充分考慮到權(quán)重在模型計算過程中的實際作用。

基于激活值分布挑選(based on act)

這里的激活值是指與權(quán)重矩陣作矩陣乘法(matmul)運算的輸入值。例如在自注意力機制中,計算相關(guān)結(jié)果時,對應(yīng)的輸入值就是相應(yīng)權(quán)重矩陣的激活值。該方法按激活值絕對值大小由大到小排序,絕對值越大越顯著,選擇前0.1% - 1%的元素作為顯著權(quán)重。通過激活值來判斷權(quán)重的重要性,能夠更直接地反映出權(quán)重在模型實際計算中的影響力。

實驗評估結(jié)果

作者對上述三種方法進(jìn)行了實驗,并將困惑度(PPL,值越小越好)作為評估指標(biāo)。

放大(Scaling)

在LLM推理加速中,對顯著權(quán)重保留FP16格式、其他權(quán)重采用INT4格式雖能提升效率,卻也帶來新問題。當(dāng)權(quán)重矩陣中不同格式元素并存,存儲時需設(shè)計復(fù)雜結(jié)構(gòu)管理,計算取數(shù)要額外邏輯判斷,編寫kernel函數(shù)更是抽象難維護(hù),無疑增加了操作難度與出錯風(fēng)險。為解決這些難題,使用了一個變通方法——Scaling,以此簡化存儲與計算過程,讓后續(xù)操作更順暢高效。

來做個實驗驗證這個方法,如下圖所示,三種不同的量化方式的結(jié)果。

  • 圖(a):RTN 量化(基準(zhǔn)方法)

A.過程:將 FP16 精度的權(quán)重FP16直接量化為 INT3 精度。

B.結(jié)果: perplexity(PPL,語言模型的“困惑度”,數(shù)值越低性能越好)為 43.2,性能較差。

C.原因:直接量化會丟失大量精度,導(dǎo)致模型表達(dá)能力下降。

  • 圖(b):保留 1% 關(guān)鍵權(quán)重為 FP16(混合精度嘗試)。

A.過程:通過激活分布識別“關(guān)鍵權(quán)重(salient weights)”,將這些權(quán)重保留為 FP16 精度,其余量化為低精度。

B.結(jié)果:PPL 從 43.2 降至 13.0,性能大幅提升。

C.問題:“混合精度格式(MixPrec)”在硬件上效率差,因為硬件難以高效處理不同精度的混合計算。

  • 圖(c):AWQ 方法(激活感知的量化方法)

A.過程:遵循“激活感知”原則,先對權(quán)重按通道進(jìn)行縮放(scale)計算激活的“平均幅值(average mag.)”,再基于縮放因子 alpha 調(diào)整權(quán)重,最后量化為 INT3。

B.結(jié)果:PPL 同樣達(dá)到 13.0,既保留了關(guān)鍵權(quán)重的精度,又采用統(tǒng)一的 INT3 精度,兼顧了性能和硬件效率。

大語言模型量化時,直接低精度量化會導(dǎo)致性能暴跌(圖a);若保留少量關(guān)鍵權(quán)重為高精度,性能會恢復(fù)但硬件效率差(圖b);AWQ 方法通過“按通道縮放+統(tǒng)一低精度量化”,在保護(hù)關(guān)鍵權(quán)重的同時保證了硬件效率,實現(xiàn)了性能與效率的平衡。

需要說明的是,量化時放大顯著權(quán)重(即乘較大縮放因子)可降低量化誤差;對于非顯著權(quán)重,乘以較小縮放因子,減少關(guān)注。這就是縮放(Scaling)方法,通過調(diào)整激活值與權(quán)重間的縮放因子,實現(xiàn)降低誤差和保證權(quán)重顯著特性的目的。上述說明,只是對縮放因子的結(jié)論,推導(dǎo)過程不在這里展開。可以查看如下論文,我把鏈接放到結(jié)尾。

《AWQ: ACTIVATION-AWARE WEIGHT QUANTIZATION FOR ON-DEVICE LLM COMPRESSION AND ACCELERATION》

到這里 AWQ 整個過程差不多就說完了,總結(jié)為下面表格:

步驟

機制

描述與來源

1.識別顯著權(quán)重

基于激活值的感知

AWQ 基于一個核心觀察:并非所有權(quán)重都同等重要3。要確定哪些權(quán)重通道是顯著的,應(yīng)該參考激活值的分布,而非權(quán)重本身的分布。

2.等效變換

數(shù)學(xué)等效縮放

AWQ 使用等效變換Y=XW=(X^)(W^),將量化難度從難以處理的激活值分布轉(zhuǎn)移到權(quán)重上。該變換在數(shù)學(xué)上不改變模型的輸出結(jié)果。

3.確定縮放因子

離線收集統(tǒng)計信息

AWQ 通過離線收集激活值(X)的統(tǒng)計信息(例如最大幅度),來確定最優(yōu)的每通道縮放因子 (S)

4.保護(hù)與量化

放大顯著權(quán)重

縮放因子 S 用于放大那些被判定為顯著的權(quán)重通道 W^=S?W。這種放大操作旨在保護(hù)這些關(guān)鍵權(quán)重,使其在隨后量化到低比特(如 INT4)時,能夠保留更多有效信息

在 AWQ 算法的最后,再補充一下 S 縮放因子的內(nèi)容:

為實現(xiàn)自動計算縮放因子(scaling)從而最小化量化誤差,原本需找到權(quán)重矩陣每個通道的縮放系數(shù),使公式 4 最小化。但量化函數(shù)不可微,且公式非凸,無法用梯度下降法求解。

激活值越大,對應(yīng)通道越顯著,應(yīng)分配更大縮放系數(shù)降低量化誤差。于是統(tǒng)計各通道平均激活值作為縮放因子,并引入變量平衡顯著與非顯著通道系數(shù),問題轉(zhuǎn)化為新的形式。同時,為防止過大或過小,進(jìn)行了數(shù)據(jù)標(biāo)準(zhǔn)化。

你可以采用 “Fast Grid Search” 方法在 [0, 1] 區(qū)間找,實際是在此區(qū)間平均取 20 個數(shù),逐個計算不同情況下的 MSE 損失,損失最小的即為最佳,進(jìn)而確定最佳縮放因子。

AWQ 實現(xiàn)

說完了 AWQ 的原理之后,再來看看 AWQ 的實現(xiàn)。說到實現(xiàn)就不得不提到AutoAWQ 。

AutoAWQ 是一個易于使用的用于 4 位量化模型的工具包。它通過實現(xiàn)激活感知權(quán)重量化(Activation - aware Weight Quantization, AWQ)算法對大語言模型(LLMs)進(jìn)行量化。相比 FP16,AutoAWQ 能將模型推理速度提升 3 倍,同時將內(nèi)存需求降低 3 倍。該工具包是在麻省理工學(xué)院(MIT)的原始工作基礎(chǔ)上創(chuàng)建和改進(jìn)而來的。目前, AutoAWQ 已被 vLLM 項目完全采用。

可以使用如下命令對其進(jìn)行安裝:

pip install autoawq

此默認(rèn)安裝方式不包含外部內(nèi)核,推理過程依賴Triton。這種安裝方式較為基礎(chǔ),適合對內(nèi)核沒有特殊需求,希望快速使用AutoAWQ的用戶。

帶內(nèi)核的發(fā)布版本使用如下命令進(jìn)行安裝。

pip install autoawq[kernels]

需要注意的是,這種安裝方式要求你使用的torch版本與內(nèi)核構(gòu)建時所使用的最新torch版本相匹配。

針對英特爾CPU和英特爾XPU優(yōu)化性能的主分支安裝,使用如下命令進(jìn)行:

pip install autoawq[cpu]

下面代碼使用 AWQ 和 Transformers 庫,將 Mistral-7B-Instruct-v0.2 模型通過 AWQ 方法量化為 4 位精度,并保存量化后的模型和分詞器,實現(xiàn)模型壓縮的同時盡可能保留性能。

# 導(dǎo)入AWQ量化所需的模型類和Transformers的分詞器類
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

# 原始模型的路徑(Hugging Face Hub上的Mistral-7B-Instruct-v0.2模型)
model_path = 'mistralai/Mistral-7B-Instruct-v0.2'
# 量化后模型的保存路徑
quant_path = 'mistral-instruct-v0.2-awq'
# 量化配置參數(shù):啟用零點(zero_point),分組大小128,權(quán)重量化為4位,版本為GEMM
quant_config = { "zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM" }

# 從預(yù)訓(xùn)練模型路徑加載原始模型
model = AutoAWQForCausalLM.from_pretrained(model_path)
# 從預(yù)訓(xùn)練模型路徑加載對應(yīng)的分詞器,trust_remote_code=True允許加載模型相關(guān)的自定義代碼
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

# 對模型進(jìn)行量化,傳入分詞器和量化配置
model.quantize(tokenizer, quant_config=quant_config)

# 保存量化后的模型到指定路徑
model.save_quantized(quant_path)
# 保存分詞器到與量化模型相同的路徑
tokenizer.save_pretrained(quant_path)

# 打印提示信息,表明模型已量化并保存
print(f'Model is quantized and saved at "{quant_path}"')

GPTQ 生成式預(yù)訓(xùn)練 Transformer 量化

通過前面的介紹,我們發(fā)現(xiàn)對于 PTQ( 后訓(xùn)練量化)而言,將GPTQ置于量化誤差緩解階段(第二階段),能夠清晰地將其與AWQ(預(yù)量化變換)區(qū)分開來。AWQ主要解決量化前的預(yù)處理問題,它通過縮放操作來平滑數(shù)據(jù)中的離群值,使得數(shù)據(jù)分布更適合進(jìn)行量化。

而GPTQ則聚焦于量化之后(或伴隨量化過程)的精度修復(fù)問題。GPTQ,即生成式預(yù)訓(xùn)練Transformer量化(Generative Pre - trained Transformers Quantization),是后訓(xùn)練量化(PTQ)中量化誤差緩解(Quantization Error Mitigation)這一關(guān)鍵階段的代表性技術(shù)。

GPTQ功能定位

量化誤差緩解旨在應(yīng)用特定技術(shù)來補償量化過程中引入的誤差,以此提高模型的性能。在量化過程中,由于對模型參數(shù)進(jìn)行了離散化處理,不可避免地會引入誤差,這些誤差可能會影響模型的準(zhǔn)確性和性能。量化誤差緩解技術(shù)就是為了應(yīng)對這一問題而存在的。

GPTQ核心機制

GPTQ是一種僅對權(quán)重進(jìn)行量化的方法,它基于近似二階信息,采用一次性(one - shot)的權(quán)重量化方式。該方法構(gòu)建在OBQ(Optimal Brain Quantization)方法之上,利用Hessian矩陣來指導(dǎo)誤差補償。Hessian矩陣包含了函數(shù)的二階導(dǎo)數(shù)信息,通過利用Hessian矩陣,GPTQ能夠更準(zhǔn)確地解決量化引入的誤差以及最優(yōu)權(quán)重擾動問題,從而在量化過程中更好地保持模型的性能。

GPTQ 的核心包含了自補償(Self - compensation)機制,利用近似二階信息(Hessian矩陣)來指導(dǎo)補償過程。雖然 Hessian矩陣計算極為復(fù)雜,但我們可以通過一個簡化的2×2權(quán)重塊來清晰地演示其“逐列量化 - 計算誤差 - 補償”的流程。

數(shù)值演示:逐列補償機制

步驟1:量化第一列 (W?)

步驟2:對剩余權(quán)重 (W?) 進(jìn)行補償

步驟3:量化更新后的第二列 (W?')

總結(jié)

Hessian矩陣在自補償中的作用

由于在描述 GPTQ 進(jìn)行自補償?shù)臅r候,提到了Hessian矩陣,這里對其的作用稍微進(jìn)行解釋。我們可以把Hessian矩陣看作是模型里的一張“敏感度地圖”或者“誤差影響評估工具”。

我們將模型的性能用損失函數(shù) (L) 來衡量,把它想象成一個復(fù)雜地形的高度。而模型的權(quán)重 (W) 就如同在這個地形上所處的當(dāng)前位置。我們的目標(biāo)是通過移動 (W) 來到達(dá)地形的最低點,也就是讓損失函數(shù)達(dá)到最小值。

量化過程就像是對模型權(quán)重進(jìn)行了一次微小且不可避免的推搡,這種推搡就是權(quán)重擾動 δ。這個擾動會使得模型性能下降,在“地形”上表現(xiàn)為引入了損失誤差?。

Hessian矩陣 (H) 描述的是這個“損失地形”的曲率,也就是損失函數(shù)的二階導(dǎo)數(shù)。在不同的方向上,曲率大小不同,對模型的影響也不同。

  • 曲率大的方向(敏感):當(dāng)某個方向上的曲率很大時,意味著Hessian矩陣在該方向上的值較大。在這種情況下,沿著這個方向?qū)?quán)重進(jìn)行微小的擾動 δ,就會導(dǎo)致巨大的損失誤差 ?。這些方向?qū)?yīng)的權(quán)重就是模型中最“顯著”或最“敏感”的權(quán)重。
  • 曲率小的方向(不敏感):如果某個方向上的曲率較小,說明量化引起的誤差對模型的影響不大。

通過Hessian矩陣,GPTQ可以了解到量化某個參數(shù)時,它會對最終結(jié)果造成多大的影響。這樣,在進(jìn)行量化操作時,GPTQ就能明確對于高敏感度的權(quán)重,需要給予更高優(yōu)先級的補償。

GPTQ 實現(xiàn)

最早實現(xiàn) GPTQ 的開源項目是 AutoGPTQ,后來該項目沒有繼續(xù)維護(hù)了,進(jìn)而開源團(tuán)隊轉(zhuǎn)戰(zhàn)GPT - QModel 。GPT - QModel是一款極具實用性且生產(chǎn)就緒的大型語言模型(LLM)壓縮與量化工具包。工具包通過與 HF Transformers、vLLM 和 SGLang 集成,實現(xiàn)了在 CPU 和 GPU 上的硬件加速推斷,能夠充分發(fā)揮不同硬件的計算優(yōu)勢,顯著提升推理效率。目前,GPT - QModel 支持多種量化方法,涵蓋 GPTQ、AWQ、QQQ、GPTAQ、EoRa、GAR 等,這些方法各有特點,能滿足不同場景下對模型壓縮和量化的需求。

可以通過如下命令進(jìn)行安裝:

pip install -v gptqmodel --no-build-isolation 
uv pip install -v gptqmodel --no-build-isolation

如下代碼使用 datasets 和 gptqmodel 庫,將 Llama-3.2-1B-Instruct 模型通過 GPTQ 方法量化為 4 位精度。過程包括加載校準(zhǔn)數(shù)據(jù)集、配置量化參數(shù)、加載模型并執(zhí)行量化,最后保存量化后的模型,實現(xiàn)模型壓縮。

# 導(dǎo)入加載數(shù)據(jù)集的工具和GPTQ量化相關(guān)的類
from datasets import load_dataset
from gptqmodel import GPTQModel, QuantizeConfig

# 原始模型的ID(Hugging Face Hub上的Llama-3.2-1B-Instruct模型)
model_id = "meta-llama/Llama-3.2-1B-Instruct"
# 量化后模型的保存路徑
quant_path = "Llama-3.2-1B-Instruct-gptqmodel-4bit"

# 加載校準(zhǔn)數(shù)據(jù)集(用于量化過程中的參數(shù)校準(zhǔn)):
# 加載allenai/c4數(shù)據(jù)集中的en/c4-train.00001-of-01024.json.gz文件,
# 選取訓(xùn)練集的前1024條數(shù)據(jù),并提取其中的"text"字段
calibration_dataset = load_dataset(
    "allenai/c4",
    data_files="en/c4-train.00001-of-01024.json.gz",
    split="train"
  ).select(range(1024))["text"]

# 定義量化配置:權(quán)重量化為4位,分組大小為128
quant_config = QuantizeConfig(bits=4, group_size=128)

# 根據(jù)模型ID和量化配置加載模型
model = GPTQModel.load(model_id, quant_config)

# 對模型進(jìn)行量化:使用校準(zhǔn)數(shù)據(jù)集,設(shè)置批次大小為1(可根據(jù)GPU顯存調(diào)整batch_size以加速量化)
model.quantize(calibration_dataset, batch_size=1)

# 將量化后的模型保存到指定路徑
model.save(quant_path)

參考文獻(xiàn):

https://arxiv.org/pdf/2306.00978

https://arxiv.org/pdf/2210.17323

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗,10年分布式架構(gòu)經(jīng)驗。

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2023-11-17 14:37:56

2023-11-27 09:00:00

GPTQ大型語言模型

2024-09-11 15:59:31

LLM.int8()大模型量化

2025-06-11 02:30:00

2024-04-07 14:28:48

邊緣計算LLM人工智能

2024-11-11 08:50:24

2025-08-07 01:44:00

2025-06-23 08:30:05

2024-12-23 08:03:13

2024-08-05 14:36:17

大型語言模型量化

2023-10-12 19:41:55

2024-04-16 14:57:51

人工智能深度學(xué)習(xí)

2023-10-10 09:45:35

自動駕駛技術(shù)

2024-02-26 07:43:10

大語言模型LLM推理框架

2025-02-24 00:00:10

.NET線程池模型

2025-04-28 00:55:00

2025-05-09 10:14:19

2024-08-27 09:35:47

2025-02-25 10:21:15

2025-02-17 10:13:27

點贊
收藏

51CTO技術(shù)棧公眾號

国产精品xnxxcom| 91短视频在线观看| 欧美成人直播| 午夜av电影一区| av电影在线地址| 国产999精品久久久久久绿帽| 欧美超级乱淫片喷水| 国产天堂av| 中文字幕制服丝袜一区二区三区| 国产综合动作在线观看| 日韩一级视频| 欧美日韩免费看| 97cao在线| 成人精品视频.| 农村寡妇一区二区三区| 精品久久ai电影| 日韩亚洲欧美在线| 青春草视频在线| 欧美午夜激情视频| jizz日韩| 欧美一区二区啪啪| 午夜免费性福利| 久久伊人中文字幕| 色爱区成人综合网| 狠狠综合久久av一区二区老牛| 上原亚衣av一区二区三区| 午夜欧美激情| 一本一本久久a久久精品牛牛影视| 中文字幕在线官网| 337p日本欧洲亚洲大胆精品| 欧美色18zzzzxxxxx| 亚洲综合无码一区二区| 超碰在线97免费| 美女高潮久久久| 玩弄中年熟妇正在播放| 播五月开心婷婷综合| 300部国产真实乱| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品美女久久福利网站| 久久久久狠狠高潮亚洲精品| 成人精品小蝌蚪| www.夜夜爽| 欧美精品在线观看播放| 在线精品国产亚洲| 国产精品久久久久秋霞鲁丝| 奇米影视777在线欧美电影观看| 日本亚洲欧洲色| 噜噜噜躁狠狠躁狠狠精品视频| 久草视频这里只有精品| 亚洲国产aⅴ天堂久久| 超碰公开在线| 亚洲精品乱码久久久久久按摩观| 亚洲成av在线| 国产日韩欧美综合| 成人一级片在线观看| 国产中文字幕在线视频| 久久久亚洲影院| 国产香蕉尹人视频在线| 精品中文字幕久久久久久| 一区二区三区欧洲区| 国产精品高清在线观看| 国自产拍偷拍福利精品免费一| 亚洲最大免费| 欧美亚洲尤物久久| 色88久久久久高潮综合影院| 欧美资源一区| 欧美色窝79yyyycom| 欧美aaaaaaaa| 国产欧美亚洲日本| 亚洲女人的天堂| 欧美极品在线| 久久观看最新视频| 欧美精品九九99久久| 国内精品久久久久久久影视简单| 一区二区三区在线视频111| 精品视频1区2区3区| 91亚洲一区| 在线成人福利| 成人美女av在线直播| 国产精品传媒在线| 国产原创一区| 麻豆av一区二区| 欧美日韩精品欧美日韩精品一综合| 久久不卡国产精品一区二区| 日韩精品福利片午夜免费观看| 亚洲午夜久久久久久久久久久| 91在线成人| 成人在线观看黄| 色噜噜亚洲精品中文字幕| 久久精品国产免费| 亚洲精品中文字幕| 久久这里只有精品23| 中文字幕日韩精品在线| 麻豆精品一区二区三区| 偷拍自拍在线看| 欧美日本视频在线观看| 97色在线视频| 国产精品国产馆在线真实露脸| 成人网av.com/| 2020中文字幕在线播放| 日韩av影视综合网| 国产精品国产三级国产aⅴ中文 | 久久精品久久99精品久久| 国产免费拔擦拔擦8x高清在线人| 大地资源网在线观看免费官网| 久久久久久国产精品三级玉女聊斋 | 老司机精品福利视频| 免费成人动漫| 精品少妇一区二区三区在线| 欧美一级电影久久| 性欧美大战久久久久久久久| 伊人久久婷婷| 91精品国产自产在线丝袜啪| 91网页在线观看| 免费一级特黄毛片| 国产成人精品综合| 精品视频久久久久久| 久久美女艺术照精彩视频福利播放| 九九九九九九精品任你躁| 色哟哟亚洲精品| 亚洲精华国产| 2019国产精品视频| 欧美一级理论性理论a| 成人免费精品视频| 一区二区视频欧美| 亚洲超碰在线观看| gogo在线观看| 国产国产人免费人成免费视频| 热舞福利精品大尺度视频| 三级精品视频久久久久| 欧美性一二三区| 欧美极品美女视频| 亚洲美女一区| 五月天亚洲一区| 秋霞午夜一区二区| 日韩一区日韩二区| 国产美女一区二区三区| 色欧美自拍视频| 韩国三级一区| 亚洲精品第一| 色戒汤唯在线| 亚洲毛片在线免费| 西野翔中文久久精品国产| yy6080久久伦理一区二区| 免费在线观看麻豆视频| 在线观看欧美一区| 99r国产精品视频| 久久久久久国产精品美女| 日韩电影免费在线观看中文字幕| 亚洲欧美国产三级| 亚洲午夜羞羞片| 亚洲一区二区三区在线播放| 亚洲综合在线观看视频| 国产精品日产欧美久久久久| 国产美女被下药99| 欧美精品在线播放| 亚洲免费av片| 精品视频久久久久久久| 欧美精品一区二区精品网| 精品少妇一区二区三区在线播放| 亚洲一本大道在线| 精品久久久久久中文字幕一区奶水| 亚洲中国最大av网站| 欧美老女人第四色| 欧美变态tickling挠脚心| 在线播放日韩欧美| 欧美大奶子在线| 欧美日韩国产成人| 91av福利视频| 天天色综合成人网| 欧美综合一区二区| 亚洲国产中文字幕在线观看| 亚洲欧美国产制服动漫| 欧洲亚洲在线视频| 日韩偷拍一区二区| 91精品电影| 蜜芽一区二区三区| 日韩毛片一二三区| 日韩中文字幕网站| 久久综合福利| 中文字幕不卡| 国产精品国产三级在线观看| 日本不卡一区二区三区高清视频| 午夜电影网一区| 国产日韩在线看| 一本大道香蕉8中文在线视频| 露出调教综合另类| 午夜精品一区二区三区国产| 快射视频在线观看| 99精品视频免费观看视频| 一区二区三区在线观看国产| 亚洲一级二级三级在线免费观看| 日韩欧美自拍偷拍| 欧洲精品亚洲精品| 唐人社导航福利精品| 亚洲欧洲日本在线| 精品国产福利| 91亚洲精品| 欧美日韩一区二区免费视频| 日韩高清三级|