GPU为什么对AI人工智能如此重要!

一、前言

美国政府又双叒叕加码制裁了,当地时间 1月13 日,美国政府宣布推出美国制造 AI 芯片管制新规,旨在对美国制造的 AI GPU 芯片实施严格的全球出口限制。尤其是中国、俄罗斯、伊朗等被美国实施武器禁运的国家及地区,这些国家将受到最严格的限制,几乎全面禁止进口美国厂商生产的 AI GPU 芯片,拜登说此举措以确保中国等对手无法轻易使用先进 AI,限制中国 AI 产业发展。GPU 在 AI 中起到什么作用,为什么如此重要,以至于大美丽隔三差五就拿向我们挥舞 GPU 制裁大棒。

笔者认为,GPU强大的并行计算能力是其在AI领域不可或缺的关键因素,具体原因请看下文。

二、AI 为什么需要并行计算?

什么是并行计算?

并行计算是一种将计算任务分解为多个子任务,并通过多个处理器或计算单元同时进行处理,以提高计算速度和效率的计算模式

图片

并行计算基本原理

  • 任务分解:将一个大规模的计算任务按照一定的策略,分解为多个相互独立或存在一定依赖关系的子任务。例如,在计算一个大型矩阵乘法时,可以将矩阵划分为多个子矩阵,每个子矩阵的乘法运算作为一个子任务。
  • 并行执行:这些子任务被分配到不同的处理器、计算节点或线程上同时进行计算。多个计算单元可以是同一台计算机中的多个 CPU 核心,也可以是多台计算机组成的集群中的不同节点。
  • 结果合并:当各个子任务完成计算后,需要将它们的结果进行合并,以得到最终的计算结果。例如,在矩阵乘法计算中,将各个子矩阵乘法的结果进行累加或组合,得到最终的矩阵乘积。

与之相对应的是串行计算

串行计算是一种按照顺序依次执行计算步骤的计算方式,在计算机科学和计算领域中具有重要地位

图片

串行计算基本原理:

串行计算是指计算机按照指令的先后顺序,一条一条地依次执行计算任务。在这种计算方式中,每个操作都必须在前一个操作完成后才能开始,就像人们排队依次完成任务一样,具有明确的先后顺序,不存在多个操作同时进行的情况。例如,在计算 3+5 然后再乘以 2 的运算中,计算机首先会执行 3+5 的加法操作,得到结果 8,然后再执行将 8 乘以 2 的乘法操作,最终得到结果 16。

举个例子假设你在经营一个大工厂,工厂需要完成以下任务:

  • 有 10,000 件商品需要手工打包。
  • 每件商品的打包步骤是:放入盒子 → 封装 → 贴标签

串行计算:一个工人完成所有商品打包

  • 只有一个工人在工作,必须按顺序完成所有任务。
  • 他需要逐件完成打包、封装、贴标签,然后再处理下一件商品。
  • 结果:需要极长的时间才能打包完 10,000 件商品。

并行计算:雇佣多个工人一起打包

  • 工厂雇佣了 100 个工人,每个工人同时打包 100 件商品。
  • 所有工人同时开始工作,大幅提高了效率。
  • 结果:总时间大幅缩短,商品很快被打包完毕

NVIDIA 之前演示过一个串行计算和并行计算的差异,非常直观

串行计算(一步一步画出图片)

图片
   并行计算(一步画出整个图片)
图片

AI为什么需要并行计算?

图片
图片

AI 模型的核心是神经网络,如上图所示,神经网络由多个层(输入层、隐藏层、输出层)、神经元、连接构成,每个神经元内部实际都在做矩阵运算(如上图)。那么神经网络之所以能高度并行运行,主要是因为它的计算结构天然适合进行大量并行计算。这与神经网络的计算特点密切相关。让我们从几个方面详细分析这个问题。

1、神经网络的计算结构适合使用并行计算

神经网络的计算任务可以视为一种矩阵运算的过程,尤其是在深度学习中的前向传播和反向传播阶段。以下是神经网络训练和推理中的几个关键计算:

前向传播:

输入数据 XXX(例如图像、文本等)通过网络的各层进行计算,每层的计算包括矩阵乘法(权重矩阵与输入向量相乘)和非线性激活函数(如 ReLU、Sigmoid 等)。每一层神经元(计算单元)只依赖于其前一层的输出,而每个神经元的计算是独立的,彼此之间没有强耦合关系。例如,假设有 1000 个神经元在同一层中,每个神经元的计算(例如,矩阵乘法)是独立的,意味着你可以同时处理每个神经元的计算任务

反向传播:

反向传播涉及计算每个参数(权重和偏置)的梯度。梯度的计算过程也可以分解为多个独立的操作,比如权重更新与激活函数的梯度计算。每一层的梯度计算也是独立的,且每个神经元对梯度的贡献也是独立的,因此可以并行计算每个神经元和每层的梯度。

2、AI 的本质就是大量的计算,需要并行计算提高效率

我们以训练一个中型 Transformer 模型为例:

模型规模:12 层 Transformer,每层有 10 亿参数。

输入数据:每次处理一批 1024 条文本,序列长度 512。

核心计算任务:主要包括自注意力机制和前馈层的矩阵运算。

计算量简单做个估算:

