深度学习-计算量及GPU显存

    xiaoxiao2022-06-27  246

    1、计算量MACC与FLOP

    MACC:表示一次乘法累加。

    FLOP:表示计算量,比如一次乘法或加法运算。FLOPs为FLOP单位,因此1 MACC=2 FLOPs

    我们通常统计计算量使用FLOPs(浮点运算数),但是这里我们使用MACCs或乘法累加数。

    理论计算量用FLOPs表示,关系到算法速度,大模型的单位通常为G,小模型通道为M。注意两点:

    理论计算量通常只考虑只考虑CONV和FC等参数层的计算量,忽略BatchNorm和PReLU等等。一般情况,CONV和FC层也会忽略仅纯加操作的计算量,如bias偏置加和shotcut残差加等,目前技术有BN的CNN可以不加bias。理论计算量通常和实际ARM实测速度会有不一致,主要是理论计算量太过理论化,没有考虑不同硬件IO速度和计算力差异,最重要的是inference framework部署框架优化水平和程度差异,不同框架的优化的关注点不一样,同一框架对不同层的优化程度也不一样。Inference Framework以我用过的ncnn为代表。

    2、参数数量

    参数数量用params表示,关系到模型大小,单位通常为M,通常参数用float32表示,所以模型大小是参数数量的4倍。

    float32是4个字节,因此模型大小字节数=参数量×4

    3、GPU

    这是 nvidia-smi 命令的输出,其中最重要的两个指标:

    显存占用

    GPU 利用率

    显存可以看成是空间,类似于内存。

    显存用于存放模型,数据

    显存越大,所能运行的网络也就越大

    显存占用主要包括参数的显存占用、梯度与动量的显存占用、输入输出的显存占用、

    只有有参数的层,才会有显存占用。这部份的显存占用和输入无关,模型加载完成之后就会占用。

    深度学习中神经网络的显存占用有如下公式:

    显存占用 = 模型显存占用 + batch_size × 每个样本的显存占用

     

    GPU 计算单元类似于 CPU 中的核,用来进行数值计算。衡量计算量的单位是 flop: the number of floating-point multiplication-adds,浮点数先乘后加算一个 flop。计算能力越强大,速度越快。衡量计算能力的单位是 flops: 每秒能执行的 flop 数量

    显卡简介:

    参考:https://zhuanlan.zhihu.com/p/31558973

    https://zhuanlan.zhihu.com/p/37074222


    最新回复(0)