专栏名称: AI云原生智能算力架构
分享最新一线AI大模型、云原生、智能算力架构技术
目录
相关文章推荐
虎嗅APP  ·  “3元管饱”,平价快餐店卷起来了 ·  5 天前  
新浪科技  ·  【#三只羊被罚没超6894万元#】合肥市联合 ... ·  1 周前  
51好读  ›  专栏  ›  AI云原生智能算力架构

万亿赛道!异构计算解决方案深度分析 2024

AI云原生智能算力架构  · 公众号  · 设计 科技媒体  · 2024-09-24 07:03

正文

欢迎关注


2.1 计算架构的发展历程

图灵奖获得者 John Hennessy 总结了计算机体系结构演进的四个时代和即将兴起的第五个时代:

第一代,晶体管时代,指令集架构出现之前,计算机架构各不相同;

第二代,小规模和中等规模集成电路时代,出现支持指令集架构的 CPU 处理器;

第三代,大规模和超大规模集成电路时代,指令级并行以及 CISC RISC 混战;

第四代,超大规模集成电路的多核处理器并行时代;

第五代,超大规模的领域专用处理器(DSA)时代。

上述计算机体系结构的时代划分,是站在单处理器引擎视角进行的。上述五个时代的划分,站在多处理器引擎计算架构从简单到复杂的发展视角,提出了如下的发展阶段划分:

第一阶段,基于单核 CPU 的串行计算;

第二阶段,基于多核 CPU 的同构并行计算;

第三阶段,基于 CPU+xPU 的异构并行计算。

2.1.1 基于单核 CPU 的串行计算

CPU 之 前 , 传 统 计 算 机 通 常 被 称 为 “ 固 定 程 序 计 算 机 ” (Fixed-ProgramComputer),其线路必须被重设才能执行不同的程序,通常需要花费长达三周的时间。而CPU 微处理器通过支持跳转、调用等控制类指令,使得计算机可以执行各种复杂的计算和数据处理任务。

CPU 的这种设计理念实现了软件与硬件的解耦。即在更新程序的时,硬件不需要改变。在这种架构中,软件开发是基于串行计算的思维,程序或问题被分解成一系列离散的指令,这些指令被顺序地送到单个处理器执行。单核 CPU 的串行计算模式奠定了现代计算机系统的基础。

2-1 单核 CPU 串行计算示意图

从上世纪 70-90 年代,CPU 处理器的一些重要发展和变化:

指令集架构:宏观架构有精简 RISC 和复杂 CISC 路线之争。

微架构创新:CPU 处理器中出现了各种各样的微架构创新技术,如处理器流水线、乘法/除法器等复杂执行单元、指令多发射、乱序执行、缓存等。

数据位宽:处理器数据位宽从 4 位到 8 位到 16 位到 32 位,再到目前主流的 64 位。

2.1.2 基于多核 CPU 的同构并行计算

IBM 公司于 2001 年推出 IBM Power4 双核处理器,是世界上第一款多核处理器。随后,AMD Intel 分别推出了各自的双核处理器。随着技术的创新迭代,更多的 CPU 核被集成到了 CPU 芯片。目前,最新的 AMD EPYC™ 9654 CPU 具有 96 个核心,192 个硬件线程的超高并行计算能力。

2-2 多核 CPU 同构并行计算示意图

并行计算(Parallel Computing)是通过扩大问题求解规模,解决大型而复杂的计算问题。并行计算主要分为时间上的并行和空间上的并行。

时间上的并行是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算,以此扩大问题求解规模。1967 年,吉恩·阿姆达尔(Gene Amdahl)提出阿姆达尔定律。

并行性的理论性能提升受任务顺序部分的限制。阿姆达尔定律证明了处理器数量的增加带来的收益会递减。

一方面受系统工作任务并行特征的约束,另一方面,受单芯片设计规模上限的约束,通过多CPU 同构并行的方式提升性能,也逐渐的达到了上限。

2.1.3 基于 CPU+xPU 的异构并行计算

基于 CPU+xPU 的异构并行计算广泛应用于高性能计算、人工智能等领域。CPU xPU(如 GPUFPGA 或其他类型的加速器)协同工作,CPU 负责控制和管理系统的运行,处理操作系统级别的任务, xPU 则专注于执行大规模计算密集型任务。

