AI 芯片的能效,正在从硬件厂商的宣传口径,变成数据中心账单上最现实的成本。“OpenAI 新芯片能效达英伟达 Rubin 两倍”的说法,最近在行业讨论中流传很广。对一个做模型推理、训练平台或基础设施的开发者来说,真正值得关注的不是“两倍”这个数字本身,而是它背后的三个工程问题:能效到底怎么度量;同一份模型在不同芯片上为什么会出现几倍能效差;当新一代芯片出现时,软件侧需要提前做什么准备。
先说清楚边界:截至写作时间,OpenAI 自研芯片的具体参数还没有形成完整官方白皮书,标题中的说法更多来自行业报道和路线图传闻,不是可以复现的基准测试结论。技术文章能做的,是把“能效翻倍”这类说法拆成可以理解和验证的工程指标,并说明这套逻辑如何影响日常开发、推理部署和硬件选型。
这篇文章会从 AI 芯片能效的度量方式讲起,再对比 GPU、专用加速器和定制 ASIC 的架构差异,然后落到软件侧实际可操作的优化方法。最后给出可复现的推理吞吐测试命令、参数排查路径和生产环境检查清单。无论你现阶段是用 NVIDIA GPU,还是在 Jetson、RK3588 这类边缘设备上做模型部署,这套分析框架都适用。
1. 先理解为什么 AI 芯片比拼的重点从算力转向能效
1.1 算力难涨,电费先涨
过去几代 GPU 加速卡的峰值算力一直在涨,但数据中心的供电和散热成本也在同步上涨。数据中心部署模型时,卡越多,单卡能效带来的差异就越明显。同样的千卡集群,单卡每瓦特吞吐提升 20%,意味着同样的电费预算下可以多跑约 20% 的请求,或者在同样请求量下减少机柜和散热投入。
AI 芯片能效本质上是“每瓦算力”或“每瓦吞吐”的问题。峰值算力决定了理论上限,能效决定实际运营成本。对一个长期运行的大模型推理服务,单位 token 的电力成本会直接进入毛利计算。这也是为什么自研芯片的能效指标会被放到和算力同等重要的位置。
1.2 能效的度量单位不是只有一个
芯片能效常见的度量方式包括:TOPS/W、TFLOPS/W、每瓦推理吞吐量(token/s/W)、以及端到端成本指标(每百万 token 的电力成本)。不同指标适合不同阶段。
| 指标 | 含义 | 适合场景 |
|---|---|---|
| TOPS/W | 每瓦特能做多少次整数运算 | 端侧 NPU、量化模型的算力效率对比 |
| TFLOPS/W | 每瓦特能做多少次浮点运算 | 训练卡、FP16/BF16 算力对比 |
| token/s/W | 每瓦特每秒能生成多少 token | 大模型推理服务,最接近真实成本 |
| 每百万 token 成本 | 包含硬件折旧、电力、机柜的综合成本 | 商业决策和选型对比 |
实际项目中最容易犯的错误,是拿着芯片手册上的 TOPS/W 去推算线上推理成本。芯片峰值算力不等于模型实际能拿到的吞吐。内存带宽、KV cache 容量、连续批处理能力都会影响最终吞吐。
1.3 能效对比必须限定场景
同一个芯片在不同任务上的能效差异可能非常大。做 ViT 图像分类时,算子以卷积和矩阵乘为主,计算密度高;做 Llama 这类自回归模型时,显存带宽和 KV cache 容量很容易成为瓶颈。所以“能效翻倍”一定要带上任务、精度、batch size 和框架版本,否则没有可比性。
这篇文章后面的所有测试和排错,也都围绕大模型推理场景展开。理解了推理场景的能效特征,再去扩展训练和端侧部署会容易得多。
2. 从英伟达 Rubin 到定制 ASIC:能效差异到底来自哪里
2.1 传闻与公开信息的边界
行业内关于 OpenAI 自研芯片的讨论方向比较一致:OpenAI 希望减少对单一 GPU 供应商的依赖,通过定制 ASIC 优化 Transformer 结构中反复出现的大矩阵乘和注意力计算。最激进的报道提到 3nm 制程和 9 个月流片周期,但这类说法还不足以形成工程判断。
英伟达 Rubin 是公开路线图中 Blackwell 之后的一代加速架构,核心方向仍然是更高显存带宽、更大内存容量和更强的互联能力。它在英伟达软件栈、生态和网络方案上继续保持延续性。两者比较时有一个天然差异:GPU 要跑通用工作负载,定制 ASIC 只跑固定算子集合。能效差距一部分来自架构设计差异,另一部分来自工作负载收窄带来的工程简化。
2.2 GPU、专用加速器和定制 ASIC 的能力边界
一颗芯片的能效,很大程度上由“为多通用的工作负载预留了多少灵活性”决定。GPU 保留了完整可编程能力,可以支持训练、推理、图形、科学计算等多种负载,代价是控制逻辑和通用指令开销更大。专用加速器,例如 Google TPU,把计算密集的部分固定成脉动阵列或张量核,能效比通用 GPU 好,但灵活性下降。
定制 ASIC 更进一步,直接针对特定模型结构设计。比如固定支持多头注意力、固定支持某种低精度格式、内置按模型层数裁剪的数据通路。好处是省掉很多不必要的分派和调度逻辑;风险是模型结构一变,硬件优势可能迅速缩水。
能效翻倍并不意味着算力翻倍。更可能的是,在特定模版和特定精度下,每瓦特可完成的 token 数翻倍。这样的对比要成立,至少需要三个条件:模型结构一致、输入输出规格一致、精度和内存管理策略一致。
2.3 为什么“能效翻倍”比“算力翻倍”更现实
芯片设计中的功耗上限比晶体管数量更早触顶。数据中心单机柜供电能力有限,继续堆晶体管必须靠更先进制程或更高效的架构。对 OpenAI 这类既做模型又做基础模型的公司来说,如果能在推理场景通过 ASIC 降低每 token 成本,它对 API 定价和算力规模就有更大的控制力。
从工程角度看,能效翻倍的实现路径通常不是某一次硬件突破,而是制程、片上存储、数据流、低精度计算和编译器协同优化的结果。后面几个方向,软件工程师其实可以提前介入。
3. 芯片端能效优化,核心是这五个方向
3.1 先进制程:降低功耗的底层红利
芯片从 5nm 走到 3nm,核心收益是相同频率下工作电压降低、晶体管漏电减少,单位算力的功耗下降。自研芯片选择 3nm 制程,方向上是合理的,因为大模型推理需要高主频、大算力,同时电力和散热约束又非常强。
但制程只是基础条件。功耗下降并不自动等于“能效翻倍”。如果架构没有配合制程优化,比如内存带宽通道不足、数据搬移路径过长,功耗仍然会浪费在数据通路上。
3.2 内存带宽:Transformer 推理的隐藏瓶颈
自回归模型的生成过程是内存带宽受限的。模型参数必须逐层从高带宽内存读入计算单元,batch size 为 1 时,算力利用率往往很低。以当前主流 7B 到 70B 模型为例,模型位宽、量化位数、内存带宽决定 token 生成速度的理论上限。
芯片设计上,HBM 的堆叠层数、位宽、频率直接决定内存带宽;片上 SRAM 的大小决定算子融合后能把多少数据留在片内。能效优化最明显的手段之一,就是减少片外内存访问次数。
3.3 数据流和脉动阵列:少搬一次数据,就省一份功耗
矩阵乘在 Transformer 中占比最高。传统计算单元把数据从内存读到寄存器,算完一个子块再写回。脉动阵列或类脉动架构能把输入激活和权重复用起来,让数据在近邻计算单元之间流动,减少对全局寄存器和内存的访问。
对软件开发者来说,这意味着算子库版本、算子融合策略和数据排布方式会影响能效。TensorRT、Triton、vLLM 做的算子融合,很多都是为了减少中间张量写回显存,最终效果和硬件数据流设计是互补的。
3.4 低精度与结构化稀疏:跳过无效计算
大模型量化已经从训练后的 INT8 量化走向 FP8、FP6、FP4 等更低精度。低精度不仅能缩小模型体积,还能提高单位时间计算次数,同时降低功耗。INT8 相比 FP16 通常能带来约 2 倍的算力提升,功耗增加远低于算力提升。
稀疏化则更依赖软件配合。非结构化稀疏在通用芯片上难以充分利用,只有 2:4 之类结构化稀疏能被硬件高效加速。如果在定制芯片上为 Transformer 的注意力矩阵实现专用稀疏支持,效果会比通用 GPU 更好。
3.5 编译器与运行时:能效的最后一层拼图
同样的硬件,不同编译策略下能效差异很大。算子是否融合、循环是否分块、内存分配是否复用、并行调度策略是否合理,都会影响实际功耗。业界反复投入做 Triton、MLIR、TensorRT,本质就是希望把高层模型调度成更贴近硬件的计算图。
对自研芯片来说,编译器生态往往比芯片本身更难。没有成熟的 CUDA 生态,就需要提供更易用的 AI 编译器入口。这也是为什么很多自研芯片团队很早就公布基于 Triton 或 ONNX Runtime 的兼容方案。
3.6 芯片能效对比速查
| 芯片类型 | 典型代表方向 | 能效优势 | 能效风险 | 典型场景 |
|---|---|---|---|---|
| 通用 GPU | NVIDIA 消费级与数据中心卡 | 生态完善,全精度通用 | 固定算子开销高、功耗墙明显 | 训练、通用推理 |
| 专用加速卡 | 张量处理器、推理卡 | 张量计算利用率高 | 切换模型框架需要适配 | 大模型推理、CV 推理 |
| 定制 ASIC | 面向 Transformer 的定制芯片 | 算子固定后能效最高 | 模型结构变化敏感、生态弱 | 自研模型规模化推理 |
| 边缘 NPU | Jetson、RK3588 等 | 功耗低、端侧部署方便 | 显存和算子库受限 | 边缘推理、端侧检测 |
这四种类型不是互相替代关系。实际项目中更多是混合部署:云端训练用 GPU,稳定规模推理用专用加速卡,端侧用 NPU。能效比较必须限定在具体负载内,否则“谁更强”没有意义。
4. 软件侧落地:测量并优化一次实际推理的能效
4.1 环境准备:先确定你的目标设备和运行栈
能效测试不只是跑一遍模型。你要先确定三件事:目标设备、模型精度、推理框架版本。
学习环境推荐用一台 NVIDIA GPU,显存不低于 16GB,驱动版本建议 535 以上。如果你是在 Jetson 或 RK3588 上部署,先确认 SDK 提供的算子库和量化工具链是否齐全,不要直接拿 x86 服务器的部署脚本硬套。
# 查看 GPU、驱动和显存状态 nvidia-smi # 查看 CUDA 版本 nvcc --version # 查看 Python 与 pip 版本 python3 --version pip3 --version下面示例以 NVIDIA GPU 下的 vLLM 推理为例。vLLM 支持 OpenAI 兼容接口,方便用标准客户端验证结果。它不是唯一方案,但胜在连续批处理和 PagedAttention 实现比较成熟,适合做能效基线。
pip install vllm openai安装过程会拉取对应 CUDA 版本的依赖库。如果遇到 torch 版本冲突,建议先装 torch,再装 vllm,保持两者在同一 CUDA 版本系列内。
4.2 启动一个 OpenAI 兼容的推理服务
以下命令启动一个 7B 级别的量化模型服务。模型名称需要根据你实际下载的模型调整,例如 Qwen 系列或 Llama 系列的开源权重。
vllm serve Qwen/Qwen2.5-7B-Instruct \ --dtype auto \ --gpu-memory-utilization 0.9 \ --max-model-len 8192 \ --max-num-seqs 64 \ --tensor-parallel-size 1 \ --port 8000启动后观察两个关键信息:初始化时显存是否够用,日志中是否提示加载了连续批处理调度器。如果显存不足,把--max-model-len调小,或降低--gpu-memory-utilization,但过小会减少 KV cache 空间,影响并发吞吐。
4.3 用脚本统计吞吐和功耗
能效测试至少需要三个指标:平均延迟、吞吐量、功率。用下面的 Python 脚本模拟一批请求,并读取 GPU 功率。
import time from openai import OpenAI client = OpenAI( base_url="http://localhost:8000/v1", api_key="EMPTY" ) prompt = "请用三句话解释大模型推理中的 KV cache。" prompts = [prompt] * 20 start = time.time() responses = [] for p in prompts: resp = client.chat.completions.create( model="Qwen/Qwen2.5-7B-Instruct", messages=[{"role": "user", "content": p}], max_tokens=128, temperature=0.7, ) responses.append(resp) total_time = time.time() - start total_tokens = sum( len(r.choices[0].message.content) for r in responses ) print(f"总耗时: {total_time:.2f} 秒") print(f"请求数: {len(prompts)}") print(f"平均单请求延迟: {total_time / len(prompts):.2f} 秒") print(f"总生成字符数: {total_tokens}")测试前先记录nvidia-smi --query-gpu=power.draw --format=csv的输出,测试过程再记录一次。用总功耗除以单位时间 token 数,可以得到相对能效:
# 测试期间采样功率 nvidia-smi --query-gpu=power.draw,temperature.gpu,utilization.gpu \ --format=csv -l 14.4 结果解读:延迟低不代表能效好
如果只测单请求延迟,会误判能效。单请求延迟低可能只是模型小或量化位低,并不代表在满载情况下单瓦吞吐高。
关注下面几个维度:
| 指标 | 数值 | 说明 |
|---|---|---|
| 单请求延迟 | 建议小于 3 秒 | 对 128 token 生成量,过长则需要排查 |
| 并发吞吐 | 越高越好 | 与max-num-seqs和 KV cache 大小相关 |
| GPU 利用率 | 稳定在较高水平 | 过低说明算子优化不足或 batch 太小 |
| 显存分配 | 不超过上限 | 避免 OOM |
| 功率波动 | 平稳 | 突然掉到很低说明出现了等待或卡顿 |
注意:能效对比必须在相同并发数、相同输入输出长度、相同精度下进行。单独换一个量化位数就声称能效提升,是不严谨的。
5. 生产环境中的能效优化与检查清单
5.1 学习环境和生产环境差异
学习环境只要能跑通推理,生产环境要关注稳定性、容量和监控。
| 维度 | 学习环境 | 生产环境 |
|---|---|---|
| 模型权重 | 直接从 Hub 拉取 | 需要内部镜像和版本管理 |
| 推理框架 | 最新版本即可 | 固定版本,灰度升级 |
| 显存限制 | 尽量放下模型 | 预留请求波动空间 |
| 监控 | 可选 | 必须包含吞吐、延迟、错误率、GPU 功率 |
| 故障恢复 | 重启服务 | 需要优雅退出、GPU 隔离、自动重启 |
生产环境的能效优化不是单点优化。你需要在负载均衡、模型副本数、批处理参数和 GPU 类型之间做整体权衡。盲目追求低延迟通常会牺牲吞吐,盲目追求高吞吐会拉高延迟和 CPU 排队时间。
5.2 发布前检查清单
上线一个推理服务前,建议按下面清单逐项确认:
- 模型权重是否经过可复现的量化评估,不只测困惑度,还要测实际生成结果。
gpu-memory-utilization是否预留了余量,避免突发输入过长导致 OOM。max-num-seqs是否与业务峰值匹配,过大可能让显存被打满。- 日志是否包含请求 ID、模型版本、输入 token 数、输出 token 数、延迟。
- 是否采集 GPU 功率、温度、显存利用率和算力利用率。
- 是否有回滚方案,例如把模型版本回退到上一个稳定版本。
- 是否配置限流和排队策略,防止突发流量打满显存。
5.3 能效回归测试
当芯片驱动、推理框架或模型结构升级时,建议做一次能效回归。回归对比的指标不只看脚本跑出来的延迟,还要看 GPU 功率曲线和每瓦吞吐变化。
# 保存一份基线日志 nvidia-smi --query-gpu=power.draw,utilization.gpu,memory.used \ --format=csv -l 1 > baseline_power.csv升级后用同一脚本再跑一遍,对比同一并发下的平均吞吐和平均功率。如果吞吐提升但功率暴涨,整体能效未必改善;如果吞吐和功率同时下降,要先排查是否触发了低功耗状态或限频。
6. 常见误区与排查路径:能效优化没有一劳永逸
6.1 误区一:只看芯片峰值 TOPS,忽略实际吞吐
现象:某芯片手册写着几百 TOPS,但实际跑大模型吞吐明显低于预期。原因:Transformer 推理不是纯算力受限,内存带宽和 KV cache 容量更关键。检查方式:观察显存利用率、GPU 算力利用率和采样功耗;如果算力利用率低但功耗高,大概率浪费在数据搬运上。解决思路:增大 batch size,使用 PagedAttention 或连续批处理,并考虑降低权重精度。
6.2 误区二:量化后不做效果验证
现象:从 FP16 切到 INT8 后,单瓦吞吐提升明显,但用户反馈答案质量下降。原因:量化后高敏感层误差被放大,只测整体困惑度不够。检查方式:用一组业务场景 prompt 做生成对比,观察关键字段、格式和语义是否一致。处理建议:对关键层保持 FP16,只量化部分层;或采用混合精度量化方案。不要为了能效牺牲不可接受的效果。
6.3 误区三:批处理参数不合理
现象:并发请求一多,延迟显著上升,吞吐没有同步提升。原因:max-num-seqs过大导致请求在调度器内部排队,KV cache 被挤占;或 CPU 预处理跟不上 GPU 推理。检查方式:观察服务日志中的队列长度、GPU 利用率、CPU 占用。解决思路:降低max-num-seqs,增加推理服务副本,或调整请求排队策略。连续批处理在线推理场景下往往比暴力加并发更有效。
6.4 排查顺序:从现象倒推根因
遇到推理能效下降或吞吐异常,按以下顺序检查:
- 输入是否异常:prompt 超长、图片转 token 数量异常。
- 文件和路径是否正确:模型权重、量化配置、分词器版本是否匹配。
- 依赖版本是否冲突:torch、vllm、CUDA 驱动是否在同一版本系列。
- 配置是否生效:
gpu-memory-utilization、max-num-seqs是否和进程参数一致。 - 资源是否受限:显存、CPU 核数、GPU 功耗限制、温度降频。
- 日志是否出现异常:OOM、libcuda 加载失败、算子编译失败。
- 框架和硬件限制:某个算子在当前芯片上没有优化实现,触发回退路径。
这些步骤顺序有优先级。先排查输入和路径,因为它们最容易复现;最后才排查框架本身,因为版本问题通常伴随明确报错。
7. 面向新芯片时代的工程准备:现在能做什么
7.1 记住一个核心判断:能效对比必须绑定负载
无论未来是英伟达 Rubin 系列,还是第三方自研 ASIC,能效数据只有在“同任务、同精度、同推理框架”下才有意义。做选型时不要只看宣传峰值,要拿自己的历史流量重新回放测试。建议提前准备一份可复现的基准测试脚本和业务请求样本,遇到新硬件时能快速跑出结论。
7.2 学习路径建议
对刚接触 AI 推理和芯片能效的开发者,建议按这个顺序学习:
- 先学会用
nvidia-smi观察显存、功耗和算力利用率。 - 再跑通一个 vLLM 或 TensorRT-LLM 的推理服务,理解连续批处理和 KV cache。
- 然后用同一模型在不同精度、不同并发下做对比,记录延迟、吞吐和功率。
- 进一步学习量化工具链,例如 AutoAWQ、GPTQ、TensorRT 量化接口。
- 了解 Triton 和 ONNX Runtime 的算子融合机制,理解硬件与软件的接口边界。
- 如果接触边缘设备,可以拿 Jetson 或 RK3588 做一次端侧吞吐测试,对比数据中心的差异。
7.3 对基础设施团队的提醒
“OpenAI 新芯片能效达英伟达 Rubin 两倍”这类信息,短期内不必立刻推动技术栈切换,但它确实是一个信号:自研 ASIC、专用推理芯片在大模型规模化部署中的话语权在上升。基础设施团队最值得做的准备,是把推理服务层的接口标准化,例如统一走 OpenAI 兼容 API 或 vLLM 调度接口。这样即使底层换成新芯片,只要驱动和编译工具链能映射进来,上层业务不需要大面积重写。
自研芯片的价值最终要通过软件栈兑现。对模型开发团队来说,保持模型结构相对稳定、量化方案可迁移,比盲目追逐新硬件更有实际意义。真正的能效优化发生在模型、编译器和芯片架构三者交界的区域,而这个区域对软件工程师依然开放。