詳細解釋
INT8(8位整數)是將模型權重和激活從FP32/FP16量化到8位整數的技術,減少4倍存儲和計算,是模型部署的標準優化。
量化原理:
- 映射:FP32值映射到[-128, 127]或[0, 255]範圍
- 縮放因子:scale = (max - min) / 255
- 零點:非對稱量化的偏移量
- 公式:INT8 = round((FP32 - zero_point) / scale)
量化類型:
- 對稱量化:零點為0,範圍對稱(如[-127, 127])
- 非對稱量化:可調整零點,適合非對稱分布
- 逐層量化:每層獨立縮放因子
- 逐通道量化:卷積每輸出通道獨立縮放(精度更高)
量化方式:
優勢:
- 存儲:模型大小減少4倍
- 推理速度:INT8計算遠快於FP32
- 功耗:移動和邊緣設備能效大幅提升
- 帶寬:記憶體帶寬需求降低
精度影響:
- 通常損失1-2%準確率(可接受)
- 敏感層保留FP16/FP32(如LayerNorm、Softmax)
- 校準數據質量影響量化效果
硬體支援:
- Intel VNNI:AVX-512 INT8加速
- NVIDIA Tensor Core:INT8支持
- ARM:NEON INT8指令
- 專用NPU:通常只支持INT8
應用場景:
- 移動應用:手機上運行AI模型
- 自動駕駛:車載芯片高效推理
- 雲推理:降低成本提高吞吐
- 物聯網:微控制器上的模型
更低精度:
- INT4:4位量化,極致壓縮
- 二值/三值:1-2位,特殊架構
- 趨勢:精度越來越低,但需專用硬體
INT8是模型部署的標準精度選擇。