当前位置: 首页 - 科技 - 学深度学习必知的GPU知识

学深度学习必知的GPU知识

2024-12-14 科技 0

学深度学习必知的GPU知识

随着人工智能越来越火,越来越多的人想从事人工智能相关的工作,如计算机视觉等。如果你正想或已经入门计算机视觉行业,你必须拥有GPU。因为深度学习的成功与否很大程度上取决于硬件承载的能力,所以你必须要一个GPU来训练你的模型!

作者&编辑 汤兴旺&言有三

1 什么是GPU

计算机常见的处理器包括CPU和GPU,CPU即中央处理单元(Central processing unit),它是计算机的控制核心。CPU需要很强的通用性来处理各种不同的资料型别,同时在大量的逻辑判断中,包含了大量的分支跳转和中断处理,使得CPU的内部结构异常复杂,不擅长于快速计算。

GPU(Graphic Processing Unit),中文名称是图形处理器。其主要是用于处理图形讯号的单芯片处理器,在独立显卡中, 一般位于PCB板的中心 。

GPU专为影象处理设计,储存系统实际上是一个二维的分段储存空间,包括一个区段号(从中读取影象)和二维地址(影象中的X、Y座标)。GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。

可以说GPU是一种让计算机视觉领域的从业者和无数游戏玩家为之疯狂的处理器,目前GPU是研发强大深度学习算法必备的硬件。

2 GPU发展简史

了解完什么是GPU后,我们说下GPU始祖——Geforce256。

1999年,第一款真正意义上的显卡芯片Geforce256由NVIDIA推出,Geforce256第一次被称为GPU(Graphics Processing Unit),即图形处理单元,其具有完整的顶点变换、光照计算、引数设定以及渲染等四种3D计算引擎,极大加快了计算机3D程式执行速度,减轻了CPU负担。

尽管Geforce256中的固定管线虽然能实现完整的3D图形计算,但是其处理算法固定,弊端日渐凸显,因此人们开始考虑一种可程式设计的GPU。

于是NVIDIA推出了Geforce3,ATI推出了Radeon8500。这也就是第二代GPU,接下来的几年,GPU都是以这种独立的可程式设计架构设计发展,时间是1999年到2002年。

但此时的GPU程式设计比较有限,于是到了03年后,第三代GPU推出,特别是2006年NVIDIA与ATI分别推出了CUDA(Computer Unified Device Architecture,统一计算架构)程式设计环境和CTM(Close To the Metal)程式设计环境,这使GPU通用计算程式设计的复杂性大幅度降低。

GPU技术当前在不断进步,我们再来了解下它的发展历程和其技术的创新和突破。

从上表GPU的发展历程,我们可以从并行体系结构的角度将其划分为三个时代:

2.1 固定功能架构时代

这个时代发生在1995-2000年, 期间各硬件单元形成一条图形处理流水线,每个流水线功能固定, 硬化了一些给定的函式。其计算模型是流式计算(stream computing),GPU也卸去了CPU的计算负担, 聚焦于图形绘制功能, 促进了图形学发展。

2.2 分离渲染架构时代

这个时代发生在2001-2005年,此时GPU用可程式设计的顶点渲染器替换了变换与光照相关的固定单元,用可程式设计的画素渲染器替换了纹理取样与混合相关的固定单元。这两部分是实现图形特效最密集的部分, 使用渲染器大大加强了图形处理的灵活性与表现力。

2.3 统一渲染架构时代

从2006年开始到现在GPU技术一直处于统一渲染架构时代。在这一时代,GPU首次提供几何渲染程式(geometry shader program)功能,并动态排程统一的渲染硬件(unified shader)来执行顶点、几何、画素程式,在体系结构上不再是流水线的形式,而呈现并行机的特征。

如今GPU厂商们开始从硬件和API上提供对GPU专门支援,且推出专门做通用计算的GPU(如AMD FireStream和NVIDIA Tesla)。GPU的服务物件也从以图形为主发展为图形和高效能运算并重。

3 GPU与CPU运算能力对比

我们应该知道GPU有着高速的浮点运算能力,那么其计算能力到底有多大呢?

CPU的峰值计算能力=CPU频率×CPU核心数*浮点运算单元数

i7-8700K的CPU频率=3.7GHZ,核数为6,浮点运算单元数为16。

那么i7-8700K的CPU的浮点运算能力是3.7*16*6

GPU特殊的硬件架构突出了对CPU的优势:拥有高带宽的独立视讯内存;浮点运算效能高;几何处理能力强;适合处理平行计算任务;适合进行重复计算;适合影象或视讯处理任务;能够大幅度降低系统成本。

尽管GPU运算能力超强,但不代表GPU可以取代CPU了。CPU是设计用来处理通用任务的处理、加工、运算以及系统核心控制等业务逻辑类工作,其微架构是为高效率处理资料相关性不大的计算类、复杂繁琐的非计算类等工作而优化的。总之,当前CPU和GPU各有各的优势,各司其职。

4 深度学习与GPU

想要搞好深度学习,GPU是必备的,其适合深度学习的有三大理由,分别是高宽频的内存、多执行绪并行下的内存访问隐藏延迟和数量多且速度快的可调整的暂存器和L1快取。

