"GPU机器 = 专门装了1块或多块GPU来做并行计算的服务器/工作站;
GPU算力 ≈『算数能力(FLOPS/TOPS)』×『喂数据能力(显存容量+带宽)』×『连接能力(NVLink/PCIe/网络)』×『实际利用率』。
下面按层次拆开说。
一、什么是「GPU机器」?
简单讲:
GPU机器 = 有一块或多块计算型显卡(GPU)的服务器/工作站,用来跑深度学习、图像/视频计算等高度并行任务。
典型特征:
• CPU 负责:调度、逻辑控制、数据预处理、IO等;
• GPU 负责:大规模矩阵乘、卷积,这些就是模型训练/推理的主体;
• 一般还会有:
• 大内存(128G+)
• 快存储(NVMe SSD)
• 高速总线(PCIe 4.0/5.0, NVLink)
• 机箱和电源可以插 2~8 块甚至更多 GPU。
⸻
二、算力有几种层次?
你说的"算力"其实有不同层次,需要先分清:
- 单卡理论峰值算力
• 厂商规格里的:XX TFLOPS(FP32)、XX TFLOPS(FP16)、XX TOPS(INT8)等。
- 单卡/整机的有效算力
• 真实跑训练/推理时能达到的吞吐:images/s、tokens/s、QPS 等。
- 整机/集群算力
• 多卡、多机叠加后的整体能力,还受网络、软件栈影响。
你真正在做项目时,最重要的是 "有效算力",而理论算力主要用来做对比和估算上限。
⸻
三、单块 GPU 理论算力怎么计算?
- 浮点算力(以 FP32 为例)
通用公式:
TFLOPS=CUDA核心数×每周期运算数×频率(Hz)1012 \text{TFLOPS} = \frac{\text{CUDA核心数} \times \text{每周期运算数} \times \text{频率(Hz)}}{10^{12}} TFLOPS=1012CUDA核心数×每周期运算数×频率(Hz)
通常:
• 每个核心每周期能做 2 次浮点运算(FMA:乘加)
所以常写成:
TFLOPS≈CUDA核心数×2×频率(Hz)1012 \text{TFLOPS} \approx \frac{\text{CUDA核心数} \times 2 \times \text{频率(Hz)}}{10^{12}} TFLOPS≈1012CUDA核心数×2×频率(Hz)
举个虚构的例子:
• 核心数 = 10,000
• Boost 频率 = 1.5 GHz = 1.5 × 10⁹ Hz
则:
TFLOPS≈10,000×2×1.5×1091012=30 TFLOPS \text{TFLOPS} \approx \frac{10,000 \times 2 \times 1.5 \times 10^9}{10^{12}} = 30 \text{ TFLOPS} TFLOPS≈101210,000×2×1.5×109=30 TFLOPS
厂商给的数据(比如"FP32 29.7 TFLOPS")就是这么算出来的。
- 低精度算力(FP16/BF16/FP8/INT8)
现代卡都会给出不同精度的算力,比如:
• FP16 / BF16:理论上往往 ≈ FP32 的 2~4 倍;
• INT8 / FP8:在推理场景下可以是 FP32 的数倍到十几倍。
因为这些都涉及到 Tensor Core / 矩阵核心 的具体设计,自己按核心数去算会很复杂。
实务中直接看官方规格里的:
• FP16 Tensor TFLOPS
• BF16 Tensor TFLOPS
• INT8 TOPS / Tensor TOPS
就行。
⸻
四、显卡算力不能只看 TFLOPS,还要看这些维度
从你做深度学习/AI 的角度,评估一块 GPU,关键看这些:
- 显存容量(Memory Size)
• 决定:能放多大的模型 / 多大的 batch size / 多长的序列。
• 例如:
• 24GB:勉强大模型单卡推理,小模型训练可以;
• 80GB:大模型训练、长上下文推理才比较舒服。
很多时候"显存不够"比"算力不够"更常见。
- 显存带宽(Memory Bandwidth)
• 单位:GB/s
• 决定:算力能不能被"喂饱"。
算力再高,如果显存带宽很低,核心空转,实际速度上不去。
大致公式(简化版):
带宽(GB/s)=显存位宽(bit)8×显存频率(GHz)×DDR倍数 \text{带宽(GB/s)} = \frac{\text{显存位宽(bit)}}{8} \times \text{显存频率(GHz)} \times \text{DDR倍数} 带宽(GB/s)=8显存位宽(bit)×显存频率(GHz)×DDR倍数
比如:
• 位宽 384bit
• 有效频率 2 GHz
• GDDR(双倍数据率,×2)
则大概:
3848×2×2=192 GB/s \frac{384}{8} \times 2 \times 2 = 192 \text{ GB/s} 8384×2×2=192 GB/s
(实际厂商会有更精确的计算和优化,直接看规格里给出的 "Memory Bandwidth" 即可)
-
显存类型 & 位宽
• 显存类型:GDDR6 / GDDR6X / HBM2 / HBM3 ...
• HBM 带宽高、功耗低,主要在数据中心卡上使用(如 A100、H100)。
• 显存位宽:256bit、320bit、384bit 等
• 位宽越宽,带宽上限越高。
-
GPU 内部架构
• SM(Streaming Multiprocessor)/ CU 数量
• Tensor Core / Matrix Core 的代数和数量
• 是否支持某些特殊指令(如 FP8、稀疏矩阵加速等)
这些都会影响在 深度学习框架(PyTorch / TensorFlow) 上的实际表现。
- 功耗和能效(TDP)
• TDP(W)越高,通常代表可以释放更多算力,但也受散热、电源限制;
• 实际做集群时,TFLOPS / W 这样的"能效比"也很关键。
⸻
五、从「单卡」到「GPU机器」的整体算力
- 多卡并行的理论算力
如果你有 N 块 GPU,单卡 FP16 Tensor 算力是 X TFLOPS,那么:
理论总算力=N×X \text{理论总算力} = N \times X 理论总算力=N×X
例如:
• 单卡 FP16 100 TFLOPS
• 8 卡机
理论上:800 TFLOPS。
- 现实中的「有效算力」
实际用起来要乘上一个利用率系数 η:
有效算力≈N×X×η \text{有效算力} \approx N \times X \times \eta 有效算力≈N×X×η
η 一般受这些影响:
• GPU 间互联:NVLink vs PCIe,拓扑是否合理;
• CPU 性能与内存带宽:数据预处理是否成为瓶颈;
• 存储 IO:数据集加载是否够快;
• 网络(多机):InfiniBand / RoCE 等;
• 软件栈:
• 驱动版本
• CUDA/cuDNN 版本
• 框架版本和编译方式
• 并行策略(Data Parallel / Tensor Parallel / Pipeline Parallel)
在工程里,η 能到 0.70.8 已经是非常不错的优化了,很多"开箱即用"的情况可能只有 0.40.6。
⸻
六、面向深度学习,怎么量化「算力」更实用?
工程里,比起 TFLOPS,你更关心这些指标:
- 训练场景
• images/s (图像任务)
• tokens/s (NLP/LMM/大模型)
• steps/s 或 每步训练时间(ms/step)
- 推理场景
• QPS(queries per second)
• tokens/s per GPU
• P95 / P99 延迟(ms)
可以用一个简单的估算方法帮你把 TFLOPS 转成时间感:
• 对一个 Transformer 模型,每生成 1 个 token 大概要做 ≈ 2 × 参数量 的 FLOPs(粗略估算,具体因结构不同);
• 如果模型参数量是 P(比如 70B),生成 B×L 个 token,总 FLOPs ≈ 2 × P × B × L;
• 用 GPU 有效算力(TFLOPS)去除,就能估一个时间。
这类估算你以后要是想具体算,我可以帮你代数推一遍。
⸻
七、实操建议:选卡 / 估算算力时该看什么?
如果你要比较或选型,可以按这个顺序看:
- FP16/BF16/Tensor 算力(TFLOPS/TOPS)
• 决定理论上能跑多快;
- 显存容量
• 决定你能不能把模型、batch 放进去;
- 显存带宽 + 显存类型(GDDR vs HBM)
• 决定算力能不能被"喂饱";
- 互联带宽(NVLink/PCIe)和拓扑
• 多卡/多机训练时会影响扩展效率;
- 真实 benchmark
• 尽量找别人跑类似模型(比如 LLaMA、Qwen、Stable Diffusion)的 images/s 或 tokens/s 数据;
- 能效比 & 成本
• TFLOPS/W、价格/TFLOPS、价格/GB 显存。