(一)基于 GPU 的并行计算

2006 年,NVIDIA 发布了第一款真正意义上的通用 GPUTesla 架构 GPU;同年,NVIDIA 发布了 CUDA 框架,这标志着基于 GPU 处理器并行计算的诞生。GPU 由数百至数千个计算核心(流处理器或计算单元)组成的并行计算引擎。

GPU 众核和 CPU 多核的区别在于:CPU 核是高性能的大核,具有高性能的同时也变得更加复杂,单位计算的功耗面积等成本较高;而 GPU 核是高效能的小核,虽然每个核的性能较低,但单位计算的功耗面积等成本也较低;CPU 擅长处理串行任务,而 GPU 则更适合处理并行任务。

深度学习以及 AI 大模型的兴起及快速演进,使得 GPU 成为最佳的加速计算平台。但,较之 ASIC DSAGPU 的性能效率仍有较大差距。

(二)基于 DSA 的并行计算

Google 2016 年发布了第一款 DSA 架构的处理器:TPUTensor Processing Unit)。之后,各类符合 DSA 概念的加速处理器如雨后春笋般涌现。

TPU 作为一个独立的加速处理器(TPU v1 为独立加速器,TPU v2 集成了 CPU),通过 PCIe 总线与 CPU 连接,被专门设计用于处理和执行深度学习中大规模的张量运算,即多维度的数组运算,以增强并行计算的能力。

TPU 独立完成整个推理模型的运算,极大地减少了与 CPU 的交互,提高了计算效率。

指令通过 PCIe 总线迅速地从 CPU 传输到 TPU的指令缓冲区,确保数据流畅无阻。

TPU 的矩阵乘法单元是其计算的核心,专门用于处理机器学习任务中的大规模矩阵运算。

性能和功耗之间的关系是决定计算设备选择的核心因素。

为了满足大规模计算的需求,CPU GPU,再到 TPUDSA),每一个技术进步都带来了性能的显著提升。基于DSA 的异构加速,具有相对好的性能效率,也具有一定的灵活可编程性。

(三)基于 FPGA 的并行计算

FPGAField Programmable Gate Array)是在 PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上的半定制电路,或叫可编程的逻辑列阵。

FPGA 基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、内嵌专用硬核,底层内嵌功能单元等。

各模块之间或模块与 I/O 间的联接方式,最终决定了 FPGA 所能实现的功能,FPGA 允许无限次的编程。

相较于 GPU CPUFPGA 能够实现更低的数据处理延迟;与专用集成电路(ASIC)相比,FPGA 提供了更大的硬件灵活性,允许开发者根据需要进行硬件编程和定制。

这样的灵活性弥补了定制电路的一些局限性,同时具备比传统可编程逻辑更高的逻辑门数量,从而实现复杂的计算任务。

(四)基于 CGRA 的并行计算

CGRA 可重构计算( Coarse-grained Reconfigurable Architecture)是一种以空域为基础的并行计算架构,它通过空域硬件结构组织不同粒度和功能的计算资源。

与传统的指令驱动计算架构不同,CGRA 在运行时根据数据流的特点进行硬件配置,让计算资源形成相对固定的计算通路,从而以接近专用电路的方式并行计算。

这种结构既减少了取指和译码的延时及能耗,又能以专用电路的方式高效执行。

当面临不同的算法和应用时,可以通过重新配置达到硬件的重构,以适应不同的任务。这使得 CGRA 特别适合那些需要高能效和灵活性的应用场景,如云计算和边缘计算。

2.2 异构计算技术蓬勃发展

2.2.1 异构计算技术成为主流

在上世纪 80 年代中期之前,基于复杂指令集(CISC)的 CPU 单核性能增长由技术驱动,平均每 3.5 年翻一番;从 1986 年开始,以精简指令集(RISC)为代表的更先进架构的处理器性能平均每 2 年翻一番;随着登纳德缩放定律的逐渐失效、阿姆达尔定律的充分挖掘,CPU 性能的提升已经越来越难;自 2015 年之后,CPU 性能提升平均每年仅有 3%,实现性能翻倍可能需要 20 年。

