一文讲透AI算力单位:TFLOPS、PFLOPS、TOPS、稀疏算力,到底怎么算、怎么比?

作 者:吴佳浩Alben
撰稿时间:2026.7.18
更新时间:2026.7.23
引言
很多人在统计 GPU 算力时都会遇到一个问题:
RTX 5090 到底是 1.6 PFLOPS ,还是 3300 TOPS ,还是 6.6 PFLOPS?
H100 官网写的是 1979 TFLOPS ,为什么有的评测文章写的是 989 TFLOPS?
同一张显卡,为什么能报出好几个完全不同的数字?其实这里面藏着三层容易被混淆的概念:单位(Unit) 、计算精度(Precision) 、是否稀疏(Sparsity)。搞懂这三层,你就能看懂任何一张GPU/AI芯片的规格表,也能识破厂商宣传里的"数字游戏"。本篇内容稍微有点干,各位可以跳着看,重点看自己感兴趣的部分。
一、先理解两个基本单位
GPU/AI芯片的算力主要用两套单位描述。
FLOPS:浮点运算
全称 Floating Point Operations Per Second ,表示每秒能完成多少次浮点运算。常用于描述以下精度下的性能:
- FP64(双精度)
- FP32(单精度)
- TF32(NVIDIA专用的截断精度)
- FP16 / BF16(半精度)
- FP8(8位浮点,Hopper架构起支持)
- FP4(4位浮点,Blackwell架构起支持)
单位换算是标准的十进制阶梯:
bash
1 KFLOPS = 10³ FLOPS
1 MFLOPS = 10⁶ FLOPS
1 GFLOPS = 10⁹ FLOPS
1 TFLOPS = 10¹² FLOPS
1 PFLOPS = 1000 TFLOPS = 10¹⁵ FLOPS
1 EFLOPS = 1000 PFLOPS = 10¹⁸ FLOPS
举例:
bash
1614 TFLOPS ÷ 1000 = 1.614 PFLOPS
这就是为什么很多算力统计表要求填 PFLOPS 时,需要把 TFLOPS 除以1000------单纯的进制换算,不涉及精度问题。
TOPS:整数运算
全称 Tera Operations Per Second ,表示每秒能完成多少万亿次整数运算,通常用于描述:
- INT8
- INT4
- INT2(少数专用推理芯片)
例如手机SoC、边缘AI芯片常见的宣传数字:
bash
560 TOPS(手机NPU级别)
3300 TOPS(RTX 5090 INT8)
6600 TOPS(RTX 5090 INT4)
几乎都是面向"推理"场景的整数算力,因为推理阶段对精度要求更低,用整数运算能大幅提高吞吐、降低功耗。
二、以 RTX 5090 为例:一张卡为什么有六七个"算力"
| 精度 | 理论峰值 |
|---|---|
| FP32 | 104 TFLOPS |
| FP16 / BF16(Tensor Core) | 1614 TFLOPS(≈1.61 PFLOPS) |
| FP8(Tensor Core) | ≈3.3 PFLOPS |
| FP4(Tensor Core,Blackwell新增) | ≈6.6 PFLOPS |
| INT8 | ≈3300 TOPS |
| INT4 | ≈6600 TOPS |
很多人看到这张表第一反应是:"能不能全部加起来,算出这张卡的'总算力'?"
答案是不能。
原因很简单:这几个数字描述的是同一套 Tensor Core 硬件 ,在不同工作模式下切换出来的峰值性能,不是几种独立算力叠加的结果。就像同一台发动机,"最高时速"和"百公里加速时间"不能相加得出一个新指标一样。
如果你把 1.61 + 3.3 + 6.6 = 11.5 PFLOPS 当成这张卡的"总实力",这个计算方式是完全错误的,任何一个稍懂硬件的人看到都会摇头。
三、为什么精度越低,算力数字越高?
核心原因是:数据位宽越小,同一块 Tensor Core 单位时间内能塞进去处理的数据就越多。
| 精度 | 每个数字占用位数 |
|---|---|
| FP32 | 32 bit |
| FP16 / BF16 | 16 bit |
| FP8 | 8 bit |
| FP4 | 4 bit |
可以粗略理解为:硬件电路的"数据总线宽度"是相对固定的,位宽减半,理论上一个周期就能塞进两倍的数字去做运算:

