4 位元整數類型

論文

2023 年已發表數篇論文,介紹 4 位元整數及其在大型語言模型中的用法。雖然它們的範圍有限,但透過仔細選擇縮放參數,當用於權重壓縮(僅權重量化)時可獲得良好的準確性,在某些情況下也可用於活化量化。

AWQ:用於 LLM 壓縮和加速的活化感知權重量化活化感知權重量化 (AWQ) 著重於 LLM 中權重的量化,方法是考慮到並非所有權重都同樣重要。此方法旨在根據活化來保護重要權重,而不是依賴反向傳播或重建技術。透過尋找可保留關鍵權重的最佳每通道縮放,AWQ 旨在將量化錯誤降至最低。

GPTQ:用於生成式預訓練轉換器的精確訓練後量化GPTQ 提出一種基於近似二階資訊的單次權重量化方法。GPTQ 實現顯著的壓縮增益,將每個權重的位元寬度減少到 3 或 4 位元,與未壓縮的基準相比,準確性下降可忽略不計。

了解用於轉換器模型的 INT4 量化:延遲加速、可組合性和失敗案例 本論文討論權重和活化的 4 位元量化 (W4A4)。結果表明,W4A4 量化對於僅編碼器和編碼器-解碼器模型幾乎沒有準確性下降,但對於僅解碼器模型會導致準確性顯著下降。為了實現使用 W4A4 的效能增益,該研究引入高度最佳化的端對端 W4A4 編碼器推理管線,支援各種量化策略。

因此,在 onnx==1.17.0 中引入了兩種新類型,支援一組有限的運算子,以便使用 4 位元資料類型進行壓縮

  • UINT4:4 位元無號整數,值在 [0, 15] 範圍內

  • INT4:4 位元帶號整數,使用二補數表示法。值在 [-8, 7] 範圍內。

轉換

從 4 位元轉換為任何更高精度的類型都是精確的。轉換為 4 位元類型是透過四捨五入到最接近的整數(與偶數的關係)最接近的偶數整數並截斷來完成。

封裝與解封裝

所有 4 位元類型都以 2x4 位元儲存在單一位元組中。第一個元素儲存在 4 個 LSB 中,第二個元素儲存在 4 個 MSB 中。也就是說,對於陣列中連續的元素 x 和 y

pack(x,y): y << 4 | x & 0x0F
unpack(z): x = z & 0x0F, y = z >> 4

如果元素總數為奇數,則會附加 4 位元的填補。大小為 N 的 4 位元張量的儲存大小為 ceil(N/2)