欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 深度学习基础(四)——计算量(FLOPs)、参数量(Params)、计算速度(FLOPS/TOPS))

深度学习基础(四)——计算量(FLOPs)、参数量(Params)、计算速度(FLOPS/TOPS))

2025/9/24 18:58:25 来源:https://blog.csdn.net/weixin_45377542/article/details/147627855  浏览:    关键词:深度学习基础(四)——计算量(FLOPs)、参数量(Params)、计算速度(FLOPS/TOPS))

一、计算量FLOPs

FLOPs,全称为Floating Point Operations, (s为复数缩写),浮点运算数,指模型完成一次前向传播所需的浮点运算次数,可以理解为计算量(模型的时间复杂度),用来衡量算法/模型的复杂度。
意义:FLOPs越高,模型计算复杂度越高,推理速度可能越慢。
关键规则

  • 一次乘加计算计为 2 F L O P s 2FLOPs 2FLOPs(乘法+加法)

计算公式
全连接层 F L O P s = 输入维度 ∗ 输出维度 ∗ 2 FLOPs = 输入维度 * 输出维度 * 2 FLOPs=输入维度输出维度2
卷积层 F L O P s = 输出高 ∗ 输出宽 ∗ 卷积核高 ∗ 卷积核宽 ∗ 输入通道数 ∗ 输出通道数 ∗ 2 FLOPs = 输出高 * 输出宽 * 卷积核高 * 卷积核宽 * 输入通道数 * 输出通道数 * 2 FLOPs=输出高输出宽卷积核高卷积核宽输入通道数输出通道数2
激活函数/池化层:操作计算量通常较小,一般不计入FLOPs
BN层 F L O P s = 4 ∗ 输入元素个数 FLOPs = 4*输入元素个数 FLOPs=4输入元素个数
示例

  • 全连接层输入100维, 输出50维: F L O P s = 100 ∗ 50 ∗ 2 = 10000 FLOPs = 100 * 50 * 2 = 10000 FLOPs=100502=10000
  • 卷积层输入 224 ∗ 224 ∗ 3 224*224*3 2242243, 输出 112 ∗ 112 ∗ 64 112*112*64 11211264, 卷积核 3 ∗ 3 3*3 33, 步长2: F L O P s = 112 ∗ 112 ∗ 3 ∗ 3 ∗ 3 ∗ 64 ∗ 2 ≈ 8.7 亿 FLOPs = 112 * 112 * 3 * 3 * 3 * 64 * 2 ≈ 8.7亿 FLOPs=1121123336428.7亿

二、参数量Params

参数量是指模型可训练参数的总数量,包含权重和偏置,可以理解为模型的空间复杂度。
意义:参数越多,模型复杂度越高,可能过拟合风险越大,且对计算资源要求更高。
计算公式
全连接层 P a r a m s = 权重数量 + 偏置数量 = (输入维度 ∗ 输出维度) + 输出维度 Params = 权重数量+偏置数量 = (输入维度 * 输出维度)+ 输出维度 Params=权重数量+偏置数量=(输入维度输出维度)+输出维度
卷积层 P a r a m s = 权重数量 + 偏置数量 = (卷积核高 ∗ 卷积核宽 ∗ 输入通道数 ∗ 输出通道数) + 输出通道数 Params = 权重数量+偏置数量 = (卷积核高 * 卷积核宽 * 输入通道数 * 输出通道数) + 输出通道数 Params=权重数量+偏置数量=(卷积核高卷积核宽输入通道数输出通道数)+输出通道数
BN层:Params = 2 * 通道数

示例

  • 全连接层输入100维, 输出50维: P a r a m s = 100 ∗ 50 + 50 = 5050 Params = 100 * 50 + 50 = 5050 Params=10050+50=5050
  • 卷积层输入 224 ∗ 224 ∗ 3 224*224*3 2242243, 输出 112 ∗ 112 ∗ 64 112*112*64 11211264, 卷积核 3 ∗ 3 3*3 33, 步长2: P a r a m s = 3 ∗ 3 ∗ 3 ∗ 64 + 64 = 1792 Params = 3 * 3 * 3 * 64 + 64 = 1792 Params=33364+64=1792

基于pytorch计算参数量和FLOPs

import torch
from thop import profilemodel = torch.nn.Conv2d(3, 64, kernel_size=3)
input = torch.randn(1, 3, 224, 224)
flops, params = profile(model, inputs=(input,))
print(f"FLOPs: {flops / 1e9} G, Params: {params / 1e6} M")

三、FLOPS

FLOPS,全称为Floating Point Operations Per Sencond,表示设别每秒能完成的浮点运算次数,可以理解为计算速度。
意义:衡量计算设备的算力(如GPU/TPU的峰值算力)。
单位

  • 1 G F L O P S = 1 0 9 F L O P S 1 GFLOPS = 10^{9} FLOPS 1GFLOPS=109FLOPS(十亿次/秒)
  • 1 T F L O P S = 1 0 12 F L O P S 1 TFLOPS = 10^{12} FLOPS 1TFLOPS=1012FLOPS(万亿次/秒)
    示例:NVIDIA A100 GPU的峰值算力维19.5TFLOPS。

四、TOPS
TOPS,全称为Tera Operations Per Second, 每秒万亿次操作( 1 T O P S = 1 0 12 1 TOPS = 10^{12} 1TOPS=1012 次/秒)。
意义:衡量硬件(如AI芯片)的算力性能,常以整数运算
计算公式 T O P S = 时钟频率 ∗ M A U 数量 ∗ 2 TOPS=时钟频率 * MAU数量 * 2 TOPS=时钟频率MAU数量2,其中MAU是乘加单元,每个MAU每周期执行一次乘加
与FLOPs的关系
1、TOPS侧重整数/定点运算,FLOPS侧重浮点运算
2、若TOPS以int8为基准,FLOPS以FP16计算,则1 TFLOPS≈2 TOPS
3、TOPS专用于评估AI芯片算力;FLOPS评估通用计算硬件性能

四、根据FLOPs和Params匹配TOPS/FLOPS
1、FLOPs与硬件算力TOPS/FLOPS匹配
模型推理时间 ≈ F L O P s ÷ 硬件 F L O P S 模型推理时间 ≈ FLOPs ÷ 硬件FLOPS 模型推理时间FLOPs÷硬件FLOPS
例如,模型 F L O P s = 1 0 12 FLOPs=10^{12} FLOPs=1012次,硬件算力为 10 T F L O P S 10TFLOPS 10TFLOPS,则理论耗时约为0.1秒。
若模型使用int8量化,需优先匹配TOPS(如AI芯片),浮点模型(FP16/32)需匹配FLOPS(如GPU)
2、Params与内存带宽关联

  • 内存需求:Params决定模型存储占用,例如,100M参数需约400MB内存(每个参数4字节)
  • 带宽限制:硬件内存带宽需支持快速加载参数,避免因带宽不足导致算力闲置。 带宽 ≥ ( P a r a m s ∗ 数据类型大小) ÷ 推理时间 带宽 ≥ (Params * 数据类型大小)÷ 推理时间 带宽Params数据类型大小)÷推理时间。如 P a r a m s = 100 M = 400 M B Params = 100M=400MB Params=100M=400MB,推理时间需 ≤ 0.1 秒 ≤0.1秒 0.1,则带宽需 ≥ 4 G B / s ≥4 GB/s 4GB/s

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词