一、技術應用背景
在人工智能蓬勃發展的浪潮下,大模型在自然語言處理、計算機視覺等諸多領域大放異彩,像知名的GPT以及各類開源大語言模型,其規模與復雜度持續攀升。然而,這一發展也帶來了挑戰,模型越大,對計算資源和存儲資源的索求便越高。
在實際應用場景中,無論是將模型部署于云端服務器,還是讓其在邊緣設備上運行,資源受限的問題都十分突出。比如手機、智能音箱這類邊緣設備,它們的硬件計算能力和內存空間相對有限,難以承載龐大的原始模型運行。在此背景下,大模型量化技術應需而生,其核心目標就是要破解模型在資源受限環境下如何實現高效運行的難題。
二、底層原理
(一)信息的數字化表示
在計算機的世界里,數據是以二進制的形式來存儲和處理的。對于大模型中的權重和激活值而言,其原始的表示形式通常為32位的浮點數(float32)。一個32位浮點數由符號位、指數位和尾數位這三部分構成,憑借這樣的結構,它能夠精準地呈現各種各樣的實數。但這種高精度的表示方式也有弊端,那就是會占用較多的存儲空間。而量化技術的關鍵思路,就是運用更少的比特數來對這些數據進行表示,比如把32位浮點數轉化成8位整數(int8)甚至比特數更低的形式。如下圖,meta-Llama-3-8B模型FP32大小為32GB,用Int8量化后為8GB。
(二)量化過程
量化的操作過程類似給數據劃分“格子”。以將float32量化到int8為例來詳細說明,假設原始數據的取值范圍是[-1, 1],我們要做的是把這個范圍映射到int8的取值范圍[-128, 127]。具體步驟如下:
首先,要確定一個縮放因子(scale),比如通過公式scale = 255 / (1 - (-1)) 來計算得出。接著,將原始的float32數據乘以這個scale,并按照四舍五入的規則取最接近的整數,如此一來,這個整數就會落入int8的取值范圍之中。而在進行推理運算時,還需要將int8數據再除以scale,以此還原回近似的原始值來開展后續的計算。通過這樣的方式,就實現了從float32到int8的量化和反量化過程,就如同在左邊的float32取值范圍和右邊的量化后的int8取值范圍之間,搭建起了一座通過縮放因子實現映射的“橋梁”。
三、技術實現方式
(一)訓練后量化(Post - Training Quantization)
這種量化方式是在模型完成訓練之后才進行的操作。具體而言,先是在全精度(如float32)的條件下完成模型的訓練,之后再對已經訓練好的權重和激活值實施量化。其中,常見的方法是線性量化,也就是前面所提到的依據縮放因子來開展量化的方式。訓練后量化具有實現起來較為簡單的優勢,并且不需要對模型進行重新訓練,所以它很適合用于那些需要快速完成部署的場景。例如,在一些對精度要求并非特別嚴苛的圖像分類應用場景中,直接針對訓練好的模型開展訓練后量化操作,能夠迅速地降低模型的大小,同時也能減少推理時的計算量。
(二)量化感知訓練(Quantization - Aware Training)
此方式是在模型的訓練過程當中就將量化的影響納入考慮范疇。在訓練階段,會模擬量化的實際過程,讓模型從訓練之時就能夠適應低比特數的表示形式。詳細來講,在進行反向傳播計算梯度時,會針對量化操作采取特殊的處理手段,使得模型參數在訓練進程中可以適應由于量化而產生的精度損失。量化感知訓練這種方法能夠在一定程度上降低量化對模型精度所造成的影響,所以它比較適用于那些對精度要求相對較高的應用場景,比如醫療影像識別領域中所運用的大模型。
四、對模型的利弊影響
(一)利
- 顯著減少存儲空間:以從32位浮點數量化到8位整數為例,經過量化后,模型的存儲需求能夠降低大約4倍。這對于那些存儲資源有限的設備,或者是在進行大規模模型部署的情況而言,無疑是大大削減了存儲成本。
- 有效加速推理過程:低比特數的數據在進行計算時,硬件的計算效率會更高。例如,在一些能夠支持int8計算的硬件加速器上,模型的推理速度能夠得到顯著的提升。這樣一來,模型便可以更迅速地響應外界的請求,進而有效提升用戶的使用體驗。
- 切實降低能耗:由于計算量有所減少,并且硬件的計算效率也得到了提升,所以模型在運行過程中的能耗會隨之降低。對于邊緣設備來講,更低的能耗就意味著能夠擁有更長的電池續航時間,這在實際使用中是非常具有優勢的。
(二)弊
- 存在精度損失風險:量化操作本質上是運用有限的離散值去近似原始的連續值,所以不可避免地會帶來一定程度的精度損失。在一些對精度要求極高的任務當中,比如金融風險預測等領域,經過量化后的模型很可能無法滿足相應的精度要求。
- 調優工作較為復雜:量化感知訓練這種方式需要在訓練過程中對更多的超參數進行調整,以此來平衡量化所帶來的各種影響,這無疑增加了模型訓練以及調優工作的復雜性。而且,不同的量化方法以及量化比特數對模型精度的影響也各不相同,所以需要開展大量的實驗來篩選出最為合適的量化方案。
大模型量化技術實則是在努力尋求模型性能與資源限制之間的平衡,盡管它目前還存在一些局限性,但隨著相關技術的不斷發展與優化,量化技術必然會在大模型的廣泛應用中發揮愈發重要的作用,從而讓大模型能夠在更多的場景中“輕裝上陣”,為人工智能的進一步普及和發展提供堅實有力的支持。大模型壓縮技術還有模型蒸餾技術,可以看看。