量化是深度學習、大模型部署、模型壓縮、推理加速和邊緣計算中非常重要的一個術語,用來描述一種把模型中的高精度數值轉換為低精度數值的技術。換句話說,量化是在回答:如何讓模型在盡量保持效果的前提下,占用更少顯存、運行得更快、部署成本更低。
在神經網絡中,模型參數和中間計算結果通常是浮點數。例如,訓練時常用 FP32 或 BF16/FP16 表示權重和激活值。量化則會把這些數值轉換成 INT8、INT4 等更低精度格式。這樣做會減少模型存儲空間和計算開銷,但也可能帶來一定精度損失。
因此,量化常用于大語言模型本地部署、移動端推理、邊緣設備運行、低延遲服務和高并發推理,是大模型工程化落地中的重要優化方法。
一、基本概念:什么是量化
量化(Quantization)指把連續或高精度的數值,近似映射為更少位數的離散數值。
![]()
圖 1:量化技術與低精度優化
例如,一個模型權重原本使用 FP16 存儲,每個參數約占 2 字節;如果量化為 INT8,每個參數約占 1 字節;如果量化為 INT4,每個參數約占 0.5 字節。
可以簡單理解為:FP32 / FP16 / BF16 → INT8 / INT4。
從通俗角度看:量化像是把一張高清照片壓縮成體積更小的圖片。壓縮后文件更小、加載更快,但如果壓縮過度,細節可能會損失。
在模型中,被壓縮的不是圖片,而是大量權重和計算值。
例如,一個 7B 參數模型,如果用 FP16 存儲權重,大約需要:
也就是約 14GB 級別的權重存儲。
如果使用 INT8,權重大小大約減半;如果使用 INT4,權重大小還可以進一步降低。
二、為什么需要量化
量化之所以重要,是因為大模型雖然能力強,但部署成本很高。
大模型通常面臨幾個問題:
? 參數量大,顯存占用高
? 推理速度慢,響應延遲高
? 部署硬件要求高
? 并發服務成本高
? 難以運行在本地或邊緣設備上
例如,一個大語言模型即使只做推理,也需要把大量權重加載到顯存中。模型越大,顯存壓力越明顯。
量化可以緩解這些問題。它的主要價值包括:
? 減少模型文件大小
? 降低顯存占用
? 提高推理速度
? 降低部署成本
? 支持本地和邊緣設備運行
? 提高高并發服務能力
從通俗角度看:量化不是讓模型“更聰明”,而是讓模型“更省”。它關注的是工程效率,而不是單純提升模型能力。
三、量化到底壓縮什么
量化可以作用在模型的不同部分。
1、權重量化
權重量化是最常見的形式。它把模型參數從高精度格式轉換為低精度格式。
例如:
FP16 權重 → INT4 權重權重量化主要減少模型存儲和顯存占用。
2、激活量化
激活值是模型推理過程中各層產生的中間結果。激活量化會把這些中間計算結果也轉換為低精度表示。
它可以進一步減少計算和內存開銷,但對模型精度影響可能更明顯。
3、權重與激活同時量化
有些部署場景會同時量化權重和激活。
例如:
W4A16:權重 INT4,激活 FP16其中:
? W 表示 Weight,即權重
? A 表示 Activation,即激活值
? 數字表示使用的位寬
從實踐角度看,權重量化更常見,也相對容易;激活量化對硬件和算法要求更高。
四、量化的基本思想
量化的核心是把浮點數映射到整數。
![]()
圖 2:量化與反量化工作流程圖
例如,一個浮點數 x 可以近似表示為:
其中:
? x 表示原始浮點數
? q 表示量化后的整數
? s 表示縮放因子
? z 表示零點
? round 表示四舍五入
反量化時,可以把整數近似恢復為浮點數:
其中:
? x? 表示恢復后的近似值
? q 表示量化整數
? s 和 z 用于還原數值范圍
從通俗角度看,量化需要解決兩個問題:用更少的數字刻度表示原來的數值;再盡量把這些刻度還原成接近原值的結果。
由于低精度表示的刻度更少,所以量化一定存在近似誤差。
關鍵在于:誤差是否足夠小,模型效果是否還能接受。
五、常見量化方式
1、訓練后量化
訓練后量化通常稱為 PTQ,即 Post-Training Quantization。它是在模型訓練完成后,直接對模型進行量化。
優點是:
? 簡單
? 成本低
? 不需要重新完整訓練
? 適合快速部署
缺點是:
? 可能帶來精度下降
? 對低位量化更敏感
? 復雜任務中需要校準數據
2、量化感知訓練
量化感知訓練通常稱為 QAT,即 Quantization-Aware Training。它在訓練或微調過程中模擬量化誤差,讓模型提前適應低精度表示。
優點是:
? 精度通常更好
? 適合對精度要求高的任務
? 適合更激進的低位量化
缺點是:
? 訓練成本更高
? 實現更復雜
? 需要額外數據和調參
3、動態量化與靜態量化
動態量化是在推理時動態確定部分量化參數。
靜態量化則通常需要提前使用校準數據估計數值范圍。
可以簡單理解為:
? 動態量化:運行時更靈活
? 靜態量化:部署時更固定
實際選擇取決于模型結構、硬件支持和部署目標。
六、量化與蒸餾、剪枝的區別
量化經常和蒸餾、剪枝一起出現,但三者目標不同。
![]()
圖 3:量化、蒸餾與剪枝的對比
1、量化
量化關注的是:用更低精度表示模型數值。
它主要改變數值表示方式,不一定改變模型結構。
2、蒸餾
蒸餾關注的是:讓小模型學習大模型的能力。
它通常涉及教師模型和學生模型。
3、剪枝
剪枝關注的是:刪除模型中不重要的連接、通道、神經元或結構。
它會減少模型實際結構或計算路徑。
可以概括為:
? 量化:降低數值精度
? 蒸餾:遷移模型能力
? 剪枝:刪除冗余結構
實際工程中,這些方法可以組合使用。
例如:先蒸餾得到小模型,再量化部署。
七、量化的優勢、局限與常見誤解
1、量化的主要優勢
量化最大的優勢是降低模型部署成本。
它可以讓模型:
? 文件更小
? 顯存占用更低
? 加載更快
? 推理更快
? 更適合本地部署
? 更適合移動端或邊緣設備
對于大語言模型而言,INT8 或 INT4 量化常常是本地運行的重要前提。
2、量化的主要局限
量化也有局限。
首先,量化會引入數值誤差。
精度越低,誤差通常越明顯。
其次,不同模型對量化敏感程度不同。
有些模型 INT8 幾乎不掉效果,有些模型 INT4 后效果下降明顯。
再次,量化效果依賴任務。
簡單任務可能影響較小;復雜推理、長文本生成、代碼生成等任務可能更敏感。
此外,量化加速還依賴硬件和推理框架支持。
如果硬件不支持低精度高效計算,模型雖然變小,但不一定明顯變快。
3、常見誤解
誤解一:量化一定會讓模型變快。
不一定。是否變快取決于硬件、框架和算子優化。
誤解二:量化只是壓縮模型文件。
不完全對。量化還可能影響顯存、帶寬、計算速度和部署方式。
誤解三:INT4 一定比 INT8 更好。
不一定。INT4 更省,但更容易損失精度。
誤解四:量化不會影響模型效果。
不對。量化是近似計算,可能影響輸出質量。
八、如何選擇量化方案
選擇量化方案時,需要綜合考慮任務、硬件和效果要求。
如果任務對準確性要求高,可以優先考慮:
? FP16 / BF16
? INT8
? QAT
如果部署資源有限,可以考慮:
? INT8 權重量化
? INT4 權重量化
? 混合精度量化
如果模型用于本地大語言模型推理,需要重點關注:
? 顯存占用
? 上下文長度
? KV Cache
? 推理框架支持
? 量化格式兼容性
? 實際任務效果評估
從實踐角度看,量化方案不是越低越好,而是要在效果、速度、顯存和成本之間取得平衡。
比較穩妥的思路是:先用較高精度建立基線;再嘗試 INT8 或 INT4;最后用真實任務評估效果。
九、Python 示例
下面用簡化示例說明量化的基本思想。
示例 1:估算權重存儲大小
這個例子只估算權重大小。實際推理還需要考慮 KV Cache、激活值和框架開銷。
示例 2:浮點數到整數的簡單量化
這個例子展示了:浮點數 → 整數量化值 → 近似恢復。
示例 3:量化誤差
量化誤差越小,說明低精度表示越接近原始數值。但在真實模型中,需要看最終任務效果,而不是只看單個數值誤差。
小結
量化是一種把模型中的高精度數值轉換為低精度數值的模型壓縮與推理優化方法。它可以減少模型大小、降低顯存占用、提升部署效率,但也可能帶來精度損失。對初學者而言,可以把量化理解為:用更少的數值位數近似表示模型參數和計算結果,讓模型運行得更省、更快、更容易部署。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.