算力评估基础知识
系列文章
算力评估
基本单位换算
| 单位 | 含义 | 数值 |
|---|---|---|
| 1 FLOP | 1 次浮点运算 | — |
| 1 MFLOP | FLOPs | 百万次/秒 |
| 1 GFLOP | FLOPs | 十亿次/秒 |
| 1 TFLOP | FLOPs | 万亿次/秒 |
| 1 PFLOP | FLOPs | 千万亿次/秒 |
大型算力中心则用
xxP来衡量总算力,也就是xxPFLOP
理论峰值 FLOPS 计算公式
不同精度的“每周期操作数”不同,通常基于FP32进行倍数比较
时钟频率:
GHz(Gigahertz)= 10⁹ Hz,即每秒十亿次
MHz(Megahertz)= 10⁶ Hz,即每秒百万次
不同精度下的算力倍数(Base FP32)
| 精度 | 简称 | 与 FP32 的比率 | 说明 |
|---|---|---|---|
| FP64 | Float64 | 0.5×、1×、1/32×(取决于架构) | 高精度,科学计算常用 |
| FP32 | Float32 | 1× | 深度学习训练常用 |
| FP16 | Float16 | 2×(通常) | 深度学习混合精度训练 |
| BF16 | BFloat16 | 2× | 保留动态范围精度的FP16变种 |
| FP8 | Float8 | 4×(部分架构如H100) | 极端压缩推理 |
| INT8 | Int8 | 4×(或更高) | 推理性能最强,靠量化 |
浮点数精度结构为:
1 bit sign + xx bit exponent + xx bit mantissa
换算为十进制公式:
- :符号位(0 或 1)
- :小数形式的 mantissa 尾数(如二进制 101 → 表示 0.625)
- :指数位所表示的无符号整数值
- :偏移量,确保指数支持正负
FP64:双精度浮点数
64 位浮点数,结构为:
1 bit sign + 11 bit exponent + 52 bit mantissa |
精度高,可表示约 15~17 位十进制有效数字,数值范围非常大
倍数差异
| 架构 | FP64 相对 FP32 性能 | 原因 |
|---|---|---|
| NVIDIA Tesla V100 (Volta) | 1× | 科学计算用卡,FP64 单元比例高 |
| NVIDIA RTX 30 系列 (Ampere) | 1/32× | 游戏卡为主,几乎不优化 FP64 性能 |
| AMD CDNA MI200 | 1× | 面向 HPC(高性能计算)优化 |
| NVIDIA H100 | 0.5× | 平衡科学与 AI 的混合卡 |
GPU 的 FP64 性能 ≠ FP32 性能 × 1,因为硬件上通常不设置等量的 FP64 执行单元,游戏卡尤其不关注
FP32:单精度浮点数
32 位结构:
1 bit sign + 8 bit exponent + 23 bit mantissa |
可表示 69 位十进制有效数字,通常是 深度学习的默认格式。
- 训练深度学习模型(默认数据类型)
- 图形渲染、物理引擎
- 工程计算中常用,精度够用且性能不错
FP16:半精度浮点数
16 位结构:
1 bit sign + 5 bit exponent + 10 bit mantissa |
-
精度约为 3~4 位十进制有效数字,数值范围远小于 FP32。
-
支持的 GPU 会用 Tensor Core 加速 FP16 乘加,吞吐是 FP32 的 2~4 倍。
场景
- 混合精度训练(NVIDIA 的 AMP)
- 适度压缩模型参数
- 对精度要求不高时加速计算
BF16:Brain Floating Point 16
与 FP32 拥有相同的指数位数(8 bits),但尾数只有 7 位(而不是 23)
1 sign + 8 exponent + 7 mantissa |
动态范围与 FP32 相同,但精度比 FP16 更差,不容易数值下溢。
- 几乎不会引起梯度爆炸/消失问题
- 可无痛替换 FP32 用于训练
- 被 Google TPU 和 NVIDIA Ampere 以后广泛支持
场景
- 深度学习训练(取代 FP32)
- 分布式训练(因宽范围、低通信成本)
FP8:低精度浮点数
- 结构因厂商不同有多种,例如:
- E4M3:4 位指数 + 3 位尾数
- E5M2:5 位指数 + 2 位尾数
- 极端压缩,精度非常有限,适合低灵敏度阶段使用
- NVIDIA Hopper(H100)开始大规模支持
场景
- 大模型推理(如 LLM)
- 极端算力/带宽优化
- 微调预训练模型(QLoRA)
INT8:8位整数
特点
- 仅使用整数(-128 ~ 127 或 0~255)
- 精度非常低,但乘加极快
- 多用于 “量化后的模型”,显著减少模型大小和计算复杂度
场景
- 推理部署(如在服务器、边缘设备上)
- 替代 FP32/FP16 模型用于加速
- INT4 / INT2 也逐渐兴起,用于极端压缩
真实芯片例子(NVIDIA A100)
| 精度 | 峰值算力 |
|---|---|
| FP64 | 9.7 TFLOPS |
| FP32 | 19.5 TFLOPS |
| FP16 | 156 TFLOPS (Tensor Core) |
| BF16 | 156 TFLOPS (Tensor Core) |
| TF32 | 156 TFLOPS (Tensor Core) |
| INT8 | 624 TOPS(Tensor Core)= 0.624 PFLOPS |
