算力单位
正确理解和使用算力单位是评估AI基础设施的基础。 本文将详细介绍各种算力度量单位的定义、换算关系和应用场景。
预计阅读时间:45分钟·难度:初级·更新时间:2024年4月
算力单位概述
AI算力的度量涉及多个维度和单位,不同的场景使用不同的指标。 理解这些单位之间的关系对于准确评估和比较算力至关重要。
常见算力单位分类
算力单位分类体系:
├── 峰值计算能力
│ ├── FLOPs (浮点运算次数)
│ │ └── 衡量浮点计算能力
│ ├── TOPS (万亿次操作)
│ │ └── 常用于整数运算
│ └── IPS (指令/秒)
│ └── 通用处理器指标
│
├── 实际应用性能
│ ├── Tokens/s
│ │ └── 大模型生成速度
│ ├── Images/s
│ │ └── 图像生成速度
│ └── Inferences/s
│ └── 推理吞吐量
│
├── 内存性能
│ ├── 带宽 (GB/s)
│ │ └── 数据传输速率
│ └── 容量 (GB)
│ └── 可用存储空间
│
└── 通信性能
├── 带宽 (Gb/s)
│ └── 网络传输速率
└── 延迟 (μs)
└── 通信时延FLOPs详解
定义与计算
FLOPs定义
FLOPs (Floating Point Operations):
┌──────────────────────────────────────────┐
│ 定义:每秒执行的浮点运算次数 │
│ │
│ 常用单位: │
│ ├── MFLOPs = 10^6 FLOPs (百万) │
│ ├── GFLOPs = 10^9 FLOPs (十亿) │
│ ├── TFLOPs = 10^12 FLOPs (万亿) │
│ ├── PFLOPs = 10^15 FLOPs (千万亿) │
│ └── EFLOPs = 10^18 FLOPs (百亿亿) │
└──────────────────────────────────────────┘
计算示例:
├── 矩阵乘法 A(m×k) × B(k×n)
│ └── FLOPs = 2 × m × k × n
│ └── 每个输出元素需要k次乘法和k次加法
│
├── 全连接层 (输入d, 输出h)
│ └── FLOPs = 2 × d × h
│
├── 注意力计算 (seq_len=s, hidden=d)
│ ├── Q×K^T: 2 × s × s × d
│ ├── Softmax: ~s^2
│ ├── Attn×V: 2 × s × s × d
│ └── 总计: ~4 × s^2 × d
│
└── Transformer层 (seq=s, hidden=d, ffn=4d)
├── Self-Attention: 4 × s × d^2 + 4 × s^2 × d
├── FFN: 8 × s × d^2
└── LayerNorm等: ~O(s × d)
└── 总计: ~12 × s × d^2 (当s << d时)精度与性能
不同精度下的FLOPs
| 精度 | 位数 | 数值范围 | 应用场景 |
|---|---|---|---|
| FP64 | 64位 | ±1.8×10^308 | 科学计算 |
| FP32 | 32位 | ±3.4×10^38 | 传统深度学习 |
| TF32 | 19位 | FP32范围 | A100默认 |
| FP16 | 16位 | ±65504 | 混合精度训练 |
| BF16 | 16位 | FP32范围 | 稳定训练首选 |
| FP8 | 8位 | 有限范围 | H100推理 |
| INT8 | 8位整数 | -128~127 | 量化推理 |
GPU不同精度性能对比
| GPU | FP64 | FP32 | TF32 | FP16/BF16 | FP8/INT8 |
|---|---|---|---|---|---|
| A100 | 19.5 TF | 19.5 TF | 156 TF | 312 TF | 624 TOPS |
| H100 | 34 TF | 67 TF | 989 TF | 1979 TF | 3958 TOPS |
| B200 | 45 TF | 90 TF | 2250 TF | 4500 TF | 9000 TOPS |
TOPS单位
TOPS定义与应用
TOPS (Tera Operations Per Second):
┌──────────────────────────────────────────┐
│ 定义:每秒执行万亿次运算 │
│ │
│ 与FLOPs的关系: │
│ ├── FLOPs特指浮点运算 │
│ ├── TOPS可指任何运算类型 │
│ └── 通常用于整数运算或混合运算 │
└──────────────────────────────────────────┘
常见应用场景:
├── 边缘AI芯片
│ ├── 手机NPU: 10-50 TOPS
│ ├── 嵌入式AI: 1-10 TOPS
│ └── 自动驾驶: 100-1000 TOPS
│
├── 推理芯片
│ ├── INT8量化推理
│ └── 主要关注TOPS指标
│
└── 能效比指标
├── TOPS/W (每瓦性能)
└── 能效评估标准
示例对比:
├── Apple M3 NPU: 18 TOPS
├── Snapdragon 8 Gen3: 73 TOPS
├── Tesla FSD Chip: 144 TOPS
├── NVIDIA Orin: 275 TOPS
└── NVIDIA Thor: 2000 TOPSTokens/s指标
Tokens/s详解
Tokens/s (Tokens Per Second):
┌──────────────────────────────────────────┐
│ 定义:每秒生成的Token数量 │
│ │
│ 特点: │
│ ├── 直接反映大模型推理速度 │
│ ├── 用户可感知的性能指标 │
│ └── 受多种因素影响 │
└──────────────────────────────────────────┘
影响因素:
├── 模型大小
│ ├── 更大模型 = 更低Tokens/s
│ └── 70B vs 7B: ~10x差异
│
├── 硬件性能
│ ├── GPU计算能力
│ ├── 内存带宽
│ └── 批处理大小
│
├── 精度
│ ├── FP16: 基准
│ ├── INT8: +20-30%
│ └── INT4: +30-50%
│
└── 序列长度
├── 长序列 = 更低Tokens/s
└── KV Cache影响
典型性能数据:
├── LLaMA-2-7B @ A100
│ ├── Batch=1: ~80 tokens/s
│ └── Batch=32: ~1500 tokens/s
│
├── LLaMA-2-70B @ A100
│ ├── Batch=1: ~20 tokens/s
│ └── Batch=8: ~120 tokens/s
│
└── GPT-4 (估计)
└── ~30-50 tokens/s (用户感知)不同模型推理性能对比
| 模型 | GPU | Batch=1 | Batch=8 | Batch=32 |
|---|---|---|---|---|
| LLaMA-2-7B | A100 | 80 t/s | 500 t/s | 1500 t/s |
| LLaMA-2-13B | A100 | 50 t/s | 300 t/s | 900 t/s |
| LLaMA-2-70B | A100×2 | 20 t/s | 120 t/s | 350 t/s |
| LLaMA-3-70B | H100 | 35 t/s | 200 t/s | 600 t/s |
其他指标
补充性能指标
其他重要指标:
├── 内存带宽 (Memory Bandwidth)
│ ├── 单位: GB/s
│ ├── 影响: 大模型推理瓶颈
│ └── A100: 2039 GB/s, H100: 3352 GB/s
│
├── 显存容量 (VRAM)
│ ├── 单位: GB
│ ├── 决定: 最大模型大小
│ └── A100: 80GB, H100: 80GB, B200: 192GB
│
├── 互联带宽 (Interconnect)
│ ├── 单位: GB/s
│ ├── 影响: 分布式训练效率
│ └── NVLink4: 900GB/s, NVLink5: 1800GB/s
│
├── 功耗 (TDP)
│ ├── 单位: W
│ ├── 影响: 运营成本
│ └── A100: 400W, H100: 700W
│
└── 性价比
├── $/TFLOPs
├── $/GB VRAM
└── Tokens/s/$单位换算
常用单位换算关系
算力单位换算:
┌──────────────────────────────────────────┐
│ 数量级前缀: │
│ ├── K (Kilo) = 10^3 = 千 │
│ ├── M (Mega) = 10^6 = 百万 │
│ ├── G (Giga) = 10^9 = 十亿 │
│ ├── T (Tera) = 10^12 = 万亿 │
│ ├── P (Peta) = 10^15 = 千万亿 │
│ └── E (Exa) = 10^18 = 百亿亿 │
└──────────────────────────────────────────┘
换算示例:
├── 1 TFLOPs = 1000 GFLOPs
├── 1 PFLOPs = 1000 TFLOPs
├── 1 EFLOPs = 1000 PFLOPs
├── 1 TOPS ≈ 1 TFLOPs (整数运算)
└── 1 GFLOPs = 10^9 FLOPs
训练算力估算:
├── GPT-3训练量: 3.15×10^23 FLOPs
├── = 315,000 PFLOPs
├── = 315 EFLOPs
└── A100集群 (1000卡): ~300 PFLOPs
→ 训练时间 ≈ 1050 PFLOPs-days / 300 PFLOPs
≈ 3.5天 (理论值,实际更长)实际应用
实际应用示例
# 估算模型训练所需的算力和时间
def estimate_training(
params: int, # 参数量
tokens: int, # 训练token数
gpu_count: int, # GPU数量
gpu_tflops: float # 单GPU有效TFLOPs
):
"""估算训练需求"""
# 总计算量 (6 FLOPs per param per token)
total_flops = 6 * params * tokens
# 转换为PFLOPs-days
pflops_days = total_flops / (1e15 * 86400)
# 有效总算力 (PFLOPs)
total_pflops = gpu_count * gpu_tflops / 1000
# 训练天数
days = pflops_days / total_pflops
return {
'total_flops': total_flops,
'pflops_days': pflops_days,
'training_days': days,
'gpu_hours': days * 24 * gpu_count
}
# 示例:LLaMA-2-70B
result = estimate_training(
params=70e9, # 70B参数
tokens=2e12, # 2T tokens
gpu_count=2000, # 2000张A100
gpu_tflops=150 # A100有效性能
)
# 输出:
# - 总计算量: 8.4e23 FLOPs
# - 约9715 PFLOPs-days
# - 训练约32天
# - 约1,536,000 GPU小时