接下来,我们详细说说GPU与深度学习完美搭配的三大理由。

第一大理由——高带宽

首先,我们需要知道CPU是基于延迟优化的,而GPU是基于带宽优化的。举个例子:如下图所示,CPU与GPU就像法拉利与卡车,两者的任务都是从随机位置A提取货物(即资料包),并将这些货物传送到另一个随机位置B。法拉利(CPU)可以快速地从RAM里获取一些货物,而大卡车(GPU)则慢很多,有着更高的延迟。但是,法拉利传送完所有货物需要往返多次,相比之下,大卡车可以一次提取更多的货物,减少往返次数。

换句话说,CPU更擅长于快速获取少量的内存,GPU则更擅长于获取大量的内存。

第二大理由——多执行绪并行

为了理解多执行绪并行这个概念,我们同样举一个例子。如下图所示:

如果让大卡车往返多次来提取货物,一旦卡车已经出发,你将会花上大量的时间来等待下一次的货物装载,毕竟卡车速度很慢。然而,如果你使用一队法拉利或大卡车(即多执行绪并行)来运输大量的货物(例如像矩阵一样的大块内存),那么你只需要花上一点时间来等待第一次运输,之后就无需等待了,因为卸货的过程长,此时所有卡车都在B区排队卸货,所以你可以直接在B区取到你的货物。

这种方法有效地隐藏了延迟,GPU可以在多执行绪并行下隐藏延迟的同时提供高带宽,因此,对于大块内存来说,GPU提供了几乎没有缺点的最佳内存带宽。这是为什么GPU比CPU在处理深度学习上更快速的第二个理由。

第三大理由——可调整的L1快取和暂存器

GPU暂存器的充分利用似乎很难实现,因为它作为最小的计算单元,需要进行微调来满足高效能。关于这个问题,NVIDIA已经开发出了很好的编译工具,它可以准确地指出你使用了多少暂存器,让你更容易调整GPU程式码,合理安排暂存器和L1快取的数量以获得快速的效能,这就使得GPU比其他诸如Xeon Phis一类的架构有优势。

最终,这意味着你可以在GPU的L1 快取和暂存器中储存大量资料来反复计算卷积和矩阵乘法。如果你有一个100MB的矩阵,你可以把它拆分为适合你快取和暂存器的多个小矩阵,然后用10-80TB/s的速度做三个矩阵块的乘法,处理速度非常快。这也是GPU比CPU快且更适合于深度学习的第三个原因。

5 选择GPU的笔记本

从开始我们就说过学深度学习成功与否与硬件的关系很大,其最重要的就是显卡,当然我们首推Nvidia显卡。想要了解各种显卡引数,请看https://www.nvidia.com/zh-cn/

因为显卡的引数就是视讯内存,而且我们大部分模型是在GPU上进行训练,所以这个视讯内存当然是越大越好,但是对于个人开发者来说,必须在视讯内存和经济能力之间取得平衡。在这里我们推荐视讯内存8G的显卡,其可以满足你在学习深度学习时候的大多数需求,不管是验证和训练都不会有问题!

最后推荐下预算8000左右可以购买神舟(HASEE)战神ZX8-CR6S1,其是GTX1070 8G独显!

当然如果大家有更好的选择,欢迎留言!

6 深度学习与GPU

对于像我这样的学生党来说,上面带有GPU的笔记本的价格还是挺贵的,如果我们要去租GPU,一个月也要好几百,这也是我们无法承受的。于是我们在想,如果要有免费的GPU多好!接下来我就推荐一些免费的GPU资源。

1、Google Colab

Google Colab,全名Colaboratory,它可以让我们免费使用GPU,其GPU型号是Tesla K80!它本身包含 Keras、TensorFlow、PyTorch、OpenCV等大部分深度学习库,基本不需要我们额外安装执行环境。下面是其官方教程,我们可以凭借它基本入门Colab。

新手指引:https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d

常见问题:https://research.google.com/colaboratory/faq.html

2、FloydHub

FloydHub,这是一个由Heroku提供的Deep Learning的训练平台,可以让你使用简单的命令就在本机提交训练任务,支援Caffe,Tensoflow,Torch等等。

对于新使用者,有免费的2个小时的GPU训练时间,当然后续你可以购买其他计划。

3、 Kaggle Kernels

Kaggle Kernels是一个能在浏览器中执行Jupyter Notebooks 的免费平台,我们可以通过它免费使用 NVidia K80 GPU训练我们的模型。

总结

工欲善其事,必先利其器,为了学好深度学习,我们必须备好GPU。如果你是刚入门深度学习,请问你有GPU了吗?如果您在深度学习领域工作多年,那么请问您什么时候拥有自己的GPU了呢?欢迎留言!
标签: 中国古代科技十大发明十大科技创新中国科技成就作文素材摘抄三四年级手工科技小制作科技小制作怎么做

上一篇:探索无限可能苹果手机官网首页的新篇章

下一篇:双屏手机全新视界终端

相关推荐
推荐资讯
热门文章