老李想开网约车,销售把一辆“零百加速 3 秒”的猛车吹上了天。老李不慌不忙,只问了一句:“这车百公里烧多少油?”跑得再快,如果是台油老虎,一天赚的钱都不够加油。于是老李心里有了两本账:一本记“跑多快”,一本记“喝多少”。把两本账一除——每升油能跑多少公里——才是他真正在意的经济性。 AI 芯片的账本跟汽车一模一样。Token/s 是芯片每秒生成的 token 数,相当于时速;W 是运行时的功耗,相当于油耗率;两者相除得到 Token/s/W,也就是“每瓦每秒能产出多少 token”。这个数字越高,说明同样一度电、同样跑一小时,能服务更多用户请求。本文就用“汽车油耗”这条线,带你彻底看懂这个指标:它怎么定义、怎么测量、受什么影响、怎么优化,以及它有哪些“下坡滑行刷油耗”的骗人把戏。
掌握 Token/s/W,你就能从“这块卡多快”进阶到“这块卡多划算”,在芯片采购、推理部署与按量计费时,把电费真金白银地算进每一笔账。
目录
可视化演示
展示推理能效核心指标tokens/s/W的计算公式与测量链路、不同层级能效对比及优化策略,交互切换查看大模型推理能效评测的关键机制。
本节配有交互动效(进入视口后自动加载,约 3KB)。
能效公式:tokens/s/W定义 tokens/s/W = 每秒生成token数 / 功耗瓦特 该指标同时反映推理速度和能源效率 eff = tokens/s / W 数值越高代表单位能耗下推理产出越多
指标定义:给芯片装油耗表
老李试驾两辆车:A 车时速 120 公里、每小时喝 10 升油;B 车时速 90 公里、每小时喝 3 升油。问哪辆更省?用“每升油跑的公里数”一算——A 车 12 公里/升,B 车 30 公里/升,B 完胜。这里“公里/升”就是汽车的 Token/s/W:它不单看跑得快不快,还看喝得省不省。
AI 芯片的对应关系一目了然。Token/s 是芯片在推理时每秒生成的 token 数量,相当于车速;W 是运行时的平均功耗,相当于油耗率。把吞吐量除以功耗,得到的就是“每瓦每秒产出多少 token”。这个比值越高,说明同样一度电、同样跑一小时,能生成更多文字、服务更多请求。
所以下次看芯片宣传页,别只盯着“每秒 500 token”这块仪表盘,多问一句“它喝多少电”,才真正看懂了性能账本。
- 吞吐量分子把运行期间生成的总 token 数除以总时长,得到每秒产量。
- 平均功耗分母把累计消耗的能量除以时长,得到平均功率。
- 两者相除每秒产量除以平均功耗,就是每瓦每秒的产出。
评测流程:跑一次标准路况
工信部测汽车油耗,不是随便找条下坡路溜一圈,而是在固定路况上完整跑一段,全程记录加油量与里程。评测 Token/s/W 同理:挑一个标准模型和输入,让芯片连续推理一段固定时长,边跑边记账。
记什么账?两本:第一本数 token——累计生成了多少个;第二本测功耗——每隔一小段时间从功率计读一个瞬时值。跑完后,用总 token 数除以时长得到吞吐,把所有瞬时功耗取平均得到平均功耗,两者相除即得能效。这里平均功耗必须用“积分平均”而非“峰值”或“标称值”,否则就像拿“满油门喷油量”冒充真实油耗。
就像油耗测试必须跑完整圈、记全程油耗,能效评测也必须覆盖完整的推理过程,而不能只抓“刚启动那一下”的漂亮数字。
- 瞬时采样每隔固定间隔从功率计读一个数值,记下第 k 个采样点。
- 算术平均所有采样值相加,除以采样次数 n,得到平均功耗。
- 积分等价当采样间隔足够小时,离散平均无限逼近连续积分。
基准配置:报油耗必须报路况
同样一辆车,市区油耗 7 升,高速油耗 5 升,说“百公里 5 升”而不说明是高速工况,就是在耍流氓。Token/s/W 也一样,它不是一个普适常数,而是贴着工况标签的测量值。
工程上至少有三个“路况”参数必须写进报告:第一是模型,包括网络结构与参数量,跑 7B 模型和跑 70B 模型完全是两个世界;第二是批处理大小(batch size),一次喂 1 条请求还是 32 条请求,芯片的忙碌程度天差地别;第三是精度,FP16、FP8、INT8 各自的计算量与功耗特性不同。三者齐备,数值才有可比性。
“高速油耗 5 升”离开“高速”二字毫无意义;Token/s/W 离开配置标注同样毫无意义。看评测报告先找右下角的小字,这是业内老手的条件反射。
- 条件下标竖线和下标表示“在指定条件组合下测得”,是报告的强制声明。
- 分子吞吐该配置下实测的每秒 token 产量。
- 分母功耗该配置下全程平均功耗。
- 合成为能效吞吐与功耗的比值才是最终指标。
影响因素:油耗为何忽高忽低
老李发现同一辆车,满载加开空调时油耗飙升,空载时油耗喜人。芯片也是这样:同样的卡,换个模型、换个输入长度,Token/s/W 立刻变脸。核心原因藏在一条简单关系里:能效 = 算力 ÷ 每 token 计算量 ÷ 功耗。
模型规模是最大的变量。模型参数越多,生成每个 token 消耗的浮点运算量越大,分母变大,能效自然下降。其次是硬件架构:先进制程、更高算力上限的芯片,在同样功耗下能跑更多计算,但要小心“功耗墙”——性能翻倍往往伴随着功耗同步上涨。最后是工作负载:输入越长,注意力机制的计算开销越大;并发请求越多,算力利用率越高,摊到每个 token 上的固定开销就越低。
同一辆车载重不同油耗不同,同一张卡模型不同能效不同。所以比能效之前,务必先对准条件:同模型、同批次、同精度,否则就是拿满载的油耗去比空载的油耗。
- 有效算力芯片理论峰值乘上实际利用率,才是真正干活的算力。
- 每 token 计算量生成一个 token 大约需要与参数量同量级的浮点运算。
- 每秒吞吐算力除以每 token 开销,就是每秒能生成的 token 数。
- 摊到每瓦再除以功耗,得到每瓦产出。
优化策略:减重、换挡、调油门
老李摸索出省油三招:拆掉后备箱杂物减重、高速挂高挡位让发动机转得从容、缓踩油门避免频繁急加速。AI 推理的能效优化,恰好也有三招对应的打法。
第一招“减重”是量化压缩:把权重从 FP16 换成 INT8,每个 token 的计算量近似减半,吞吐可能翻倍,功耗也随之下探,能效提升立竿见影。第二招“换挡”是批处理调优:把 batch size 从 1 提到 16、32,让 GPU 的算力单元始终满载,把内存搬运、内核启动这些固定开销摊薄到更多 token 上。第三招“调油门”是功率管理:利用动态电压频率调节(DVFS),在请求稀疏时主动降频降压,避免“大油门空转”。
省油不是玄学,而是减重、挡位与油门的系统工程;省电同样如此,量化、批处理与功率管理三管齐下,才能把每瓦产出榨到极致。
- 分子·优化后量化、调批处理或功率管理之后的每瓦产出。
- 分母·优化前原始配置下的每瓦产出,作为基准线。
- 比值判断比值大于 1 则优化有效,否则需要回退调整。
局限误区:油耗表也会骗人
有人把车推到山顶再挂空挡滑行下来,测出百公里 1 升的“奇迹油耗”。Token/s/W 评测也有类似的骗局,最常见的有三类。第一类是峰值虚高:跑一个精心挑选的短负载,让芯片短暂处于满血状态,测出的数字远高于长期稳态水平;第二类是场景错配:用小模型、大批次刷出漂亮分,实际线上却是大模型、小并发,根本达不到那个能效;第三类是单点失真:只报一个配置下的数值,掩盖真实业务的波动。
这三类问题的本质,是拿“某一点的能效”冒充“整条曲线的能效”。真实能效随利用率剧烈变化:芯片空闲时也在耗电,低利用率下每瓦产出被底耗拖垮,只有负载接近满载时才接近标称值。
看油耗不能只看宣传册,能效必须结合真实工况。任何“漂亮数字”都要问一句:这是在什么负载、什么利用率、什么配置下测出来的?
- 分子·实际吞吐利用率乘以峰值吞吐,得到当前负载下的真实产量。
- 分母·实际功耗空闲底耗加上随利用率线性增长的动态功耗。
- 能效曲线两者相除,得到利用率从 0 到 1 的完整能效曲线。
实战应用:算清每公里油钱
网约车老李真正关心的不是油耗表,而是“每公里油钱”——油耗乘以油价才是掏出去的真金白银。数据中心同样如此:Token/s/W 最终要换算成“每百万 token 多少电费”,这笔钱直接决定推理服务是盈利还是亏本。
工程上有三个落地动作。选型决策:两张卡能效接近时,还要比延迟、峰值功耗和采购价,能效只是其中一个维度。成本核算:用量测得的功耗 P 除以吞吐 TP,得到每 token 能耗,再乘电价就能算出每百万 token 的电费——这是给推理服务定价的底线。报告规范:任何能效数据必须附上完整配置(模型、批次、精度、框架版本),行业里 MLPerf 等基准正是在统一工况下才让横向对比有意义。
省油的车省的是油钱,能效高的卡省的是电费,而电费在推理总成本中占比可观。把 Token/s/W 算进财务报表,才是这个指标最大的价值。
- 每 token 能耗功耗除以吞吐,得到生成一个 token 消耗的能量(焦耳)。
- 单位换算1 度电等于 360 万焦耳,百万 token 的总能耗换算成度。
- 乘以电价度数乘上工业电价,就是百万 token 的电费成本。
AI 应用场景
云厂商 GPU 选型与采购
阶段:部署与成本优化
解决的问题:传统选型只比峰值吞吐,忽略电费导致运营成本失控。用 Token/s/W 把能效折算成每百万 token 电费,让“快但耗电”与“慢但省电”在同一把尺子上比较。
具体案例:某推理平台在 LLaMA-2-13B、batch 32、FP16 配置下对比两款 GPU,发现 A 卡吞吐高 30% 但功耗高 80%,折算后 B 卡每百万 token 电费便宜四成。团队据此调整采购比例,把夜间低峰流量切到 B 卡,季度电费下降 22%。
边缘设备功耗预算
阶段:端侧部署
解决的问题:无人值守设备有严格功耗上限(如 15W TDP),只看吞吐可能撑不住供电和散热。Token/s/W 决定同样电池容量下能连续推理多久。
具体案例:一款安防摄像头需要端侧跑 LLM 做摘要,对比两块芯片后,能效高 2.4 倍的方案让续航从 8 小时延长到 14 小时,且无需加大电池与散热器。
按 token 计费的推理定价
阶段:服务定价
解决的问题:API 按 token 收费时,必须知道每个 token 的边际电费,否则卖得越多亏得越多。
具体案例:某 SaaS 公司用 Token/s/W 实测得到每百万 token 电费 0.35 元,再叠加机器折旧与人工,确定 0.8 元/百万 token 的成本底线,最终把对外价格定在 2.0 元,保证毛利率。
Python 演示
import random class Chip: """模拟一颗 AI 推理芯片: 以恒定速率吐字, 功耗带轻微抖动.""" def __init__(self, name, token_s, watts, jitter=0.06): self.name = name self.token_s = token_s self.watts = watts self.jitter = jitter def run_step(self, dt): """跑一个时间片, 返回(新增token数, 本片平均功耗W).""" tokens = self.token_s * dt power = self.watts * (1 + self.jitter * (random.random() - 0.5)) return tokens, power def benchmark(chip, seconds=5.0, dt=0.1): """跑一次标准路况: 固定时长计时, 数token, 采功耗.""" total_tokens = 0.0 energy = 0.0 steps = int(seconds / dt) for _ in range(steps): tokens, power = chip.run_step(dt) total_tokens += tokens energy += power * dt token_s = total_tokens / seconds avg_watts = energy / seconds return token_s, avg_watts, token_s / avg_watts def main(): candidates = [ Chip("猛火芯A", token_s=180, watts=4.5), Chip("节能芯B", token_s=80, watts=1.0), ] results = [] for chip in candidates: tp, w, eff = benchmark(chip) results.append((chip.name, tp, w, eff)) print(f"{chip.name}: 吞吐 {tp:7.1f} token/s | " f"功耗 {w:5.2f} W | 能效 {eff:5.1f} token/s/W") best = max(results, key=lambda r: r[3]) print(f"能效胜出者 -> {best[0]} ({best[3]:.1f} token/s/W)") if __name__ == "__main__": main()
tokens = self.token_s * dt每个时间片按恒定速率产出 token,模拟吞吐量。power = self.watts * (1 + self.jitter * (random.random() - 0.5))给功耗加轻微随机抖动,模拟真实功率计的波动。energy += power * dt瓦乘以秒累加,得到累计能耗焦耳。steps = int(seconds / dt)把总时长切分成固定间隔的采样步数。token_s = total_tokens / seconds用总 token 数除以时长,得到吞吐量。avg_watts = energy / seconds用累计能耗除以时长,得到平均功耗。best = max(results, key=lambda r: r[3])按能效(下标 3)取最高者,完成选型决策。
常见误区
误区我家卡每秒能跑 500 token,比隔壁 300 token 的强多了,买它准没错。
正解没看功耗就下结论,等于只比车速不比油耗。500 token/s 配 50W 功耗,能效是 10;300 token/s 配 10W,能效是 30——隔壁每瓦产出是你的三倍。选型必须把吞吐和功耗放在一起看。
为何常见:厂商宣传页总是把“每秒 token 数”用最大号字体印在最显眼处,功耗数字藏在规格表角落,小白很容易被带偏。
误区评测时直接查芯片的 TDP 标 450W,就用 450W 当功耗代入计算,省事又权威。
正解TDP 是散热设计上限,实际负载下平均功耗往往低得多。就像汽车油耗不能拿“理论最大喷油量”来算,必须实测运行期间的平均功耗,否则能效会被严重低估。
为何常见:标称值好查、不用搭测试环境,看起来还很有依据,但恰恰偏离了“平均功耗”的定义。
误区论文里写了 300 token/s/W,我自己复现只有 60,一定是我的卡有问题或者是被坑了。
正解模型结构、batch size、精度、输入长度、框架版本任何一个不同,数值都不可比。论文若在 7B 模型、batch 128、INT8 下测得 300,你在 70B、batch 1、FP16 下测 60 再正常不过。对比前先对齐配置。
为何常见:人脑天然喜欢简单数字对比,看到“我的 60 vs 论文 300”就慌,忽略了数字背后的工况声明。
误区Token/s/W 越高越好,直接选能效最高的卡,其他都不用看。
正解能效只是选型的一个维度。还要看延迟(在线服务有响应时间要求)、峰值功耗(供电和散热能否扛住)、绝对吞吐(能不能在截止时间前跑完)、采购价格和软件生态。就像买车,省油不等于适合跑山路。
为何常见:任何单一指标被简化成“万能指标”都会失真,尤其当它被用来横向比较不同定位的产品时。
面试题
Q1. Token/s/W 度量的是什么?
- A.每秒能生成的最大token个数
- B.每瓦电每秒生成的token个数← 正确答案
- C.生成每个token所花的时间量
- D.芯片整体消耗的功耗瓦数
答案:B。Token/s/W 是吞吐量除以功耗,即“每瓦每秒产出多少 token”,对应 B。A 只说了吞吐,C 是延迟,D 只是功耗,都没把两者结合。
Q2. 芯片 A 吞吐 200 token/s、功耗 20W,芯片 B 吞吐 150 token/s、功耗 5W,谁的能效更高?
- A.芯片 A 更快所以更高效
- B.芯片 B 能效是 A 的三倍← 正确答案
- C.两块芯片能效完全相同
- D.信息不足无法比较能效
答案:B。A 的能效为 200÷20=10,B 为 150÷5=30,B 是 A 的三倍。就像车速快不代表省油,吞吐高不代表每瓦产出高。
Q3. 评测 Token/s/W 时,功耗应该取什么值?
- A.运行期间的峰值功耗
- B.待机空闲时的功耗
- C.运行期间的平均功耗← 正确答案
- D.芯片标称的额定功耗
答案:C。定义要求的是平均功耗,即运行全程功率的积分平均。峰值会虚高能效(分母太小),待机和标称值又偏离真实工况,只有 C 符合评测规范。
Q4. 下列哪些做法会显著改变 Token/s/W 的数值?
- A.增大推理的批处理大小← 正确答案
- B.把FP16精度换成INT8← 正确答案
- C.改变模型的参数量级← 正确答案
- D.给机箱更换新的颜色
答案:ABC。batch 大小影响算力利用率,精度影响计算量和功耗,模型规模影响每 token 计算量,三者都会改变能效。机箱颜色不影响芯片的电气行为,是干扰项。
Q5. 增大 batch size 通常提升能效的根本原因是什么?
- A.模型参数量变得更少
- B.算力利用率提升摊薄开销← 正确答案
- C.芯片主频被自动降低
- D.推理延迟变得更低了
答案:B。大 batch 让 GPU 计算单元持续满载,把内核启动、显存搬运等固定开销摊到更多 token 上,每 token 能耗下降。参数没变、主频也没降,D 描述的是延迟而非能效的成因。
Q6. 关于 Token/s/W 指标的局限性,下列说法正确的有哪些?
- A.峰值能效不等于平均能效← 正确答案
- B.不同配置下结果不可对比← 正确答案
- C.指标完全反映真实体验
- D.单次评测结果以偏概全← 正确答案
答案:ABD。低利用率下空闲功耗拖累能效,所以峰值与平均差异很大;配置不同数值不可比;单点评测无法代表真实业务曲线。该指标不反映延迟、精度等体验维度,C 错误。
Q7. 要估算“每百万 token 的电费”,已知功耗 P 和吞吐 TP,还需要哪个信息?
- A.模型的网络层数大小
- B.每批样本数量的多少
- C.工业电价的单价数值← 正确答案
- D.显存容量的多少字节
答案:C。电费 = 能耗 × 电价。P/TP 已得每 token 能耗,再换算成电量后必须乘上电价才能得到金额。层数、批次、显存都不直接参与电费换算。
Q8. 量化(FP16→INT8)提升 Token/s/W 的主要原因是什么?
- A.模型的准确率变得更高
- B.计算变慢但耗电更省
- C.每token算力需求下降← 正确答案
- D.显存占用体积变大
答案:C。INT8 让每个 token 的浮点运算量近似减半,吞吐上升、功耗下探,能效双头受益。准确率通常会略降而非升高,计算不会变慢,显存占用是变小而非变大。
Q9. 评测 Token/s/W 时,为保证结果可复现,需要控制哪些变量?
- A.模型结构与权重← 正确答案
- B.输入长度与批处理大小← 正确答案
- C.精度数值与推理框架← 正确答案
- D.机房温度保持在两度内← 正确答案
答案:ABCD。模型、输入、batch、精度、框架都会改变吞吐与功耗;机房温度也会通过漏电流影响功耗,所以连环境温度都要控制。评测可比性建立在“全变量对齐”之上。
Q10. 关于功耗测量与单位换算,下列哪些说法正确?
- A.一瓦秒的能耗等于一焦耳← 正确答案
- B.平均功耗乘以时间得总能耗← 正确答案
- C.一度电等于三千六百千焦← 正确答案
- D.Token/s/W 乘时间得总词数
答案:ABC。1W×1s=1J,P×T=E,1kWh=3.6×10⁶J=3600kJ,所以 A、B、C 都对。Token/s/W 乘以时间得到的是“每瓦的 token 数”,缺少功耗信息,无法推出总 token 数,D 错误。