功耗模型参考
本文档说明模拟器的功耗估算方法,面向进阶分析,不是主要入门路径。
模拟器中共存两种功耗建模思路:
-
第一性原理模型(
ComputedProfile.power_at_concurrency)——与延迟相同的屋顶线分解推导功耗;除 TDP 外无拟合标量。在已知HardwareSpec + ModelSpec且希望对任意 (GPU, 模型) 组合得到可移植估计 时使用。 -
经验 logistic 模型(
ManualProfile字段)——拟合真实硅片数据;对所覆盖的 (GPU, 模型) 组合更准确,但需要实测。在已有数据、用于生产机队决策时使用。
两种模型共享 ML.ENERGY Benchmark v3.0 的两处经验锚点(H100-SXM5,batch=1 → 300 W,batch=128 → 600 W),用于定义 idle/活跃 TDP 比例。
第一部分 — 第一性原理功耗模型(ComputedProfile)
推导链
各量均可追溯到硬件规格与模型结构参数;除下文两个 TDP 比例外无拟合参数:
W = model_bytes_per_gpu / (mem_bw × 0.80) # 每次 decode 迭代权重流式时间
H = kv_bytes_per_token × ctx / mem_bw / tp # 每条在飞序列的边际延迟
iter_latency(n) = W + H_eff × n # H_eff = H × (mean_ctx / calib_ctx)
decode_tps(n) = n / iter_latency(n) # 每 GPU 每秒输出 token 数
kv_frac(n) = n × H_eff / iter_latency(n)
← KV-cache 占 HBM 流量比例(仅由 W、H 推导)
compute_frac(n) = 2 × active_params/tp × n / (iter_latency(n) × fp16_tc_flops)
← 峰值张量核心吞吐利用率
activity(n) = min(1.0, kv_frac(n) + compute_frac(n))
power(n) = hw.power × (P_IDLE_FRAC + (P_ACTIVE_FRAC − P_IDLE_FRAC) × activity(n))
tok/W = decode_tps(n) / power(n)
物理含义
kv_frac 描述核心过渡:batch=1 时 GPU 仅流式加载模型权重(HBM 流量为权重字节);batch 增大时 KV-cache 读逐渐主导 HBM 流量与功耗。compute_frac 描述每步矩阵乘增加带来的 SM 功耗。二者之和截断在 1.0。
| n_active | kv_frac | compute_frac | activity | P (W) | tok/W |
|---|---|---|---|---|---|
| 1 | 0.009 | 0.003 | 0.012 | 305 | 0.48 |
| 8 | 0.069 | 0.019 | 0.089 | 328 | 3.38 |
| 16 | 0.130 | 0.036 | 0.166 | 351 | 5.90 |
| 32 | 0.230 | 0.064 | 0.294 | 389 | 9.41 |
| 44 | 0.291 | 0.082 | 0.372 | 413 | 11.24 |
H100-SXM5 + Llama-3.1-70B,TP=8,fp16,mean_ctx=4096。
经验 TDP 比例
| 常量 | 取值 | 来源 |
|---|---|---|
_POWER_IDLE_FRAC | 0.43 | ML.ENERGY v3.0:H100-SXM5 batch=1 → 300 W / 700 W TDP |
_POWER_ACTIVE_FRAC | 0.86 | ML.ENERGY v3.0:H100-SXM5 batch=128 → 600 W / 700 W TDP |
上述比例可迁移到同类 HBM 带宽受限体制(Ampere、Hopper、Blackwell 稠密 decode)。若 GPU 不在该体制(如 PCIe、GDDR6),比例可能不同;请使用下文经验 logistic 校准。