CPU(中央处理器)是计算机的主力,它非常灵活,不仅需要处理来自各种程序和硬件的指令,并且处理速度也有一定的要求。为了在这种多任务环境中表现出色,CPU 具有少量且灵活快速的处理单元(也称为核)。
GPU(图形处理单元)GPU在多任务处理方面不那么灵活。但它可以并行执行大量复杂的数学计算。这是通过拥有更多数量的简单核心(数千个到上万)来实现的,这样可以同时处理许多简单的计算。
并行执行多个计算的要求非常适合于:
图形渲染——移动的图形对象需要不断地计算它们的轨迹,这需要大量不断重复的并行数学计算。
机器和深度学习——大量的矩阵/张量计算,GPU可以并行处理。
任何类型的数学计算,可以拆分为并行运行。
在Nvidia自己的博客上已经总结了CPU和GPU的主要区别:
随着人工智能和机器/深度学习的发展,现在已经有了更专门的处理核心,称为张量核(Tensor cores)。在执行张量/矩阵计算时,它们更快更有效。因为我们在机器/深度学习中所处理的数据类型就是张量。
虽然有专用的tpu,但一些最新的GPU也包括许多张量核,我们会在后面总结。
Nvidia vs AMD
这将是一个相当短的部分,因为这个问题的答案肯定是Nvidia
虽然可以使用AMD的gpu进行机器/深度学习,但在写本文时,Nvidia的GPU具有更高的兼容性,并且通常更好地集成到TensorFlow和PyTorch等工具中(比如目前PyTorch的AMD GPU的支持还只能在Linux上使用)。
使用AMD GPU需要使用额外的工具(ROCm),这个会有一些额外的工作,并且版本可能也不会更新的很快。这种情况将来可能会有所改善,但是现在为止,最好还是使用Nvidia。
选择一个够完成机器学习任务并且符合预算的GPU,基本上归结为四个主要因素的平衡: