当前位置:首页 > 核心训练 > 正文

victor核心训练

  1. 为什么要用GPU来训练神经网络而不是CPU?

什么要用GPU来训练神经网络而不是CPU?

因为神经网络计算属于数据密集型而非计算密集型运算。虽然,每次迭代的运算都很简单,但每次参与运算的数据集却很大。

GPU恰恰是一种由很多简单计算单元构成的处理器,其结构是一种典型的高并发流水线结构,所以比较适合于这种数据密集型运算。

CPU则是一种由少量复杂计算单元构成的处理器,其更适合计算密集型运算。

victor核心训练
图片来源网络,侵删)

若使用CPU进行神经网络计算,则会因存储器读写瓶颈导致计算单元利用率不高。具体表现是:计算单元从外存储器读写数据时,需反复占用数据总线,打断计算单元的工作。所以计算单元大多时间会处在空闲状态,导致CPU利用率很低,使算法整体完成时间拖得很长。

首先得知道GPU和CPU到底是个啥吧?

GPU(graphics processing unit)是显卡上的一个部件如果是独立显卡,一般就在显卡板子上的风扇下面;如果是集成显卡,比如商务办公本、轻薄本,其CPU和GPU是整合在一起的。它的作用主要是最底层的计算,对,计算。

victor核心训练
(图片来源网络,侵删)

CPU(Central Processing Unit)是电脑最主要的部件,他的主要功能是解释计算机指令以及处理计算机软件中的数据,说白了就是做指挥工作,统筹各方面。

CPU相当于整个电脑的心脏,而GPU相当于显卡的心脏。

普通的处理器CPU差不多双核心四线程,目前市面上最高端的桌面处理器i9-7980XE(RMB1.5万)不过十八核心三十六线程。

victor核心训练
(图片来源网络,侵删)

因为cpu是串行执行指令的,就算是并行程序,细粒度上也是一条一条的串行执行,而gpu是真正的高并行计算,你想象一下,画一幅图,一笔一笔的画,和照相机卡擦定格下来的差距,那就是cpu和gpu做计算时的差距。而训练神经网络就是大量这样简单而重复的计算d

主要是GPU适合于矢量计算,它就是为多维数据计算而生的,专门用于处理图像、动画。一个简单的***x768的RGB图,是一个***x768x3的矩阵数据,然后各种图像切割、渲染等处理都要通过矩阵计算,这就是为何Photoshop占有内存和CPU高的原因。要是三维的图画就更复杂,要为各种图像建立三维物理坐标,建立数学矢量图形模型,这些点和面有颜色、材质、渲染、光影等属性。计算每一帧都要去做三维光学投影,计算出每个点在平面投影的位置、关系,还要通过物理学模型计算各个点的光影属性(光的强弱、是否遮挡、是否有阴影等)。如果是动画,还要按照几何、力学、光学等公式去模拟计算各个点的运动方向、速度等。GPU将这些常用图形图像算法直接实现到了硬件中,从而很短的指令周期就能完成如此大量数据的计算。

而通用CPU的硬件则是为运行指令、调度指令、提高运行效率、中断响应、多级缓存和读写、一般浮点运算、多流水线等常规应用而设计的。如果不是图像处理,CPU主要还是指令的执行,而非数据的运算。计算两个***x768矩阵乘法,通用CPU需要上几百亿次通用加法乘法运算指令才能完成,而GPU只要几个指令就完成了。时间上,实际不会是几百亿倍效率,但是要高很多个数量级。所以,玩大型三维游戏时,普通CPU计算图像太慢,即使100%地全力运行,会发热,而且也还很卡;而GPU则轻松完成。

神级网络的计算涉及到大量的多维数据的处理,本质上与图像处理类似,虽然神经网络的算法不同于图像处理,但是其底层的数据计算还是多维矩阵运算,这就使得神经网络计算可以直接调用原本为图像处理而提供的指令和算法。

不过人工智能毕竟有一些自己独特的数学计算,而图像处理中没有用到,于是一些厂家就将这部分专门用于人工智能的算法又集成到硬件里,从而一个指令就能完成多步的人工智能算法计算,进一步提高人工智能算法的效率。这就是被他们用来宣传的AI芯片。

CPU 3g频率,***设32核心,共计每秒96g次处理能力,算上专用指令集的buff也难达到1000g的处理能力,gpu的话,1080ti为例,1.7g频率,3584个核心,既1.7x3584=6092g每秒的处理能力,比如浮点运算的时候还有x2的buff既12t的处理能力,知道为啥要用gpu了吧?(当然还有内存显存带宽优势)