图像处理深度学习模型训练速度的硬件影响因素

深度学习训练速度的影响因素

  • 1 数据流通路径
  • 2影响速率的因素
    • 2.1硬盘读取速度
    • 2.2PCle传输速度
    • 2.3内存读写速度
    • 2.4cpu频率
    • 2.5 GPU
    • 其他名词

以图象训练任务为例,从CPU,内存,硬盘和GPU方面对算法性能进行讲解

1 数据流通路径

  1. CPU发送指令,把图片从硬盘中读取到内存中
  2. CPU从内存中取出一批数据,转化为numpy array,并进行数据预处理,比如翻转,平移,颜色变换等,最后送回内存
  3. 内存和显存中各自开辟一块缓冲区,内存中的一个batch数据通过PCle通道传输到显存(GPU)当中,为什么送到显存中
  4. GPU核心从显存读取数据进行并行计算,结果返回显存(GPU核心数基本决定了显卡的计算能力)
  5. 显存中的结果通过PCle通道返回到内存

2影响速率的因素

2.1硬盘读取速度

训练前需要从硬盘读取数据到内存,然后进行预处理和GPU并行运算,硬盘读取速度慢的话GPU利用不足

2.2PCle传输速度

cpu图片数据流通过PCle读进显存,然后GPU核心的计算结果通过Pcle从显存送回内存。所以PCle的传输速度可以产生影响,比如说一个batch的数据(tensor shape:(32,224,224,3))通过PCle3.0 16(带宽为15.754GB/s)传输到GPU理论所需时间为2.44ms。(float32的tensor的size为322242243*8=0.0385GB)。一般CPU直接相连的PCle通道为16条,也就是说如果电脑插了两张显卡的话,每张显卡读取相同数据的时间就会延迟一倍。但是多了一张卡,在计算的时候多出了一杯的GPU核心数,这点传输数据的延迟时间就忽略不计了。

2.3内存读写速度

内存从硬盘读取数据进行处理,当下的内存读取速率可以赶得上,重点还是硬盘的读取速率。

2.4cpu频率

数据预处理操作都在cpu上运行,只有预处理完毕才可以送到显存进行计算,所以当显卡多的时候,CPU处理图片的速度慢就可能来不及给GPU投喂,GPU运算能力没有达到极致

2.5 GPU

3.1 GPU核心数
3.2 内存颗粒
3.3 TensorCore
3.3 浮点算力
深度学习中数据一搬定为单精度的float32,还有float64,float16,int8和混合精度,int8一般用在要求极端速度的推理任务上。

== 显存更大意味着每次输入的数据batch size可以更大,在GAN对抗生成网络应用中可以生成更大分辨率的照片。==

其他名词

Nvlink
Nvlink是英伟达在2014年推出的GPU互联技术,由于以往的多卡环境中,GPU与其它GPU通信的时候,必须先通过PCIe把数据传输到CPU,再由CPU传输到其它GPU,整体计算速度受限于PCIe的速度(要知道HBM2显存的带宽已经达到了900GB/s),PCIe 3.0 x 16双向带宽最多只有30GB/s。Nvlink的出现正是为了解决这个问题,看看下面Nvlink的说明图
图像处理深度学习模型训练速度的硬件影响因素_第1张图片
先看左图,有了Nvlink,GPU与GPU之间的通信不需要再通过CPU,直接通过Nvlink通信,双向带宽高达100GB/s(nvlink 2.0)。右图是单服务器双路CPU及8路GPU的架构,两个CPU分别对应4个GPU,当其中一组GPU需要向另一组GPU进行通信时,以往同样只能先通过PCIe传输到CPU,然后再通过QPI通道(带宽为25.6GB/s)传输到另一个CPU,最后再通过PCIe送进另一组GPU。而Nvlink支持跨CPU节点的直接通信,V100每个GPU有6条Nvlink通道,总带宽高达300GB/s。

但从上图可以看到,即使每个GPU拥有6条Nvlink通道,仍然无法做到“全连接”(即任意两个GPU之间存在双向通道)。这就引出了下一个更加疯狂的技术:Nvswitch。

图像处理深度学习模型训练速度的硬件影响因素_第2张图片

Nvidia官网介绍视频的这两张图很好地介绍了两者之间的区别。下图一个主板上的8块GPU通过6块Nvswitch芯片与另一块主板上的任意一块GPU进行通信,使得8对GPU能够同时以300GB/s的速度进行通信,实现16个GPU全连接。除此之外,Nvswitch还能使得整个服务器作为一块拥有0.5TB显存、2PetaFLOPS算力的“大显卡”使用。

原文出处:https://blog.csdn.net/iaMuW/article/details/107845679

  1. 一个较大的任务可以分解成的任务数量取决于特定硬件上包含的核心数量。核心是在给定的处理器中实际执行计算的单元,cpu通常有4个、8个或16个核心,而gpu可能有数千个。
    CPU是中央处理单元,擅长处理一般的计算类型,并不是GPU计算速度一定比CPU快,对于并行计算的类型,GPU速度比CPU快,因为核心多。
  2. Nvidia是一家设计GPU的技术公司,他们创建了CUDA作为一个软件平台,与他们的GPU硬件配对,使开发人员更容易使用Nvidia GPU的并行处理能力构建加速计算的软件。
  3. An Nvidia GPU is the hardware that enables parallel computations, while CUDA is a software layer that provides an API for developers.
    nvidiagpu是支持并行计算的硬件,而CUDA是为开发人员提供API的软件层。CUDA工具包附带了专门的库,如cuDNN,CUDA深度神经网络库。
  4. 使用gpu加速的主要任务是计算机图形学。图形处理单元因此而得名,但近年来,出现了更多种类的并行任务。我们所看到的一项任务就是深度学习。深度学习以及许多其他使用并行编程技术的科学计算任务正在导致一种称为GPGPU或通用GPU计算的新型编程模型

你可能感兴趣的:(科普杂七杂八,人工智能,深度学习)