
刚开始接触AI相关项目时我特别怕看芯片规格表。同样一块GPU官网能列出十几个算力参数同样叫“算力”有的产品标TOPS有的标TFLOPS有的标GFLOPSFP32、FP16、INT8一排数字摆在面前不查半天手册根本分不清。后来在端侧推理、云上训练各种场景里反反复复对比参数、实测性能才把这些指标彻底吃透。这篇就用实际项目里积累的理解把算力这件事从头到尾拆一遍TOPS和TFLOPS什么关系FP32/FP16/INT8为什么会让算力数字成倍变化以及拿到一个标称算力之后怎么判断它到底能不能跑你的任务。1. 别急着背参数先搞清楚算力究竟在“算”什么很多人一上来就记“1 TOPS每秒一万亿次操作”这没错但没有触及本质。算力说到底是一个吞吐量概念芯片在一秒内能完成多少次基本数学运算。问题在于“一次数学运算”是个可大可小的筐。你可以数一次浮点加法可以数一次整数乘累加也可以数一次矩阵里的FMA乘加指令口径不同结果能差好几倍。这就像问一座港口的“运输能力”货代关心集装箱量客运站关心旅客人次散货码头关心吨位。数据本身都是对的但口径不一样放在一起比较就会闹出笑话。CPU、GPU、NPU虽然都在“算”但它们各自擅长的运算类型、数据宽度完全不同于是延续了几套不同的算力指标这就是混乱的根源。1.1 算力计算的基本盘核心数×频率×每周期操作数从最底层看芯片算力高不高主要由三件事决定计算单元的数量、运行频率、以及每个计算单元在一个时钟周期内能完成多少次目标运算。核心数有多少个可执行计算的核心GPU里叫CUDA核心/流处理器NPU里叫MAC阵列。频率核心每秒跑多少个时钟周期比如2.5GHz就是一秒25亿个周期。每周期操作数每个核心每个周期完成几次运算这跟数据位宽、指令集直接相关。以CPU举例一条AVX512指令能一次性处理16个FP32浮点数如果某个核心每周期能执行一条包含乘加的AVX512指令那它每周期就是32次浮点操作16次乘法16次加法。一个8核3.5GHz的CPU如果支持双FMA单元理论FP32算力大约就是8×32×3.5GHz≈896GFLOPS。这个数字不算小但和GPU一比又差得远因为GPU的核心数量是几千上万个靠“堆核心”换吞吐。算力公式本身并不神秘所有标称值都能拆成这样。1.2 FLOPS、TOPS、GFLOPS到底是谁的单位先做个词源拆解FLOPS Floating-point Operations Per Second每秒浮点运算次数。OPS Operations Per Second每秒操作次数前面的Ttera表示10的12次方所以TOPS每秒万亿次操作。GFLOPS里的G是10的9次方PFLOPS里的P是10的15次方。注意一个很容易混淆的写法。严格在大写层面FLOPS复数S是一个速率单位FLOPs小写s常被用来指浮点运算总量论文里常说“这个模型的FLOPs是多少”指的是一次推理需要的总运算量而不是每秒速率。很多工具如thop输出的也是总量。这个历史遗留的混用非常普遍你只需要在脑子里确认这个数字后面有没有“每秒”的含义就能分辨它到底在说什么。为什么传统芯片爱标TFLOPS而AI芯片爱标TOPS因为通用计算和科学计算大量依赖浮点运算CPU和GPU的浮点能力是核心卖点而很多AI芯片在做推理时主要执行的是卷积和矩阵乘这些运算在端侧被量化成INT8整数运算后算力高出一大截用TOPS报数更好看。严格说TOPS并不等于“AI算力”它只是把所有整数操作都算了进去看参数时务必记住这一点。1.3 不同芯片的算力指标为什么不能直接比一块标称8TFLOPS的GPU和一块标称8TOPS的NPU哪一个更强这问题没有答案因为前者是每秒8万亿次单精度浮点运算后者是每秒8万亿次整数运算。即使数字相同两者处理的数学对象都不一样。更隐蔽的是“操作”的口径差异。同样是TOPSA芯片可能每个周期把一次整数乘加算作一次操作B芯片可能算作两次乘一次加一次。用户看到的都是“8TOPS”实际吞吐差一倍只有在完整看过芯片的指令集文档后才能发现。所以在看任何算力宣传时我第一件事是确认它标的是什么单位的什么精度然后才是数字大小。数字背后口径的统一比数字本身的差异重要得多。2. FP32、FP16、INT8数值精度如何决定芯片的“分档玩法”FP32、FP16、INT8这几个词表面上说的是数值格式实际上是硬件计算单元的设计分档。同一块芯片为什么会冒出FP32算力、FP16算力、INT8算力三个数因为芯片内部针对不同精度提供了不同的计算路径这条路能做的运算比那条路快也可能慢。搞懂这些格式才算真正看懂了参数表。2.1 用尺子做类比一次看懂四种数值格式计算机里的数字归根到底是一串0和1不同格式只是约定用多少位来表示一个数。位数的分配有讲究主要由符号位、指数位、尾数位三部分组成。数值格式符号位指数位尾数位有效十进制位大致表示范围FP32单精度1位8位23位约7位±3.4×10^38FP16半精度1位5位10位约3位最大65504BF16脑浮点1位8位7位约2~3位与FP32范围一致INT88位整数无补码--整数精确-128~127用尺子类比FP32像一把最小刻度到毫米的钢尺量什么都踏实FP16像刻度到厘米的软尺轻便但细小的部分会被舍掉INT8则像一排整数计数筹码只认整数没有小数概念。BF16比较特殊它保留FP32的指数位范围却把尾数大幅砍到7位量程极大但精度很粗好处是训练时不容易像FP16那样发生上溢/下溢现在很多大模型训练已经默认改用BF16。深度学习为什么敢用这么“糙”的数值因为神经网络里的权重和激活值绝大多数分布在很小的区间而且天然带有容错性。一个参数从1.0000001变成1.0001对几百万个参数的协同输出来说影响会被后续层稀释掉。这个“精度够用就好”的观察是整个低精度计算革命的逻辑起点。2.2 乘累加单元的面积游戏为什么低精度算力翻倍深层原因是硬件层面的。神经网络计算的核心是矩阵乘矩阵乘的核心是乘累加运算MAC一次MAC相当于一次乘法加一次加法算两次浮点操作。做乘法在硬件里靠乘法器电路数据位宽越宽需要的晶体管和芯片面积越大。假设每个FP32乘法器占一份面积那么同一块硅片面积里理论上可以放约两个FP16乘法器或四个INT8乘法器于是低精度的峰值通量成倍上涨。NVIDIA GPU从Volta架构引入Tensor Core后用专用矩阵单元做低精度矩阵乘FP16相对FP32、INT8相对FP16的算力翻倍更加彻底。但要注意翻倍不是必然的比例取决于架构设计。消费级RTX 4090的FP32算力是82.6TFLOPSTensor Core的FP16稠密算力约165TFLOPSINT8稠密算力约330TOPS基本是1:2:4。有的芯片只把资源砸在INT8上FP32弱得可怜有的芯片侧重BF16而不是FP16还有的芯片支持FP8端侧新架构里甚至会专门标出FP8算力。同样叫“算力翻倍”不是每个架构都按同一张剧本走。2.3 量化和混合精度训练低精度真正落地的两条路低精度算力高但模型不能直接拍脑袋换精度需要两套工程手段支撑。训练侧主流方法是混合精度训练。权重主副本始终保存在FP32前向和反向计算用FP16或BF16加速每次优化器更新前把FP16梯度转回FP32再更新。为了防止FP16小梯度直接变成0还会做梯度缩放loss scaling。推理侧主流方法是量化。把训练好的FP32权重通过公式qround(r/scale)zero_point映射到INT8整数区间其中scale是步长zero_point是零点偏移。用校准数据集统计出权重和激活的分布范围后就能把模型压缩到原来的四分之一推理时走INT8计算路径速度快很多。理解量化后你就明白为什么“这个模型在这个盒子上能跑INT8在另一个盒子上跑不了”——不是算力问题而是芯片的推理框架和算子库有没有完整支持量化模型。算力是硬件上限量化工程是把模型塞进这个上限的手段两者要配套看。3. 手算一张卡的真实算力公式、单位换算与常见误区整篇博文里这部分我觉得最值得反复看。因为当你真正坐下来要对比两块板卡时需要的不是“感觉够用”而是能自己把标称算力拆开甚至能自己估算。算力公式很简单但单位换算里有不少坑。3.1 用最原始的公式估算RTX 4090的FP32算力先来实际算一遍。RTX 4090有16384个CUDA核心官方Boost频率约2.52GHz。FP32算力公式是FP32 TFLOPS CUDA核心数 × 每核心每周期浮点操作数 × 频率(GHz) / 1000每个CUDA核心每周期最多做一次FP32乘加也就是2次浮点操作代入就是16384×2×2.52GHz÷1000≈82.6TFLOPS和官网的82.58TFLOPS完全对得上。这个计算方法在多数GPU上通用不同架构差异只在“每核心每周期操作数”这个因子。用Python写出来就是几行cuda_cores 16384 flops_per_core_per_cycle 2 # 一次FMA算乘和加 boost_ghz 2.52 tflops_fp32 cuda_cores * flops_per_core_per_cycle * boost_ghz / 1000 print(fRTX 4090 FP32峰值约: {tflops_fp32:.1f} TFLOPS) # 输出: RTX 4090 FP32峰值约: 82.6 TFLOPSTensor Core的算力估算更复杂因为它每个周期能执行的矩阵规模跟代际、形状绑定。H100上的FP16 Tensor算力之所以能到近千TFLOPS靠的是大量专用矩阵单元。这里就不展开指令集细节了只说一个通用结论Tensor Core算力矩阵单元数量×每个单元每周期能处理的MMC次数×频率。3.2 TOPS和TFLOPS的“约等号”产业里最常用的换算惯例很多人想知道1TOPS等于多少TFLOPS。严格数学上两者没有转换关系因为整数操作和浮点操作不是同一种东西。但产业里大量场景需要粗略折算于是有了一套基于主流芯片设计的经验比例。指标含义同一颗芯片内的典型比例关系INT8算力每秒万亿次整数操作基准记为XFP16算力每秒万亿次半精度浮点操作约X/2FP32算力每秒万亿次单精度浮点操作约X/4也就是说看到一颗芯片标称“100TOPS INT8”按惯例反推它的FP16能力大约50TFLOPSFP32大约25TFLOPS。但这个比例只是经验值前提是芯片完整包含了FP32、FP16、INT8三条计算路径。很多ASIC芯片只做INT8浮点几乎不可用硬套这个比例就会失真。换算关系背后的数学是MAC。深度学习的矩阵乘可以视为大量MAC堆叠一次MAC一次乘法一次加法2次FLOPs。所以同样通量的硬件TFLOPS数值通常等于MAC吞吐的两倍。而INT8每个数据只有8位同样的数据通道宽度能塞下两倍的操作数于是TOPS又成为FP16 TFLOPS的约两倍。记住这个“MAC翻倍”逻辑比死记“1TOPS≈0.5TFLOPS”更靠谱。3.3 算力高不代表跑得快内存带宽和利用率才是隐形天花板纸面算力是理论峰值实际跑任务时绝大多数系统不会贴着峰值运行。这里有两个关键概念。算术强度与Roofline模型。算术强度计算量/访存量单位是FLOPs/Byte。当任务的算术强度低于芯片平衡点时系统是访存密集型算得再快也在等数据搬移瓶颈在内存带宽只有算术强度足够高系统才会成为计算密集型算力标称值才有意义。小batch推理、轻量模型在端侧的很多场景都落在访存密集区这也是为什么同样标称50TOPS的盒子跑同一个模型帧率可能差一倍。利用率MFU/HFU。数据中心训练一个大模型MFU能到40%~50%已经算优秀推理时受小算子启动开销影响有效吞吐常常只有峰值的三成。也就是说标称100TOPS的设备实际能有30TOPS的稳定利用率再正常不过不要把它当成硬件虚标这是所有实算系统的物理现实。所以我的判断习惯是先用纸面算力粗筛再用带宽判断瓶颈最后一定拿真实模型在目标设备上跑一轮benchmark。规格表给的是一个梦实测结果才是现实。4. 拿着算力数字判断应用场景够不够用了解概念之后最实际的问题是我的任务需要多少算力这里没有绝对答案因为模型结构、输入分辨率、帧率要求各不相同但我按这些年做项目的经验整理了一张很有参考价值的量级对照表。4.1 一张算力需求对照表应用场景典型算力需求参考设备/平台语音唤醒、传感器识别、简单AI玩具0.5~2 TOPS(INT8)低端MCU/NPU门禁人脸、单路视频结构化、边缘OCR3~20 TOPS(INT8)Jetson Nano/Orin NX等多路摄像头分析、复杂检测任务20~100 TOPS(INT8)Orin AGX/部分国产盒子车载辅助驾驶L2/L330~100 TOPS(INT8)Mobileye、地平线芯片等L4自动驾驶、机器人大脑200~500 TOPS(INT8)NVIDIA Orin/Thor系列大模型训练、大规模推理集群数十~数百PFLOPS多卡H100级集群需要注意的是L4自动驾驶为什么要几百TOPS因为它同时要跑多个神经网络目标检测、语义分割、BEV感知、路径规划等模型并行执行而且帧率要求高。算力需求是多个模型、帧率和分辨率的乘积不是单一模型能糊弄的。所以判断场景时不能只问“这个模型的算力需求”要问“我这个系统里同时跑多少个模型、什么帧率”。4.2 训练与推理精度不同看指标的侧重点完全不同同样是算力训练和推理对指标的参考价值截然不同。训练阶段要跑反向传播数值梯度极其敏感主流还是FP16/BF16混合精度看FP16或BF16的TFLOPS才有意义INT8的TOPS基本不相关。推理阶段则相反模型已经训练完量化压缩到INT8后TOPS这个数字才是主要参考。这就是为什么你不能拿“INT8 100TOPS”的盒子去评估训练任务也不能拿“FP32 25TFLOPS”的显卡去评估INT8推理。很多朋友在选型时就是被单一营销数字带偏没有先想清楚任务属于“训练”还是“推理”导致买了一台算力规格看起来很高、实际用不上的设备。4.3 显存容量和带宽哪些算力发挥不出来的场景算力再高数据装不下就是白搭。大模型推理时模型权重和KV Cache都要常驻显存。RTX 4090算力很强但24GB显存跑7B模型已经捉襟见肘如果要在批处理场景下跑13B以上模型显存容量会先于算力成为瓶颈。数据中心同理H100 80GB的容量优势有时比它的算力优势更值钱。还有一个容易被忽略的指标是内存带宽。现在很多芯片标称算力逐年翻倍内存带宽却往往只涨了30%~50%导致很多新模型在旧平台上跑瓶颈悄悄从计算转移到访存。判断一个任务能不能吃满算力先看它一遍推理需要读多少权重和中间激活再对比平台的带宽心里就有数了。顺便提一句平时调用云端API时你在终端看到的“延迟”底层同样受这套带宽和利用率逻辑支配厂商按token计费的底气也来自算力的调度成本。5. 挑参数表和跑实测时我踩过的一些坑最后分享一些实战经验。看过的规格表越多越觉得“算力”这个词被用滥了。如果只看厂商宣传页的数字你很可能会踩进几个非常典型的坑里。5.1 参数表最常见的三种“文字游戏”第一个坑是只报单一“AI算力”不写精度。默认就拿INT8稀疏算力当亮点甚至不告诉你这个数字带不带稀疏条件。稀疏sparse算力通常能达到稠密dense算力的两倍但这个两倍的前提是模型稀疏度足够且硬件能利用稀疏结构现实中和稀疏相关的快速权重剪枝往往没有宣传页那么理想。第二个坑是把TOPS和TFLOPS混着说。有的厂商为了数字好看把浮点算力也包装成“TOPS”有的则反过来。同一颗芯片标“INT8 100TOPS”和标“FP16 25TFLOPS”数字差四倍描述的是同一件事只是在用不同精度度量的同一性能。不懂换算的人很容易觉得100比25“强很多”。第三个坑是峰值频率。规格表里的Boost频率是理想散热条件下的最大频率到了笔记本、迷你主机、嵌入式平台受功耗墙和散热限制持续运行后频率会明显下降。标称100TOPS的盒子稳定满载时可能只有60~70TOPS这不是厂商说谎而是你没有额外看热设计和持续功耗就默认它可以永远保持峰值。5.2 我的选型决策流程现在我做选型基本会按这个流程走一遍明确任务类型训练还是推理单模型还是多模型并发目标帧率是多少。估算算力量级用上述对照表粗筛再对候选模型做一次FLOPs统计。核对内存带宽和容量确认带宽不会成为瓶颈显存装得下目标模型。看生态和工具链CUDA/TensorRT/ONNX Runtime/厂商自带框架对模型的算子支持是否完整。小规模实测拿真实模型和真实输入分辨率在目标设备上跑benchmark看稳定的持续帧率和功耗。用profiler看瓶颈确认是计算密集、访存密集还是后处理在拖后腿。这套流程能帮你避开绝大多数“看着参数很猛用起来很拉”的坑。5.3 一次翻车复盘瓶颈根本不在算力上具体说来我曾经遇到一个边缘盒子标称INT8算力50TOPS跑yolov5m 640x640时我们预期单帧延迟20ms以内实测却只有45ms。一开始也怀疑是不是算力虚标后来拿profiler一跑发现NPU占用率只有30%左右瓶颈根本不在算力而在两点一是内存带宽不够单帧要从内存搬整个输入和中间特征二是后处理NMS放在了CPU上CPU单线程成了另一个短板。这个案例后来成为我的口头禅“当你觉得算力不够时先profile别急着退货。”很多所谓算力不足实际上是内存、频率、后处理、框架算子支持度共同造成的。改进后处理阶段把NMS放到GPU或NPU上帧率几乎翻倍功耗没多花一分。这也说明标称算力只是硬件给的上限它能不能兑现取决于整个数据通路和软件栈。还有一个经验是关于云算力平台的。很多人租用云端GPU时看到“单卡4090”就直接下单结果光环境配置就折腾一天驱动版本、CUDA、PyTorch、容器镜像不匹配各种兼容性问题轮番出现。算力规格再高环境不通效率就是零。建议选云平台时优先看预置镜像是否适配你的框架版本先跑通小模型再上大任务。报错信息里看不懂的“CUDA out of memory”和“Illegal instruction”绝大多数是环境问题不是算力问题。最后再分享一点体会我现在看一张芯片已经不指望哪个单一数字能代表全部性能了。算力决定的是理论上限最终效果取决于四个因素的叠加算力、带宽、利用率、工具链。FP32、FP16、INT8这些精度本质上是在告诉你一个道理——在AI计算里精度不是越高越好而是够用就好。既然神经网络能接受低精度硬件就把它兑现成翻倍的算力这确实是过去几年AI硬件效率提升最核心的一条主线。理解了这条主线再看任何规格参数你都能一眼识别它到底在讲什么而不是被那些漂亮数字牵着走。