> ## Content Index
> Fetch the complete content index at: https://lucent.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 模型量化
- URL: https://lucent.blog/1739259842228/
- Published: 2025-02-11T07:44:44.000Z
- Updated: 2026-08-21T00:49:56.000Z
- Author: Lucent
- Tags: AI, 大模型

模型量化（quantization）指的是用更少的bit表示模型参数，从而减少模型的大小，加速推理过程的技术。

模型量化是把模型的参数从**FP32**映射到`n`bit位的过程, 简单来说就是在**定点数**与**浮点数**等数据之间建立一种数据映射关系, 使得以较小的精度损失代价获得了较好的收益。 例如FP32-->INT8可以实现4倍的参数压缩，在压缩内存的同时可以实现更快速的计算，从而有效地提高模型的性能; 最极端的二值量化理论上甚至可以实现32倍的压缩，但是过度的压缩会导致模型的精度快速下降, 所以更多量化的时候需要做好精度和性能的权衡.

工业界一般使用int8量化, 在模型推理前需要把FP32映射为int8进行计算, 然后在输出的时候做一个**去量化**操作, 把计算的int8结果映射回FP32.

![模型量化过程](https://obj.lemonc.cc/files/2025/02/11/125411.png)

关于量化的3个问题:

- 为什么不直接训练一个低精度的网络? 一般训练使用的是梯度下降法, 直接用 **定点数**做参数训练很容易导致梯度消失, 训练的模型会欠拟合, 所以训练阶段我们还是要用 **浮点数** 来做参数.
- 为什么可以做量化? 神经网络模型一般有较好的抗干扰能力对噪声不敏感，量化相当于对原输入加入了大量的噪声, 对模型的精度一般不会造成太大影响.
- 为什么用低精度数量化后性能可以提升? 首先我们要知道一点就是: 模型的性能主要由模型的**参数量**和**计算量**来决定的. **参数量**的大小直接决定模型的大小，也影响推断时对内存的占用量以及内存的访问次数. 很多时候模型计算需要内存和CPU共同协作, 同一个计算量下, 模型越大内存占用就越大内存访问次数也就越多, 而我们知道CPU和内存的速度根本就不在一个数量级, 所以模型的参数量大小一般决定了模型性能的**下限**.

**计算量**越大的模型, 性能一般越差, 我们知道CPU或者GPU的FLOPS(每秒浮点计算量)是相对固定的, 模型的计算量大小是决定了模型性能的**上限**.

### **模型量化作用**

- 减少内存带宽和存储空间
- 提高系统吞吐量（throughput），降低系统延时（latency）
- 易于在线升级，模型更小意味着更加容易传输
- 减少设备功耗，内存耗用少了推理速度快了自然减少了设备功耗
- 支持微处理器，有些微处理器属于8位的，低功耗运行浮点运算速度慢，需要进行8bit量化