专栏首页有三AI【杂谈】学深度学习的你有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的发展历程,我们可以从并行体系结构的角度将其划分为三个时代:

1 固定功能架构时代

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

2 分离渲染架构时代

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

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<360Gflops以下,而目前的TITAN V峰值浮点性能(特指深度学习)为110TFlops(1T=1024G),TESLA v00是125TFlops,可以看出GPU的浮点运算能力吊打CPU。

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了呢?

本文分享自微信公众号 - 有三AI(yanyousan_ai),作者:汤兴旺

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?

    进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进...

    用户1508658
  • 【GAN的优化】从KL和JS散度到fGAN

    欢迎来到专栏《GAN的优化》,这是第二期。在这个专栏中,我们会讲述GAN的相关背景、基本原理、优化等相关理论,尤其是侧重于GAN目标函数的优化。小米粥和有三将带...

    用户1508658
  • 【MatConvnet速成】MatConvnet图像分类从模型自定义到测试

    不同于各类深度学习框架广泛使用的语言Python,MatConvnet是用matlab作为接口语言的开源深度学习库,底层语言是cuda。

    用户1508658
  • 1.1 Programmable Graphics Processing Unit 发展历程

    面纱掩盖了过去、现在和将来,历史学家的使命是发现它现在是什么,而不是过去是什么。 ——Henry David Thoreau

    代码咖啡
  • 学习笔记︱深度学习以及R中并行算法的应用(GPU)

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! ...

    素质
  • [译]GPU加持,TensorFlow Lite更快了

    由于处理器性能和电池容量有限,在移动设备上使用计算密集的机器学习模型进行推断是非常耗资源的。 虽然可以采用一种加速途径:转换为定点数模型,但用户已经要求作为一种...

    云水木石
  • 英伟达深度学习专家路川详解“如何升级GPU深度学习系统”

    GPU 成为在构建深度学习系统时必不可少的需要关注的方向,但是诸如如何选择一款 GPU 来搭建深度学习平台,如何升级自己的 GPU 之类的问题一直困扰着开发者。...

    小莹莹
  • 人工智能&大数据:加速GPU在数据中心领域的应用

    随着数据需求工作负载渗透到数据中心并覆盖传统的CPU性能,GPU各供应商已经为数据中心补充了全新的设备和显示卡。 最近大数据、人工智能以及机器学习的潮流正在企业...

    企鹅号小编
  • 【深度分析】深度学习选GPU,RTX 20系列值不值得?

    深度学习常被戏谑为“炼丹术”,那么,GPU于深度学习研究人员而言就是不可或缺的“炼丹炉”。

    新智元
  • 推荐5种让数据库快的飞起的GPU加速产品

    GPU承诺会彻底改变大数据分析领域,从当前来看,这并不是虚言,当我们数据量达到一定级别的时候,我们一定会转向使用GPU。大多数的数学密集型应用都包含机器学习框架...

    GPUS Lady

扫码关注云+社区

领取腾讯云代金券