跳转到内容

输入关键词开始搜索

    LLM.int8 量化

    概念更新 2026-08-02置信度 high#概念#基础#长青#大模型#量化

    面向大语言模型线性层的 8-bit 推理/加载方法:主体矩阵乘使用 int8,并把少量幅值异常的特征维留在较高精度路径,以兼顾内存与数值质量。

    对一组浮点数做 absmax 量化,可取:

    s=maxx127,q=round(x/s),x^=sq.s=\frac{\max |x|}{127},\qquad q=\operatorname{round}(x/s),\qquad \hat x=sq.

    单一全局 scale 容易被极端值支配。vector-wise quantization 按行或按列分别计算 scale,使每个向量更充分利用 int8 范围。

    大模型 activation 中可能出现少量幅值很大的 feature。若与普通值共用 int8 scale,普通值会被压缩到很少的离散级别。LLM.int8 的思路是:

    1. 识别超过阈值的 outlier feature;
    2. 普通部分走 int8 矩阵乘;
    3. outlier 部分保留 FP16 等较高精度计算;
    4. 合并两条路径的结果。

    因此它不是“所有输入和权重无条件都变成 int8”。

    课程通过 load_in_8bit=True、bitsandbytes 的 Linear8bitLt 和相关权重结构展示 8-bit 模型加载。与 LoRA(低秩适配) 结合时,可以冻结量化基座,只训练少量 adapter 参数。

    这能显著降低基座加载内存,但训练还包含激活、LoRA 参数、梯度和优化器状态;显存不能只按“权重从 16 bit 变 8 bit”线性估算。

    • LLM.int8:线性层权重/activation 的数值量化,目标是大模型计算与加载效率。
    • VQ-VAE / FSQ / RVQ:离散潜变量或码本,目标是学习表示与生成。
    • QLoRA:典型方法使用 4-bit NF4、double quantization、paged optimizer 等;“8-bit base + LoRA”不能自动称为 QLoRA。
    • 第 8 讲围绕论文机制与 bitsandbytes 实现;outlier 阈值和性能结论依赖模型与版本。
    • bitsandbytes 示例以 CUDA 环境为主,不能在当前 macOS 上原样执行。
    • 课程引用的内部 API 属于当时版本,不应固化为当前库的永久调用栈。
    • int8 一定损失一半显存并加速一倍:实际还受 kernel、scale、outlier 路径和非权重内存影响。
    • 量化等于压缩文件:量化同时改变运行时表示与矩阵乘路径,不只是存盘压缩。
    • load_in_8bit 适合所有硬件:依赖后端与算子支持。