# 我测了 360 组配置:INT8 默认模式在 RTX 4090D 上反而多耗 80%~162% 能耗

3 阅读6分钟

这是一篇基于 NVML 实测数据的反常识结论:所谓"量化省电"在小模型上是假的,在某些精度模式下甚至是严重负优化。文末附完整 GPU × 模型 × 精度的"何时该量化"决策表。

一句话结论(先看这个)

我在 4 块 NVIDIA GPU(T4 / RTX 4090D / RTX 5090 / A800)上跑了 360+ 组配置,覆盖 1.1B~14B 参数模型,FP16 / INT8 / NF4 三种精度,用 NVML 直接读硬件功耗,得到两个反常识结论:

  1. LLM.int8() 默认模式(带 outlier 混合精度分解)在 RTX 4090D 上比 FP16 多耗 80%~162% 能耗,吞吐还掉 68%~75%,精度只省 0.7%~2% PPL。这是负优化
  2. NF4 4-bit 量化有一个架构相关的 crossover 阈值(3.2B5.2B 参数之间),低于这个阈值,NF4 反而比 FP16 更费电(+25%~+55%);高于阈值才省电(-15%-23%)。

完整数据集和交互式对比工具:hongping-zh.github.io/ 原始 CSV + 复现脚本:github.com/hongping-zh…


为什么我要测这件事

行业里默认的逻辑链是:

量化 → 比特数变少 → 显存变少 → 计算变快 → 能耗变低

这条链子的每一环单独看都对,但整条链子从来没人用 wall-clock 功耗数据验证过。我想知道:

  • 量化到底真的省电,还是只是省显存 + 省 FLOPs?这是两回事
  • 混合精度内核、反量化开销、算术强度下降——这些隐性成本在能耗维度上到底是多少
  • 不同 GPU 架构上结论一致吗?

测下来发现:FLOPs 和 latency 都不是能耗的好代理。要省电只能直接测电。


实测环境(无修饰版)

维度配置
硬件Tesla T4 (Turing, 70W) / RTX 4090D (Ada) / RTX 5090 (Blackwell) / A800 (Ampere, 300W)
模型1.1B–14B 参数区间,含 Qwen2-7B / Qwen2.5-3B / Yi-1.5-6B 等
精度FP16(基线)/ LLM.int8() 默认 / INT8 pure (llm_int8_threshold=0.0) / NF4 (bitsandbytes)
功耗采样NVML,10 Hz
重复次数每组 n=10,丢弃 3 次预热,变异系数 CV < 3%
精度评估WikiText-2 test 集,交叉熵 → 困惑度 PPL
软件栈PyTorch 2.4+ / bitsandbytes / transformers
数据集 DOI10.5281/zenodo.18900289

我没测的:Apple Silicon、Jetson、AMD/Intel GPU、GPTQ、AWQ、GGUF。这些是开放问题,文末有协作邀请。


发现 1:LLM.int8() 默认模式是 Ada 架构上的能耗灾难

很多人以为 BitsAndBytesConfig(load_in_8bit=True) 一行代码就能"既省显存又省电"。在 RTX 4090D 上实测如下:

指标(相对 FP16 基线)LLM.int8() 默认
单 request 能耗+80% ~ +162%
吞吐 (tok/s)−68% ~ −75%
PPL 退化 (WikiText-2)+0.7% ~ +2%(基本保留)

为什么? LLM.int8() 默认会启用 outlier 混合精度分解:把 activation 中的少数极值通道单独保留为 FP16,其余走 INT8。这条路径需要:

  • 额外的 outlier detection kernel
  • INT8/FP16 之间的 dequant/quant 来回切换
  • 内存访问 pattern 碎片化,掉 cache 命中率

结果就是用 INT8 的精度代价换 FP16 的精度结果,同时多烧 1~1.6 倍的电

如果你想真的拿到 INT8 的能耗收益,必须显式禁用分解:

BitsAndBytesConfig(
    load_in_8bit=True,
    llm_int8_threshold=0.0  # 关键:禁用混合精度分解
)

但代价不是零——禁用分解后实测 PPL 退化 +2.5% ~ +22.7%

  • Qwen2.5-3B:PPL +15.3%
  • Yi-1.5-6B:PPL +22.7%

所以 "INT8" 在工程层面至少是两个不同的工作点,能耗/精度权衡完全不同,文档里基本没人讲清楚。


发现 2:NF4 crossover 跟着 GPU 走,不跟着模型走

