在训练深度学习网络过程常常聽到朋友说卡,这里的卡就是显卡显卡包括显存和GPU。像1080Ti卡显存是11GB2080Ti显存卡同为11GB。 GPU计算单元用来数值计算的,常常这样表示:一秒钟能進行多少个浮点数先乘再加这样一次计算表示为一个flop。
深度学习过程中常用的数值类型是 float32,一个float32的大小为4个字节比如矩阵,float32占用顯存的大小为
神经网络占用包含两部分:
-
比如说神经网络中的某一卷积层的参数有,卷积参数+卷积输出的参数每一层的参数均需要保存,因为这些参数再后向传播过程中需要用到。
-
比如:这里没有表示bias如果有 + 相应输出 参数占用的显存 = 参数数目 X n Byte, n一般为4因为深度学习總参数类型一般为
float32
可以看出,除了保存W外还需要保存相应的梯度,因此参数 x2
这时候还需要保存动量,因此参数 x3
模型显存占用 = 每一层的顯存占用 + 优化器的显存占用
每个样本的显存占用 = 每一层的feature map + 对应的梯度
- 少用全连接全连接更加站显存
- 模型种可以采用下采样,这样的化模型输出的显存占用减少