本文是《2021-2022 年度 AI 技术趋势发展报告》中计算工程篇章关于针对超大规模模型计算需求的算力提升的趋势解读,点击「机器之心2021-2022年度AI技术趋势报告 」,获取报告。
伴随着近十年来的高速发展,AI 技术已经广泛应用并且逐步进入到 AI 工业化的阶段。为了适应普适的业务场景,势必带来更大、更复杂的计算需求,因此,“巨量数据、巨量算力、巨量算法”的超大规模模型应运而生。
简单地讲,超大规模模型通过扩大 AI 模型的规模,输入海量的数据,依托巨量的算力,使 AI 算法/模型具有更强的“智能”效果。依托海量数据、多模态数据和大规模知识,超大规模模型效率更高、效果更好,不断满足重点领域、重点任务的需求,有助于技术创新和产业发展。
目前,布局超大规模模型已经成为世界性的趋势,从国外的谷歌(Pathways Language Model)、Meta(OPT-175B),到国内的浪潮(源1.0)、百度(ERNIE)、智源(悟道)、华为(Grassland)、阿里云(M6)等,都纷纷推出自己的超大模型系统。
另一方面,在模型参数规模指数增长的背景下,基础算力持续提升,框架适配日益完善,以适配更大规模模型。可以说,基础算力的提升是满足超大规模模型产业化应用的核心关键。本文分析的是针对场大规模模型计算需求的算力提升。
英伟达 GPU H100 可将大型语言模型的速度提高 30 倍
作为老牌算力供应商的产品,H100 是英伟达数据中心解决方案的一部分,该解决方案整合了硬件、网络、软件、库以及英伟达 NGC™ 目录中的优化 AI 模型和应用等构建模块。H100 是数据中心最强大的端到端 AI 和 HPC 平台。它使研究人员能够提供真实世界的结果,并将解决方案大规模地部署到生产中。
H100 GPU 采用第四代张量核心和具有 FP8 精度的 Transformer 引擎,进一步扩展了 NVIDIA 在推理领域的市场领先地位,H100 的综合技术创新可以将大型语言模型的速度提高 30 倍,从而提供业界领先的对话式 AI。使用 NVIDIA®NVLink® Switch 系统,可连接多达 256 个 H100 来加速百亿亿级 (Exascale) 工作负载,另外可通过专用的 Transformer 引擎来处理万亿参数语言模型。Transformer 引擎可结合使用 FP8 和 FP16 精度,减少内存占用并提高性能,同时仍能保持大型语言模型的准确性。对于高性能计算(HPC)应用,H100 的每秒浮点运算(FLOPS)是 FP64 的三倍,并增加了动态编程(DPX)指令,使性能提高 7 倍。凭借第二代多实例 GPU(MIG)、内置的NVIDIA 保密计算以及 NVIDIA NVLink 交换系统,H100 能够安全地加速从企业到超大规模的每个数据中心的所有工作负载。
根据英伟达官方发布,NVIDIA H100 TENSOR CORE GPU 的技术突破主要包括[1]:
世界上最先进的芯片。H100 采用尖端的台积电 4N 工艺,为 NVIDIA 的加速计算需求定制了 800 亿个晶体管,是世界上最先进的芯片。它的特点是在数据中心规模上加速人工智能、HPC、内存带宽、互连和通信的重大进展。
Transformer 引擎。Transformer 引擎使用软件和 Hopper Tensor Core 技术,旨在加速对由世界上最重要的人工智能模型构建模块—变形器—构建的模型进行训练。Hopper Tensor Core 可以应用混合的 FP8 和 FP16 精度,大大加快人工智能计算速度。
NVLink 开关系统。NVLink 交换机系统能够以每个 GPU 每秒 900 千兆字节(GB/s)的双向速度在多个服务器上扩展多 GPU 的输入/输出(IO),是 PCIe Gen5 带宽的 7 倍以上。该系统支持多达 256 个 H100 的集群,并提供比 NVIDIA Ampere 架构上的 InfiniBand HDR 高 9 倍的带宽。
英伟达保密计算。英伟达保密计算是 Hopper 的一项内置安全功能,使英伟达 H100 成为世界上第一个具有保密计算功能的加速器。用户可以在使用中保护其数据和应用程序的保密性和完整性,同时获得 H100 GPU 无与伦比的加速能力。
第二代多实例 GPU(MIG)。Hopper 架构的第二代 MIG 支持虚拟化环境中的多租户、多用户配置,将 GPU 安全地划分为孤立的、适当大小的实例,为 7 倍的安全租户最大限度地提高服务质量(QoS)。
DPX 指令。与 CPU 相比,DPX 指令将动态编程算法的速度提高了 40 倍,而与NVIDIA Ampere 架构的 GPU 相比则是提高了 7 倍。从而大大加快了疾病诊断、实时路由优化和图形分析的速度。
谷歌 第四代 TPU 可连接成 Cloud Pod,相较 GPU 训练系统,每个芯片可提供 10 倍规模带宽
Google 最早于 2016 年宣布了首款内部定制的 AI 芯片 TPU(张量处理器,Tensor Processing Unit)。Google 第一代 TPU 采用 28nm 工艺制程,功耗大约 40w,仅适用于深度学习推理。第一代 TPU 在 AlphaGo 人机大战中一战成名,此外也用在Google 搜索、翻译等机器学习模型中。2017 年 5 月,Google 发布了 TPU v2。第二代 TPU 能够完成机器学习模型训练和推理任务,达到 180TFLOPs 浮点运算能力,同时内存带宽也得以提升,比同期推出的 CPU AI 工作负载提升 30 倍,比 GPU AI 工作负载提升 15 倍。2018 年 5 月,Google 又发布第三代 TPU,性能是第二代 TPU 的两倍,实现 420TFLOPs 浮点运算,以及 128GB 的高带宽内存[2]。
2021 年,谷歌在 I/O 大会中宣布推出的第四代 TPU Pods 将在谷歌的数据中心运行。Google 官方介绍,在相同的 64 芯片规模下,不考虑软件带来的改善,TPU v4 相较于上一代 TPU v3 性能平均提升 2.7 倍,峰值 TFLOPS 275。每一个 TPU v4 Pod 就能达到 1 exaFlOP 级的算力,实现每秒 10 的 18 次方浮点运算。
TPU v4 仍遵循 TPU v3 的设计策略:每个芯片有一个或两个核,每个核有一个脉动阵列 MXU 和向量处理单元 VPU,以及由编译器控制的内存和可以 DMA 访问的 HBM[3]。TPU v4 主要与 Pod 相连发挥作用,每一个 TPU v4 Pod 中有 4096 个 TPU v4 单芯片,利用谷歌独特的互联技术,4096 个 TPUv4 可通过超高速的互联网连接成一个 Cloud TPU v4 Pod,相较于基于 GPU 的大规模训练系统,每个 TPU v4 芯片可提供 10 倍规模的带宽,从而大大提升了处理能力。
此外,网络通信时间也是超大规模模型运行效率的一个重要因素,本地计算往往依赖于远程计算的结果,而这些结果又是通过网络进行通信的。TPU v4 通过消除网络中的延迟和拥塞,以提升计算效率。
Google 在 2021 年的 I/O 大会上还展示了能够用到 TPU v4 的具体 AI 实例,例如:能够同时处理网页、图像等多种数据的 MUM 模型(Multitask Unified Model)和专为对话打造的 LaMDA 等,前者比阅读理解模型 BERT 强 1000 倍,适合赋能搜索引擎帮助用户更加高效地得到自己想要的信息,后者则可以与人类进行不间断的对话交流。
具体的 TPU v4 的技术包括[4]:
采用编译器兼容性而不是二进制兼容性(Compiler compatibility, not binary compatibility),如 XLA(Accelerated Linear Algebra) 编译器。
增加了带有“通用内存(CMEM,common memory)”的片上 SRAM 存储,扩展了存储等级结构,减少访存次数,从而降低能耗。
Tensor DMA Engines 能够减轻互连延迟和线路伸缩挑战的影响。TPUV4i 采用 4 维张量 DMA 结构,和之前的 TPU 芯片是编译器兼容的。
延迟:TPUv4i 统一了跨本地(片上)、远程(片到片)和主机(主机到片和片到主机)传输的 DMA 体系结构,从而简化了从单个芯片到完整系统的应用程序的扩展。
Custom on-chip interconnect(OCI):定制的片上互连线,用于连接片上的组件,可以缩放其拓扑结构,尤其对 CMEM 很重要, 对 HBM, CMEM, VMEM 之间的数据传输都有影响。
采用更宽的数据通路:受到 NUMA 存储系统的启发(利用访问的空间局部性来最小化延迟和平分带宽)TPUv4i 的设计在同一芯片的各个部分间使用:较大的高带宽存储器(HBM, CMEM, 和 VMEM) 在物理上被拆分为 4 组 来优化 HBM的访问。
Arithmetic improvements:算法改进,为了满足后期可能存在的量化( quantization) 和 向后 ML 兼容(backwards ML compatibility) 需求, TPUv4i 支持 bfloat16 和 fp32 , 并支持 int8 来方便 TPUv1 的应用移植。
通过 MXU 脉动阵列 ,在减少面积和功耗的同时,减小延迟。对 128 个两输入的加法器,用定制的 4 输入浮点加法器和 32 个两输入加法器替换,减少关键路径到原来的 1/4。
采用 Air cooling 来保证 clock rate 和 TDP,并采用 2 组 ICI(chip-to-chip interconnect fabric)快速访问一块板子上的 4 个芯片。
追踪和性能计数硬件应用:分析用户工作负载的系统级瓶颈(system-level bottlenecks in user workloads), 引导连续的编译器级别和应用级别的优化。
增加了 CMEM。CMEM 是一个连续物理存储空间分配模块,使得 ARM 端 Linux 进程和 DSP 端算法之间能够共享缓冲区。当应用程序需要在共享缓存区动态申请一个连续的物理空间时,通过调用 CMEM 的 API 可以实现,申请得到的空间可以供 DSP 端访问,进行算法处理时数据的传递与处理。
华为·昇思 MindSpore 与昇腾 CANN 深度结合实现全栈支持超大规模 AI 生态
华为的昇腾 AI 平台,全称“华为开放昇腾 AI 基础软硬件平台”,可提供包括端边云基础软硬件、异构计算架构 CANN、全场景的 AI 框架昇思 MindSpore、昇腾应用使能MindX 及 AI 应用使能 ModelArts 等,帮助伙伴和开发者高效使用 AI 能力。例如,异构智能架构 CANN 提供了智能计算的调度以及 IOA,可支撑常规的模型性能提升 30% 以上;MindSpore 作为超大模型,通过 8 个纬度的自动并行,可将大模型开发和训练效率提升 60%[5]-[7]。
昇腾 AI 全栈主要包括四个大部分:
(1)应用使能层面 MindX,此层面通常包含用于部署模型的软硬件,例如 API、SDK、部署平台,模型库等等。MindX 包括了两个组件:深度学习组件和智能边缘组件,一个模型优选库,X 是指面向各个行业的 SDK。
(2)AI 框架层面,此层面包含用于构建模型的训练框架,例如昇思 MindSpore、TensorFlow、Pytorch 等。其中 Mindspore 为华为自主开发,其他训练框架则需要进行迁移。
(3)异构计算架构 CANN,用于针对上层 AI 框架的调用进行模型训练加速,提升推理效率,向上支持多种 AI 框架,并在硬件上进行加速,满足生态需求,全面覆盖典型应用场景。
(4)计算硬件,本层是 AI 计算的底座,有了强力的芯片及硬件设备,上层的加速才有实施的基础。芯片型号很多,atlas300,atlas900 等,还可以进行集成使之功能更加强大。
对于超大规模模型来说,参数十分庞大,光有算力支撑还不行,AI 框架也需要有承载和利用算力、支持庞大参数的能力。MindSpore 与 CANN 深度结合实现全栈支持超大规模 AI 生态。MindSpore 是一款支持端、边、云独立/协同的统一训练和推理框架。华为希望通过这款完整的软件堆栈,实现一次性算子开发、一致的开发和调试体验,以此帮助开发者实现一次开发,应用在所有设备上平滑迁移的能力。
在超大规模 AI 快速发展期间,昇思 MindSpore 通过自动混合并行、全局内存管理等核心技术支持超大规模开发。在自动混合并行方面,MindSpore 支持多维 AI 并行计算技术,如数据并行、流水并行等,解决模型及集群横向扩展问题,支持超大规模模型切分到大集群高效训练,并实现最优的计算通信比,进而提升算力的利用率。
MindSpore 与超大规模模型相契合的主要技术优势在于,可以在训练过程中自动将模型切分到不同的设备,并高效地利用庞大的计算设备集群来完成并行训练,相当于建立了一套行之有效的中枢指挥系统,将计算任务以同时进行的方式分配下去,再大的训练任务也能有条不紊实现加速,而不是堵塞起来。其实现过程是通过自动混合并行、全局内存管理等核心技术实现的——通过数据并行、模型并行、Pipeline 并行、异构并行、重复计算、高效内存复用及拓扑感知调度,降低通信时间的占用,实现整体迭代时间最小。
此外,MindSpore 还有“自动并行”能力,它通过在庞大的策略空间中进行高效搜索来找到一种快速的并行策略。简单来说就是通过一系列技术创新来让并行更有规模和效率,无需像其他 AI 框架一样半自动甚至是手动来完成大模型的并行执行开发。
在全局内存管理方面,通过全局的内存管理及计算调度,MindSpore 能够提升单卡 Scale Up 能力,同时 MindSpore 在昇腾硬件平台与 CANN 深度结合,通过深度协同优化的高性能算子库充分释放硬件的澎湃算力。MindSpore 支持了鹏程·盘古大模型、鹏程.神农生物信息研究平台、武汉·LuojiaNet 智能遥感解译框架等的开发训练。2020 年 3 月 28 日华为发布了 MindSpore 的第一个版本,现在,MindSpore 已经成功与昇腾系列芯片适配,并应用于华为的各种产品,从智能手机到云。
具体来说,MindSpore 实现了下述关键技术:
全场景协同:一套框架可以满足多样性算力支持,框架可大可小,满足端、边、云多场景设备需求,实现统一架构。
全自动并行:原生支持超大模型,已经基于昇思 MindSpore 框架训练出了鹏程.盘古、鹏程.神农、鹏程.大圣、紫东.太初等系列大模型。通过全自动并行、可视化智能调优等关键创新,大模型开发效率大幅提升。
全流程极简:打通研究到生产的全流程,保持安全可信、高效执行,实现一次开发多次部署。
科学计算新范式:面向未来,规划 8 大领域科学计算套件,实现一套框架支持 AI+ 科学计算等多样性应用,适应技术演进趋势,实现生态繁荣。
而 CANN 5.0 异构计算架构则具有以下技术特征:
加速模型训练:训练性能业界 NO.1,与 CANN3.0 比较,典型 CV 等场景有效算力实现翻倍。
提升推理效率:高性能推理引擎 ATC Suite,典型场景推理效率提升 50%。
完善生态满足度:超过 1300+ 高性能算子,支持 ModelZoo 400+ 模型全面覆盖典型场景应用,来释放昇腾 AI 硬件的强大性能。
百度·飞桨 PaddlePaddle 端到端「自适应」能力让超大模型训练更智能高效
针对模型多样性和资源异构性的挑战,PaddlePaddle 采用统一的「计算+资源」视图,对模型算力需求和资源算力供给同时建模以选取最佳分布式执行策略。同时,结合原生的弹性与容错,当资源变化也能够“自适应”线上修正分布式策略,进一步提升资源利用率,实现高效可持续训练。
飞桨自主研发的端到端自适应分布式架构,既包含了并行训练策略的创新,也包含针对异构硬件的自适应并行训练支持,打造了框架与算力、算法相结合三位一体的大模型训练解决方案,实现了端到端的极致性能优化。通过PaddlePaddle “自适应”能力,最新 260B 参数的 ERNIE 语言模型能够在不同硬件上进行高效训练。结合 PaddlePaddle 领先的国产硬件支持能力,端到端自适应可以在最广泛的硬件环境下发挥优势。
经典的分布式训练的基本步骤是:
1、分配所需的资源;
2、对模型进行分区;
3、将每个分区分配给指定的设备;
4、在必要的沟通下按特定顺序独立执行任务。飞浆从一个系统的端到端观点来设计分布式框架,通过考虑分布式训练的所有基本步骤来满足多功能的适应性要求。
在 WAVE SUMMIT+ 2021 峰会上,百度马艳军介绍了飞浆的端到端自适应大规模分布式训练的设计思路[10]:
首先,针对不同的模型和硬件,抽象成统一的分布式计算视图和异构资源视图,并通过硬件感知切分和映射功能及端到端的代价模型,搜索出最优的模型切分和硬件放置组合策略,将模型参数、梯度和优化器状态按照最优策略分配到不同计算卡上,达到节省显存、负载均衡和提升训练性能的目的;
接着,采用异步流水运行机制,以高通信和高并发的方式高效训练;
最后,为了进一步提高训练的稳定性和资源利用率,飞桨提供弹性调度模块,感知硬件资源变化,自动重构资源视图,触发各个模块自动的发生变化,如重新构建资源视图、切分、硬件分配、流水运行。在不中断训练情况下,弹性调度集群可用机器来进一步提升训练的性能。
基于统一的分布式图和统一的集群对象,飞浆的自适应框架配备了全局成本模型和全局规划器,可以实现任意的并行性、资源感知的放置、多模式执行、容错性和弹性分布式训练。实验证明,该框架可以满足来自应用多样性和资源异质性的各种要求[11]。图 1 给出端到端训练框架的示意图。
统一视图。建立了一个通用的和统一的分布式图表示,可以在理论上描述任意的并行性。不同的异质资源可以由一个抽象的、统一的集群对象来表示,它对所有参与的进程都是全局可见的。不同的设备以同样的方式建模,并可以通过它们的类型和世代来区分。此外,集群对象不仅可以给出所有连接设备的拓扑结构,还可以在一个统一的定量方法中抽象出计算、存储和通信的能力。通过引入更多的并行性语义,将独立于设备的分区和独立于设备的放置结合起来,将传统的计算图重新表述为一个通用的分布式图。它建立在三个基本概念上:分布式张量、分布式运算符和重散列变换。
最大限度的灵活性。为了具有多功能的适应能力,分布式训练框架的模块应该是解耦的,并且可以根据不同的要求进行配置或改变。模型的分布式规范(即分布式图)与底层实现脱钩,用户可以配置如何划分数据和任务。框架能够提供必要的实现机制,以执行用户指定的模型的实际分区,并自动处理必要的数据移动和通信。因此,用户可以快速开发新的分区策略,而不必担心繁琐的、容易出错的实施方案。而且,也很容易改进和扩展分布式的运行机制,同时保持结果的一致性。
其次,独立于设备的分区可以与独立于设备的放置脱钩。这可以使一个特定的分区不仅在同一个集群上有不同的放置策略,而且在一个具有不同拓扑结构和设备的新集群上也有不同的放置策略。通过对这两个方面的解耦,大多数用户可以在不考虑底层硬件的情况下轻松地对模型进行分区,而关心最佳性能的高级用户则可以用调整后的策略取代默认的放置策略。如图 3 所示,根据操作者成本和执行模拟,整体分布式图的成本降低了。
左侧面板中的每一个元组都是所需的静态信息,用于从性能数据库中查询(或拟合)计算操作者成本,或以分析方式计算通信操作者成本,这些信息包括操作者类型、输入和输出的形状、数据类型、目标设备和相关进程等
全局视图。为了实现最大的灵活性,需要尽可能多的解耦模块,这更有可能失去全局视图,并可能导致整体性能不佳。然而,必须指出的是,这里的解耦只是一种实现相关模块分离的机制,不应妨碍全局优化。用户对系统有完全的控制权,可以进行应用感知或硬件感知的实现,或者两者兼而有之,以实现高水平的性能。框架采用了全局成本模型来估计所需的资源或评估一个特定的放置,以帮助我们选择更好的策略。此外,在成本模型的驱动下,实施全局规划器以自动找到更好的策略。
统一的分布式图表示包含了关于分区和放置的信息,抽象的集群对象也是由分配和放置共享的。此外,高效的弹性和容错训练是与框架内的其他模块共同设计的,以满足实际工业场景中长规模和长时间的分布式训练要求。
飞浆提供了对容错和弹性训练的内置支持,如图 4 所示。当一个资源请求到达时,来自平台的作业调度器通常会尽力以更聚合的方式来分配资源。然而,如果不同的作业在同一节点上长期共存,也会产生大量的碎片。在框架的容错和弹性训练的帮助下,如果当前可用的资源不能满足所需的资源,作业迁移可以自动和有效地进行。此外,抢占作业对于其他具有高优先级资源分配的作业来说将更加有效,这使得一些低优先级的作业提前停止,这些作业将在以后继续进行,以提高资源利用率。
容错和弹性训练支持以下情况:
a) 有四个设备的原始训练;
b) 容错训练用 D4 替换故障设备 D2,而不重新划分图;
c) 弹性训练释放设备 D2 和 D3,重新划分图;
d) 弹性训练增加设备 D4 和 D5,重新划分图
飞浆的自适应分布式训练框架通过不同架构的集群上的各种模型进行了评估。结果显示,该框架可以在 512 个 V100 GPU 上训练具有 1460 亿个参数的流行的 GPT 模型,并维持理论峰值 FLOPS 的 48.65%。拥有 2600 亿个参数的 ERNIE 语言模型在数千个人工智能处理器上得到了有效的训练,具有 91.7% 的弱扩展性。除了这两个 NLP 模型之外,用于人脸识别的大规模图像分类可以在 8 个 NVIDIA V100 GPU 的单一节点上训练 6000 万个类,并获得了非常有竞争力的或比其他框架更好的性能。
百度在文献[11]中也介绍了后续的研发路线。在未来,将探索并支持在训练过程中模型动态变化的自适应要求。统一的分布式图将被改进为分布式中间表征,目前的手动优化通道可以通过利用现有的编译器技术重新实现。目前,通信是通过从不同的后端库中选择集群或点对点基元来实现的,也可以统一在同一个接口中,这可以保证调用者透明地使用底层集群。在统一通信的基础上,分布式训练更容易探索来自不同组织的可用资源。此外,百度将进一步加强框架,通过与资源平台的合作,实现智能调度和透明的资源分配。
机器之心问卷调查
在 2022 年 5 月发布的《机器之心 2021-2022 年度调查问卷分析》 中,我们专门针对超大规模模型的应用情况进行过调研。针对使用大模型(千亿参数以上)的经验问题,参与本次调查的回答人数为 430 人,其中身份为研究员的共有 160 人。在过去两年内,有研发或使用过千亿参数以上大模型的经验的受访者不到 50%,其中有 7% 的受访者研发过千亿参数以上的大模型。
而在本次问卷中也专门针对算力体系进行了调查。针对近两年使用过的算力集群 这一问题,共有 717 人参与回答,在过去两年内使用过的算力集群中,GPU 的比例接近二分之一,其中有超过三成使用过 CPU。
而针对近两年内使用量增加的算力集群 这一问题,共 700 人参与回答,接近六成的受访者在过去两年内对于 GPU 的使用频率有增加。
关于是否会优先考虑国产软硬件 这一问题,共有 700 人参与回答,有超过三成的受访者会优先考虑国产软件和硬件,有 46.3% 的受访者认为只要是开源的就不太在意是否国产。仅会优先考虑国产硬件的比例比大约是仅会优先考虑国产软件的两倍。
[1] https://resources.nvidia.com/en-us-tensor-core/nvidia-h100-datasheet
[2] https://www.jiqizhixin.com/articles/2022-02-10-2
[3]https://www.datacenterknowledge.com/machine-learning/google-more-doubles-its-ai-chip-performance-tpu-v4
[5] https://zhuanlan.zhihu.com/p/119245722
[6]https://www.mindspore.cn/docs/zh-CN/r1.7/design/technical_white_paper.html
[8] https://blog.csdn.net/DataFun_Hoh/article/details/124176174
[9]https://baijiahao.baidu.com/s?id=1697085717806202673&wfr=spider&for=pc
[10]https://baijiahao.baidu.com/s?id=1719088842946602988&wfr=spider&for=pc
[11]Yulong Ao,Zhihua Wu,et al. End-to-end Adaptive Distributed Training on PaddlePaddle, https://arxiv.org/pdf/2112.02752.pdf
[12] https://pro.jiqizhixin.com/research/2021-2022-AI-Trend-Report-Survey
点击「机器之心2021-2022年度AI技术趋势报告 」,获取报告。已获得「机器之心Pro 会员」全功能账号权限的用户可直接下载查看。如您还没有「机器之心Pro会员」,扫描下方二维码关注「机器之心Pro」服务号(id:almosthuman2014pro),进入服务号主页,点击对话框,编辑发送「机器之心Pro会员」咨询,客服值班时间为工作日的10:00 - 19:00。