同时, CPU 架构主要面向广泛的通用计算场景,控制单元、缓存、寄存器等占据大量的硅面积,算力密度低,运算单元少,不适合人工智能领域的高并发密集的向量、张量计算,整体计算效率低。

在最前沿的 AI 深度神经网络模型训练领域,所需算力在 2012-2018 年共 6 年时间里增长了超过 30 万倍;在智能汽车领域,随着 AI 大模型的广泛使用,以及娱乐需求快速增长,自动驾驶(L4/L5 阶段)多域融合的综合算力需求预计超过 20000 TOPS

面对指数级提升的算力需求和密集多样计算需求,单纯依赖 CPU 一种计算架构已经无法满足,结合不同架构的异构计算已成为主流计算模式。

2-3 1978-2018 年间 CPU 性能提升示意图

当前,人工智能领域主要采用 CPU+xPUGPU/FPGA/DSA/ASIC 等)的计算架构,高性 能 计 算 领 域 主 要 采 用 CPU+GPU 的 异 构 计 算 架 构 , 手 机 SoC 芯 片 通 常 采 用CPU+GPU+DSP+ISP 计算架构,智能便携设备主要采用 CPU+DSP+语音识别技术计算架构。

异构计算技术已经成为超级计算机、嵌入式系统、人工智能等领域的主流计算模式,未来还有望在更多领域得到应用和发展。

2.2.2 异构计算架构品类众多

异构计算架构,通过集成不同类型的计算资源,如 GPUFPGADSA ASIC 等,以满足需求各异的计算任务。

场景(Scenario)是领域(Domain)的子集。

比如 AES 加解密是一个具体的场景,而安全则是一个领域;比如某个特定的 AI 算法是一个具体的场景,而 AI 则是一个领域。

因此,针对不同类型处理器的领域和场景覆盖,我们可以得到如下一些结论:

ASIC面向单个领域的单个具体场景;

DSA面向单个领域的多个场景;

GPU面向多个领域;

CPU面向几乎所有领域;

FPGA其灵活性体现在硬件编程层次,在架构上可以是 ASICDSAGPU CPU等任意类型处理器,要根据 FPGA 具体实现的硬件架构确定其场景和领域覆盖。

异构计算架构的品类众多,并且不同的品类具体的架构实现也不尽相同。

按照不同的异构计算形式进行分析:

基于 GPU 的异构:头部厂商占据了主要市场,GPU 异构计算架构相对集中。

基于 FPGA 的异构:由于 FPGA 的硬件编程性,架构设计由用户做主,因此 FPGA架构多种多样、品类繁多。

基于 DSA/ASIC 的异构:面向应用领域和场景各异、每个厂商芯片架构实现的方式各异;甚至,由于业务迭代的影响,同一个厂家不同代产品的架构也有可能不同。

DSA/ASIC 异构里,异构计算架构的碎片化现象最为凸显。

在体系结构的黄金年代,异构处理器多样化是时代的潮流

在众多异构计算架构中,如何实现平衡性能与灵活性,并从系统层面上以更低的成本获取更大的算力、更多的领域覆盖,则是异构计算架构发展的重点。

2.2.3 异构编程软件逐渐成熟

随着异构计算的发展和广泛应用,异构编程技术也逐渐成熟。

异构编程是指通过编写软件来调度异构计算平台进行计算,其成熟性主要体现在三个方面:

在平台支持方面,主流的异构计算平台都提供了相应的开发工具和编程模型,以支持异构编程。

例如,NVIDIA 提供的 CUDA 编程模型;Xilinx Intel 等芯片厂商提供了相应的开发工具和软件库(OpenCL 编程模型),以便于开发者针对 FPGA 进行优化和编程。在编程模型方面,针对异构计算的编程模型也在不断完善和发展。

传统的编程模型如Intel/AMD CPU x86 指令集并不是为异构计算而设计的,不能充分利用异构计算架构的优势。

因此,专门面向异构计算架构的异构并行编程模型应运而生,如 NVIDIA CUDA、寒武纪的 MagicMind 等。

这些编程模型提供了更高层次的抽象和更丰富的语义,降低了异构编程的难度,同时充分发挥了异构计算的优势,目的是让开发者可以更加轻松地进行异构并行编程。

在优化工具和框架方面,为了提高异构计算的效率,研究人员和厂商们开发了各种优化工具和框架。

