相关文章推荐
强健的太阳  ·  MATLAB ...·  1 年前    · 
另类的汤圆  ·  lym - 简书·  1 年前    · 
很酷的乌冬面  ·  Android ...·  1 年前    · 
科普帖:深度学习中GPU和显存分析

科普帖:深度学习中GPU和显存分析

深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中:

  • 何为“资源”
  • 不同操作都耗费什么资源
  • 如何充分的利用有限的资源
  • 如何合理选择显卡

并纠正几个 误区:

  • 显存和GPU等价,使用GPU主要看显存的使用?
  • Batch Size 越大,程序越快,而且近似成正比?
  • 显存占用越多,程序越快?
  • 显存占用大小和batch size大小成正比?

0 预备知识

nvidia-smi 是Nvidia显卡命令行管理套件,基于NVML库,旨在管理和监控Nvidia GPU设备。

nvidia-smi的输出

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

  • 显存占用
  • GPU利用率

显存占用和GPU利用率是两个不一样的东西,显卡是由GPU计算单元和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。

这里推荐一个好用的小工具: gpustat ,直接 pip install gpustat 即可安装,gpustat基于 nvidia-smi ,可以提供更美观简洁的展示,结合watch命令,可以 动态实时监控 GPU的使用情况。

watch --color -n1 gpustat -cpu 
gpustat 输出

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

  • 显存用于存放模型,数据
  • 显存越大,所能运行的网络也就越大

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

1*2+3                  1 flop
1*2 + 3*4 + 4*5        3 flop 

1. 显存分析

1.1 存储指标

1Byte = 8 bit
1K = 1024 Byte
1M = 1024 K
1G = 1024 M
1T = 1024 G
10 K = 10*1024 Byte

除了 K M G T 等之外,我们常用的还有 KB MB GB TB 。二者有细微的差别。

1Byte = 8 bit