將330億參數(shù)大模型「塞進(jìn)」單個消費(fèi)級GPU,加速15%、性能不減
預(yù)訓(xùn)練大語言模型(LLM)在特定任務(wù)上的性能不斷提高,隨之而來的是,假如 prompt 指令得當(dāng),其可以更好的泛化到更多任務(wù),很多人將這一現(xiàn)象歸功于訓(xùn)練數(shù)據(jù)和參數(shù)的增多,然而最近的趨勢表明,研究者更多的集中在更小的模型上,不過這些模型是在更多數(shù)據(jù)上訓(xùn)練而成,因而在推理時更容易使用。
舉例來說,參數(shù)量為 7B 的 LLaMA 在 1T token 上訓(xùn)練完成,盡管平均性能略低于 GPT-3,但參數(shù)量是后者的 1/25。不僅如此,當(dāng)前的壓縮技術(shù)還能將這些模型進(jìn)一步壓縮,在保持性能的同時還能大幅減少內(nèi)存需求。通過這樣的改進(jìn),性能良好的模型可以在終端用戶設(shè)備(如筆記本)上進(jìn)行部署。
然而,這又面臨另一個挑戰(zhàn),即想要將這些模型壓縮到足夠小的尺寸以適應(yīng)這些設(shè)備,怎樣才能兼顧生成質(zhì)量。研究表明,盡管壓縮后的模型生成的答案準(zhǔn)確率還可以,但現(xiàn)有的 3-4 位量化技術(shù)仍然會讓準(zhǔn)確性降低。由于 LLM 生成是順序進(jìn)行的,依賴于先前生成的 token,小的相對誤差不斷累積并導(dǎo)致嚴(yán)重的輸出損壞。為了確??煽康馁|(zhì)量,關(guān)鍵是設(shè)計出低位寬的量化方法,與 16 位模型相比不會降低預(yù)測性能。
然而,將每個參數(shù)量化到 3-4 位通常會導(dǎo)致中等程度、甚至是高等程度的準(zhǔn)確率損失,特別是那些非常適合邊緣部署的 1-10B 參數(shù)范圍內(nèi)的較小模型。
為了解決準(zhǔn)確性問題,來自華盛頓大學(xué)、蘇黎世聯(lián)邦理工學(xué)院等機(jī)構(gòu)的研究者提出了一種新的壓縮格式和量化技術(shù) SpQR(Sparse-Quantized Representation,稀疏 - 量化表征),首次實(shí)現(xiàn)了 LLM 跨模型尺度的近無損壓縮,同時達(dá)到了與以前方法相似的壓縮水平。
SpQR 通過識別和隔離異常權(quán)重來工作,這些異常權(quán)重會導(dǎo)致特別大的量化誤差,研究者將它們以更高的精度存儲,同時將所有其他權(quán)重壓縮到 3-4 位,在 LLaMA 和 Falcon LLMs 中實(shí)現(xiàn)了不到 1% 的困惑度相對準(zhǔn)確率損失。從而可以在單個 24GB 的消費(fèi)級 GPU 上運(yùn)行 33B 參數(shù)的 LLM,而不會有任何性能下降,同時還能提高 15% 的速度。
SpQR 算法高效,既可以將權(quán)重編碼為其他格式,也可以在運(yùn)行時進(jìn)行有效地解碼。具體來說,該研究為 SpQR 提供了一種高效的 GPU 推理算法,可以比 16 位基線模型更快地進(jìn)行推理,同時實(shí)現(xiàn)了超過 4 倍的內(nèi)存壓縮收益。

- 論文地址:https://arxiv.org/pdf/2306.03078.pdf
- 項目地址:https://github.com/Vahe1994/SpQR
方法
該研究提出一種混合稀疏量化的新格式 —— 稀疏量化表征(SpQR),可以將精確預(yù)訓(xùn)練的 LLM 壓縮到每個參數(shù) 3-4 位,同時保持近乎無損。
具體來說,該研究將整個過程分為兩步。第一步是異常值檢測:該研究首先孤立了異常值權(quán)重,并證明其量化會導(dǎo)致高誤差:異常值權(quán)重保持高精度,而其他權(quán)重以低精度(例如 3 位的格式)存儲。然后,該研究以非常小的組大小實(shí)現(xiàn)分組量化(grouped quantization)的變體,并表明量化尺度本身可以被量化為 3 位表征。
SpQR 極大地減少了 LLM 的內(nèi)存占用,而不會降低準(zhǔn)確性,同時與 16 位推理相比,LLM 的生成速度快了 20%-30%。
此外,該研究發(fā)現(xiàn),權(quán)重矩陣中敏感權(quán)重的位置不是隨機(jī)的,而是具有特定的結(jié)構(gòu)。為了在量化過程中突出顯示其結(jié)構(gòu),該研究計算了每個權(quán)重的敏感度,并為 LLaMA-65B 模型可視化這些權(quán)重敏感度。下圖 2 描繪了 LLaMA-65B 最后一個自注意力層的輸出投影。

該研究對量化過程進(jìn)行了兩個改變:一個用于捕捉小的敏感權(quán)重組,另一個用于捕捉單個的異常值。下圖 3 為 SpQR 的總體架構(gòu):

下表為 SpQR 量化算法,左邊的代碼片段描述了整個過程,右邊的代碼片段包含了二級量化和查找異常值的子程序:

該研究將 SpQR 與其他兩種量化方案進(jìn)行了比較:GPTQ、RTN(rounding-to-nearest),并用兩個指標(biāo)來評估量化模型的性能。首先是困惑度的測量,所用數(shù)據(jù)集包括 WikiText2、 Penn Treebank 以及 C4;其次是在五個任務(wù)上的零樣本準(zhǔn)確率:WinoGrande、PiQA、HellaSwag、ARC-easy、ARC-challenge。
主要結(jié)果。圖 1 結(jié)果顯示,在相似的模型大小下,SpQR 的性能明顯優(yōu)于 GPTQ(以及相應(yīng)的 RTN),特別是在較小的模型上。這種改進(jìn)得益于 SpQR 實(shí)現(xiàn)了更多的壓縮,同時也減少了損失退化。

表 1、表 2 結(jié)果顯示,對于 4 位量化,與 GPTQ 相比,SpQR 相對于 16 位基線的誤差減半。


表 3 報告了 LLaMA-65B 模型在不同數(shù)據(jù)集上的困惑度結(jié)果。

最后,該研究評估了 SpQR 推理速度。該研究將專門設(shè)計的稀疏矩陣乘法算法與 PyTorch(cuSPARSE)中實(shí)現(xiàn)的算法進(jìn)行了比較,結(jié)果如表 4 所示??梢钥吹剑M管 PyTorch 中的標(biāo)準(zhǔn)稀疏矩陣乘法并沒有比 16 位推理更快,但本文專門設(shè)計的稀疏矩陣乘法算法可以提高約 20-30% 的速度。


































