權(quán)重量化對大模型涌現(xiàn)能力的影響
? 作者|劉沛羽
機(jī)構(gòu)|中國人民大學(xué)高瓴人工智能學(xué)院
引言:本研究旨在探討模型權(quán)重量化對大型語言模型(LLMs)的涌現(xiàn)能力的影響。LLMs 相較于小型語言模型在特定任務(wù)中展現(xiàn)出更強(qiáng)的能力,如上下文學(xué)習(xí)(ICL)、思維鏈推理(CoT)和指令遵循(IF)。然而,由于 LLMs 參數(shù)規(guī)模巨大,實(shí)際應(yīng)用中對計(jì)算資源的需求很難被滿足。為了解決這個(gè)問題,研究人員廣泛應(yīng)用權(quán)重量化方法來減少 LLMs 的內(nèi)存占用。然而,低比特量化方法往往會導(dǎo)致性能下降。因此,本研究旨在探討權(quán)重量化對 LLMs 的涌現(xiàn)能力的影響。我們主要回答了以下兩個(gè)問題:(一)大模型涌現(xiàn)能力是否會受到影響?(二)如何補(bǔ)償低比特量化下的模型能力?同時(shí)我們開源了一個(gè)可以微調(diào) GPTQ 量化模型的 GitHub 項(xiàng)目,實(shí)現(xiàn)單卡 A100 上一鍵微調(diào) LLaMA-65B 的 2-bit/4-bit 模型。文章也同步發(fā)布在 AI Box 知乎專欄(知乎搜索 AI Box 專欄),歡迎大家在知乎專欄的文章下方評論留言,交流探討!

