共计 4114 个字符,预计需要花费 11 分钟才能阅读完成。
在进行机器学习我的项目时,特地是在解决深度学习和神经网络时,最好应用 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