將330億參數(shù)大模型「塞進(jìn)」單個(gè)消費(fèi)級GPU,加速15%、性能不減
轉(zhuǎn)自《機(jī)器之心》
預(yù)訓(xùn)練大語言模型(LLM)在特定任務(wù)上的性能不斷提高,隨之而來的是,假如 prompt 指令得當(dāng),其可以更好的泛化到更多任務(wù),很多人將這一現(xiàn)象歸功于訓(xùn)練數(shù)據(jù)和參數(shù)的增多,然而最近的趨勢表明,研究者更多的集中在更小的模型上,不過這些模型是在更多數(shù)據(jù)上訓(xùn)練而成,因而在推理時(shí)更容易使用。
舉例來說,參數(shù)量為 7B 的 LLaMA 在 1T token 上訓(xùn)練完成,盡管平均性能略低于 GPT-3,但參數(shù)量是后者的 1/25。不僅如此,當(dāng)前的壓縮技術(shù)還能將這些模型進(jìn)一步壓縮,在保持性能的同時(shí)還能大幅減少內(nèi)存需求。通過這樣的改進(jìn),性能良好的模型可以在終端用戶設(shè)備(如筆記本)上進(jìn)行部署。
然而,這又面臨另一個(gè)挑戰(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è)計(jì)出低位寬的量化方法,與 16 位模型相比不會降低預(yù)測性能。
然而,將每個(gè)參數(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 跨模型尺度的近無損壓縮,同時(shí)達(dá)到了與以前方法相似的壓縮水平。
SpQR 通過識別和隔離異常權(quán)重來工作,這些異常權(quán)重會導(dǎo)致特別大的量化誤差,研究者將它們以更高的精度存儲,同時(shí)將所有其他權(quán)重壓縮到 3-4 位,在 LLaMA 和 Falcon LLMs 中實(shí)現(xiàn)了不到 1% 的困惑度相對準(zhǔn)確率損失。從而可以在單個(gè) 24GB 的消費(fèi)級 GPU 上運(yùn)行 33B 參數(shù)的 LLM,而不會有任何性能下降,同時(shí)還能提高 15% 的速度。
SpQR 算法高效,既可以將權(quán)重編碼為其他格式,也可以在運(yùn)行時(shí)進(jìn)行有效地解碼。具體來說,該研究為 SpQR 提供了一種高效的 GPU 推理算法,可以比 16 位基線模型更快地進(jìn)行推理,同時(shí)實(shí)現(xiàn)了超過 4 倍的內(nèi)存壓縮收益。
方法
該研究提出一種混合稀疏量化的新格式 —— 稀疏量化表征(SpQR),可以將精確預(yù)訓(xùn)練的 LLM 壓縮到每個(gè)參數(shù) 3-4 位,同時(shí)保持近乎無損。
具體來說,該研究將整個(gè)過程分為兩步。第一步是異常值檢測:該研究首先孤立了異常值權(quán)重,并證明其量化會導(dǎo)致高誤差:異常值權(quán)重保持高精度,而其他權(quán)重以低精度(例如 3 位的格式)存儲。然后,該研究以非常小的組大小實(shí)現(xiàn)分組量化(grouped quantization)的變體,并表明量化尺度本身可以被量化為 3 位表征。
SpQR 極大地減少了 LLM 的內(nèi)存占用,而不會降低準(zhǔn)確性,同時(shí)與 16 位推理相比,LLM 的生成速度快了 20%-30%。
此外,該研究發(fā)現(xiàn),權(quán)重矩陣中敏感權(quán)重的位置不是隨機(jī)的,而是具有特定的結(jié)構(gòu)。為了在量化過程中突出顯示其結(jié)構(gòu),該研究計(jì)算了每個(gè)權(quán)重的敏感度,并為 LLaMA-65B 模型可視化這些權(quán)重敏感度。下圖 2 描繪了 LLaMA-65B 最后一個(gè)自注意力層的輸出投影。
該研究對量化過程進(jìn)行了兩個(gè)改變:一個(gè)用于捕捉小的敏感權(quán)重組,另一個(gè)用于捕捉單個(gè)的異常值。下圖 3 為 SpQR 的總體架構(gòu):
下表為 SpQR 量化算法,左邊的代碼片段描述了整個(gè)過程,右邊的代碼片段包含了二級量化和查找異常值的子程序:
實(shí)驗(yàn)
該研究將 SpQR 與其他兩種量化方案進(jìn)行了比較:GPTQ、RTN(rounding-to-nearest),并用兩個(gè)指標(biāo)來評估量化模型的性能。首先是困惑度的測量,所用數(shù)據(jù)集包括 WikiText2、 Penn Treebank 以及 C4;其次是在五個(gè)任務(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)了更多的壓縮,同時(shí)也減少了損失退化。
表 1、表 2 結(jié)果顯示,對于 4 位量化,與 GPTQ 相比,SpQR 相對于 16 位基線的誤差減半。
表 3 報(bào)告了 LLaMA-65B 模型在不同數(shù)據(jù)集上的困惑度結(jié)果。
最后,該研究評估了 SpQR 推理速度。該研究將專門設(shè)計(jì)的稀疏矩陣乘法算法與 PyTorch(cuSPARSE)中實(shí)現(xiàn)的算法進(jìn)行了比較,結(jié)果如表 4 所示??梢钥吹?,盡管 PyTorch 中的標(biāo)準(zhǔn)稀疏矩陣乘法并沒有比 16 位推理更快,但本文專門設(shè)計(jì)的稀疏矩陣乘法算法可以提高約 20-30% 的速度。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。