近來,LLM以驚人的推理效果驚艷全世界,這得益于它巨大的參數量與計算任務。以GPT-175B模型為例,它擁有1750億參數,至少需要320GB(以1024的倍數計算)的半精度(FP16)格式存儲空間。此外,為了有效管理操作,部署該模型進行推理至少需要五個A100 GPU,每個GPU配備80GB內存。巨大的存儲與計算代價讓有效的模型壓縮成為一個亟待解決的難題。
來自中國科學院和人民大學的研究者們深入探討了基于LLM的模型壓縮研究進展并發表了該領域的首篇綜述《A Survey on Model Compression for Large Language Models》。
論文鏈接:https://arxiv.org/pdf/2308.07633.pdf
模型壓縮涉及將大型資源密集型模型轉化為適合在受限移動設備上存儲的緊湊版本。此外,它還可以優化模型以實現更快的執行速度和最小的延遲,或在這些目標之間取得平衡。
該綜述主要圍繞針對LLMs的模型壓縮技術的方法、指標與基準展開,并將相關研究內容組成了一個新的分類,包括:
剪枝(Pruning)
知識蒸餾(Knowledge Distillation)
量化(Quantization)
低秩分解(Low-Rank Factorization)
圖1:針對大型語言模型的模型壓縮方法分類。
一、方法剪枝(pruning)剪枝指移除模型中不必要或多余的組件,比如參數,以使模型更加高效。通過對模型中貢獻有限的冗余參數進行剪枝,在保證性能最低下降的同時,可以減小存儲需求、提高內存和計算效率。論文將剪枝分為兩種主要類型:非結構化剪枝和結構化剪枝。 非結構化剪枝:指移除個別參數,而不考慮整體網絡結構。這種方法通過將低于閾值的參數置零的方式對個別權重或神經元進行處理。它會導致特定的參數被移除,模型出現不規則的稀疏結構。并且這種不規則性需要專門的壓縮技術來存儲和計算被剪枝的模型。此外,非結構化剪枝通常需要對LLM進行大量的再訓練以恢復準確性,這對于LLM來說尤其昂貴。SparseGPT [Frantar and Alistarh, 2023] 引入了一種一次性剪枝策略,無需重新訓練。該方法將剪枝視為一個廣泛的稀疏回歸問題,并使用近似稀疏回歸求解器來解決,實現了顯著的非結構化稀疏性。LoRAPrune [Zhang等, 2023a] 將參數高效調整(PEFT)方法與剪枝相結合,以提高下游任務的性能。它引入了一種獨特的參數重要性標準,使用了來自Low-Rank Adaption(LoRA)的值和梯度。Wanda [Sun等, 2023]提出了一種新的剪枝度量。它根據每個權重的大小以及相應輸入激活的范數的乘積進行評估,這個乘積是通過使用一個小型校準數據集來近似計算的。這個度量用于線性層輸出內的局部比較,使得可以從LLM中移除優先級較低的權重。 結構化剪枝:根據預定義規則移除連接或分層結構,同時保持整體網絡結構。這種方法一次性地針對整組權重,優勢在于降低模型復雜性和內存使用,同時保持整體的LLM結構完整。LLM-Pruner [Ma等, 2023] 采用了一種多功能的方法來壓縮LLMs,同時保護它們的多任務解決和語言生成能力。它引入了一個依賴檢測算法,以定位模型內部的相互依賴結構。它還實施了一種高效的重要性估計方法,考慮了一階信息和近似Hessian信息。
知識蒸餾(Knowledge Distillation,KD)
KD通過從一個復雜的模型(稱為教師模型)向一個簡化的模型(稱為學生模型)轉移知識來實現。在這一部分中,我們概述了使用LLM作為教師的蒸餾方法,并根據這些方法是否強調將LLM的涌現能力(EA)蒸餾到小型語言模型(SLM)中來進行分類,包括:Standard KD和EA-based KD。
圖2:對語言模型知識蒸餾的簡要分類。 Standard KD旨在使學生模型學習LLM所擁有的常見知識,如輸出分布和特征信息。這種方法類似于傳統的KD,但區別在于教師模型是LLM。
MINILLM [Gu等,2023] 深入研究了從白盒生成LLMs進行蒸餾的方法,并選擇最小化反向KLD,防止了學生過高估計教師分布中的低概率區域,從而提高了生成樣本的質量。 GKD [Agarwal等,2023] 探索了從自回歸模型進行蒸餾的方法,其中白盒生成LLMs作為其中一個子集。它通過在訓練期間從學生模型中采樣輸出序列來處理分布不匹配問題,并通過優化替代的散度,如反向KL散度,來解決模型不足的問題。 相比之下,EA-based KD不僅僅是將LLM的常見知識轉移到學生模型中,還涵蓋了蒸餾它們獨特的涌現能力。具體來說,EA-based KD又分為了上下文學習(ICL)、思維鏈(CoT)和指令跟隨(IF)。 ICL采用了一個結構化的自然語言提示,其中包含任務描述和可能的一些演示示例。通過這些任務示例,LLM可以在不需要顯式梯度更新的情況下掌握和執行新任務。黃等人的工作引入了ICL蒸餾,將LLMs的上下文少樣本學習和語言建模能力轉移到SLMs中。它將上下文學習目標與傳統的語言建模目標相結合,并在兩種少樣本學習范式下探索了ICL蒸餾,即Meta-ICT 和 Multitask-ICT。 CoT與ICL相比,在提示中加入了中間推理步驟,這些步驟可以導致最終的輸出,而不是使用簡單的輸入-輸出對。MT-COT [Li等, 2022]旨在利用LLMs產生的解釋來增強較小的推理器的訓練。它利用多任務學習框架,使較小的模型具備強大的推理能力以及生成解釋的能力。Fine-tune-CoT [Ho等, 2023]通過隨機采樣從LLMs生成多個推理解決方案。這種訓練數據的增加有助于學生模型的學習過程。傅等人發現了語言模型的多維能力之間的權衡,并提出了微調的指令調整模型。他們從大型教師模型中提取CoT推理路徑以改進分布外泛化。謝等人在多任務框架內使用LLM原理作為額外的指導,訓練較小的模型。SOCRATIC CoT [Shridhar等, 2023]訓練了兩個蒸餾模型:問題分解器和子問題解決器。分解器將原始問題分解為一系列子問題,而子問題解決器則處理解決這些子問題。DISCO [Chen等, 2023]引入了一種基于LLMs的完全自動反事實知識蒸餾方法。它通過工程化的提示生成短語擾動,然后通過任務特定的教師模型將這些擾動數據過濾,以提取高質量的反事實數據。SCOTT [Wang等, 2023a]采用對比解碼,將每個原理與答案聯系起來。它鼓勵從教師那里提取相關的原理。此外,指導學生進行反事實推理并基于導致不同答案的原理進行預測。 IF僅依賴于任務描述而不依賴于少量示例。通過使用一系列以指令形式表達的任務進行微調,語言模型展現出能夠準確執行以前未見過的指令描述的任務的能力。Lion等, 2023]利用LLMs的適應性來提升學生模型的性能。它促使LLM識別和生成“困難”指令,然后利用這些指令來增強學生模型的能力。
圖3:EA-based KD概述。a)上下文學習蒸餾,(b)思維鏈式蒸餾,(c)指令跟隨蒸餾。
量化(Quantization)
量化技術將傳統的表示方法中的浮點數轉換為整數或其他離散形式,以減輕深度學習模型的存儲和計算負擔。謹慎的量化技術,可以在僅有輕微精度降低的情況下實現大規模的模型壓縮。依據應用量化壓縮模型的階段,可以分為以下三種方法:量化感知訓練(Quantization-Aware Training,QAT):在QAT中,量化目標無縫地集成到模型的訓練過程中。這種方法使LLM在訓練過程中適應低精度表示,增強其處理由量化引起的精度損失的能力。這種適應旨在保持在量化過程之后的更高性能。LLM-QAT [Liu等,2023] 利用預訓練模型生成的結果來實現無數據蒸餾。此外,LLM-QAT不僅量化權重和激活,還量化關鍵-值(KV)緩存。這個策略旨在增強吞吐量并支持更長的序列依賴。LLM-QAT能夠將帶有量化權重和KV緩存的大型LLaMA模型蒸餾為僅有4位的模型。這一突破性的結果證明了制造準確的4位量化LLM的可行性。量化感知微調(Quantization-Aware Fine-tuning,QAF)QAF涉及在微調過程中對LLM進行量化。主要目標是確保經過微調的LLM在量化為較低位寬后仍保持性能。通過將量化意識整合到微調中,LLM旨在在模型壓縮和保持性能之間取得平衡。PEQA [Kim等,2023]和QLORA [Dettmers等,2023a]都屬于量化感知參數高效微調(PEFT)技術的范疇。這些技術側重于促進模型壓縮和加速推理。PEQA采用了雙階段過程。在第一階段,每個全連接層的參數矩陣被量化為低位整數矩陣和標量向量。在第二階段,對每個特定下游任務的標量向量進行微調。QLORA引入了新的數據類型、雙重量化和分頁優化器等創新概念。這些想法旨在在不影響性能的情況下節省內存。QLORA使得大型模型可以在單個GPU上進行微調,同時在Vicuna基準測試上實現了最先進的結果。訓練后量化(Post-Training Quantization,PTQ)PTQ涉及在LLM的訓練階段完成后對其參數進行量化。PTQ的主要目標是減少LLM的存儲和計算復雜性,而無需對LLM架構進行修改或進行重新訓練。PTQ的主要優勢在于其簡單性和高效性。然而,值得注意的是,PTQ可能會在量化過程中引入一定程度的精度損失。在PTQ中,某些方法專注于僅對LLM的權重進行量化,以提高效率并減少計算需求。LUT-GEMM [Park等,2022]通過僅對權重進行量化以及使用BCQ格式在LLM中優化矩陣乘法,通過提高計算效率來增強延遲降低和性能。LLM.int8() [Dettmers等,2022]對LLM transformers中的矩陣乘法采用8位量化,在推理過程中有效地減少GPU內存使用量,同時保持性能精度。該方法采用矢量量化和混合精度分解來處理異常值,以實現高效的推理。ZeroQuant [Yao等,2022]將硬件友好的量化方案、逐層知識蒸餾和優化的量化支持整合在一起,將Transformer-based模型的權重和激活精度減少到最小的INT8,并且對準確性幾乎沒有影響。GPTQ [Frantar等,2022]提出了一種基于近似二階信息的新型分層量化技術,使得每個權重的比特寬度減少到3或4位,與未壓縮版本相比,幾乎沒有準確性損失。Dettmers和Zettlemoyer通過分析推理縮放定律,深入探討了LLM中模型大小和位精度之間在零樣本性能方面的權衡。他們在各種LLM家族之間進行了廣泛的實驗,發現4位精度幾乎普遍是在總模型位數和零樣本準確性之間實現正確平衡的最佳選擇。AWQ [Lin等,2023]發現對于LLM的性能,權重并不是同等重要的,僅保護1%的顯著權重可以大大減少量化誤差。在此基礎上,AWQ采用了激活感知方法,考慮與較大激活幅度對應的權重通道的重要性,這在處理重要特征時起著關鍵作用。該方法采用逐通道縮放技術來確定最佳縮放因子,從而在量化所有權重的同時最小化量化誤差。OWQ [Lee等,2023]通過分析激活異常如何放大權重量化中的誤差,引入了混合精度量化方案,將更高的精度應用于易受激活異常影響的權重。SpQR [Dettmers等,2023b]確定并隔離了異常權重,將其存儲在更高的精度中,并將所有其他權重壓縮為3-4位。此外,許多PTQ中的工作嘗試對LLM的權重和激活進行量化。SmoothQuant [Xiao等,2022]解決了量化激活的挑戰,這往往由于異常值的存在而變得更加復雜。SmoothQuant觀察到不同的標記在它們的通道上展示出類似的變化,引入了逐通道縮放變換,有效地平滑了幅度,使得模型更易于量化。鑒于量化LLM中激活的復雜性,RPTQ [Yuan等,2023]揭示了不同通道之間不均勻范圍的挑戰,以及異常值的存在所帶來的問題。為了解決這個問題,RPTQ將通道策略性地分組為簇進行量化,有效地減輕了通道范圍的差異。此外,它將通道重排集成到層歸一化操作和線性層權重中,以最小化相關的開銷。OliVe [Guo等,2023]進一步采用了outlier-victim對(OVP)量化,并在低硬件開銷和高性能增益的情況下局部處理異常值,因為它發現異常值很重要,而其旁邊的正常值卻不重要。Outlier Suppression+ [Wei等,2023]通過確認激活中的有害異常呈現出不對稱分布,主要集中在特定通道中,引入了一種新的策略,涉及通道級的平移和縮放操作,以糾正異常的不對稱呈現,并減輕問題通道的影響,并定量分析了平移和縮放的最佳值,同時考慮了異常的不對稱性以及下一層權重引起的量化誤差。ZeroQuant-FP [Wu等,2023]探索了浮點(FP)量化的適用性,特別關注FP8和FP4格式。研究揭示,對于LLM,FP8激活在性能上持續優于INT8,而在權重量化方面,FP4在性能上與INT4相比具有可比性,甚至更優越。為了解決由權重和激活之間的差異引起的挑戰,ZeroQuant-FP要求所有縮放因子為2的冪,并將縮放因子限制在單個計算組內。值得注意的是,ZeroQuant-FP還集成了Low Rank Compensation (LoRC) 策略,以進一步增強其量化方法的有效性。 此外,將相關工作根據LLM權重中的位數(精度)進行分類,又可以分為8位量化和低位量化。
圖4:對語言模型(LLM)的量化方法概述。我們將它們分為8位量化和低位量化兩類,根據LLM權重中的位數(即精度)來進行劃分。
低秩分解(Low-Rank Factorization)
低秩分解旨在通過將給定的權重矩陣分解成兩個或多個較小維度的矩陣,從而對其進行近似。低秩分解背后的核心思想是找到一個大的權重矩陣W的分解,得到兩個矩陣U和V,使得W≈U V,其中U是一個m×k矩陣,V是一個k×n矩陣,其中k遠小于m和n。U和V的乘積近似于原始的權重矩陣,從而大幅減少了參數數量和計算開銷。 在LLM研究的模型壓縮領域,研究人員通常將多種技術與低秩分解相結合,包括修剪、量化等,例如LoRAPrune [Zhang等,2023a]和ZeroQuant-FP [Wu等,2023],以實現更有效的壓縮同時保持性能。隨著這一領域的研究繼續進行,可能會在將低秩分解應用于壓縮LLM方面出現進一步的發展,但仍需要持續的探索和實驗來充分發揮其在LLM方面的潛力。
二、指標和基準指標Number of Parameters:LLM中可學習權重或變量的總數,LLM在訓練期間需要優化這些權重。 Model Size:指存儲整個LLM所需的磁盤空間或內存占用,包括權重、偏置和其他必要組件。 Compression Ratio:未壓縮LLM的原始大小與壓縮LLM的大小之間的比率。 Inference time:衡量LLM在推理或預測期間處理輸入數據并生成響應所花費的時間。 Floating point operations (FLOPs):衡量LLM在處理輸入數據時執行的涉及浮點數(通常是32位或16位)的算術操作數量。
基準
常見的NLP基準:GLUE、LAMBADA、LAMA、SQuAD;
HULK:全面評估了預訓練語言模型(PLMs)的能效;
ELUE:整合了六個NLP數據集,涵蓋了情感分析、自然語言推斷、相似性和改寫任務。
三、挑戰和未來方向
專用的基準。首先,模型壓縮的評估缺乏普遍接受的標準設置。其次,可能不是在移動設備上典型任務的最佳代表。并且,為預訓練模型設計的基準也可能不適用在移動設備上的常見任務。
性能與大小的權衡。當前的工作仍缺乏對這種權衡理論和實證的洞見。
動態LLM壓縮。目前壓縮方法仍然依賴于手動設計來確定LLMs的壓縮大小和結構,這種手動嘗試會在實際工作帶來阻礙。
可解釋性。可解釋性壓縮方法的整合應成為LLM壓縮應用進展的重要必要條件。采用可解釋性壓縮不僅針對解釋性問題,還簡化了壓縮模型的評估過程。反過來也增強了模型在生產階段的可靠性和可預測性。
-
模型
+關注
關注
1文章
3309瀏覽量
49224 -
數據集
+關注
關注
4文章
1209瀏覽量
24834 -
nlp
+關注
關注
1文章
489瀏覽量
22109 -
大模型
+關注
關注
2文章
2548瀏覽量
3169
原文標題:大模型壓縮首篇綜述來啦~~
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
模型壓縮技術,加速AI大模型在終端側的應用
【大語言模型:原理與工程實踐】核心技術綜述
啃論文俱樂部 | 壓縮算法團隊:我們是如何開展對壓縮算法的學習
壓縮模型會加速推理嗎?
深度網絡模型壓縮綜述
![深度網絡<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b><b class='flag-5'>綜述</b>](https://file.elecfans.com/web2/M00/49/80/poYBAGKhwL-AD32TAAAXmCffe-0959.jpg)
基于無線傳感器網絡的簇首提取壓縮算法
深度學習模型壓縮與加速綜述
![深度學習<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b>與加速<b class='flag-5'>綜述</b>](https://file.elecfans.com/web1/M00/95/31/o4YBAFz43HKAcCy4AAAM9BiwzVM510.png)
深度神經網絡模型的壓縮和優化綜述
![深度神經網絡<b class='flag-5'>模型</b>的<b class='flag-5'>壓縮</b>和優化<b class='flag-5'>綜述</b>](https://file.elecfans.com/web1/M00/EA/7D/pIYBAGBzsJGARy7KAAG3pofuQI4613.png)
評論