趋近智
要应用GPTQ、AWQ或INT4和NF4等先进的量化 (quantization)方法,需要实际工具。虽然这些方法的原理涉及对模型权重 (weight)和计算核的复杂修改,但已出现一些库来简化大型语言模型的这一过程。这些工具包抽象了许多底层细节,使您能够对预训练 (pre-training)模型进行量化并为高效推理 (inference)做好准备。将概览我们将在后续章节中使用的主要库,说明它们在LLM量化流程中的具体作用和能力。
Hugging Face生态系统是处理Transformer模型的中心,它提供集成的量化 (quantization)支持。
Transformers: 这个库是核心,提供访问数千个预训练 (pre-training)模型的途径以及用于加载、训练和推理 (inference)的标准接口。重要的是,Transformers集成了量化功能,允许您使用bitsandbytes等库直接将模型加载为低精度格式。bitsandbytes: 该库由Tim Dettmers等人开发,对于在PyTorch模型中直接实现低比特量化,特别是4比特(NF4、FP4)和8比特格式,作用很大。它的主要作用是提供高度优化的CUDA核,用于混合精度矩阵乘法(例如,将FP16激活与INT4权重 (weight)相乘)。当您使用transformers加载模型并设置load_in_4bit=True等标志时,bitsandbytes通常在后台运行,执行必要的权重量化并设置低比特计算。这通常是开始推理量化尝试的最简单方法,尤其适用于加载时直接进行的训练后量化(PTQ)。Accelerate: 尽管它本身不是一个量化库,但Accelerate简化了PyTorch代码在不同硬件配置(CPU、多GPU、TPU)上的运行,并处理设备放置。当对可能无法单独在一块GPU上运行的大型模型进行量化时,或者在运行量化过程本身(这可能计算量大)时,这一点尤其重要。它与Transformers和bitsandbytes协同工作。这些库共同为应用某些类型的PTQ提供了一个便捷集成的环境,主要侧重于由bitsandbytes实现的直接将权重加载为低比特格式。
尽管bitsandbytes提供了集成到Transformers中的直接量化 (quantization),但要实现最佳精度,尤其是在4比特等极低比特率下,通常需要更复杂的算法,如GPTQ和AWQ。为此,已开发出专用库来高效地实现这些方法。
AutoGPTQ: 该库提供了GPTQ(生成式预训练 (pre-training)Transformer量化)算法的易于使用的实现。GPTQ旨在通过逐层处理模型,并使用校准数据迭代地确定权重 (weight)矩阵的最佳量化参数 (parameter)来最小化量化误差。它以在4比特精度下保持良好精度而闻名。AutoGPTQ通常需要一个独立的量化步骤,您在此步骤中提供模型和校准数据集。输出是量化后的模型状态字典和配置文件,这些文件随后可以加载进行推理 (inference),通常可以重新集成到Transformers框架中。Hugging Face Hub上许多流行的量化模型都已通过此库或类似实现使用GPTQ进行过处理。AutoAWQ: 该库实现了AWQ(激活感知权重Q量化)算法。AWQ遵循并非所有权重对模型性能都同等重要的思想。它根据分析校准阶段的激活尺度来识别重要权重,并在量化过程中选择性地保留它们的精度。目标是实现与GPTQ相当的量化效果,但量化时间可能更快。与AutoGPTQ类似,使用AutoAWQ通常涉及一个带有校准数据的独立量化步骤,生成一个可用于部署的量化模型。这些专用库提供了比Transformers中bitsandbytes直接集成更高级的PTQ选项,以牺牲简单性换取可能更高的精度,尤其是在激进量化场景(例如INT3或INT4)中。
一些部署和优化框架集成了对运行量化 (quantization)模型甚至自己执行量化的支持:
虽然我们将在课程后续章节(第4章)中对这些部署框架进行进一步介绍,但值得了解的是,它们通常代表使用AutoGPTQ或bitsandbytes等库量化模型的预期运行环境。
了解每个库的功能和侧重是有效实施量化的第一步。bitsandbytes在Hugging Face中为基本的低比特操作提供了便捷集成。AutoGPTQ和AutoAWQ则提供更复杂的PTQ算法,以更好地保持精度。TensorRT-LLM和vLLM等部署框架借助这些量化模型进行优化推理。后续章节将提供实践操作指南,说明如何使用其中一些工具包量化LLMs。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造