这也是为什么这几年AI芯片厂商在"精度战争"上越卷越低------从FP32卷到FP16,再到FP8,现在Blackwell、以及国产的部分推理芯片已经开始卷FP4/INT4------同样的晶体管数量,精度每降一级,账面算力就能翻倍,这是最容易在发布会PPT上"好看"的一条路径。
不过要注意,这种"降精度换算力"不是没有代价的:位宽越小,能表示的数值范围和精度就越粗糙,对模型效果(尤其是训练阶段的梯度更新)影响越大,所以工业界普遍是"训练用较高精度(BF16/FP8),推理用较低精度(FP8/INT8/FP4)"的分层策略,而不是所有场景都无脑上最低精度。
四、容易被忽略的第三个变量:稀疏(Sparsity)
除了单位和精度,规格表里还藏着一个经常被忽视、但足以让数字"再翻一倍"的变量------是否开启结构化稀疏(Sparsity)。
以 NVIDIA H100 SXM5 官方数据手册为例:
| 精度 | 稠密(Dense) | 结构化稀疏(Sparse) |
|---|---|---|
| FP16 Tensor Core | 989.5 TFLOPS | 1979 TFLOPS |
| FP8 Tensor Core | 1979 TFLOPS | 3958 TFLOPS |
| INT8 Tensor Core | 1979 TOPS | 3958 TOPS |
看到区别了吗?同一个精度,"稀疏"数值正好是"稠密"数值的2倍。
(■ 代表保留的非零权重,□ 代表按2:4规则清零的权重;硬件只需真正计算非零部分,账面吞吐因此翻倍)
这是因为 Ampere架构之后,NVIDIA 的 Tensor Core 支持一种叫"2:4结构化稀疏"的加速技术------简单说,就是在权重矩阵里,每4个数字中人为地"清零"2个(前提是这样做对模型精度损失可控),硬件针对这种规律性的稀疏模式做了专门加速电路,理论上能让计算吞吐翻倍。
问题在于:这个"2倍"是理想情况下的理论峰值,前提是你的模型权重真的做了对应的稀疏化处理。 很多厂商在公布"旗舰算力数字"时,默认展示的就是这个稀疏峰值(因为数字更好看),但绝大多数实际跑在生产环境里的模型,并没有严格按2:4规则做稀疏化,所以你在实际使用中很难摸到这个理论峰值。
这也是为什么同一款GPU,不同文章会写出差一倍的算力数字 ------一篇写的是稠密算力,另一篇写的是稀疏算力,两者都"对",但描述的不是同一件事。看规格表时,一定要留意后面有没有标注 *、(sparse)、(with sparsity) 这类小字。
五、几款主流AI芯片横向对比
把这套逻辑套用到目前市面上几款主流训练/推理芯片上,可以看得更清楚(数值为官方或行业公认的稠密Tensor Core峰值,单位统一换算成PFLOPS/POPS,实际以厂商最新公开数据手册为准):
| 芯片 | 架构/世代 | BF16/FP16稠密 | FP8稠密 | 显存 | 显存带宽 |
|---|---|---|---|---|---|
| NVIDIA H100 SXM5 | Hopper | ≈0.99 PFLOPS | ≈1.98 PFLOPS | 80GB HBM3 | 3.35 TB/s |
| NVIDIA H200 | Hopper(升级款) | ≈0.99 PFLOPS | ≈1.98 PFLOPS | 141GB HBM3e | 4.8 TB/s |
| NVIDIA B200 | Blackwell | ≈2.25 PFLOPS | ≈4.5 PFLOPS | 180GB HBM3e | ≈8 TB/s |
| RTX 5090(消费级) | Blackwell | ≈1.61 PFLOPS | ≈3.3 PFLOPS | 32GB GDDR7 | 1.79 TB/s |

