关于GPU的一些问题
1、我需要GPU吗?
如果你只是对深度学习有点儿感兴趣,想顺利运行PyTorch或者TF代码,为的就是跑出个结果,学习深度学习理论等等的目的,那你可能永远都不会需要GPU。但如果你希望能够自己亲手实现一些酷炫的深度学习应用,或者你是因为有着职业目标,未来是希望成为算法工程师的,那你很有可能会有需要GPU、渴望更多计算资源的一天。
2、什么是GPU?什么是CPU
在讲解GPU之前,我们先来聊聊大家耳熟能详的CPU。CPU是Central Process Unit,中央处理器,是个人计算机之中负责处理数据和计算的元件。你在计算机上执行的任何一个操作都需要经过CPU的处理和 计算,才能展示给你结果,所以CPU越好,你的计算机的反应速度就越快。
而GPU是Graphic Process Unit,图形处理器,是专门进行图形数据处理和计算的处理器。在通识中,许多人可能会误解说,GPU是比CPU更“高档”、更“先进“的处理器,但实际上GPU并非CPU的 替代品, GPU也不是”更高层次“的CPU。这两种处理器都执行计算机运行所需的相同的“计算过程”,但不同的是, CPU擅长处理复杂、连续的计算问题,例如操作系统、程序、键盘操作、鼠标操作等,而GPU 擅长处理简单、大量、重复、并行的计算问题,比如游戏中的3D图形渲染,他们之间不能互相代替。一个业内著名的比喻是:CPU是几个博士生,GPU是成千上万个小学生,我把它比喻成CPU是王兴,GPU是美团骑手。对于复杂问题,GPU不如CPU解决得好,甚至不能解决,而对于简单大量问题,CPU再牛,也敌不过GPU并行处理的效率和规模。所以现在的计算机,如果搭配了GPU的,都是CPU+GPU的组合,普通操作和程序运行由CPU执行,当需要GPU时,CPU会指定GPU来进行操作。
深度学习中所涉及到的运算是简单大量、还是复杂连续的呢?答案是简单大量。神经网络涉及的运算过 程其实比很多机器学习算法都要容易(感谢反向传播),神经网络运算的难点主要在于巨量数据需求, 因此GPU在处理深度学习算法时的运算速度有时甚至可以达到CPU的100倍以上。因此在深度学习中,如果有机会,那务必要使用GPU。
3、任何GPU都适合深度学习吗?
不是。市面上大部分深度学习框架都只支持N卡,也就是NVIDIA(英伟达)显卡,如果你电脑中的显卡不是NVIDIA(比如,可能是Intel或者AMD的显卡,也可能有GPU功能),那你要使用PyTorch的GPU版本就几乎不可能。苹果计算机大部分都搭载AMD显卡,许多高性能游戏本也是搭载A卡,所以苹果计算 机很多时候都无法使用PyTorch的GPU版本。当然,如果你的Mac搭载的是NVIDIA的显卡,那就没有问 题了。
需要注意的是,新硬件发行后,PyTorch等深度学习框架需要一段时间进行迭代,之后才能与新硬件匹配使用。因此截至2021年1月10日,PyTorch稳定版还不支持3080及以上的显卡。
4、怎么判断我的电脑上有没有适合PyTorch的GPU?
在自己的桌面上点击右键,如果你能够找到NVIDIA控制面板,则说明你这台电脑有适合PyTorch的GPU,你可以安装GPU版本,否则你的电脑就不能安装sPyTorch的GPU版本。
5、我现在的电脑没有GPU,我可以安装GPU吗?
这个问题有些外行,但我们却经常被问到。GPU的本质是处理器,也被叫做”独立显卡“,它是安装在个人计算机或者服务器上的半导体芯片,和键盘、移动硬盘一样是硬件(如下图)。所以GPU只能通过购买硬件获得,我们无法在没有GPU硬件的计算机系统上,通过安装等等的方式,成功获得GPU计
算资源。
(一张单独的显卡)
(多个显卡插在主机上的样子)
如果你对计算机硬件基本不怎么了解,那获得属于自己的GPU资源的最经济实惠的做法,就是直接买一台带GPU的台式机。
为什么这么说呢?我们现在使用的计算机,大部分是笔记本电脑或台式机。笔记本电脑的显卡与主板是 接在一起的,我们无法对笔记本电脑的显卡进行更换,大部分本身没有GPU的笔记本都不能外接GPU, 即便你强行更换或外接了GPU,这个本来没有GPU的笔记本电脑大多数时候也带不动新显卡。所以如果 你现在只有一台笔记本电脑,我建议不要挣扎了,直接躺平换新机。
如果你使用的是台式机,那你的主机后面应该会有一个接入显卡的插口,但是你的主机应该本身已经有了一张显卡,如果你再单独买一张NVIDIA的显卡来接入,那要么你得把原来主机上的显卡拆下来,要么你两张显卡都保留,做一个双显卡交火。但是无论你是保留还是拆掉原来的显卡,你都得拆装自己的主机。你的主机主板、你主机中的线圈排布方式和你的新显卡不一定能匹配,你的旧显卡也不一定能跟你的新显卡进行交火。即便你把新显卡装上了,你还需要去解决更换显卡带来的驱动、兼容性等问题,门槛还是很高。而且,硬件市场水也很深的,如果你预算不是特别充足,渠道也不太了解,那你很有可能稀里糊涂入了一些二手的GPU(反正你也看不出来)。所以如果你身边有一个硬件大佬,你可以购买单独的GPU来自己组装,但如果你对硬件不太熟悉,我建议你直接买新台式机。虽然购买台式机有时候比 单独买GPU贵一些,但是你不用自己装呀。
很多人没有条件买台式机,主要是没地方放。那可不可以直接购买带GPU的笔记本呢?我的建议是:最好不要。笔记本电脑为了便携,只能把硬件造得很小,所以很多功能都是阉割过的,相同型号的 GPU的笔记本版比台式机版弱。GPU是长期投资,你一台笔记本买了至少也得用个3、5年的,如果你真的考虑购入计算资源,我建议还是一步到位买台式机。如果你确实没地方放台式机,那你可以先使用一些公开售卖的GPU资源,比如阿里云。云上资源是很便携的,就是会非常贵,所以不利于长期使用。你也可以去看看现在有哪些GPU资源可以白嫖。如果你真的没有别的选择,并且你需要在2、3年时间内都需要使用GPU,那你可以买带GPU的笔记本。
6、我决定购买GPU/台式机,有推荐的吗?
GPU的选择其实涉及到非常多的问题,对于不太熟悉GPU的大家,我会推荐三款不同档次的显卡。
要选择GPU,就得看这张显卡天梯图。
图上左侧GeForce10、 20表示了不同系列的N卡,任何一张显卡在这张图上越靠上,它的性能也就越强 大,如果不同系列的显卡所在的高度一致,就说明这两张显卡性能其实是相似的。虽然这个GPU列表看 起来非常长,但实际上现在在市场上比较主流的其实只有GTX10、 GTX16和RTX20系列。每个系列里带 “Ti”的,就比如RTX 2080Ti,就是那个系列的旗舰版,是那个系列里性能最强大、价格最高的。
(1)不同目标/不同预算,对应不同级别显卡
10系列已经出了很久了,所以现在市面上能找到的靠谱货源不是特别多,但是这个系列中有超低价GPU GTX1060 (6G版)。 GTX1060单独买只需要1000元出头,带这个显卡的主机基本都能控制在20003000之内。如果你想要运行简单神经网络、学习深度学习、做个作业,并且预算在10003000元 之间,那我推荐GTX1060 6G版本。注意,你可能会看到1060的3G版本,但3G显存对于深度学习而言就 有些简陋了,建议不要购买3G版本。
在相同的学习目的下,如果你购买GPU的预算可以达到3000元,或者你购买台式机的预算可以达到5000元上下,那我会建议你购买现在非常主流的GTX16系列中的GTX 1660 Super/Ti版本,或者是8G显 存的1070版本(如果能够找到靠谱货源的话)。
如果除了学习之外,你还想实现一些非企业级的深度学习应用,比如实践真实的人脸识别、风格迁移等 应用,你则需要更多预算来选择RTX系列的显卡。比起GTX, RTX系列增加了张量计算核心Tensor Core,这使得RTX系列的性能迎来了一个质的飞跃,因此同样性能或同样价格的情况下,能选RTX就不 要选GTX。在RTX20系列中,性价比最高的是2060 S(8G)与2070 S(8G)。在课程中,九天老师使用 的是2070 S,我使用的是2060 S, 20 S系列也是我认为个人实现深度学习项目最合适的一款。
(2)严肃学术研究/企业级应用
如果你有企业级或PhD学术级别的应用需求(我相信大部分人应该没有这样的需求),那对于而言最关 键的就不是预算或性价比,而是显存和性能了。实际应用中,大部分深度学习模型都由巨量数据训练, 因此你需要有足够大的显存来启动你的神经网络模型, 8G显存就只是入门级而已。你可以参考下面的表 格来确定你的显存:
关于显存,需要特别说明一点:两张显存不一致的显卡进行交火时,你能够训练的模型的大小会被显存较小的那张显卡限制。这是说,如果你有一张显存8G的显卡,还有一张显存32G的显卡,你能够训练的模型最大是8G。虽然你可以通过交火来加速你的模型的运算,但你并不能通过增加新显卡来扩大你能够训练的最大模型。所以如果你可以预料到自己之后会有企业级需求,建议一开始就购买一个显存较大的显卡。
选择好显存大小后,你可以根据下面的性价比图来确定你所需要的GPU(下图横坐标是GPU在每1美元上的性能值,纵坐标是GPU,柱形图越长,代表这个GPU的性价比越高)。现在最推荐的是RTX 2080 S 或2080 Ti(11GB) ,性价比很高。如果你已经有一张2080 S及以上的显卡,其实完全不需要迭代更新为30系列。如果你是可以报销的科研工作者或互联网工作者,那可以选择RTX 3080。但现在3080还不 支持pytorch,所以你还可以再等待一段时间。
如果3080系列都不能满足你的应用高要求,那你就需要不止一个GPU了。在购买多个GPU进行交火使用时,建议不要选择RTX Founders Editions以及RTX的Titan系列,这个系列的散热简直就是噩梦,过热会严重降低GPU的性能。当然,你也可以选择TESLA等企业级的GPU,来避免多个GPU交火的问题。
(3) GPU/主机常见品牌
确定好GPU后,我们可以在京东购买或从海外进行代购。国内的GPU需要认准华硕、七彩虹、微星、铭 瑄这些生产品牌,他们都是英伟达授权的可以生产显卡的厂商。如果是购买带GPU的主机,一般会考虑 攀升、宁美国度、京盛天华的组装机,如果考虑品牌机,则可以选择华硕、联想、微星。在挑选主机 时,认准你的GPU,咨询京东售前人员,说明你的应用场景即可。
7、免费GPU薅羊毛指南
如果你真的很需要GPU,但是现在既没有条件购买台式机,也没有预算去购买计算云,那你可以白嫖下 面这些开源深度学习平台中的免费GPU。这些GPU都由世界级互联网公司提供,并且他们的运行环境中 都已经配置了可以在GPU上运行的PyTorch。如果使用这些平台,我们可以免去一切安装与配置的烦 恼。如果你的笔记本电脑运行太缓慢,而你又觉得这些平台很不错,你也可以购买这些平台的付费使用权,要比云服务器便宜和方便得多。
在这里,我给大家推荐三个免费GPU平台: Colab, Kaggle Notebook以及AI Studio。
Colab是谷歌的在线深度学习开发平台, Kaggle Notebook是Kaggle官方提供的开发平台(背后也是谷歌),AI Studio是百度提供的在线开发平台。三个平台的页面都与jupyter notebook高度相似,他们提供的算力以及他们的限制如下:
更多配置信息,你可以在登陆这些在线开发页面后使用以下的代码查看:
查看硬盘信息:
!df -h
查看CPU信息:
!cat /proc/cpuinfo
查看运存信息:
!cat /proc/meminfo
Colab
Colab登陆: https://drive.google.com/drive/my-drive
如果你熟悉谷歌系列产品,并且拥有谷歌账户,那Colab对你而言就是最佳的选择。你可以通过你的Google Drive直接新建Colab Notebook,这些notebooks会与你的google sheets、 docs一起保存在Drive中,只有你愿意分享才能够被他人阅读。如果你没有谷歌账户,那你需要无敌上网,并注册一个google账户。由于某些原因,我们不会在课程中详细描述这部分内容,但你或许可以从课程资料中获得 一些启发。
对于谷歌用户而言,在进入Drive后,你可以通过以下步骤来使用GPU:
(1)点击新建,新建google colaboratory
(2)进入Colab后,在任务栏的“代码执行程序”菜单下,找到“更改运行时类型“
(3)点击,修改笔记本设置为“GPU”,点击保存,此时谷歌会开始分配GPU资源
(4)等待页面右上角显示”RAM“和”磁盘“,你将鼠标移入后,看见”已连接到GPU“字样,就是连接成功
(5)在colab中运行以下代码
#导入torch
import torch
#检查现在使用的GPU设备
torch.cuda.current_device()
#现在我在使用几个GPU设备呢?
torch.cuda.device_count()
#获取我正在使用的GPU设备的型号
torch.cuda.get_device_name(0)
#GPU是否可用?
torch.cuda.is_available()
如果返回结果如截图,你就可以在Colab上运行PyTorch的GPU版本了:
Kaggle Notebook
Kaggle Notebook登陆: https://www.kaggle.com/notebooks
无论你是否了解深度学习知识,你应该都很熟悉Kaggle竞赛平台。如果你已经有Kaggle账号,最好是已 经进行过手机验证的账号,那Kaggle的Notebook对你来说是比较合适的。如果你还没有验证过你的kaggle账号,那你需要无敌上网,同Colab中的内容,你可以在课程资料中获得一些启发。
对于Kaggle用户而言,你可以通过以下步骤来获得GPU:
(1)点击新建Notebook
(2)进入Notebook后,你已经可以看到自己连接的CPU状况。点击右上角的三个原点,在Accelerator 中选择GPU
(3)在这个对话框中,你将看到自己每周剩下多少可用的GPU时长。点击 Trun on GPU,进入GPU模 式。
(4)当右上角出现GPU字样,你就进入了GPU模式。
(5)同样,在GPU模式中运行以下代码:
#导入torch
import torch
#检查现在使用的GPU设备
torch.cuda.current_device()
#现在我在使用几个GPU设备呢?
torch.cuda.device_count()
#获取我正在使用的GPU设备的型号
torch.cuda.get_device_name(0)
#GPU是否可用?
torch.cuda.is_available()
如果你返回的结果如截图,那就可以在Kaggle上运行PyTorch的GPU版本了:
AI Studio
AI Studio登陆: https://aistudio.baidu.com/aistudio/newbie
如果你确实不太明白无敌上网是怎么回事,你可以选择飞桨的AI Studio作为你的GPU平台。进入AI Studio的登陆页面后,你需要根据指示完成一系列任务(中间包括了采集个人信息、公司信息的过程),并领取算力卡,一张算力卡可以折算1小时的GPU使用权。在19年前后,百度曾在国内各大公众 号推广AI Studio,并慷慨地发放算力卡,现在推广力度没有原来那么大,算力卡没有从前那么容易获取。大家可以试试看获取AI Studio的算力卡,并使用AI Studio一段时间,毕竟他所提供的算力是我们推 荐的三大免费平台中最强的。当你顺利登入AI Studio之后,也可以在AI Studio上来运行PyTorch的测试 代码,查看它是否支持PyTorch的GPU版本。
其他还有许多免费GPU平台,但大多存在获取算力麻烦、需要邀请码、隐性付费或者GPU不稳定的问题。
注意:本文是从b站上看到的视频获取的免费资料里的内容,找不到了,所以这里没放链接,如有看到的小伙伴,记得提醒我哇,加上人家本来的知识链接。