---
# System prepended metadata

title: '論文閱讀 : LLM.int8()'

---

# 論文閱讀 : LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale
## 問題背景
- 大型語言模型（LLMs）推理時需要大量 GPU 記憶體。
- 現有的推理方式通常使用 16-bit 或 32-bit 精度，資源成本高。
- 95% 的參數 和 65–85% 的計算量 集中在：
    - Feed-forward 層
    - Attention projection 層
## 解決方案
- 將 transformer 模型中的前饋層與注意力投影層轉為 Int8 推理。
- 推理所需記憶體減半，但保留與 full precision 相同的效能表現。
- 可直接使用

## 主要解決方法
1. 向量級量化（Vector-wise Quantization）
    - 適用規模 : 可支援至 2.7B 參數模型而不損失效能。
    - 每個內積指定不同的 normalization constant，處理大部分特徵。
    - 核心:
        - 矩陣乘法被視為一系列獨立的 row × column 內積。
        - 對每個內積使用 獨立的 normalization 常數，提高量化精度。
        - 再透過 row/column normalization 的 outer product 還原原始輸出結果。
3. 混合精度處理（Mixed-Precision Decomposition）
    - 從 6B 開始出現異常大值（最大值比一般特徵高 20 倍）。
        - 6.7B 模型規模出現「相變」現象：
            - 所有層都出現極大特徵。
            - 約 75% 序列維度受影響。
            - 每個序列中出現 15 萬個 outlier 特徵，但集中在僅 6 個維度。
        - 這些極端值特徵對模型至關重要：
            - 將這些維度設為 0 會使：
                - Attention softmax 的 top-1 機率下降 20%+
                - Perplexity 惡化 600–1000%
            - 隨機移除相同數量的特徵，影響幾乎可以忽略（<0.3%）
    - 針對模型中的「突變特徵（outlier features）」，單獨使用 16-bit 計算。
    - 超過 99.9% 的權重仍以 8-bit 執行。
![image](https://hackmd.io/_uploads/HJUwnmLLxx.png)


## 實驗結果 : LLM.int8() 在各種模型規模下的效果評估（125M～175B）
![image](https://hackmd.io/_uploads/HyWs6GDLge.png)
### 語言建模效能（Perplexity） — C4 驗證集
- LLM.int8() 是唯一在所有模型規模下能保留完整 perplexity 的方法。
- 其他量化方法在大模型下效果明顯惡化：
    - Absmax、Row-wise、Vector-wise quantization 在超過 2.7B 參數後效能惡化。
    - Zeropoint quantization 可延伸到 6.7B，但超過後亦退化。
    - 特別是 13B 模型 下，量化後的效果甚至比 6.7B 還差。
- 對 175B 參數 的模型，推理準確率無明顯損失。
### Zero-shot 任務表現
- LLM.int8() 在 125M～175B 的 OPT 模型中皆保留 full precision（16-bit）效能。
- 傳統 8-bit Absmax Vector-wise 方法表現嚴重退化，趨近隨機猜測。
### 推理速度與延遲
- 在 小模型（≤6.7B） 中：
    - LLM.int8() 的推理略慢於 FP16 baseline（量化額外開銷）。
- 在 大模型（如 175B） 中：
    - LLM.int8() 的大型矩陣乘法推理速度約為 FP16 的兩倍快。
    
    
## 隨模型規模擴大而出現的「極端特徵值」與其對模型與量化的影響
![image](https://hackmd.io/_uploads/Skf8kmv8gl.png)
### 主要發現
- 隨 Transformer 模型規模擴大（如 13B），會出現大幅度特徵值（magnitude ≥ 6）
    - 對 attention 和 整體預測性能 有重大影響
- 在 13B 模型中：
    - 每個 2048 token 序列可出現 多達 150,000 個 outlier
    - 這些值高度集中，僅出現在最多 7 個 feature 維度
- 如果將 magnitude ≥ 6 的特徵視為 outlier 並用 16-bit 計算，則：
    - 可完全避免 perplexity 劣化
#### Outlier 定義
- 特徵值絕對值 ≥ 6.0
- 出現在 至少 25% 的 Transformer 層
- 且在 至少 6% 的序列維度 s 上出現
- 僅針對 Attention 的投影層（K/Q/V/Output） 和 FFN 的第一層（Expansion） 進行分析
    - 忽略 FFN 的 Contraction 層與 attention function 本體
#### 穩健性驗證
- 三種不同訓練框架訓練的模型（OpenAI GPT-2、Meta Fairseq、Eleuther GPT-J）
- 兩種推理框架進行分析（Fairseq, Hugging Face Transformers）

## 結論
- 首次實現：支援 數十億參數的 Transformer 模型進行 無效能損失的 Int8 量化推理。
- 方法基礎：
    - 對 大幅度異常特徵（outlier features） 的觀察與分析
    - 結合：
        - ector-wise quantization
        - 混合精度分解（Mixed-precision decomposition）
- 實驗證明：LLM.int8() 可完整保留高達 175B 模型的推理效能

### 限制
- 模型規模上限為 175B，超過 175B 的模型可能會出現新的 emergent 現象
- 未對 Attention 函數進行 Int8 量化

### LLM.int8() 是一種「無需校準資料的靜態量化」方法
- 對每個內積（inner product）分別做 vector-wise quantization
    - 不再依賴整體 activation 範圍
    - 每個 row/column 自行 normalize，直接套公式量化
- Outlier 特徵使用 FP16 處理（混合精度）