从这张表能看出几个规律:
- 每一代架构升级,本质上都是"同样面积塞更多低精度算力":Hopper引入FP8、Blackwell引入FP4,一路把"能算的最低精度"往下探。
- 消费卡(RTX 5090)在低精度算力上有时反而比上一代数据中心卡(H100)账面数字更高,但显存容量和带宽是数据中心卡的护城河------训练大模型瓶颈往往不在算力,而在显存容量和带宽(下一节详细讲)。
- 不同代际之间不能只看PFLOPS简单比"快了几倍",因为精度基准可能都不一样,一定要对齐同一精度再比较。
六、光看PFLOPS/TOPS够不够?聊聊"算力刺客"------显存带宽
这是很多算力科普文章会漏掉、但对实际使用体验影响巨大的一环:理论峰值算力,往往根本发挥不出来,瓶颈出在"喂数据"的速度跟不上"算数据"的速度。
业内有个经典的分析框架叫 Roofline Model(屋顶线模型),简化理解就是:
bash
一个计算任务是"算力受限"还是"带宽受限",
取决于它的"运算强度"(Arithmetic Intensity):
运算强度 = 总浮点运算次数 ÷ 需要搬运的数据字节数
- 如果运算强度高(比如大矩阵乘法),GPU大部分时间在"算",能跑出接近理论峰值的算力,这叫计算受限(compute-bound)
- 如果运算强度低(比如大模型推理时逐token生成,每次只算很少但要读取整套模型权重),GPU大部分时间在"等数据从显存搬过来",实际吞吐会远低于理论峰值算力,这叫带宽受限(memory-bound)

