部署量化大型语言模型时,一个基本决定是关于激活的量化参数(缩放因子和零点)何时确定。这个选择引出两种主要方法:静态量化和动态量化。尽管前几章侧重于训练后量化(PTQ)等技术,这些技术通常通过校准隐式使用静态量化,了解静态和动态方法之间的权衡对于处理部署难题很重要,尤其是在应对大型语言模型的独特特点时。静态量化:预校准的效率静态量化会提前确定权重以及激活的量化参数,这非常重要。此过程通常包括:校准: 在一个小型、有代表性的数据集(校准数据集)上运行模型,以观察模型中各个点(例如,线性层的输入、注意力输出)的激活值分布。参数计算: 根据校准期间观察到的范围,为每个激活张量计算固定的缩放因子和零点。离线权重量化: 使用模型权重自身的分布来量化它们(通常按通道或按组进行)。部署: 部署带有量化权重和预先计算的激活量化参数的模型。推理时,激活使用这些固定的、预先确定的参数进行量化。优点:性能: 通常提供最高的推理速度。由于量化参数是固定的,运行时确定这些参数的计算开销被消除。这使得可以使用假定固定缩放因子的优化低位计算核心。可预测性: 性能更一致,因为量化计算是常量。硬件加速: 与硬件加速器(GPU、TPU、专用ASIC)良好匹配,这些加速器通常有针对固定缩放因子操作的优化指令。缺点:对校准的依赖: 效果完全取决于校准数据集的质量和代表性。如果校准数据不能准确反映实际推理中看到的激活分布,准确性会明显下降。为处理多样输入的LLM选择一个好的校准集可能很困难。对异常值的敏感性: 校准期间遇到的极端异常值会使计算范围失真,导致大多数值的量化分辨率不良并影响准确性。前面讨论的处理异常值的技术在这里变得尤其适用。前期工作量: 需要额外的校准步骤,这增加了模型准备流程的复杂性。动态量化:即时调整动态量化则在运行时逐实例确定激活的量化参数。此过程通常如下所示:离线权重量化: 权重通常仍然像静态量化一样离线量化,以减小模型大小并可能加快权重加载速度。运行时激活分析: 当每个输入通过网络传播时,会动态计算每个激活张量的范围(最小值和最大值)。参数计算与量化: 根据该特定激活张量观察到的运行时范围计算缩放因子和零点,然后将其量化。计算: 执行计算(例如,矩阵乘法),如果底层硬件不能高效地原生支持动态缩放的低位操作,则可能涉及反量化回更高精度格式。优点:简单性(无需校准): 消除了对校准数据集和相关校准过程的需求,简化了初始量化流程。适应性: 可以比静态量化更好地处理意料之外的激活范围,因为参数是根据当前输入调整的。这对于处理各种提示的LLM可能显得有益。缺点:性能开销: 实时计算激活的量化参数会引入显著的计算开销,通常导致比静态量化更高的延迟。有限的硬件优化: 许多硬件加速器都针对预定义缩放的操作进行了优化。动态量化可能无法充分从这些优化中受益,甚至可能涉及代价较高的数据类型转换(例如,量化 -> 反量化 -> 计算 -> 量化)。潜在的运行时内存增加: 需要动态存储或重新计算缩放因子/零点,与使用预先计算的静态值相比,这会增加运行时内存使用。准确性差异: 尽管具有适应性,但实时计算本身是一种近似,可能不总是比经过良好校准的静态模型产生更好的准确性。开销也可能抵消对延迟敏感应用的益处。静态量化与动态量化的选择此决定取决于您LLM部署的特定要求:特性静态量化动态量化对LLM的考量主要目标最高性能(延迟/吞吐量)实现简易性LLM推理通常受延迟限制;静态量化通常因性能而被选择。性能更高(延迟更低)更低(因开销导致延迟更高)动态缩放的开销对于大型LLM层来说可能很大。准确性很大程度上取决于校准质量对校准依赖较少,适应性强静态量化若校准得好可获得优异准确性。动态量化不保证更好。实现工作量更高(需要校准)更低(无校准步骤)校准增加了流程复杂度,但通常是每个模型版本的一次性成本。内存(模型大小)更小(量化权重)更小(通常使用量化权重)权重存储减少方面有类似好处。内存(运行时)更低(固定参数)潜在更高(实时参数)静态量化通常更利于运行时内存效率。硬件支持与优化核心更匹配可能退回到较慢的执行路径对于低位类型(INT8、INT4)充分发挥GPU/TPU加速的优势很重要。使用场景延迟敏感应用、边缘设备、生产环境快速原型开发、校准困难大多数生产环境的LLM部署倾向于静态量化以获得性能。何时优先选择LLM的静态量化:生产部署: 当推理速度(延迟、吞吐量)和资源效率是主要考量时。面向硬件加速器: 为了充分发挥GPU、TPU或定制芯片上可用的优化低位计算核心的优势。稳定输入分布: 当输入数据的性质和由此产生的激活分布得到合理地理解,并且可以通过校准集捕捉时。何时考量LLM的动态量化:快速实验: 当需要快速评估量化的可行性而无需投入校准过程时。校准困难场景: 如果获取具有代表性的校准数据集非常困难或计算成本过高。性能要求不严格: 在动态计算的运行时开销可接受的应用中。实际上,对于部署高性能量化LLM,静态量化是主流方法。源于预计算参数和硬件加速兼容性的性能优势,通常会超过校准步骤增加的复杂度。前面讨论的改进型PTQ技术(如GPTQ、AWQ)本质上依赖校准并生成静态量化模型,正是因为性能对于这些大型模型非常重要。动态量化仍然是一个选项,但在生产环境中优化最先进的LLM推理时较不常见。了解这种权衡有助于调试性能瓶颈,并在面临部署限制或意外准确性问题时做出明智选择。