随着人工智能越来越火,越来越多的人想从事人工智能相关的工作,如计算机视觉等。如果你正想或已经入门计算机视觉行业,你必须拥有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学院》

往期精选

  • 【总结】这半年,有三AI都做了什么

  • 【AI初识境】从3次人工智能潮起潮落说起

  • 【AI初识境】从头理解神经网络-内行与外行的分水岭

  • 【AI初识境】近20年深度学习在图像领域的重要进展节点

  • 【AI初识境】激活函数:从人工设计到自动搜索

  • 【AI初识境】什么是深度学习成功的开始?参数初始化

  • 【AI初识境】深度学习模型中的Normalization,你懂了多少?

  • 【杂谈】白身,初识,不惑,有识,不可知,你处于深度学习工程师哪一重境界了

想要变身”AI专家“,就戳戳手指关注我们吧

别忘了点“好看”支持作者噢  ???

【杂谈】学深度学习的你有GPU了吗相关推荐

  1. win11动手学深度学习安装过程(GPU版)( CUDA Anaconda Mxnet )

    win11,动手学深度学习安装过程(GPU版)( CUDA / Anaconda / Mxnet )(备忘) 一.检查及安装CUDA 首先检查显卡支持的cuda: 直接搜索NVIDIA,选择NVIDI ...

  2. 使用AWS最便宜的GPU实例  from 动手学深度学习v2 李沐大神

    使用AWS最便宜的GPU实例  from 动手学深度学习v2 李沐大神 视频链接https://www.bilibili.com/video/BV1MA411L78X?t=493 由于购买的电脑没有配 ...

  3. 【动手学深度学习PyTorch版】23 深度学习硬件CPU 和 GPU

    上一篇请移步[动手学深度学习PyTorch版]22续 ResNet为什么能训练出1000层的模型_水w的博客-CSDN博客 目录 一.深度学习硬件CPU 和 GPU 1.1 深度学习硬件 ◼ 计算机构 ...

  4. 【AI学院】有三AI博士小姐姐带你学深度学习之图像识别下篇,附上篇回顾

    带学营第一期(上)圆满结束回顾 有三 AI 深度学习之图像识别带学营第一期(上)圆满结束,这一期我们主要的培训内容是深度学习基础+项目实战(人脸表情识别和鸟类细粒度识别). 以上的课程可以说是干货满满 ...

  5. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!

    论 AI 圈活菩萨,非李沐老师莫属. 前有编写「动手学深度学习」,成就圈内入门经典,后又在B站免费讲斯坦福 AI 课,一则艰深硬核讲论文的视频播放量36万,不少课题组从导师到见习本科生都在追番. 如此 ...

  6. 资源 | 李沐等人开源中文书《动手学深度学习》预览版上线

    来源:机器之心 本文约2000字,建议阅读10分钟. 本文为大家介绍了一本交互式深度学习书籍. 近日,由 Aston Zhang.李沐等人所著图书<动手学深度学习>放出了在线预览版,以供读 ...

  7. 《动手学深度学习》PyTorch版本

    Dive-Into-Deep-Learning-PyTorch-PDF 简介   本项目对中文版<动手学深度学习>中的代码进行整理,并参考一些优秀的GitHub项目给出基于PyTorch的 ...

  8. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(2)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅰ

    开源项目地址:d2l-ai/d2l-zh 教材官网:https://zh.d2l.ai/ 书介绍:https://zh-v2.d2l.ai/ 笔记基于2021年7月26日发布的版本,书及代码下载地址在 ...

  9. PyTorch 《动手学深度学习》学习笔记(Dive-into-DL-Pytorch)

    参考文章1:PyTorch版<动手学深度学习>PDF 版开源了 参考文章2:https://download.csdn.net/download/Dontla/12371960 文章目录 ...

最新文章

  1. SVN中trunk、branch、tag区别
  2. 使用isql连接Sybase ASE数据库的常见错误及处理方式
  3. 常见linux网络参数
  4. Bit Manipulation —— 位运算
  5. 【JS 逆向百例】XHR 断点调试,Steam 登录逆向
  6. 大神演示win10系统语音识别应用的详细教程
  7. Mysql—— order 和 limit 的用法
  8. 鼠标滑轮成了页面缩放的解决方法
  9. Windows10制作双系统来越狱 ios13.3.1(非常方便,不要U盘)
  10. 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
  11. 22.纯 CSS 创作出美丽的彩虹条纹文字
  12. mysql 主键 默认索引_mysql 主键和默认 设为索引的规则
  13. 经营十二条(学习总结)
  14. 练习:排序数组中查找元素的第一个和最后一个位置
  15. 对过去五年工作经历的总结
  16. QT 多语言 字库 编码 文字方向相关问题
  17. 实习报告大盘点 【建议收藏】
  18. 真正好用的数据恢复软件EasyRecovery15
  19. 中国股民心理一——情绪决定输赢?性格影响财富?热衷追涨杀跌?
  20. 人工智能之状态空间表示法的简单应用之翻转三枚钱币

热门文章

  1. java后端开发每天遇到的jsp,了解一下
  2. “面试不败计划”:面试题基础二
  3. JavaScript教程之DOM和BOM
  4. struts2中action向action之间传数据和action向jsp传数据理解
  5. (Java多线程)多线程原理和使用
  6. 使用jsoup解析html
  7. java xmn xms_JVM调优总结 -Xms -Xmx -Xmn -Xss(转)
  8. 阿里云开源业内首个应用多活项目 AppActive,与社区共建云原生容灾标准
  9. 课时 29:安全容器技术(王旭)
  10. 云原生时代|分布式系统设计知识图谱(内含 22 个知识点)