大语言模型的"逐token自回归生成",恰恰是典型的带宽受限场景。 这也是为什么行业里衡量推理性能时,除了PFLOPS,同样看重甚至更看重显存带宽(GB/s或TB/s)------H200相比H100显存带宽提升45%左右,即便二者算力峰值接近,H200在大模型推理上的实际吞吐提升往往比"账面算力涨幅"更明显。
一个简单的经验法则:
bash
训练大模型 → 算力(PFLOPS)+ 显存容量 都重要
推理大模型(尤其是batch较小时)→ 显存带宽 往往是第一瓶颈
七、理论峰值 vs 实际跑分:MFU 是什么
厂商公布的PFLOPS都是理论峰值(Peak FLOPS) ,是硬件在完全理想状态下(没有任何数据搬运延迟、没有指令调度开销、Tensor Core 100%利用率)能达到的上限。真实训练任务几乎不可能跑到这个数字。
业内用一个指标衡量"实际利用了多少理论算力",叫 MFU(Model FLOPs Utilization,模型算力利用率):
bash
MFU = 实际训练中每秒完成的有效浮点运算次数 ÷ 硬件理论峰值FLOPS
举个例子:如果一块GPU理论峰值是1000 TFLOPS(BF16),但你实际训练一个大模型时测得的有效吞吐只有400 TFLOPS,那么:
bash
MFU = 400 ÷ 1000 = 40%
行业公开披露的数据里,头部实验室在训练超大规模语言模型时,MFU能做到**40%~55%**已经算是相当优秀的工程水平;很多团队实际项目中的MFU可能只有20%~30%,原因包括:
- 显存带宽跟不上(上一节讲的瓶颈)
- 多卡/多机通信开销(NVLink、InfiniBand带宽和延迟限制)
- 算子没有针对硬件充分优化(比如没用上FlashAttention这类高效实现)
- Batch size、序列长度等超参数没有调到硬件友好的区间
- 数据加载(I/O)跟不上GPU消耗数据的速度
所以,看到一份"该公司用了10万张H100训练模型"的报道时,不能简单用"卡数 × 单卡峰值算力"去估算这家公司的真实算力产出------中间还要打一个MFU的折扣,这个折扣往往是资产负债表上看不到、但工程实力上差距最大的地方。
八、为什么FP8和INT8数值看起来差不多,但不能换算?
回到最初的困惑:
bash
FP8 ≈3.3 PFLOPS
INT8 ≈3300 TOPS
很多人觉得数字接近,是不是本质一样?
不是。 两者只是"吞吐量恰好接近",原因是FP8和INT8都是8bit位宽,Tensor Core每个时钟周期能处理的数据"份数"相近,所以数字量级差不多。但:
- 一个算的是浮点运算(Floating Point,能表示小数、有指数位)
- 另一个算的是整数运算(Integer,只能表示整数)
这是两套完全不同的数制和硬件电路,单位不同,不能互相换算,也不能相加。 就像"每小时处理3300个苹果"和"每小时处理3300个石头",数量看着一样,但"苹果"和"石头"不是一个东西,不能说这个仓库"总共处理6600个物品的产能"。
九、为什么统计算力中心/集群规模时,通常用BF16口径?
各类算力普查、政府算力中心备案、GPU集群规格表,几乎清一色要求填写 PFLOPS(通常默认BF16/FP16口径),而不是FP8或INT8。
原因很直接:目前绝大多数大模型的训练,以及相当一部分推理场景,仍然以BF16/FP16作为主力精度------FP8虽然在推理侧越来越普及(尤其借助NVIDIA Transformer Engine这类自动混合精度方案),但作为"通用可比"的统计口径,BF16是目前业界最具共识、最不容易因为"精度选择"而互相甩数字差距的标准。
一些参考对比(均为BF16/FP16稠密口径,来源于各厂商公开资料,量级仅供直观感受,具体以官方最新数据为准):
bash
RTX 4090(消费级) ≈1.32 PFLOPS
RTX 5090(消费级) ≈1.61 PFLOPS
H100(数据中心) ≈0.99 PFLOPS(注意:数据中心卡为了可靠性和精度控制,
单卡BF16峰值不一定比顶级消费卡"账面更高",
真正差距体现在显存、带宽、互联、稳定性上)
B200(数据中心) ≈2.25 PFLOPS
看到这里你可能已经发现一个反直觉的现象:顶级消费卡的BF16账面算力,有时甚至能追上甚至超过上一代数据中心卡。这也是为什么单纯拿PFLOPS数字去判断"哪张卡更适合训练大模型"是不够的------ECC显存纠错、多卡NVLink/NVSwitch互联带宽、长时间高负载下的稳定性和良品率、厂商对数据中心场景的软件生态支持(CUDA、cuDNN、NCCL等),这些才是数据中心卡真正卖的"溢价"所在,而不仅仅是那个PFLOPS数字。
十、用 nvidia-smi 实测:怎么判断你的GPU有没有被"喂饱"
前面讲的都是理论峰值。现在换个角度:你手头这张卡,此时此刻到底有没有把算力用起来? 最常用的命令就是 nvidia-smi。先看一下最基础的输出长什么样:
bash
$ nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===========================================+========================+======================|
| 0 NVIDIA H100 80GB HBM3 On | 00000000:18:00.0 Off | 0 |
| N/A 52C P0 412W / 700W | 71303MiB / 81559MiB | 97% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|===========================================================================================|
| 0 N/A N/A 18204 C python train.py 70210MiB |
+-----------------------------------------------------------------------------------------+
对照前面几章讲的概念,逐项拆解这张表:
| 字段 | 含义 | 和"算力"的关系 |
|---|---|---|
Memory-Usage(71303MiB / 81559MiB) |
显存已用量 / 总量 | 决定了你能塞下多大的模型和batch size;接近打满时,训练很容易OOM |
GPU-Util(97%) |
GPU利用率 | 常见误解重灾区,见下文详细解释 |
Pwr:Usage/Cap(412W / 700W) |
当前功耗 / 功耗上限 | 功耗接近上限,通常说明Tensor Core确实在高强度工作;功耗和利用率同时偏低,往往是带宽受限的信号 |
Temp(52C) |
核心温度 | 温度过高会触发降频(Thermal Throttling),间接拉低实际算力 |
Perf(P0) |
性能状态 | P0是最高性能状态,如果掉到P2/P8等,说明GPU被限频或处于节能状态 |
最大的坑:GPU-Util 97% ≠ 跑满了97%的算力
这是几乎所有刚接触GPU监控的人都会踩的坑。nvidia-smi 里的 GPU-Util 严格来说,只表示"在采样周期内,GPU上至少有一个内核(kernel)在执行"的时间占比,它完全不关心:
- Tensor Core 有没有被用满,还是只用了CUDA Core在做零星计算
- 这个kernel的运算强度高不高(回忆第六节的Roofline模型)
- 实际吞吐距离理论峰值PFLOPS还有多远
举个例子:一个纯逐token推理任务,GPU-Util显示99%,看起来"很忙",但由于是典型的带宽受限场景(第六节),Tensor Core 大量时间其实在"空转等数据",真实的算力利用率(MFU)可能只有10%-20%------nvidia-smi 的这一栏完全看不出这个区别。
更细粒度的排查命令
如果只用一次性的 nvidia-smi 看不出问题,可以用这几个命令做持续监控和交叉验证:
bash
# 1. 每秒刷新一次,持续观察利用率/显存/功耗/温度的变化趋势
nvidia-smi dmon -s pucvmet -d 1
# gpu pwr temp sm mem enc dec mclk pclk
# Idx W C % % % % MHz MHz
0 412 52 97 41 0 0 2619 1980
这里多了一列 mem(41%),也就是显存控制器利用率 ------这一栏才是判断"是不是带宽受限"更直接的信号。上面这个例子里,sm(计算利用率)是97%,mem只有41%,说明这个任务偏计算受限,比较健康;如果反过来是sm低、mem很高,通常就说明遇到了带宽瓶颈,印证了第六节Roofline模型讲的判断逻辑。
bash
# 2. 自定义输出字段,方便写入日志或喂给监控系统(Prometheus/Grafana等)
nvidia-smi --query-gpu=timestamp,utilization.gpu,utilization.memory,memory.used,memory.total,power.draw,clocks.sm,clocks.max.sm --format=csv -l 1
timestamp, utilization.gpu [%], utilization.memory [%], memory.used [MiB], memory.total [MiB], power.draw [W], clocks.current.sm [MHz], clocks.max.sm [MHz]
2026/07/24 10:00:01, 97 %, 41 %, 71303 MiB, 81559 MiB, 412.30 W, 1980 MHz, 1980 MHz
这里 clocks.current.sm(当前SM时钟频率)等于 clocks.max.sm(最大频率),说明GPU没有被降频,这也是判断"是不是被限频拖累了实际算力"的关键一步------如果当前频率明显低于最大频率,大概率是温度墙或功耗墙在起作用。
一个重要事实:nvidia-smi 从来不会直接告诉你"多少TFLOPS"
翻遍 nvidia-smi 的所有输出字段,你会发现它压根不报告"当前实际跑了多少TFLOPS"------这一点本身就值得强调一下,因为很多人下意识以为GPU-Util就是算力利用率。要真正测出"此刻实际吞吐了多少有效算力",需要用更专业的工具,比如:
- NVIDIA Nsight Systems / Nsight Compute:可以精确测量Kernel级别的算力利用率、Tensor Core活跃率
- DCGM(Data Center GPU Manager):数据中心场景下更细粒度的遥测,能直接输出Tensor Core利用率等指标
- 框架自带的Profiler:如PyTorch Profiler,能结合模型结构算出实际FLOPs,再除以运行时间和理论峰值,手动算出MFU
也就是说,nvidia-smi 更适合做"体检式"的快速排查(有没有在跑、显存够不够、有没有过热降频),真正回答"我的PFLOPS用出来了多少"这个问题,还是要靠第七节讲的 MFU 计算和专业Profiling工具。
配图建议:一张实际截图,终端里跑`nvidia-smi dmon`的动态刷新画面,配合Grafana监控面板的GPU利用率/显存/功耗曲线图
十一、快速换算与避坑速查表
单位换算:
bash
1 TFLOPS = 10¹² FLOPS
1 PFLOPS = 1000 TFLOPS
1 EFLOPS = 1000 PFLOPS
避坑清单(看到一个算力数字时,先问自己这几个问题):
- 这是FLOPS(浮点)还是OPS/TOPS(整数)? ------ 单位不同,不能混着比
- 这是哪个精度下的数字?(FP32 / FP16 / BF16 / FP8 / FP4 / INT8 / INT4)------ 精度不同,数字天然差好几倍,不对齐精度的比较毫无意义
- 这是稠密(dense)还是稀疏(sparse)峰值? ------ 稀疏峰值通常是稠密的2倍,规格表里的小字标注千万别漏看
- 这是理论峰值,还是实测吞吐? ------ 理论峰值≠真实能跑出来的性能,中间还隔着MFU这道坎
- 这个场景是算力受限还是带宽受限? ------ 大模型推理很多时候拼的是显存带宽,不是PFLOPS
十二、一句话总结
FLOPS/PFLOPS 表示浮点算力,TOPS 表示整数算力;同一块芯片会针对不同精度(FP32、BF16、FP8、FP4、INT8、INT4)给出不同峰值,这些数值对应的是同一套硬件在不同工作模式下的性能,因此不能相加,也不能直接互相换算;同时还要分清是稠密还是结构化稀疏峰值(后者通常是前者的2倍),以及理论峰值和实际可用性能(MFU)之间的差距------真正决定大模型训练/推理体验的,往往不只是那个最显眼的PFLOPS数字,显存容量、显存带宽和多卡互联同样关键。
个人声明:
本文部分芯片规格数据整理自厂商官方数据手册及公开评测资料,具体数值以各厂商最新发布为准;不同评测机构的实测吞吐会因软件栈、批处理大小等因素有10%~30%左右浮动,仅供参考。有疑议不要喷俺,可以留言!!!