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