量化 · INT8/INT4 · 模型压缩
一个FP16权重占2字节,INT8占1字节,INT4占0.5字节——精度越低,能塞的参数越多。
大模型权重本质是一堆浮点数。FP16用16个bit表示一个数(精度高、范围大),INT8用8个bit(256个离散值),INT4用4个bit(只有16个值)。量化就是把高精度浮点映射到低精度整数:找一个缩放因子scale,让原值×scale落在整数范围内,存整数和scale,用时再除回来。
关键认知:模型权重大多是「密集分布在0附近」的钟形,少数离群值(outlier)很大。朴素量化会被离群值带歪scale,把大多数密集值压到几个整数上——这是精度损失的元凶。现代量化方法(GPTQ/AWQ/SmoothQuant)都在处理离群值:要么按通道缩放、要么屏蔽重要权重、要么把离群值单独存FP16。
选模型大小,看FP16/INT8/INT4三种精度的体积、推理速度、困惑度(越低越好)差距。INT4是性价比拐点。
一个常见误区:量化不是无损的。INT8基本无损,INT4会有2~5%困惑度上升,长任务、数学、代码任务损失更明显。判断标准:跑你的真实任务评测,掉点在2%内就大胆用,掉多了换INT8或上AWQ重压。
2字节/参数,精度满分,体积大,单卡塞不下大模型。
1字节/参数,困惑度涨<1%,速度+50%,首选稳妥方案。
0.5字节/参数,困惑度涨2~5%,速度+100%,单卡跑大模型靠它。
精度损失大,多数任务不可用,研究为主,别上生产。