#头号周刊#
在处理机器学习时,特别是在处理深度学习和神经网络时,最好使用显卡来处理,而不是CPU。在神经网络方面,即使是低端的GPU也会胜过CPU。
但是你应该买哪种GPU呢?有很多种选择,本文将尽量考虑各种相关因素,以便您可以根据您的预算和特定的建模要求做出合适的选择。
为什么 GPU 比 CPU 更适合机器学习?CPU(中央处理器)是计算机的主力,重要的是它非常灵活。它可以处理来自各种程序和硬件的指令,而且处理速度非常快。为了在这种多任务环境中表现出色,CPU 具有少量灵活且快速地处理单元(也称为内核)。
GPU(图形处理器)更加专业,在多任务处理方面没有那么灵活。它旨在并行执行大量复杂的数学计算,从而提高吞吐量。这是通过拥有更多数量的更简单的核心来实现的,有时是数千个,这样就可以一次处理许多计算。
并行执行多个计算的要求非常适合以下情况:
- 图形渲染——移动的图形对象需要不断计算其轨迹,这需要大量不断重复的并行数学计算。
- 机器和深度学习——大量的矩阵/张量计算,可以通过 GPU 并行处理。
- 可以拆分为并行运行的任何类型的数学计算。
张量处理单元 (TPU)
随着人工智能和机器/深度学习的蓬勃发展,现在甚至出现了更专门的处理核,称为张量核心。当执行张量/矩阵计算时,它们更快更有效。这正是机器/深度学习所涉及的数学类型所需要的。
尽管有专用的TPU,但一些最新的GPU也包括许多张量核心,您将在本文后面看到这一点。
Nvidia与AMD答案肯定是:英伟达(Nvidia)
你可以使用AMD的GPU进行机器/深度学习,但Nvidia的GPU具有更高的兼容性,并且通常还可以更好地集成到TensorFlow和PyTorch等工具中。
如果尝试使用一个带有TensorFlow的AMD GPU需要使用额外的工具(ROCm),这往往有点繁琐,有时还只能使用不太最新的TensorFlow/PyTorch版本。
这种情况可能会在未来有所改善,但如果你想要一个好的体验,最好坚持使用Nvidia。
GPU特性选择一个适合你预算的GPU,同时也能够完成你想要的机器学习任务,基本上归结为四个主要因素的平衡:
- GPU有多少RAM?
- GPU 有多少个CUDA或Tensor核心?
- 该卡使用什么芯片架构?
- 您的功耗要求是什么(如果有的话)?
答案是,越多越好!
这实际上取决于你机器学习模型是什么,以及这些模型有多大。例如,如果你正在处理图像、视频或音频,那么根据定义,你将处理大量的数据,而GPU RAM将是一个非常重要的考虑因素。当然也有办法解决内存不足的问题(例如调整batch size)。
作为一般经验法则,我建议如下:
4GB:只要您不处理过于复杂的模型或大量图像、视频或音频,这在大多数情况下都可以很好地工作。如
8GB:您可以在不达到 RAM 限制的情况下完成大多数任务,但是对于包含图像、视频或音频的更复杂的模型,您会遇到问题。
12GB:我认为这是最佳的,您可以处理大多数较大的模型,包含处理图像、视频或音频的模型。
12GB :越多越好,您将能够处理更大的数据集和更大的batch sizes。然而,超过12GB则价格会很高。
一般来说,如果价格相同,最好选择内存更大、速度更慢的卡。记住,GPU的优势是高吞吐量,这在很大程度上依赖于可用的RAM来通过GPU提供数据。
CUDA核心和张量核心实际上,应该首先考虑其他项,如RAM和芯片架构,然后再从选择中查看CUDA/张量核心数量最高的显卡。
对于机器/深度学习,张量核心比CUDA核心更好(更快、更有效)。这是因为它们是为机器/深度学习领域所需的计算而精确设计的。
事实上,CUDA核的速度已经足够快了。如果你能得到一张包含张量核心的卡片,这是一个很好的加分点,只是不要太纠结于它。
总结一下:
- CUDA核心:这些是显卡上的物理处理器,通常有数千个。
- CUDA 11: 数字可能会发生变化,但这是指为使显卡工作而安装的软件/驱动程序。定期发布新版本,它可以像任何其他软件一样安装。
- CUDA generation (or compute capability):这描述了显卡的能力。这在硬件中是固定的,因此只能通过升级到新卡来更改。它以数字和代号区分。示例:3.x [Kepler]、5.x [Maxwell]、6.x [Pascal]、7.x [Turing] 和 8.x [Ampere]。
这实际上比你想象的更重要。正如我之前提到的,我们基本上已经抛弃了AMD,我们只能选择英伟达。
最主要的是要注意芯片组的“Compute Capability(计算能力)”,有时被称为“CUDA generation”。这对每张卡都是固定的,所以一旦你买了这张卡,你就只能使用这张卡的计算能力了。
如果您的GPU具有 7.x (Turing) 或更高的计算能力,则可以使用混合精度训练。这基本上是 RTX 20 系列或更新版本,或者是服务器上的 RTX、“T”或“A”系列。
在考虑使用新显卡时,混合精度训练如此具有优势的主要原因是它降低了 RAM 使用率,因此通过使用稍新的显卡,您的 RAM 需求会降低。
如果您的RAM要求特别高,但没有足够的钱购买高端卡,那么您可能会在二手市场上选择较旧型号的GPU。
一个典型的例子是 Tesla K80,它有4992 个CUDA核心和24GB 的 RAM。它最初在 2014 年的零售价约为7000.00美元。目前也就3000RMB左右。
但是,有一个相当大的缺点。K80 的计算能力为 3.7 (Kepler),从 CUDA 11 起已弃用(当前的 CUDA 版本为 11)。这意味着该卡无法在未来版本的 CUDA 驱动程序中使用。
消费显卡与专业显卡Nvidia基本上把他们的分成两部分。一种是消费类显卡,另一种是针对工作站/服务器的显卡(即专业显卡)。
这两个部分之间有明显的区别,但需要记住的是,在相同规格(RAM、CUDA核心、架构)下,消费显卡通常会更便宜,专业卡一般会有更好的质量和较低的功耗。
对于高端专业卡,你会注意到它们有很多RAM(例如RTX A6000有48GB, A100有80GB),这是因为它们通常直接针对3D建模、渲染和机器学习/深度学习专业市场,这些市场需要大的RAM。
总而言之,普通学习可以选择消费类显卡,毕竟价格便宜也好购买。
推荐请记住,如果你真的有很高的预算,你应该看看专业卡系列,比如 Nvidia A系列卡,它的成本可能高达数千美元。
低预算
中等预算
高预算
其他
如果你觉得买显卡不适合你,你可以使用GPU云服务器(腾讯、阿里等均提供)。
,