这些工具和框架提供了各种编译、调度、调试和优化的功能,以帮助开发者实现高效的异构计算。

例如,与 GPU 相关的优化工具有 CUPTI NVIDIA Nsight 等,用于性能分析和调试;与 FPGA 相关的优化工具有 Vivado Quartus 等,用于逻辑综合和时钟优化。

简而言之,越来越多的案例表明了异构编程正在逐渐成熟,不仅有全栈的软硬件平台支持、便于使用的编程模型,还有优化加速工具链。

2.3 异构计算技术演进困境

异构计算技术已经广泛应用于多个领域,如云计算、边缘计算、高性能计算等。

但异构计算也逐渐面临性能瓶颈问题,同时面临性能和灵活性难以兼顾、编程框架不统一等问题,需要对异构计算的相关问题进行进一步的分析研究,并寻找可能的解决方案。

2.3.1 芯片性能提升陷入瓶颈

AI 大模型发展为例,随着 BERT GPT 等大模型的发展,其算力需求每 2 个月提升一倍。

单个异构计算设备的性能提升有限,只能通过扩大计算集群规模的方式来满足算力快速提升的需求。

然而,受限于集群效率,目前上千台服务器和上万张 GPU 加速卡的AI 计算集群基本达到集群规模的上限。

单个计算芯片的性能提升已经陷入瓶颈,主要有如下几个原因:

摩尔定律放缓:随着制程工艺不断缩小,摩尔定律的推进速度已经放缓,单纯依靠增加晶体管数量来提升性能的效果逐渐减弱。

能源和散热限制:随着芯片制程工艺的进步,晶体管的体积不断缩小,但同时也带来了更高的功耗和热量产生。在有限的能源和散热条件下,单纯追求性能提升将导致芯片的可靠性和使用寿命下降。

软件和硬件的协同优化不足:为了充分发挥硬件性能,需要与之相应的软件和算法支持。但在实际应用中,软件和硬件之间的协同优化并不总是能够实现,导致部分硬件性能无法有效发挥。

阿姆达尔定律的原则:并行性的理论性能提升受任务顺序部分的限制。在优化计算机系统性能时,不仅需要考虑单个处理器的性能,还需要考虑如何并行化计算任务,以充分利用多核处理器的优势。也因此,通过多核并行来提升综合性能的收益也在逐渐递减。为了突破性能瓶颈,未来的计算技术需要从多层次、多方面进行创新,包括新型计算架构、高效能算法、统一编程模型、以及软硬件系统级的融合优化等。

2.3.2 性能和灵活性难以兼顾

性能与灵活性在不同的加速处理器上呈现出不同的特点和挑战:

GPU 虽然在灵活性上表现良好,但性能效率相对不够极致,并逐渐面临性能瓶颈。

DSA 在领域特定性能上卓越,但灵活性有限,难以应对多变的算法需求。其硬件和软件架构的碎片化使其实际应用困难。

FPGA 尽管具有较高的灵活性,但其功耗和成本较高,主要用于原型验证,实际落地案例相对较少。

ASIC 功能固化,缺乏足够的灵活性以满足多变和复杂的计算场景。

其中,DSA 代表了性能与灵活性的细微平衡。DSA 的特点在于为特定领域提供专用的优化,使其在某些场景下可以达到 ASIC 相近的性能,但仍保持一定的灵活性。

DSA 的优势是领域定制,劣势也在于领域定制。

领域定制的优势表现在以下几个方面:

性能优越:DSA 技术通过将多个处理器核心连接到一个共享内存区域,实现了处理器之间的高效数据交换和协作。这使得 DSA 在处理大规模数据和复杂任务时具有较高的性能表现。

 灵活性高DSA 技术可以根据实际应用需求,灵活配置处理器核心和内存资源的比例,以满足不同场景下性能和资源需求的平衡。此外,DSA 还支持动态地添加或删除处理器核心,使得系统可以根据任务变化进行自适应调整。

