系列文章

  1. 深度学习基本概念
  2. 算力评估基础知识
  3. 大模型相关算子
  4. 华为系算力卡产品调研
  5. Nv系算力卡产品调研

算力评估

基本单位换算

单位 含义 数值
1 FLOP 1 次浮点运算
1 MFLOP 10610^6 FLOPs 百万次/秒
1 GFLOP 10910^9 FLOPs 十亿次/秒
1 TFLOP 101210^{12} FLOPs 万亿次/秒
1 PFLOP 101510^{15} FLOPs 千万亿次/秒

大型算力中心则用xxP来衡量总算力,也就是xxPFLOP


理论峰值 FLOPS 计算公式

FLOPS=核心数(CUDA数)×时钟频率 (Hz)×每周期操作数 (OP/cycle)\text{FLOPS} = \text{核心数(CUDA数)} \times \text{时钟频率 (Hz)} \times \text{每周期操作数 (OP/cycle)}

不同精度的“每周期操作数”不同,通常基于FP32进行倍数比较

时钟频率:

GHz(Gigahertz)= 10⁹ Hz,即每秒十亿次

MHz(Megahertz)= 10⁶ Hz,即每秒百万次


不同精度下的算力倍数(Base FP32)

精度 简称 与 FP32 的比率 说明
FP64 Float64 0.5×、1×、1/32×(取决于架构) 高精度,科学计算常用
FP32 Float32 深度学习训练常用
FP16 Float16 2×(通常) 深度学习混合精度训练
BF16 BFloat16 保留动态范围精度的FP16变种
FP8 Float8 4×(部分架构如H100) 极端压缩推理
INT8 Int8 4×(或更高) 推理性能最强,靠量化

浮点数精度结构为:1 bit sign + xx bit exponent + xx bit mantissa

换算为十进制公式:

Value=(1)S×(1+M)×2EbiasValue=(−1)S×(1+M)×2E−bias

  • SS:符号位(0 或 1)
  • MM:小数形式的 mantissa 尾数(如二进制 101 → 表示 0.625)
  • EE:指数位所表示的无符号整数值
  • bias\text{bias}:偏移量,确保指数支持正负

FP64:双精度浮点数

64 位浮点数,结构为:

1 bit sign + 11 bit exponent + 52 bit mantissa

精度高,可表示约 15~17 位十进制有效数字,数值范围非常大

倍数差异

架构 FP64 相对 FP32 性能 原因
NVIDIA Tesla V100 (Volta) 科学计算用卡,FP64 单元比例高
NVIDIA RTX 30 系列 (Ampere) 1/32× 游戏卡为主,几乎不优化 FP64 性能
AMD CDNA MI200 面向 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