在进行机器学习我的项目时,特地是在解决深度学习和神经网络时,最好应用GPU而不是CPU来解决,因为在神经网络方面,即便是一个十分根本的GPU也会胜过CPU。
然而你应该买哪种GPU呢?本文将总结须要思考的相干因素,以便能够依据估算和特定的建模要求做出理智的抉择。
为什么 GPU 比 CPU 更适宜机器学习?
CPU(中央处理器)是计算机的主力,它非常灵活,不仅须要解决来自各种程序和硬件的指令,并且处理速度也有肯定的要求。为了在这种多任务环境中表现出色,CPU 具备大量且灵便疾速的处理单元(也称为核)。
GPU(图形处理单元)GPU在多任务处理方面不那么灵便。但它能够并行执行大量简单的数学计算。这是通过领有更多数量的简略外围(数千个到上万)来实现的,这样能够同时解决许多简略的计算。
并行执行多个计算的要求非常适合于:
- 图形渲染——挪动的图形对象须要一直地计算它们的轨迹,这须要大量一直反复的并行数学计算。
- 机器和深度学习——大量的矩阵/张量计算,GPU能够并行处理。
- 任何类型的数学计算,能够拆分为并行运行。
在Nvidia本人的博客上曾经总结了CPU和GPU的次要区别:
张量处理单元(TPU)
随着人工智能和机器/深度学习的倒退,当初曾经有了更专门的解决外围,称为张量核(Tensor cores)。在执行张量/矩阵计算时,它们更快更无效。因为咱们在机器/深度学习中所解决的数据类型就是张量。
尽管有专用的tpu,但一些最新的GPU也包含许多张量核,咱们会在前面总结。
Nvidia vs AMD
这将是一个相当短的局部,因为这个问题的答案必定是Nvidia
尽管能够应用AMD的gpu进行机器/深度学习,但在写本文时,Nvidia的GPU具备更高的兼容性,并且通常更好地集成到TensorFlow和PyTorch等工具中(比方目前PyTorch的AMD GPU的反对还只能在Linux上应用)。
应用AMD GPU须要应用额定的工具(ROCm),这个会有一些额定的工作,并且版本可能也不会更新的很快。这种状况未来可能会有所改善,然而当初为止,最好还是应用Nvidia。
GPU抉择的次要属性
抉择一个够实现机器学习工作并且合乎估算的GPU,基本上归结为四个次要因素的均衡:
- GPU有多少内存?
- GPU有多少个CUDA和/或张量核?
- 卡应用什么芯片架构?
- 功耗要求是多少(如果有)?
上面将逐个探讨这些方面,心愿能让你更好地了解什么对你来说是重要的。
GPU内存
答案是,越多越好!
这实际上取决于你的工作,以及这些模型有多大。例如,如果你正在解决图像、视频或音频,那么依据定义,你将解决相当大量的数据,GPU RAM将是一个十分重要的思考因素。
总有方法解决内存不足的问题(例如缩小批处理大小)。然而这将会节约训练的工夫,因而须要很好地均衡需要。
依据教训,我的倡议如下:
4GB:我认为这是相对的最小值,只有你不是在解决过于简单的模型,或者大的图像、视频或音频,这个在大多数状况下能工作,然而达不到日常应用的须要。如果你刚刚起步,想尝试一下又不想全力投入,那么能够从它开始
8GB:这是一个日常学习很好的开始,能够在不超过RAM限度的状况下实现大多数工作,但在应用更简单的图像、视频或音频模型时会遇到问题。
12GB:我认为这是科研最根本的的要求。能够解决大多数较大的模型,甚至是那些解决图像、视频或音频的模型。
12GB+ :越多越好,你将可能解决更大的数据集和更大的批处理大小。超过12GB才是价格真正开始上涨的开始。
一般来说,如果老本雷同的话,抉择“速度较慢”但内存较大的卡会更好。请记住,GPU的劣势是高吞吐量,这在很大水平上依赖于可用的RAM来通过GPU传输数据。
CUDA外围和Tensor 外围
这其实很简略,越多越好。
首先思考RAM,而后就是CUDA。对于机器/深度学习来说,Tensor 核比CUDA核更好(更快,更无效)。这是因为它们是为机器/深度学习畛域所需的计算而准确设计的。
然而这并不重要,因为CUDA内核曾经足够快了。如果你能失去一张蕴含Tensor 核的卡,这是一个很好的加分点,只是不要太纠结于它。
前面你会看到“CUDA”被提到很屡次,咱们先总结一下它:
CUDA外围——这些是显卡上的物理处理器,通常有数千个,4090曾经1万6了。
CUDA 11 -数字可能会扭转,但这是指装置的软件/驱动程序,以容许显卡失常的工作。NV会定期公布新版本,它能够像任何其他软件一样装置和更新。
CUDA代数(或计算能力)-这形容了显卡卡在它的更新迭代的代号。这在硬件上是固定的,因而只能通过降级到新卡来扭转。它由数字和一个代号来辨别。例子:3。x[Kepler],5。x [Maxwell], 6。x [Pascal], 7。x[Turing]和8。x(Ampere)。
芯片架构
这实际上比你设想的更重要。咱们这里不探讨AMD,我的眼里只有”老黄“。
下面咱们曾经说了,30系列的卡就是Ampere架构,最新的40系列是 Ada Lovelace。个别老黄都会应用一个驰名科学家和数学家来对架构命名,这次抉择的是驰名英国诗人拜伦之女,建设了循环和子程序概念的女数学家、计算机程序创始人Ada Lovelace来命名。
理解对于卡的计算能力,咱们要理解2个方面:
显着的性能改良
这里一个重要的性能就是, 混合精度训练:
应用精度低于 32 位浮点数的数字格局有很多益处。首先它们须要更少的内存,从而可能训练和部署更大的神经网络。其次它们须要更少的内存带宽,从而放慢数据传输操作。第三数学运算在精度升高的状况下运行得更快,尤其是在具备 Tensor Core 的 GPU 上。混合精度训练实现了所有这些益处,同时确保与齐全精度训练相比不会失落特定于工作的准确性。它通过辨认须要齐全精度的步骤并仅对这些步骤应用 32 位浮点而在其余任何中央应用 16 位浮点来实现这一点。
这里是Nvidia 官网文档,有趣味的能够看看:
https://docs.nvidia.com/deepl...
如果您的 GPU 具备 7.x (Turing) 或更高的架构,才有可能应用混合准确训练。也就是说 桌面的RTX 20 系列或高版本,或服务器上的 “T”或“A”系列。
混合精度训练具备如此劣势的次要起因是它升高了 RAM 使用率,Tensor Core 的 GPU会减速混精度训练,如果没有的话应用FP16也会节俭显存,能够训练更大的批大小,间接晋升训练速度。
是否会被弃用
如果你对RAM有特地高的要求,但又没有足够的钱买高端卡,那么你可能会抉择二手市场上的老款GPU。这有一个相当大的毛病……这张卡的寿命完结了。
一个典型的例子就是Tesla K80,它有4992个CUDA外围和24GB的RAM。2014年,它零售价约为7000美元。当初的价格从 150到170美元不等!(咸鱼的价格600-700左右)这么小的价格却有这么大的内存,你肯定很兴奋。
然而这有一个十分大的问题。K80的计算架构是3.7 (Kepler),CUDA 11起曾经不反对(以后CUDA版本为11.7)。这意味着这张卡曾经废了,所以它才卖的这么便宜。
所以在抉择2手卡时肯定要看清楚是否反对最新版本的驱动和CUDA,这是最重要的。
高端游戏卡 VS 工作站/服务器卡
老黄基本上把卡分成了两局部。消费类显卡和工作站/服务器的显卡(即业余显卡)。
这两个局部之间有显著的区别,对于雷同的规格(RAM, CUDA内核,架构),消费类显卡通常会更便宜。然而业余卡通常会有更好的品质,和较低的能源消耗(其实涡轮的乐音挺大的,放机房还能够,放家里或者试验室有点吵)。
高端(十分低廉)的业余卡,你可能会留神到它们有很大的RAM(例如RTX A6000有48GB, A100有80GB!)。这是因为它们通常间接针对3D建模、渲染和机器/深度学习业余市场,这些市场须要高水平的RAM。再说一次,如果你有钱,买A100就对了!(H100是A100的新版,目前无奈评估)
然而我集体认为,咱们还是抉择消费者的高端游戏卡,因为如果你不差钱,你也不会看这篇文章,对吧
抉择倡议
所以在最初我依据估算和需要提出一些倡议。我将其分为三个局部:
- 低估算
- 中等估算
- 高估算
高估算不思考任何超出高端生产显卡。还是那句话如果你有钱:A100,H100轻易买。
本文中会蕴含在二手市场买到的卡片。这次要是因为我认为在低估算的状况下,二手是能够思考的。这里还包含了业余桌面系列卡(T600、A2000和A4000),因为它的一些配置比同类消费类显卡稍差,但功耗显著更好。
低估算
中等估算
高估算
在线/云服务
如果你决定花钱买显卡不适宜你,你能够利用谷歌Colab,它能够让你收费应用GPU。
但这是有工夫限度的,如果你应用GPU太长时间,他们会把你踢出去,而后回到CPU上。如果GPU处于非活动状态太长时间,可能是在你写代码的时候,它也会把GPU拿回来。GPU也是主动调配的,所以你不能抉择你想要的确切的GPU(你也能够每月9.9刀弄个Colab Pro,我集体感觉要比低估算好很多,然而要求有梯子,$49.99的Colab Pro+有点贵,不倡议)。
在写本文时,通过Colab能够取得以下GPU:
在后面也提到了,K80有24GB的RAM和4992个CUDA外围,它基本上是两个K40卡连在一起。这意味着当你在Colab中应用K80时,你实际上能够拜访一半的卡,所以也就是只有12GB和2496个CUDA内核。
总结
最初当初4090还是处于耍猴的状态,基本上要抢购或者加价找黄牛
然而16384 CUDA + 24GB,比照3090 的10496 CUDA ,真的很香。
而4080 16G的9728CUDA 如果价格能到7000内,应该是一个性价比很高的抉择。12G的 4080就别思考了,它配不上这个名字。
对于AMD的 7900XTX 应该也是一个很好的抉择,然而兼容性是个大问题,如果有人测试的话能够留言。
40系列老黄始终在耍猴,所以如果不焦急的话还再等等把:
你不买,我不买,今天还能降两百
https://avoid.overfit.cn/post/de4ad15755634900b0826dc244579472
作者:Mike Clayton