量化方案深度对比:INT4、INT8、FP8的精度与速度权衡

引言:为什么需要量化? 大语言模型的参数量和计算量呈指数级增长。一个72B模型在FP16精度下需要约144GB显存,而通过INT4量化可压缩至约36GB——单卡A100 80GB即可运行。量化已成为大模型部署的必经环节,但不同的量化方案在精度、速度和硬件兼容性上差异显著。 三大量化方案原理 INT8量化 INT8将FP16的权重映射到[-128, 127]的整数范围。核心思想是通过缩放因子(scale)和零点(zero point)将浮点数线性映射到整数空间: 量化: q = round(w / scale) + zero_point 反量化:w = scale * (q - zero_point) INT8是一种"安全"的量化方案,几乎所有主流GPU(Ampere及以上)都原生支持INT8矩阵乘法(通过Tensor Core)。 INT4量化 INT4将权重压缩到4位整数,范围仅为[-8, 7]。这意味着每个参数仅占0.5字节,相比FP16压缩了8倍。INT4通常采用分组量化(Group-wise Quantization)策略,每32或64个参数共享一组缩放因子: # INT4分组量化示例(伪代码) import torch def quantize_int4(weight, group_size=64): # 将权重按group_size分组 original_shape = weight.shape weight = weight.reshape(-1, group_size) # 计算每组的缩放因子 w_max = weight.abs().max(dim=-1, keepdim=True).values scale = w_max / 7.0 # INT4范围: [-8, 7] # 量化 q_weight = torch.round(weight / scale).clamp(-8, 7).to(torch.int8) return q_weight, scale # 反量化 def dequantize_int4(q_weight, scale): return (q_weight.float() * scale).reshape(original_shape) FP8量化 FP8是2024年起逐渐成熟的新一代低精度格式,采用浮点数而非整数表示。主流有两种格式: 格式 指数位 尾数位 范围 精度 E4M3 4 3 ±448 较高精度 E5M2 5 2 ±57344 较大范围 FP8的优势在于保留了浮点数的动态范围,对异常值更鲁棒,且NVIDIA Hopper/Blackwell架构原生支持FP8 Tensor Core。 ...

2026-07-29 · 2 min · 288 words · 硅基 AGI 探索者
量化技术对比

量化技术对比:INT4/INT8/FP8

量化:用更少的比特做更多的事 LLM的参数量从7B到671B不断增长,但GPU显存的增长速度远跟不上。量化是缓解这一矛盾最直接的技术——用更少的比特表示模型参数和激活值,在不修改模型架构的前提下减少显存占用和加速推理。 2026年,量化技术已经形成了从INT4到FP8的完整谱系,每种精度都有其适用场景和工程权衡。 量化的基本原理 对称量化 将浮点数映射到整数的固定范围。以INT8为例: x_int8 = round(x_fp / scale) scale = max(|x_fp|) / 127 反量化:x_fp ≈ x_int8 × scale 非对称量化 引入零点偏移,处理分布不对称的情况: x_int8 = round((x_fp - zero_point) / scale) scale = (max(x) - min(x)) / 255 zero_point = min(x) 量化粒度 逐张量(per-tensor):整个张量共用一个scale,最简单但精度损失大 逐通道(per-channel):每个输出通道一个scale,精度好但额外参数多 逐组(per-group):将通道分组,组内共用scale,是精度和效率的折中 def per_group_quantize(x, group_size=128): """分组量化""" original_shape = x.shape # 重排为 [out_features // group_size, group_size, in_features] x_reshaped = x.view(-1, group_size, original_shape[-1]) # 每组计算独立的scale scales = x_reshaped.abs().max(dim=1, keepdim=True).values / 127 # 量化 x_int8 = (x_reshaped / scales).round().clamp(-128, 127).to(torch.int8) return x_int8, scales def per_group_dequantize(x_int8, scales, original_shape): """分组反量化""" x_fp = x_int8.float() * scales return x_reshaped.view(original_shape) INT8量化 适用场景 INT8是最成熟的量化方案,几乎所有推理框架都原生支持。适用于: ...

2026-07-02 · 3 min · 477 words · 硅基 AGI 探索者
AI推理加速技术2026:量化、剪枝、蒸馏全景

AI推理加速技术2026:量化、剪枝、蒸馏全景

大模型的训练成本固然惊人,但2026年行业共识是:推理成本才是决定AI商业成败的关键。每Token推理成本直接决定了AI应用的经济模型——当GPT-5的推理成本降低10倍,它能打开的市场空间会增加100倍。本文将深度解析2026年最主流的推理加速技术。 一、为什么推理优化如此重要 成本结构的变化 AI推理成本在2026年发生了根本性变化: 发展阶段 成本焦点 核心问题 2020-2022 训练成本 能否训练得起大模型 2023-2024 推理成本 能否部署得起大模型 2025-2026 效率优化 如何以更低成本服务更多用户 2026年,全球AI推理日均Token消耗量突破10万亿,推理基础设施成本超过2000亿美元/年。每降低1%的推理成本,意味着每年节省20亿美元。 延迟 vs 吞吐 vs 成本 推理优化有三个核心目标,它们之间存在权衡: 延迟(Latency):单个请求的响应时间(TTFT, Time to First Token) 吞吐(Throughput):单位时间内处理的请求数(tokens/s) 成本(Cost):每个Token的推理成本 Batch size大 → 吞吐高、延迟高、成本低 Batch size小 → 吞吐低、延迟低、成本高 实际优化需要根据场景选择优先级: 在线服务(Chat):延迟优先 离线批处理:吞吐优先 大规模部署:成本优先 二、量化(Quantization):精度换速度 量化原理 量化是将模型参数从高精度(FP32/FP16)转换为低精度(INT8/INT4/FP8)的过程。理论上: FP32 → FP16:精度损失极小,速度×2,显存÷2 FP16 → INT8:速度×2-4,显存÷4,精度损失<1%(通常) INT8 → INT4:速度×4-8,显存÷8,精度损失5-15%(可优化) 2026年主流量化方法对比 方法 精度 速度 显存节省 质量损失 适用场景 FP16(基准) 100% 1× 1× 0% 通用 FP8(E4M3/E5M2) 99.5% 1.3× 1.5× <0.5% Hopper/Blackwell INT8(对称) 98-99% 1.8× 2× 1-2% 通用 INT8(非对称) 98-99% 1.6× 2× 1-2% 激活分布不均 INT4(GPTQ) 95-97% 3.5× 4× 3-5% 显存受限 INT4(AWQ) 96-98% 3.2× 4× 2-4% 显存受限 INT4(llama.cpp GGUF) 94-97% 4× 4× 3-6% 本地部署 NF4(BitsAndBytes) 95-97% 2.5× 4× 3-5% QLoRA微调 量化方法深度解析 1. Post-Training Quantization (PTQ) 训练后量化是最简单的方式——先训练好模型,再量化。2026年主流PTQ方法: ...

2026-06-30 · 3 min · 542 words · 硅基 AGI 探索者
鲁ICP备2026018361号