趋近智
尽管标准8比特整数量化 (quantization)(INT8)提供了显著优势,但现代大型语言模型(LLM)的规模通常需要更大力度的压缩。进一步降低到INT8以下,主要是4比特范围,可以显著减少内存占用并加速计算,使在资源受限硬件上运行大型模型成为可能。然而,这种增加的压缩伴随潜在的精度下降,需仔细权衡所用技术。
本节探讨了用于LLM的主要低比特量化策略,侧重于低于INT8精度的方法。
INT8量化最直接的扩展是进一步降低精度至4比特(INT4)。仅使用4比特意味着我们可以表示 个不同的整数值。这立即将内存需求比INT8减半,并比16比特浮点格式(如FP16或BF16)减少了四倍。
与INT8类似,INT4量化涉及将原始浮点值(权重 (weight)或激活)映射到这个有限的整数集合。映射通常使用缩放因子()和可选的零点():
截断边界取决于选择有符号还是无符号表示。缩放因子()和零点()可以按张量、按通道,甚至按通道内的一组权重来确定。分组量化(例如,将张量内的64或128个值分组,并为每组计算缩放因子/零点)在LLM量化中已变得普遍,因为它提供比按通道更细的粒度,有助于保持精度,特别是在INT4等较低比特深度下。
挑战: 用仅16个不同的级别表示LLM权重和激活的宽动态范围具有挑战性。异常值对模型性能很重要,但特别容易出现大的量化误差。因此,普通的INT4训练后量化通常会导致不可接受的精度损失。像GPTQ和AWQ(稍后介绍)这样的高级PTQ算法是专门开发用于减轻在目标为INT4时这种退化的。此外,INT4矩阵乘法的高效硬件支持对于实现性能提升不可或缺,尽管这在现代GPU和加速器中变得越来越普遍。
除了整数,低比特量化 (quantization)也可以使用浮点表示。像FP4(4比特浮点)和FP8(8比特浮点)这样的格式分配比特的方式与整数不同,通常为符号位、指数位和尾数位保留比特。
例如,一个FP4格式可能会使用1比特用于符号,2比特用于指数,1比特用于尾数。这种结构使得低比特浮点数能够表示比相同比特宽度的INT格式更宽的动态范围,尽管可表示数字之间的精度可能较低。指数位使得表示非常小和非常大的数字比线性整数映射更有效。这有利于处理LLM权重 (weight)和激活中经常出现的异常值。
FP8获得了广泛关注,特别是在NVIDIA Hopper和Ada Lovelace GPU等新型架构中获得原生硬件支持。两种常见的FP8变体是:
尽管FP4标准化程度较低,硬件支持也比FP8更少见,但这种方法说明了低比特表示的另一种方法。低比特整数格式和浮点格式之间的选择涉及动态范围覆盖、精度以及目标硬件上高效计算内核可用性之间的权衡。
NF4是QLoRA论文中提出的一种特殊的4比特数据类型。它的设计基于一个观察:预训练 (pre-training)神经网络 (neural network)中的权重 (weight)通常遵循零均值正态分布。NF4是信息论上最优的格式,适用于符合这种分布的数据。
与标准INT4使用均匀间隔的量化 (quantization)级别不同,NF4使用由标准正态分布()的分位数决定的非均匀级别。具体来说,NF4中16个可表示的值的选择使得每个值表示 分布概率质量(曲线下面积)的等量 部分。这意味着NF4将更多精度分配给接近零的值,即正态分布权重的主要部分所在的地方,而将较少精度分配给尾部稀有、幅度较大的值。
NF4的特点:
NF4常结合双重量化(对量化参数 (parameter)本身进行量化)等技术使用,以进一步降低内存开销。像bitsandbytes这样的库提供了NF4量化和计算的高效实现。
上图说明了均匀量化(如标准INT4)和非均匀量化(如NF4)之间的区别。均匀量化使用均匀间隔的级别,而NF4将其表示能力集中在零附近,反映了LLM权重的典型分布。请注意,这是一个简化的一维表示;实际量化涉及缩放。
选择合适的低比特技术取决于几个因素:
bitsandbytes,INT4/FP8的TensorRT-LLM)?降低到INT8以下引入了复杂性,但通常是高效部署最大规模LLM的必要一步。了解INT4、低比特FP格式以及NF4等特殊类型的属性和权衡,是有效应用这些方法的基础。然而,这些方法的成功很大程度上依赖于校准数据和所用训练后量化 (quantization)算法的复杂程度,我们将在后续章节中介绍。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造