如何测量或找到 VGG16 或 Resnet50 等模型的时间复杂度和内存复杂度?此外,使用 GTX GPU 或 RTX GPU 会不会因一台机器而异?
如何测量深度学习模型的时间和内存复杂度?
数据挖掘
深度学习
机器学习模型
记忆
时间复杂度
2022-03-01 11:31:46
1个回答
具体来说深度学习,你会看到很多研究论文报告了以下指标来比较他们论文中的时间复杂度(推理速度)和空间复杂度(模型大小)——
以 FLOP(浮点运算)表示的时间复杂度 -
FLOPs 通常用于描述运行给定模型的单个实例需要多少操作。FLOP 越多,模型进行推理所需的时间就越多。
根据参数数量的模型大小 -
如果一个有 5 个输入的感知器有 5 个可训练的权重参数,那么只需计算神经网络中可训练参数的总数。这将为您提供参数的总数。这通常以数百万或数十亿计算。
例如 -
在下面的论文图片中,作者将他的方法与使用这两个指标的其他模型进行了比较。
我们需要这两个指标的原因是参数较少的模型可能有更多的计算量(例如,resnet 中的残差连接不可训练但会增加计算成本,即更多的 FLOPs)。反之亦然,具有更多参数的模型可能具有更少的计算量。
最后,这些指标独立于硬件机器。这意味着这些指标将针对所有型号的所选机器进行相对扩展。例如,如果一个模型在 GPU_1 上 10 次 FLOP 需要 1 秒,而在 GPU_2 上同样需要 2 秒,那么另一个具有 100 次 FLOP 的模型在 GPU_1 上需要 10 秒,在 GPU_2 上需要 20 秒。我使用这些数字只是为了类比,不要从字面上理解它们。