易于扩展:DSA 技术具有良好的可扩展性,可以通过增加处理器核心数量来提高系统的整体性能。这使得 DSA 在处理大规模数据和复杂任务时具有较大的潜力。

 容错能力强DSA 技术采用了冗余设计,当系统中某个处理器核心出现故障时,其他核心可以接管其任务,保证整个系统的正常运行。领域定制的劣势表现在以下几个方面:

 适用范围有限:由于 DSA 技术针对特定领域进行优化,因此其在非定制领域的适用范围有限。对于一些通用计算任务,DSA 可能无法达到预期的性能提升。

 开发和维护成本高:为了充分发挥 DSA 的性能优势,需要针对具体应用进行优化和适配。这意味着开发者需要投入更多的精力进行硬件和软件设计,提高了开发和维护成本。

 技术成熟度较低:相较于传统架构,DSA 的技术成熟度较低。在实际应用中,可能会遇到更多的技术挑战和问题,这限制了 DSA 技术的广泛应用。

 兼容性问题:由于 DSA 技术采用了特定领域的定制设计,可能导致与其他硬件和软件系统的兼容性问题。

在使用过程中,可能需要额外的适配和优化工作。在异构计算中,不同的处理器各有优势和劣势,选择最适合的处理器取决于特定应用的性能和灵活性需求。

尽管 DSA 提供了一种介于高性能 ASIC 和灵活的通用处理器之间的解决方案,但其在某些迅速变化的领域中仍面临着挑战。未来的技术研究应集中在如何实现性能和灵活性的更好平衡。

2.3.3 异构计算孤岛问题突显

随着异构计算在各领域的应用落地,多异构共存的异构计算孤岛问题也逐渐突显。多异构计算的硬件层次高集成度和系统软件层次多协同、通用编程模型和开发环境,已成为行业亟需解决的问题。

2-4 从同构到异构再到多异构的演进

各领域加速器难以全局协同:不同的加速器在处理特定领域的问题时表现出色,但相互协同能力差,可能导致系统整体的性能下降。协同能力差主要体现在两个方面:不同的加速器的存储器和内存管理机制不同,导致数据访问和传输方式复杂,数据通路难以协同;多个加速器的控制机制不同,导致它们之间的同步和协调,需要复杂的并行控制机制和算法。

 各领域加速器之间交互困难:不同类型的加速器之间进行通信和数据交换需要使用特定的接口和机制,增加了开发的复杂性和难度;频繁大量的通信和数据交换,导致数据传输的延迟和开销巨大。

 中心单元的性能瓶颈问题:在异构系统中,通常有一个中心单元(如 CPUDPU负责协调和管理其他硬件加速器的工作。然而,当加速器数量增多或任务复杂度增加时,这可能导致资源负载的不均衡分配,中心单元的性能瓶颈问题会愈发突出。

 物理空间无法容纳多个异构加速卡:由于物理空间的限制,系统中只能容纳有限数量的加速卡。这限制了系统可扩展性和性能的提升空间。

2.3.4 异构计算编程框架各异

不同的异构计算编程框架都拥有其独特的特性和适用环境,开发者在编写程序时需要依据实际需求和硬件设备选择最适合的框架。

由于硬件的独特性质,每种硬件都配备了专用的编程框架、加速库和编程语言。

例如,CUDA 是由 NVIDIA 推出的并行计算平台和编程模型,它允许开发者利用NVIDIA GPU 进行通用计算。

OpenCL 的目标是为多种硬件提供统一的开放标准。SYCL Codeplay 公司开发的基于 C++的并行计算 API,支持跨平台多设备,包括 CPUGPU 和其他加速器。

Thrust C++版的 CUDA,提供了类似于 STL 的接口,便于开发者进行 GPU加速的并行计算。

AmpxAI 是由 AMD 开发的基于 Python 的并行计算库,可在 AMD GPU 上实现高效的计算。

这就要求开发者掌握多种编程模型和语言,使得代码移植面临巨大的挑战。例如,专GPU 编写的代码通常无法直接在 CPU FPGA 上运行,这不仅限制了代码的可移植性,也增加了开发成本和时间。

即使有统一编程模型的支持,要实现高效的代码仍需要针对特定硬件进行手动优化,这无疑增加了编程的复杂性和开发周期。虽然业界提出了多种方法试图建立统一的异构计算编程框架,以简化开发过程并解决这些挑战,但至今仍未找到完美的解决方案。因此,寻找一个真正统一、能满足所有硬件和应用需求的编程方法,仍然是计算领域的热门研究课题。

点击直接跳转阅读