量化格式对比:GGUF 与 GPTQ 与 AWQ 与 NF4
你刚刚完成了一个 70 亿参数模型的微调。原始的半精度浮点数权重大小为 14 GB。你的目标部署环境是一块拥有 8 GB 显存的消费级图形处理器,或者是一台采用统一内存架构的 ARM 架构苹果笔记本电脑,又或许是一个按图形处理器内存使用量计费的云端实例。这些数字对不上。该模型在当前状态下无法适配。你需要缩小它的体积,并且需要以一种不会让它变成随机数生成器的方式进行缩小。
这就是权重量化发挥作用的地方。将每个参数从 16 位减少到 4 位,可以使内存占用减少为原来的四分之一,对于一个 70 亿参数的模型来说,即从 14 GB 降至大约 3.5 GB。诀窍在于如何执行这一操作,因为并非所有的 4 位值都是相同的,而且每种格式在内存、速度、准确性和可移植性之间的权衡也各不相同。
为何量化格式的选择至关重要
格式决定了三件事:哪些硬件可以运行该模型、推理运行的速度有多快,以及你会牺牲多少准确性。这三个约束条件相互制约。一种针对中央处理器推理优化的格式(GGUF)使用的量化方案与专为图形处理器批量服务设计的格式(GPTQ)不同。一种在相同位宽下保留更多准确性的格式(AWQ)可能需要更高的校准成本。一种专为训练设计的格式(通过 bitsandbytes 库实现的 NF4)并不是推理部署的最佳选择。
选择错误的格式意味着要么未能充分发挥性能潜力,更糟糕的是,围绕推理引擎不支持的格式构建部署管道。目前的格局已稳定为四种主要格式,每种格式都有明确的定位。
四种格式:工作原理
GGUF
GGUF 是 GGML 通用格式,由 llama.cpp 项目创建。它是一种容器格式,将模型权重、分词器和超参数捆绑到一个文件中,且权重已经过量化。GGUF 内部的量化方法范围从 Q2_K 到 Q8_0,其中 Q4_K_M 是最受欢迎的平衡点。
GGUF 量化使用分块方案:权重被分组为块(通常每块 32 个权重),每个块都有自己的缩放因子和(可选的)零点。K-quant 变体(如 Q4_K_M、Q5_K_M 等)在模型的不同部分混合使用不同的位宽,在更重要的层上分配更多的位数。
该格式专为中央处理器和苹果硅芯片推理而设计。由于 llama.cpp 可以将某些层卸载到图形处理器,GGUF 也适用于中央处理器加图形处理器的混合设置,但其主要目标是那些没有图形处理器或图形处理器容量不足的内存受限环境。
GPTQ
GPTQ(图形处理器训练后量化)由奥地利 IST 研究所的 Frantar 等人于 2023 年提出。它是一种仅权重量化方法,使用二阶优化过程:它逐列量化权重,利用损失函数的海森矩阵来调整剩余未量化的权重,以补偿已在量化权重上丢失的信息。
原始实现 AutoGPTQ 已于 2025 年初归档。活跃的继任者是来自 ModelCloud 的 GPTQModel(2026 年 6 月发布的 v7.1.0 版本),它支持 Marlin 和 Triton 内核以实现快速的图形处理器推理。GPTQ 模型通常量化为 4 位(偶尔也有 3 位和 8 位),并以兼容 Hugging Face 的 safetensors 格式存储,附带一个 quantize_config.json 元数据文件。
GPTQ 需要图形处理器才能运行。Marlin 内核(int4 x fp16)在英伟达图形处理器上实现了近乎无损的吞吐量,使得 GPTQ 成为在数据中心图形处理器上提供量化模型服务的默认选择。
AWQ
AWQ(激活感知权重量化)由麻省理工学院的 Lin 等人于 2024 年提出。
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。