趋近智
模型权重 (weight)和激活的量化 (quantization)减少了内存占用,并能大大降低计算需求。然而,这些理论优势仅在底层硬件能高效执行这些低精度数据类型的操作时,才能体现为实际的推理 (inference)速度提升。简单地在仿真低精度数据上运行标准浮点代码几乎没有益处。真正的加速需要专门的硬件功能和指令,这些功能和指令是为整数和低精度算术设计的。
现代处理器,特别是GPU和专用加速器,有效处理量化计算的方式,构建了量化算法与性能提升之间的主要关联。
在最根本的层面,CPU和GPU拥有算术逻辑单元(ALU),能够比浮点单元更快、能耗更低地执行整数操作(例如8位整数乘法和加法)。将计算量化 (quantization)到INT8或INT4等格式,可直接将计算映射到这些更高效的单元。
在基本整数ALU的基础上,明显的加速来自于借助于CPU上可用的单指令多数据(SIMD)指令(例如AVX扩展)和GPU的大规模并行架构的数据并行性。SIMD指令允许将单个操作同时应用于封装到更大寄存器中的多个数据元素。例如,一个128位SIMD寄存器可以容纳16个INT8值,可能允许在与一到两个FP32乘法相似的时间内发生16次乘法。
加速深度学习 (deep learning),尤其是Transformer模型的根本,在于高效执行大型矩阵乘法(GEMM - 通用矩阵乘法)。现代GPU(例如NVIDIA的Ampere、Hopper及后续架构)和专用加速器(例如Google TPU、移动SoC中的NPU)都包含专门为混合精度矩阵运算设计的硬件单元。
NVIDIA的Tensor Core就是一个主要示例。这些单元设计用于在特定精度下对小矩阵(通常为4x4或更大)执行融合乘加操作。例如,一个Tensor Core能够在单个时钟周期内将两个4x4的FP16或INT8矩阵相乘,并将结果加到一个FP32或INT32累加器矩阵中。
实现加速的主要方面有:
理论吞吐量的提升可以很显著。如果一个硬件单元支持的INT8矩阵乘法速度是FP16的4倍,而FP16是FP32的2倍,那么从FP32转向INT8理论上可以在矩阵乘法吞吐量(以TOPS - 每秒万亿次操作衡量)方面提供8倍的增长。
支持原生FP32、FP16和INT8的加速器上矩阵操作的相对理论吞吐量增加,以及模拟INT4的增益。实际加速效果在很大程度上取决于内存带宽和内核效率。
极端量化(例如NF4、FP4、二值/三值)会使加速情况变得更复杂。对这些格式的原生硬件支持不太普遍。
如果原生硬件不支持,计算可能会被仿真:低精度值被解包,转换为支持的格式(例如FP16),使用标准单元进行计算,结果可能会被重新量化。这种仿真增加了开销,可能会削弱甚至抵消使用低精度格式的性能益处,尽管内存节省仍然能够实现。
量化 (quantization)减少了需要从内存(权重 (weight)、激活)读取的数据量。较低的精度意味着每次内存事务可以获取更多的值。例如,从FP32(4字节)切换到INT8(1字节)意味着可以在相同的内存访问周期内加载四倍的权重数量。
获取INT8权重所需的内存带宽比FP32权重少,以实现相同数量的参数 (parameter),这可能缓解内存瓶颈。
这尤其重要,因为许多LLM操作,特别是在自回归 (autoregressive)解码(一次生成一个token)期间,通常受限于内存带宽而非计算能力。通过量化减少数据移动可以径直带来这些场景下的更低延迟,即便计算操作本身并未显著加快。硬件或优化软件库高效地打包和解包这些低精度值,对于实现这些提升是必要的。
硬件功能只能通过软件访问。编译器(例如XLA、TVM)和运行时库(例如NVIDIA的cuDNN、TensorRT;Intel的oneDNN)在将高级深度学习 (deep learning)图转换为使用Tensor Core等专用单元的低级硬件指令序列方面,起着重要作用。
这些库包含针对常见操作(卷积、矩阵乘法、注意力)的优化内核,这些内核专门编写用于运用低精度硬件功能。它们处理:
在实现量化 (quantization)(尤其是PTQ或QAT)时,使用对目标硬件的低精度能力有强大后端支持的框架和库,对于实现性能提升是必要的。
总而言之,硬件加速并非量化的必然结果。它依赖于专用整数和矩阵计算单元的存在、对低精度数据类型的有效处理,以及复杂的编译器/运行时支持,以将量化操作有效映射到硬件上。在设计和评估先进的量化策略时,了解目标硬件的能力和局限性是必不可少的。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•