NF4(bitsandbytes 4-bit)不是统一省电的。它有一个参数量临界点,低于这个临界点 NF4 反而费电。更有意思的是:这个临界点跟着 GPU 架构变

GPU 架构NF4 crossoverINT8 crossover
Turing (T4)~3.2 B~4.0 B
Ampere (A800)~3.7 B~4.3 B
Ada (RTX 4090D)~3.9 B~4.6 B
Blackwell (RTX 5090)~5.2 B~5.6 B

汇总规律:

  • 低于 crossover:量化多耗 +25% ~ +55% 能耗
  • 高于 crossover:量化 -15% ~ -23% 能耗

补充一个最新案例(2026 年 4 月数据):Qwen2.5-3B 在 T4 上,NF4 比 FP16 多耗 +7.4% ~ +39.9% 能耗(batch size 1/2/4 三种工况都验证过)。3B 模型在 Turing 架构上,正好坐在 ~3.2 B crossover 下方,数据完全符合预测。

最反直觉的一点:架构越新,crossover 越往上挪

Blackwell 的显存子系统让 FP16 相对 4-bit dequant 更便宜,临界点从 T4 的 ~3.2B 推到 5090 的 ~5.2B。这意味着:

现在大家最爱量化的那批 1B~3B "edge-ready" 小模型(Llama-3.2-1B、Phi-3-mini、Qwen2.5-3B 这些),在我测的每一块 NVIDIA GPU 上,都在 crossover 下方。也就是说,它们被量化后反而更费电。

这条结论我重测了三遍,确认不是数据噪声。


实用决策表:你该不该量化?

你的场景推荐理由
1B–3B 小模型 + 任意 NVIDIA GPUFP16全部在 crossover 下方,量化负优化
7B+ 模型 + Turing/AmpereNF4已过 crossover,能耗省 15~20%
7B+ 模型 + Blackwell看情况,先 FP16Blackwell crossover 高到 5.2B,7B 收益较小,建议先实测
任何场景 + 想用 INT8显式设 threshold=0.0别用默认 LLM.int8(),那是负优化
短 prompt + 短生成 (< 64/32 token)FP16量化开销摊不开
服务端长 prompt + 大 batchNF4 或 FP8量化收益最大化的工况

给工程师的 4 条实操建议

1. 任何"绿色 AI"声明都必须带 wall-power 数据

只报 tok/s、FLOPs、latency 是不够的。能耗是独立维度,latency 快不等于能耗低——LLM.int8() 默认就是反例,吞吐掉 70%,能耗却涨 100%+,意味着每个 token 多烧的电是 FP16 的 3~5 倍。

2. 换 GPU 必须重测

A800 上跑得最优的配置,搬到 RTX 5090 上很可能就不是最优了。架构差异在能耗维度上比 latency 维度更明显

3. 给 inference 加 NVML 监控

10 Hz 采样、n=10 重复、CV<3%。这套协议很轻,可以集成进 CI。我开源的 ecocompute-ai 仓库里有现成脚本。

4. 不要把 LLM.int8() 当默认 INT8

要么显式 threshold=0.0(接受精度损失换能耗),要么干脆别用 8-bit,直接走 NF4(前提是过了 crossover)。


后续计划 / 开放协作

下面这些我还没测,欢迎 PR 或讨论:

  • GPTQ / AWQ / GGUF k-quants 的 crossover 是否和 bitsandbytes NF4 一致?
  • Apple Silicon / Jetson 的统一内存架构下,dequant 开销是否完全不同?
  • H100 / H200 / MI300X 实测数据(社区高频问,我目前没卡)
  • crossover 阈值的 memory bandwidth vs tensor core throughput 解耦分析

PR 入口:github.com/hongping-zh…


配套资源

引用格式:

@misc{zhang2026llmenergy,
  author = {Zhang, Hongping},
  title  = {LLM Energy Benchmark: Real GPU Power Measurements for Quantized Inference},
  year   = {2026},
  doi    = {10.5281/zenodo.18900289}
}

写在最后

写这篇的初衷不是"量化不好",而是想说:

"量化 = 绿色 AI"是个被工业界过度简化的命题。真实的能耗 landscape 是一张 GPU × 模型大小 × 精度模式的三维地图,里面有大片"反优化区"。

如果你正在做推理服务部署,别凭直觉决定要不要量化——测一下,可能省钱也可能多烧钱。

欢迎评论区贴你自己的测量数据,特别是和我结论冲突的。冲突的数据比一致的数据有信息量得多。

—— Hongping