第1章 跨数据中心机器学习概述
随着互联网技术的发展和智能终端的普及,人们的生活愈加离不开在线应用,网上购物、社交平台、网络游戏、在线办公、影视娱乐等应用时刻都在产生大量的数据,互联网已进入前所未有的大数据时代。根据国际机构Statista的统计和预测参考文献,截至2020年,全球大数据从2005年的0.13ZB(ZettaByte)增长至47ZB,增长近370倍,而下一个15年预计达到2142ZB,数据增长速度远超算力增长的摩尔定律和带宽增长的尼尔森定律。据不完全统计,META(原Facebook)需要PB(PetaByte)级别的存储空间来存储用户的数百亿张图片,每天需要处理45亿条语言翻译请求;阿里巴巴的线上购物平台日均访问量可达10亿次,早在2014年,阿里巴巴数据平台事业部的服务器上就有了超过100PB的业务数据。如此庞大的数据量在十几年前是无法想象的,也正是它们给人工智能的发展奠定了坚实的数字基础。另外,虽然数据量庞大,但是信息密度低,企业需要使用统计分析、机器学习等工具从海量的非结构化数据中挖掘出有价值的信息,以快速准确地对市场的走向和用户的行为做出预测,同时优化自身的产品与服务,提供更好的用户体验,开拓新的业务模式,创造新的发展机会。如今,以机器学习为核心、以大数据驱动的人工智能技术已广泛应用于新生代应用的方方面面,包括计算机视觉、自然语言处理、多媒体处理以及未来通信网络等,这些应用正在悄无声息地渗透进人们的日常生活。
除了企业内部闭源的机密商业数据,研究者能够使用许多有标签的公开大数据集,作为模型训练和性能评估的基准。ImageNet是机器学习早期研究中典型的图像分类大数据集[1],包含1400多万张图像,涵盖2万多个典型类别,并提供了100多万张图像的目标边框。在ImageNet数据集上,包含24.4亿参数的CoAtNet模型[2]取得了90.88%的最佳精度表现。在百度的Deep Speech 2系统[3]中,训练英文语音模型使用了11940h的音频数据和200多万句英文语料。Common Crawl数据集更是包含了超过7年的网络爬虫数据,约30亿个网页,仅存储就需要占用320TB(TeraByte)空间,可用于文本挖掘、自然语言理解等领域。这些大数据集的出现为训练大模型提供了数字基础,因此近年来涌现出了很多超大规模的机器学习模型,这些模型动辄拥有几亿甚至几万亿个参数。近十年机器学习模型参数量和计算量增长趋势如图1-1所示,图中的1M(Million)为106个,1B(Billion)为109个,1T(Trillion)为1012个,1Q(Quadrillion)为1015个。1MFLOPs(Floating Point of Operations,浮点运算)表示106次浮点运算,1 GFLOPs为109次,1 TFLOPs为1012次,1 QFLOPs为1015次,1 EFLOPs为1018次,1 ZFLOPs为1021次。从图1-1中可知,自2018年以来,在自然语言处理领域,从1.1亿的GPT[4]、3.3亿的BERT[5],到2019年110亿的T5[6],模型参数量以惊人的速度实现了百倍增长。2021年,北京智源人工智能研究院(BAAI)推出全球最大预训练模型悟道2.0,包含1.75万亿个可训练参数,该参数量十倍于2020年OpenAI推出的GPT-3[7]。然而,仅一个月后,BAAI又推出174万亿参数的BaGuaLu[8],模型规模再次激增百倍。一方面,这些大模型具备超强的表达能力和泛化能力,只需稍加微调就能很好地适用于其他任务,帮助人们解决很多高难度的现实问题。另一方面,为避免大模型学习到过拟合的特征,研究者又转而寻求更全面的训练数据,这倒逼了训练数据规模的继续增长,最终无可避免地导致大数据和大模型的双重挑战,对计算机的计算和存储能力都提出了极高的要求。
然而,单台机器的存储和计算能力都非常有限,存储如此庞大的数据集和机器学习模型所需的存储空间远远超过了单台机器的存储能力,即便解决了存储问题,在单台机器上用大数据训练大模型所需的时间仍然非常长。首先,对于单机存储能力,内存和硬盘的性能特征截然不同,需要根据具体需求在读写延迟、容量和成本之间进行权衡。数据集由于体积庞大、读写频率低,常归档存储于大容量的固态硬盘和传统硬盘,其中固态硬盘读写速率快、功耗低,而传统硬盘存储容量大、价格低廉。常见的硬盘容量一般在1~2TB之间,尽管采用NVMe(NVM express)技术的固态硬盘最大容量可达32TB[9],也仍然无法存下PB级的企业大数据。因此,企业常用分布式文件系统在多台机器上分散存储大数据[10-12]。不同于数据集存储在硬盘,机器学习模型计算需要快速访问存储数据,要求低读写延迟,以支持预处理数据、模型参数以及中间计算结果(如模型梯度)等临时数据的高频读写,所以模型计算过程依赖和产生的数据临时存储在计算机内存。目前主流的内存技术仍然是第四代双倍数据速率(Double Data Rate 4,DDR4)内存技术,包括UDIMM、RDIMM、LRDIMM三种内存条,其中LRDIMM内存条的容量最大,通常在16~64GB(GigaByte)之间,最大允许容量可达128GB。理论上,考虑八路E7-8800服务器,最大支持192个内存插槽,内存容量可达24TB,能够容纳多数大模型。尽管单机内存容量可以很大,但业界更倾向于使用图形处理器(Graphics Processing Unit,GPU)来加速深度学习的张量计算,而GPU显存容量非常有限。以NVIDIA系列为例,常见的显存容量仅有8~24GB,无法承载大模型计算,即便使用显存容量为80GB的H100、A100系列GPU,在面对大模型时也需要借助内存空间谨慎进行计算调度和显存优化。需要注意的是,上述理想化的单机高配置服务器的硬件价格不菲,在现实中难以广泛应用。因此,单机的存储能力往往难以满足大数据和大模型的存储需求,这也是困扰着多数研究者的问题。
图1-1 近十年机器学习模型参数量和计算量增长趋势
对于单机计算能力,从硬件设计上看,传统的中央处理器(Central Processing Unit,CPU)仅有几个核心,内部结构复杂,需要很强的通用性来处理各种复杂运算,适合顺序串行处理和复杂的逻辑运算。而GPU拥有成千上万个并行核心,在2022年,NVIDIA发布的GeForce RTX 3090Ti的CUDA核心数已经达到10752个。这些核心面对的是类型统一且相互无依赖的张量数据,所以只需要简单的控制逻辑来发送相同的指令流到众核,就能实现高效的并行张量计算。通过加速张量计算,GPU可以提供数十倍于CPU的计算速度[13],深度学习训练任务可以大幅加速。在图像处理、游戏渲染以及日益广泛的人工智能需求的催生下,GPU产业进入发展的黄金期,也使得以NVIDIA为代表的GPU供应商成为市场的宠儿。除了最成熟、使用也最广泛的通用型GPU,可定制的现场可编程门阵列(Field Programmable Gate Array,FPGA)和专用集成电路(Application Specific Integrated Circuit,ASIC)在近年来也得到了快速发展[14-15]。总的来说,GPU和ASIC在性能方面都比较先进,二者适用于数据中心的人工智能训练和推理。GPU是通用型处理器,成本和能耗较高;ASIC由于有针对性的设计具备较低的能耗,但非常不灵活,实现量产的产品较少。在ASIC系列的人工智能芯片中,专为神经网络计算加速而设计的张量处理单元(Tensor Processing Unit,TPU)以及用电路模拟人类神经元和突触结构的神经网络处理单元(Neural Network Processing Unit,NPU)是两个典型代表。TPU的核心包括65536个矩阵乘法单元,平均计算速率比NVIDIA K80 GPU快15~30倍[16]。NPU则采用的是数据驱动并行计算的新型架构,其中最具代表性的是寒武纪公司的DianNao系列神经网络处理器,平均性能与主流GPU相当,同时具备尺寸小、功耗低等特点[17]。FPGA虽然兼具高灵活性和低能耗,但性能较差,仅适用于边缘设备的人工智能推理[18]。综上所述,近年来人工智能计算芯片整体呈现出以GPU为主导,ASIC(TPU、NPU等)和FPGA百花齐放的境况,这些有益的尝试和探索对下一代人工智能的硬件支撑具有重要意义。尽管芯片算力得到了大幅提升,但在面对大数据、大模型时,单机有限的芯片算力仍会捉襟见肘。以ImageNet-1k数据集为例,使用一个NVIDIA M40 GPU将ResNet-50[19]模型在数据集上反复遍历90个轮次需要14天[20]。若是训练图1-1中的大模型,计算复杂度往往更高,训练时间更久。过长的训练时间使得人工智能应用面临迭代更新周期长的困境,在快速变化的社会环境中,人工智能模型面对突发情况不能及时更新,导致业务延迟较大,甚至过时,不仅影响用户体验,企业竞争力也会受到重创。更有甚者,在2TB数据集上使用一个Tesla V100 GPU训练GPT-3模型预计需要355年[21],大数据和大模型的双重挑战无疑对大算力提出了更高的要求。
总的来说,近二十年来人工智能发展势头不减,产业规模持续壮大,机器学习的作用愈发凸显且关键。然而,当人工智能走出实验室,真正和实际应用相结合时,不可避免地会遇到海量训练数据、现实级复杂模型等诸多挑战。大数据、大模型对大存储、大算力提出了巨大的需求,但受限于单机有限的存储和计算能力,单机难以满足大数据平台以及缓存大模型的需求,也难以在短时间内完成大模型的训练。上述需求与限制之间的矛盾使得很多新的软硬件技术相继涌现,其中最为典型的就是分布式系统,旨在利用大规模计算机集群实现大数据的分布式存储与大模型的并行计算。分布式机器学习解决的正是如何有效利用计算机集群实现大规模机器学习训练的问题。目前,分布式机器学习已成为支撑和加速大规模机器学习的主要方法,在学术和工业界得到了广泛应用。