深度学习中模型效率的三大指标:内存、计算量(FLOPs)和参数量(Params)的介绍
三者的主要关注点:
| 指标 | 关注点 | 单位 | 核心问题 |
|---|---|---|---|
| Parameters | 模型复杂度 | M/G/B | 模型有多大? |
| FLOPs | 计算量 | MFLOPs/TFLOPs | 算一次要多快? |
| Model Memory | 存储占用 | MB/GB | 装下它需要多少空间? |
单位
在计算机和AI领域中,参数量的单位使用国际单位制(SI)词头,以下是完整的对照表:
| 符号 | 英文全称 | 中文名称 | 数值 | 科学计数法 |
|---|---|---|---|---|
| K | Kilo | 千 | 1,000 | 10³ |
| M | Mega | 百万 / 兆 | 1,000,000 | 10⁶ |
| G | Giga | 十亿 / 千兆 | 1,000,000,000 | 10⁹ |
| T | Tera | 万亿 / 兆兆 | 1,000,000,000,000 | 10¹² |
| P | Peta | 千万亿 / 千兆兆 | 1,000,000,000,000,000 | 10¹⁵ |
模型内存
定义:存储模型所有参数所需的内存容量 = 参数量 × 每个参数的精度(字节数) 即:
常见精度类型及内存占用:
| 精度类型 | 每参数字节数 | 示例:1B参数模型 |
|---|---|---|
| FP32(单精度浮点) | 4 bytes | 4 GB |
| FP16/BF16(半精度) | 2 bytes | 2 GB |
| INT8(8位整型) | 1 byte | 1 GB |
| INT4(4位整型) | 0.5 bytes | 0.5 GB |
模型计算量(FLOPs)
定义:完成一次前向传播所需的浮点运算总量,对应计算时间复杂度,其作用为衡量计算复杂度和推理速度
计算方式(以矩阵乘法为例):
- 矩阵 A[m×n] × B[n×p] = C[m×p]
- FLOPs ≈ 2 × m × n × p (乘法和加法各算1次)
| 指标 | 全称 | 含义 | 单位 | 类比 |
|---|---|---|---|---|
| Parameters | 参数 | 模型可学习的权重数量 | M / G / B | 大脑的神经元数量 |
| FLOPs | Floating Point Operations | 浮点运算次数 | MFLOPs / GFLOPs / TFLOPs | 大脑的计算工作量 |
参数量(Params)
定义:模型中所有可学习的权重和偏置的总数,对应计算空间复杂度,其作用为衡量模型容量(Capacity)和存储需求
卷积、Transformer、线性层中的FLOPs与Params
线性层
| 指标 | 公式 | 说明 |
|---|---|---|
| Parameters | (I × O) + O |
输入维度I,输出维度O,偏置O |
| FLOPs | ≈ 2 × I × O × B |
B为batch size,系数2=乘+加 |
卷积
| 指标 | 公式 | 说明 |
|---|---|---|
| Parameters | K² × C_in × C_out + C_out |
K=核大小,C=通道数 |
| FLOPs | ≈ 2 × K² × C_in × C_out × H_out × W_out |
输出特征图每个点都计算 |
Transformer
| 组件 | Parameters | FLOPs |
|---|---|---|
| Multi-Head Attention | 4 × d_model² |
≈ 2 × 4 × d_model² × seq_len |
| FFN | 2 × d_model × d_ff |
≈ 2 × 2 × d_model × d_ff × seq_len |
| 标准配置:d_model=768, d_ff=3072, heads=12, seq_len=512 |
| 指标 | 计算 | 结果 |
|---|---|---|
| Attention Params | 4 × 768² | 2.36M |
| FFN Params | 2 × 768 × 3072 | 4.72M |
| 总Parameters | - | ~7M/层 |
| 总FLOPs | 2 × (4×768² + 2×768×3072) × 512 | ~7.6 GFLOPs/层 |
实操代码
在Python中,测量模型的计算量和参数量时主要是调用thop库中的profile函数,详细代码如下:
1 | import torch |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kaifan's Blog!





