趋近智
任何量化 (quantization)技术的有效性都高度依赖于用于表示压缩后的权重 (weight)(有时也包括激活值)的特定数值格式。这一点在将LLM推向量 (vector)化位数低于8位的程度时变得尤为重要,因为标准的整数和浮点类型往往不足或不理想。理解这些低位数据类型的特点、优点和局限性,对于实现GPTQ、AWQ等方法以及有效运用硬件加速来说非常重要。
本节考察LLM量化中常见和新兴的数据类型,侧重于INT8以下的格式。我们将分析它们的结构、表示能力以及它们带来的权衡。
整数格式较为简单,通常涉及一个缩放因子,有时还有一个零点,用于将量化 (quantization)后的整数映射回近似的浮点范围。
尽管本课程侧重于更先进的技术,但INT8(8位整数)常用作基准。使用8位提供 个不同的级别。这通常在压缩和精度保持之间提供了良好的平衡,特别是当使用如逐通道缩放等技术时。CPU和GPU对INT8操作的硬件支持广泛,使其成为一个成熟的优化目标。它的表示方法遵循前面讨论的原理:
这里 是INT8值, 是缩放因子, 是零点(一个表示浮点零的INT8值)。
将位宽进一步降低到INT4,相比INT8能将内存需求减半,并在兼容硬件上实现快得多的计算。然而,它仅提供 个不同的表示级别。这种极度粗糙的量化使保持精度变得更具挑战性。
研究关注INT3 ( 个级别) 和INT2 ( 个级别) 等更低的位宽。这些提供了最大的压缩,但面临严重的精度下降。它们目前在实际部署中不那么常见,并且通常需要先进的技术(如量化感知训练)或高度专业化的算法才能可行,通常限于模型的特定部分。
浮点格式以不同方式分配比特,将一些分配给指数,另一些分配给尾数(或有效数字)。这使得它们能够表示比相同位宽的整数更宽的动态范围,尽管在该范围内精度有所不同。
FP8使用8位,类似于INT8,但采用浮点表示。存在两种主要变体,由指数(E)和尾数(M)的位数以及一个符号位定义:
FP8格式达到了平衡,由于指数位的存在,与INT8相比能更好地处理异常值,同时仍比FP16/BF16提供显著的内存和计算节省。原生FP8支持是NVIDIA H100/L40 GPU等最新硬件的一个特点,使其成为LLM高效推理 (inference)中一个越来越重要的格式。
FP4在浮点结构中仅使用4位,进一步推进了技术。常见配置是E2M1(1个符号位,2个指数位,1个尾数位)。
认识到标准格式的局限性,研究人员开发了根据LLM中观察到的值分布进行定制的专用数据类型。
NormalFloat 4位(NF4)是一种非均匀数据类型,随QLoRA方法引入。它的设计基于一个观察结果,即预训练 (pre-training)LLM中的权重 (weight)通常遵循正态分布 ,通常集中在零点()附近。
INT4(均匀间隔)、NF4(非均匀,零附近更密集)以及潜在的FP4 E2M1(非均匀,有限值)在缩放到范围 [-1, 1] 时的可表示值比较。这显示了每种格式提供的不同精度分布。
数据类型的选择涉及权衡多个因素:
| 特性 | INT8 | INT4 | FP8 (E4M3) | FP4 (E2M1) | NF4 |
|---|---|---|---|---|---|
| 位数 | 8 | 4 | 8 | 4 | 4 |
| 级别 | 256 | 16 | ~240 独特 | ~14 独特 | 16 |
| 类型 | 整数 | 整数 | 浮点 | 浮点 | 固定(非均匀) |
| 均匀性 | 是 | 是 | 否 | 否 | 否 |
| 精度 | 中等 | 低 | 中等(变化) | 很低(变化) | 零附近高 |
| 范围 | 有限(受缩放限制) | 非常有限 | 更宽 | 有限 | 有限(受缩放限制) |
| 硬件 | 常见 | 新兴/内核 | 新兴(GPU) | 研究/内核 | 内核 |
| 常见用途 | 权重 (weight)/激活值 | 权重(PTQ) | 权重/激活值 | 权重(研究) | 权重(QLoRA) |
选择格式的因素:
总而言之,数据类型不仅是一个细节,更是LLM量化中的一项基本选择。INT4、FP8和NF4等格式能够实现部署大型模型所需的大幅内存和计算节省。然而,必须审慎使用它们,通常结合先进的量化算法和仔细的评估,以平衡性能提升与潜在的精度影响。理解这些格式为选择和实现后续章节中讨论的先进技术提供了支撑。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•