AI大模型时代GPU比CPU更重要

OpenAI 在2022年底推出了 ChatGPT, AI 发展正式进入到了大模型时代。大模型表现出完美的知识连贯性,并拥有优秀的逻辑推理能力。而实现这一切的基础,来自于 OpenAI 使用大量互联网信息进行模型训练。

ChatGPT 的成功具备天时地利。云计算经过十多年发展累积了大量富余算力,千亿乃至万亿的智能模型依赖云技术对大规模数据"消化"来实现模型的生成。而巨量算力的基础离不开位于云底层的,经过数十年发展、十分强大的 GPU 能力。

为什么是 GPU?

抽象地看,计算方式有限(比如加减乘除等),但数据很多,即每种计算方式要处理大量数据 。CPU 能实现一次算一个,而 GPU 能实现一次算一组,这正是大算力的基础。

一、向量计算

如果把一组数据合成一个逻辑上的输入,就是向量,即:

标量(scalar):单个数值

向量(vector):一维数组,多个数值

在空间上来看,向量是一条线,数值是一个点。GPU 能实现一个指令对一组数据并行计算,是构建 AI 底层计算的基座。

熟悉编程的读者可能会想到一个问题,多线程也能同时执行,CPU使用多线程能替换GPU吗?

不能 。这两种在底层本质上不同,如果CPU有多个核心,CPU 的同时执行是把这些核心尽可能的利用起来。而 GPU 则是实现了让单个命令并行,一个命令多个输入,即向量计算

二、向量计算的实现

SIMD(Single instruction, multiple data) 可实现向量计算,根据 Flynn 1972分类法,SIMD 可分为三类。

阵列处理器 (Array processor):接收一条相同的指令,但每个并行处理单元都有自己独立且不同的内存和寄存器文件,它也叫 SIMT(Single instruction, multiple threads)。SIMT适合大规模数据计算,也是 GPU 的基本结构。

流水线处理器 (Pipelined processor):接收一条相同的指令,然后从中央资源读取数据,每个处理器处理该数据的片段,然后将结果写回到同一中央资源。在 Flynn 1972 年的论文中,资源是主内存,对于现代 CPU,该资源应是寄存器。流水线处理器在现代 CPU 结构中应用广泛,它实现了不同指令的不同阶段的并行。

关联处理器 (Associative processor):接收一条相同的指令,但在每个并行处理单元中,根据单元本地数据做出独立决策 ,决定是否执行执行或是否跳过执行。在现代术语中,这称为"谓词SIMD"。"谓词SIMD"可以让每个处理单元独立进行判断,比较适合在大规模数据库查询时进行数据过滤。

下面通过一个例子来理解并行计算:

一个指令的执行在逻辑上可分为五大阶段:

  1. IF = Instruction Fetch,拉取指令
  2. ID = Instruction Decode,解码指令
  3. EX = Execute,执行
  4. MEM = Memory access,拉取数据
  5. WB = Register write back,写回结果

下图左边依次执行 的指令:指令1、指令2......指令5。上边逐个完成的时钟周期,周期1、周期2......周期7。

在时钟周期4,指令1、2、3、4同时在执行,这就是 SIMD 分类中的流水线处理器。如果把这样的单个处理核心的执行流程,扩展到大量多个处理核心一起执行,就实现了 SIMT。

三、未来还需要CPU吗?

GPU 在大规模数据的计算上表现出很大的优越性,既然 GPU 这么强,我们还需要 CPU 吗?

答案是我们需要 CPU 。GPU 能对大量数据并行执行相同的操作,让上千个核心同时工作来快速完成工作,但 CPU 不能被取代。把计算机硬件抽象为一个工作团队,CPU 是大脑,是 "Leader",它能协调各组件,GPU只被指挥来负责大数据计算的"员工",工作的指示还是要 CPU 下达。

四、参考资料

相关推荐
程序员小凯1 小时前
Spring Boot测试框架详解
java·spring boot·后端
你的人类朋友2 小时前
什么是断言?
前端·后端·安全
程序员小凯3 小时前
Spring Boot缓存机制详解
spring boot·后端·缓存
i学长的猫3 小时前
Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
后端·ruby on rails·ruby
用户21411832636024 小时前
别再为 Claude 付费!Codex + 免费模型 + cc-switch,多场景 AI 编程全搞定
后端
茯苓gao4 小时前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Cherry Zack4 小时前
Django视图进阶:快捷函数、装饰器与请求响应
后端·python·django
爱读源码的大都督5 小时前
为什么有了HTTP,还需要gPRC?
java·后端·架构
码事漫谈5 小时前
致软件新手的第一个项目指南:阶段、文档与破局之道
后端
间彧5 小时前
Spring Boot条件注解详解与项目实战
后端