我們的論文(Do Emergent Abilities Exist in Quantized Large Language Models: An Empirical Study)可以參考以下鏈接:
論文鏈接:https://arxiv.org/abs/2307.08072
開源項(xiàng)目:https://github.com/RUCAIBox/QuantizedEmpirical
Part1簡介
本文進(jìn)行了一項(xiàng)實(shí)證研究,調(diào)查模型權(quán)重量化對大型語言模型(LLMs)涌現(xiàn)能力的影響。量化是一種通過將浮點(diǎn)數(shù)映射為低位整數(shù)來減少 LLM 顯存占用的方法。我們重點(diǎn)關(guān)注三種涌現(xiàn)能力:上下文學(xué)習(xí)(In-context Learning)、思維鏈推理(Chain-of-thought Reasoning)和指令遵循(Instruction Following)。首先我們評估了不同參數(shù)規(guī)模的LLaMA模型(7B、13B、30B 和 65B),在不同精度水平(2-bit、4-bit、8-bit和 16-bit)下的表現(xiàn)。同時(shí),針對性能下降的低比特量化情況,我們從兩個(gè)角度探索了可能提升效果的方法:
-
(1)細(xì)粒度影響分析。通過研究哪些組件(或子結(jié)構(gòu))對量化更敏感,嘗試保持這部分組件(或子結(jié)構(gòu))的精度來緩解量化的誤差; -
(2)微調(diào)補(bǔ)償。分為先微調(diào)再量化以及先量化再微調(diào)兩種策略,探索提升低比特模型性能的方法。我們的研究得出了一系列重要發(fā)現(xiàn),以了解量化對涌現(xiàn)能力的影響,并為LLMs的極低比特量化可能性提供了啟示。
Part2大模型涌現(xiàn)能力是否會受到影響?
實(shí)驗(yàn)設(shè)置
我們重點(diǎn)關(guān)注大模型的三個(gè)關(guān)鍵能力,分別是上下文學(xué)習(xí)(In-context Learning,ICL),思維鏈推理(Chain-of-thought Reasoning,CoT)和指令遵循能力(Instruction Following,IF)。
-
在數(shù)據(jù)集方面,我們采用 MMLU、BBH 數(shù)據(jù)集來評測 ICL 能力,GSM8K 評測 CoT 能力。針對 IF 能力,我們使用了 Vicuna 數(shù)據(jù)集,其中包含 80 個(gè)問題,涵蓋了 8 個(gè)不同的類別,然后通過 ChatGPT 來對模型的回答進(jìn)行打分。 -
在量化設(shè)置方面,我們只對模型的權(quán)重進(jìn)行量化,包括注意力模塊(ATT)中的 query,key,value 和 output 矩陣,以及前饋網(wǎng)絡(luò)中(FFN)的 gate、up 和 down 投影矩陣。量化的模型包括 LLaMA 的 7B,13B,30B 和 65B 規(guī)模,量化的精度包括 2-bit,4-bit 和 8-bit。 -
在評估指標(biāo)方面,我們使用準(zhǔn)確率作為 ICL 和 CoT 測試的評估指標(biāo)。對于 IF 測試,我們使用 ChatGPT 對模型的輸出結(jié)果進(jìn)行打分。我們將結(jié)果報(bào)告在表 1 中。
表 1. MMLU,BBH,GSM8K 以及 AutoEval 的評測結(jié)果。
結(jié)論與分析
-
大型語言模型(LLMs)在 4-bit 權(quán)重量化下仍然能夠保持涌現(xiàn)能力,但在 2-bit 量化下會遭受嚴(yán)重的性能下降;
在各個(gè)任務(wù)中均可以看到 4-bit 量化后的效果幾乎沒有明顯的下降,但是在 2-bit 量化后效果則明顯變差。特別是在 GSM8K 的任務(wù)中,可以看到 2-bit 量化的效果幾乎接近 0。
-
4-bit 量化在相同總比特?cái)?shù)條件下,模型表現(xiàn)效果更好;
我們使用模型量化比特?cái)?shù)乘以模型參數(shù)量作為總比特?cái)?shù),來衡量量化模型使用的資源總量。結(jié)果發(fā)現(xiàn),4-bit 量化(下圖中的紅色線)均處于左上角位置,即在相同的總比特?cái)?shù)下有更好的模型表現(xiàn)效果。
圖 1. 模型表現(xiàn)與總比特?cái)?shù)之間的關(guān)系。其中 AutoEval(d)中"Relative Score"表示量化模型與 GPT3.5 得分的比值。橫坐標(biāo)表示總比特?cái)?shù)。
-
在量化的比特?cái)?shù)固定的條件下,提升模型參數(shù)量后對 CoT 任務(wù)效果提升最明顯;
從 GSM8K(CoT)任務(wù)上的測試結(jié)果上看,在量化比特?cái)?shù)固定的條件下,增加總比特?cái)?shù)(即增加總參數(shù)量)帶來的模型性能的提升明顯。而在其他任務(wù)上,隨著總比特?cái)?shù)增加,模型效果的提升則越來越小。
-
在 2-bit 量化下,ICL 任務(wù)中的提供 demonstrations(即 5-shot 設(shè)置)可以緩解模型效果損失。
在表 1 中對比 MMLU、BBH 數(shù)據(jù)集,few-shot 和 zero-shot 的結(jié)果看出,2-bit 量化后的模型 few-shot 的結(jié)果明顯高于 zero-shot。
Part3如何補(bǔ)充極限壓縮情況下的模型能力?
1細(xì)粒度影響分析
實(shí)驗(yàn)設(shè)置
-
組件影響:我們主要分析注意力組件(ATT)和全聯(lián)接組件(FFN),一共測試了 3 個(gè)變種: -
(1)"all",對 Transformer 層權(quán)重全部量化為 2 bit; -
(2)" ATT",在(1)的基礎(chǔ)上僅對 ATT 保持 FP16 其他做量化; -
(3)" FFN",僅對 FFN 保持 FP16 精度其他做量化。 -
異常維度影響:我們主要分析激活值中的異常值維度的量化對模型效果的影響,一共測試 3 個(gè)變種: -
(1)"all non-outlier dimensions",我們采用 LLM.int8() 方法,對激活值和權(quán)重所有非異常值維度進(jìn)行 8-bit 量化; -
(2)"+top-1 outlier dimension",在(1)的基礎(chǔ)上額外將影響層數(shù)最多的 top-1 異常值維度進(jìn)行 8-bit 量化; -
(3)"+top-3 outlier dimension",在(1)的基礎(chǔ)上將影響層數(shù)最多的 top-3 異常值進(jìn)行 8-bit 量化。 -
子結(jié)構(gòu)影響:我們分析 ATT 和 FFN 組件中的子結(jié)構(gòu),將重要的子結(jié)構(gòu)保持 FP16,其他做量化。 -
結(jié)果報(bào)告為" crucial weights"。
結(jié)論與分析
圖 2. 不同模型的組件和子結(jié)構(gòu)對 MMLU(5-shot)效果的影響。
-
相比 ATT 結(jié)構(gòu)而言,保持 FFN 結(jié)構(gòu)的 FP16 精度可以提升 2-bit 量化模型的效果。
從圖 2 中看出,對 FFN 保持精度( FFN)在 LLaMA-7B-2bit 和 LLaMA-13B-2bit 模型上的表現(xiàn)都好于其他的變種(all和 ATT)。這個(gè)結(jié)果表明保持 FFN 的精度相比 ATT 而言更加重要。
圖 3. LLaMA 模型(7B 和 13B)中激活值異常值維度的影響 。"↓"表示值越低越好。
-
針對量化激活值的異常維度帶來的影響,那些影響層數(shù)最多的異常值維度,量化帶來的影響最大。
從圖 3 中看出,僅對影響層數(shù)最多的異常值維度量化(+top-1)就可以導(dǎo)致嚴(yán)重的模型精度下降,并且這個(gè)下降的幅度在較大的模型上更明顯。例如 MMLU 中可以看出,盡管 LLaMA-13B 上"non-outlier"的表現(xiàn)比 LLaMA-7B 的好,但是一旦將影響層數(shù)最多的異常值維度量化,模型的精度都會大幅下降,而且 LLaMA-13B 上"+top-1"的表現(xiàn)比 LLaMA-7B 的"+top-1"更差一些。
-
通過對子結(jié)構(gòu)保持 FP16 可以進(jìn)一步提升 2-bit 量化模型的效果。
我們發(fā)現(xiàn) LLaMA 模型中異常值維度都集中在 FFN 組件的 down_projection 模塊,這表明子結(jié)構(gòu)可能是需要保持 FP16 精度的關(guān)鍵子結(jié)構(gòu)。同時(shí)為了更好提升效果,我們還在 ATT 組件中選擇了量化誤差最高的 2 個(gè)子結(jié)構(gòu)保持 FP16。最終結(jié)果報(bào)告為圖 2 的" crucial"。可以看出來,通過保持子結(jié)構(gòu)的 FP16 精度,而其他部分進(jìn)行 2-bit 量化,模型的 footprint 比保持 FFN 組件 FP16 更低,但是下游任務(wù)的表現(xiàn)更好。
2模型微調(diào)補(bǔ)償分析
實(shí)驗(yàn)設(shè)置
-
先微調(diào)后量化:我們將 LLaMA 模型在 ICL、CoT 以及 IF 任務(wù)上進(jìn)行指令微調(diào)后再做量化。關(guān)于微調(diào)使用的數(shù)據(jù)集,ICL 使用 Alpaca 數(shù)據(jù)集,CoT 使用 CoT 數(shù)據(jù)集,IF 使用 Alpaca 數(shù)據(jù)集。關(guān)于微調(diào)方法,我們測試了: -
(1)全參數(shù)微調(diào)(Full parameter Fine-tuning,F(xiàn)FT) -
(2)以及基于 LoRA 的參數(shù)高效微調(diào)(LoRA) -
先量化后微調(diào):我們先將 LLaMA 模型進(jìn)行 GPTQ 的權(quán)重量化,再基于量化后的權(quán)重進(jìn)行微調(diào)。為了實(shí)現(xiàn)量化后權(quán)重的微調(diào),我們設(shè)計(jì)了一種改進(jìn)的 LoRA 方法(如圖 4 所示),把固定權(quán)重部分替換為 GPTQ 量化得到的權(quán)重,通過微調(diào)額外的 lora 參數(shù),可以補(bǔ)償量化模型帶來的精度損失。目前項(xiàng)目已經(jīng)開源。
圖 4. 改進(jìn)后的 GPTQ-LoRA 示意圖。
GitHub 鏈接:https://github.com/RUCAIBox/QuantizedEmpirical
直接微調(diào)量化后的權(quán)重是困難的,我們從 LoRA 中獲得啟發(fā),直接將 LoRA 中的固定權(quán)重部分替換為 GPTQ 生成的量化權(quán)重,在微調(diào)的時(shí)候固定量化的權(quán)重,只微調(diào) lora_A 和 lora_B 矩陣。由于量化可以極大降低顯存占用,我們發(fā)現(xiàn)這樣簡單的操作可以在單卡 A100 上微調(diào)最大 65B 的模型,量化的精度為 2-bit 和 4-bit。微調(diào)所需要的資源和時(shí)間統(tǒng)計(jì)如下圖:
一鍵微調(diào) LLaMA-65B-2bit 模型的代碼如下:
# 一鍵微調(diào) LLaMA-65B-2bit 模型
finetune_multi alpaca_gptqlora_65B_2bit $base_dir/alpaca_data_cleaned.json
--adapter_name=gptqlora\
--target_modules="['q_proj','k_proj','v_proj','o_proj','up_proj','gate_proj','down_proj']"\
--base_model=$checkpoint/llama-65b-hf\
--quant_checkpoint="$checkpoint/llama-65b-2bit-formulate"\
--use_gradient_checkpointing\ --bits=2
結(jié)論與分析
表 2. 量化前微調(diào)在 MMLU,GSM8K 以及 AutoEval 上的表現(xiàn)。
-
先微調(diào)再量化,依然在 2-bit 的精度上會遇到明顯的模型效果下降。
表 2 中,我們發(fā)現(xiàn) LoRA 和 FFT 微調(diào)后,如果模型再量化到 2-bit,則效果會明顯下降。特別是 GSM8K 任務(wù)上,LoRA 微調(diào)的 LLaMA-7B 量化到 2-bit,Accuracy 依然會下降到 0.0。這個(gè)結(jié)果說明先微調(diào)再量化無法有效提升量化后模型的表現(xiàn)。
-
在 ICL 和 CoT 任務(wù)上,LoRA 微調(diào)的效果相比 FFT 微調(diào)仍有差距。
我們在表 2 中觀察到,LoRA 列的表現(xiàn)仍低于 FFT 列。其中最明顯的是 GSM8K 任務(wù),LLaMA-13B 的 4-bit 量化的效果 FFT 比 LoRA 高 13.7。這表明在復(fù)雜的任務(wù)上,全參數(shù)微調(diào)依然是更加合適的微調(diào)方式。
表 3. 量化后微調(diào)在 MMLU 上的表現(xiàn)。這里"Mem."表示僅加載模型所占用的顯存,"Tr(M)"表示可訓(xùn)練的參數(shù)量。
-
先量化后微調(diào),可以有效提升量化后模型的表現(xiàn),同時(shí)也可以極大減少微調(diào)所需要的顯存。
在表 3 中,先量化后微調(diào)的結(jié)果記作 ,我們可以觀察到在 2-bit 量化的模型上,通過改進(jìn)后的輕量化微調(diào)方法可以有效補(bǔ)償量化所帶來的效果損失。其中對于 LLaMA-65B 模型而言,MMLU 的結(jié)果有明顯提升。目前該方法已經(jīng)開源,且還在持續(xù)開發(fā)中,歡迎大家試用,如果有什么問題歡迎大家提提建議。
Part4總結(jié)
我們的實(shí)證實(shí)驗(yàn)表明,大型語言模型(LLM)在進(jìn)行 4-bit 權(quán)重量化后,仍然可以表現(xiàn)出涌現(xiàn)能力,如上下文學(xué)習(xí)(In-context Learning)、思維鏈推理(Chain-of-thought Reasoning)和指令遵循(Instruction Following)。然而,模型在 2-bit 量化后性能嚴(yán)重下降。為了提高 2-bit 權(quán)重量化模型的性能,我們進(jìn)行了兩項(xiàng)特殊實(shí)驗(yàn):細(xì)粒度影響分析以確定敏感組件和子結(jié)構(gòu),以及通過模型微調(diào)進(jìn)行性能補(bǔ)償。發(fā)現(xiàn)通過保持特定組件和子結(jié)構(gòu)的精度,以及量化后的微調(diào)方法,可以有效提升量化后模型的表現(xiàn)。最終,我們的實(shí)驗(yàn)結(jié)果揭示了權(quán)重量化對大模型涌現(xiàn)能力的影響,并探索了 2-bit 權(quán)重量化在 LLMs 中的可能性。
更多推薦
↓↓↓
