最近一段时间有不少朋友问到我以下问题:
1.为什么AI大模型训练推理一定要用GPU,使用CPU不可以吗?
2.是GPU比CPU更快吗?为什么显卡GPU突然热度这么高?
不少朋友的印象中在过去的几十年里CPU(中央处理器)一直是计算机硬件的主角,甚至印象中的“芯片”基本就指CPU,而GPU(图形处理器)之前大多是一些游戏玩家和专业图形设计师在关注。随着像ChatGPT这样的AI大模型横空出世后,GPU的重要性被推向了前所未有的高度。那么,是什么原因导致了这一变化呢?让我们带着问题一探究竟。
在本文中,我们将比较 CPU 和 GPU 之间的差异,以及它们在AI的深度学习方面的应用。
什么是CPU?
CPU是处理计算机基本指令的处理器,例如算术、逻辑功能和 I/O 操作。它通常是集成到计算机主板中的小型但功能强大的芯片。CPU 被认为是计算机的大脑,因为它解释和执行计算机的大部分硬件和软件指令。传统CPU 是单核,但现在的 CPU 是多核,具有两个或更多处理器以增强性能。CPU按顺序处理任务,并将任务分配给多个内核以实现多任务处理。
什么是 GPU?
GPU最初设计用于图形渲染,需要并行处理大量相似的计算任务,如像素渲染。它使用加速计算来渲染密集的高分辨率图像和图形。虽然 GPU 最初设计用于在计算机上渲染 2D 和 3D 图像、视频和动画,但如今 GPU 的应用远远超出了图形处理的范围,包括大数据分析和机器学习,GPU 使用并行处理,将任务划分为更小的子任务,这些子任务分布在 GPU 中的大量处理器核心中。这可以更快地处理专门的计算任务。
CPU 与 GPU底层同是基于0和1的二进制计算,到底有什么区别?
尽管CPU和GPU在最底层都是基于0和1的二进制计算,但它们设计的架构和优化的目标大相径庭,从而导致了在处理不同类型任务时性能上的巨大差异。
GPU 和 CPU 之间的根本区别在于,CPU 非常适合快速执行顺序任务,而 GPU 使用并行处理以更高的速度和效率同时计算任务。CPU 是通用处理器,可以处理几乎任何类型的计算。它们可以在多组线性指令之间分配大量的能力来执行多任务,以更快地执行这些指令。虽然 CPU 可以快速高效地执行复杂计算的顺序任务,但它们在并行处理各种任务时效率较低。GPU 非常擅长处理专门的计算,并且可以拥有大量的内核,可以在多个数据点上并行运行操作。通过批处理指令和大量推送大量数据,它们可以加速超出 CPU 能力的工作负载。通过这种方式,GPU 可以为机器学习、数据分析和其他AI等专门任务提供巨大的加速。
做这样一个比喻:CPU就像是一名的数学家,他可以计算非常复杂的数学问题。GPU就像是成千上万名小学生,可以同时解决成千上万个简单的数学题,适合进行大规模的数学计算。
GPU 是如何工作的?
虽然 CPU 通常具有较少的高速运行核心,但 GPU 具有许多低速运行的处理核心。当给定一个任务时,GPU 会将其划分为数千个较小的子任务并同时(而不是串行)处理它们。在图形渲染中,GPU 处理复杂的数学和几何计算,以创建逼真的视觉效果和图像。必须同时执行指令,每秒绘制和重绘图像数百次,才能创造流畅的视觉体验。GPU 进行像素处理是一个复杂的过程,需要大量的处理能力来渲染多层并创建逼真图形所需的复杂纹理。正是这种高水平的处理能力使 GPU 适用于AI机器学习、深度学习等大规模计算的任务。
GPU会取代CPU吗?
可以肯定地说,GPU不会取代 CPU!CPU和GPU的设计初衷是不同的。CPU旨在成为一个通用的计算工具,能够处理各种类型的计算任务。它需要能够快速地处理各种不同的逻辑和算法,因此设计上强调灵活性和单线程性能。GPU的设计则是为了优化特定类型的计算,特别是那些可以并行处理的计算任务。图形渲染就是这样一种任务,它需要对成千上万个像素进行相似的计算。随着时间的发展,人们发现这种并行处理的能力也非常适合于科学计算和深度学习等领域。
正因为CPU和GPU的设计哲学和优化目标的不同,也导致了它们在处理不同类型任务时性能上的巨大差异。CPU擅长处理复杂的、需要顺序执行的任务,而GPU则在处理可以并行化的大规模数据计算任务时表现出色。这就是为什么在需要大量并行处理能力的应用场景(如图形渲染、科学计算、深度学习)中,GPU比CPU更受欢迎。
在可预见的未来,GPU还不太可能取代CPU,CPU仍然会是计算系统不可或缺的核心部件,而是继续作为CPU的强大补充,两者共同推动计算任务的高效执行。随着技术的发展,我们可能会看到更多专门为特定任务设计的处理器,如TPU(张量处理单元)等,它们都旨在优化特定类型的计算,而不是取代CPU。
CPU能进行AI训练和推理吗?
为什么AI大模型、深度学习、神经网络如此依赖GPU?
实际上CPU也可以进行AI模型的训练和推理,但由于其处理速度和效率与GPU相比有差距还是相当大的,因此在时间和成本上都不太经济。简单地说,使用CPU来进行大规模AI计算就像是用勺子挖山,理论上可行,但效率低下。
实测对比:为了量化GPU计算对深度学习的影响,科研人员通过训练CIFAR-10对象识别模型(来自TensorFlow),分别使用GPU和不使用GPU进行比较。CIFAR-10 CNN模型通常用于基准测试。它通过一个14层的CNN(卷积神经网络)模型,使用60,000张32x32的彩色图像进行训练,以此来说明计算的强度。由于我的主要关注点是计算速度,我的比较指标是每秒处理的样本数和总训练时间。结果显示,使用GPU训练时的性能提升了27倍。见下图:
在训练深度学习模型这类高度并行和计算密集的任务中,GPU的结构使它能够大幅度减少运算时间,相比之下,CPU由于内核数量较少,处理这类任务效率较低,速度也慢得多。当训练像GPT-4这样的大语言模型时,GPU比CPU更有优势,因为其设计让它非常适合执行高度并行的计算密集型任务。GPU的这些特性使其在处理深度学习任务时能够提供更高的计算速度和效率。GPU有成千上万个内核,可用于并行计算,这对于大语言模型LLM中的自注意力和矩阵运算尤其有利。深度学习训练涉及大量的浮点运算,GPU的浮点运算速度远超CPU。GPU的内存带宽也远高于CPU,这意味着在训练期间可以更快地加载和更新大量参数。
为了训练ChatGPT这样的大模型,需要巨大的计算资源,随着ChatGPT等AI大模型的发展,对GPU的需求呈指数级增长。AI大模型的成功不仅展示了AI技术的潜力,也进一步推动了GPU技术的发展和创新,因为现有的GPU需要不断进化以满足日益增长的计算需求。可以预见,GPU将是推动AI未来的重要力量。