自注意力机制:序列长度为 n,需要计算 n^2 的注意力权重。对每个注意力头:计算 512×512 的矩阵乘法(需要 262,144 次运算)。12 层 Transformer,有 16 个头

总运算量为:262,144×12×16=50,331,648。

前馈层的矩阵运算:假设每层前馈层计算约 Din=1024,Dout=4096 的矩阵乘法,单层计算量为 B×Din×Dout≈4×10^9

总运算量:4×10^9×12=48×10^9

综合下来,每次训练一个批次的数据,至少需要执行数百亿次浮点运算!

单核串行计算的瓶颈:

假设一个单核 CPU 每秒能执行一亿次浮点运算(GFLOPS),训练一个批次需要 1000 亿次运算:串行计算耗时:1000÷1=1000 秒(即近 17 分钟)。如果模型需要训练 10 万次迭代(epochs),总时间可能达到数十天甚至数月!

并行计算的优势:

如果采用并行计算,假设每个GPU计算核心每秒能执行一亿次浮点运算(GFLOPS),一个批次1000 亿次运算任务被分解到多个核心:一个 1000 核的 GPU 可以将 1000 亿次运算分解成 1000 个任务并行,每个核心只需执行 1 亿次运算。并行计算耗时:约 1 秒即可完成一次批次计算。同时,多个 GPU 可以协作进一步加速训练。

三、GPU 和 CPU 结构差异

图片

GPU(图形处理单元)和 CPU(中央处理器)在结构上存在诸多差异,主要体现在以下几个方面:

核心数量与架构

  • CPU:通常具有较少的核心,一般从双核到几十个核不等,高端服务器 CPU 可能会有更多核心,但总体数量相对有限。其核心架构注重通用性和复杂指令集计算(可以进行较为复杂的运算操作),每个核心都具备完整的运算单元、缓存和控制逻辑,能够独立处理复杂的任务,如操作系统管理、数据处理、逻辑判断等。
  • GPU:拥有大量的核心,少则几百个,多则数千个。例如 NVIDIA 的 A100 GPU 拥有高达 4000 多个 CUDA 核心。GPU 的核心架构相对简单,主要针对图形处理和并行计算进行优化,更侧重于执行大量相同或相似的简单指令,适合处理高度并行的数据,如渲染大量的图形像素或进行大规模的数值计算。

控制与调度

  • CPU:具有强大的分支预测和调度能力,可以高效处理不同种类的任务。CPU 能够处理复杂的指令和条件分支,进行任务切换,适应不同负载。
  • GPU:由于其核心数量庞大,调度机制相对简单,主要是将任务分配到多个线程上,执行相同或相似的计算任务。GPU 中的线程管理器会将大量线程分配到不同的核心上执行。

总结起来:

CPU:适用于通用计算,如操作系统、数据库管理、大多数应用程序、文件处理、网络通信等。

GPU:由于其高并行处理能力,GPU 常用于图形渲染、科学计算、视频处理、深度学习训练等。GPU 在大规模矩阵计算、数据并行处理方面有显著优势,尤其是在处理大量数据时。

四、AI 场景没有 CPU 行不行?

前面都在说 GPU 各种适合 AI 场景,那么在 AI 场景中,没有 CPU 行不行?

答案是理论可行,但在实际应用中,基本都会和 CPU 配合使用,原因是:

1、系统管理和协调:CPU 在计算机系统中通常扮演着 “大脑” 的角色,负责系统的管理和协调。在 AI 场景中,无论是训练还是部署,都需要对整个系统进行有效的管理,包括任务调度、资源分配、硬件设备的初始化和监控等。没有 CPU,这些工作将难以完成,可能导致系统的混乱和不稳定

2、与其他设备的兼容性:在实际的 AI 应用中,往往需要与多种设备和系统进行交互,如存储设备、网络设备、传感器等。CPU 通常具有良好的兼容性和接口支持,能够方便地与这些设备进行通信和协同工作。而缺少 CPU 可能会导致与其他设备的兼容性问题,增加系统集成的难度。

3、复杂任务处理:AI 场景中除了核心的计算任务外,还可能涉及到一些复杂的逻辑处理、数据预处理和后处理等任务。这些任务通常需要灵活的指令集和较强的逻辑处理能力,而这正是 CPU 的优势所在。没有 CPU,处理这些复杂任务可能会变得非常困难,或者需要在其他硬件上进行复杂的编程和优化。

总之在 AI 应用中,虽然 GPU、TPU、NPU 等硬件能够提供强大的计算能力,并承担大规模并行计算任务,但 CPU 依然是整个系统的控制中枢,承担着数据管理、任务调度、系统控制等职责。因此,没有 CPU 的 AI 场景是不可行的,但 AI 任务的计算负担可以由 GPU 等加速硬件主导。

五、总结

GPU 之所以能在 AI 领域大放异彩,其核心在于并行计算能力。并行计算,才是推动 AI 快速发展的核心动力。并行计算的发展趋势也不仅仅局限于 GPU,随着技术的进步,专用的加速硬件如 TPU(张量处理单元)和 NPU(神经网络处理单元)相继涌现。这些硬件针对特定应用(如深度学习、图像处理等)进一步优化了并行计算能力,极大推动了计算效率和性能的提升。此外,异构计算平台的崛起使得 CPU、GPU、FPGA 和 ASIC 等硬件能够协同工作,以最大化计算资源的利用率。

来源:牛山AI公园

THE END