随着人工智能 (AI) 模型的规模和复杂性不断扩大,训练所需的计算资源可能会超出单个设备的容量。同样,复杂的大规模任务可能要求太高,或者需要的内存超出一台设备所能提供的范围。分布式系统将数据集或 AI 模型 分区到多个设备或节点,以提高性能、准确性和效率。
分布式 ML 是分布式计算的一个子集,分布式计算涵盖跨多个处理系统扩展计算的更广泛努力。
分布式机器学习的方法包括:
数据并行:将数据集拆分到多个设备上
模型并行性:将模型分区到多个设备上
混合并行:结合数据和模型并行的各个方面
分布式 ML 的参数服务器框架使用一个或多个服务器节点来维护模型参数更新,而工作节点则处理数据和计算。
联邦学习类似于数据并行,即多个节点在数据子集上训练模型副本。但是,数据分区不是从集中式数据池创建,而是由每个节点的本地数据组成。模型更新在节点之间聚合,而数据永远不会离开其原始来源。
因为每个数据集都是本地化的,数据科学家经常将联邦学习用于涉及高数据安全性或法规的分布式深度学习应用程序。集中式数据池可能会在传输过程中意外泄露个人身份信息 (PII)。联邦学习通过将每个数据集隔离到其自身的节点来降低这种风险。
在模型并行中,模型被拆分为可以独立且同时在不同节点上运行的组成部分,例如深度神经网络的层。模型的每个部分都使用相同的数据。模型并行也称为网络并行。
当单个 ML 模型太大而无法由单台机器处理时,模型并行允许模型在多个节点上运行。每个节点处理模型的一部分,因此其计算和内存要求低于单台机器必须运行完整模型的情况。
模型并行通常比数据并行更难实现。所选的分布式机器学习直接影响方法的可扩展性,其中一些比其他算法更适合该技术。系统的构建方式必须尽可能减少节点间的数据共享量。高性能模型并行系统需要专家级的设计和优化。
模型并行通常与数据并行相结合,以便模型的每个部分处理输入数据的不同部分。结果将在整个网络中进行汇总。
当深度神经网络的单个层所需的计算能力过大或占用的空间对于单个设备来说太大时,张量并行就发挥作用。自注意力层和嵌入层( 转换器架构的两个基石)可能会变得非常大,这意味着几乎所有大型语言模型 (LLM) 开发都涉及张量并行。如果没有张量并行,几乎不可能训练 LLM,因为层太大,任何单个设备都无法容纳。
在张量并行中,单个层的参数分布在多个 GPU(图形处理单元) 或 TPU(张量处理单元)上。每个设备计算单个层操作的一部分,然后聚合部分结果以产生该层的输出。
与数据并行和许多其他类型的模型并行相比,张量并行工作流需要节点间更多的通信。高带宽网络有助于减少通信瓶颈。
数据和模型并行技术通常不孤立使用。它们经常以各种混合并行配置组合在一起。开源深度学习框架PyTorch和TensorFlow(两者都支持Python)通常用于构建分布式机器学习系统。
包括GPT系列在内的大多数大规模语言模型都依赖混合并行来高效地进行大规模训练。
分布式数据预处理使用链接的节点网络(多个处理器或设备,而不是神经网络的单个神经元,有时也被称为“节点”)来准备大型数据集,以供分析和进一步使用。
中央控制节点管理工作流,将数据拆分并分配给工作节点。与使用单个设备的传统模型相比,通过并行处理分散工作可以提高可扩展性和效率。
分布式训练充分利用分布式 ML 技术,将模型训练分散到各个设备上。例如,这种技术常用于大型神经网络。当网络、训练数据集或两者对于单个处理器来说太大时,分布式训练会将工作负载分散到多个服务器、GPU 或机器上。
随机梯度下降 (SGD) 是一种学习算法,它将数据集分成小批量,并在每个批次之后计算损失函数的梯度。使用小批量数据而不是完整数据集可以提高训练效率。
损失函数衡量模型预测中的误差,SGD 的目标是降低梯度以最小化函数值。与标准模型训练一样,当模型达到收敛时,即当 SGD 算法成功最小化函数值时,训练过程被视为完成。
节点可以并行处理小批量,这是因为在每次迭代中,每个批次都是独立处理的。每个节点计算其梯度,然后将更新的梯度值推送到网络中的其他节点。其他工作节点会将接收到的更新内容应用到自己的模型中,帮助确保模型的所有副本在整个训练过程中保持一致。
AllReduce函数是一个集体通信操作,它使每个节点能够共享其结果,并将聚合结果通过网络传播。AllReduce 允许所有节点同步模型参数更新,保持一致性。AllReduce 长期用于高性能计算,后在 Horovod 等 ML 框架中得到普及。
SGD 可以同步或异步运行。同步 SGD 在同一时间更新所有节点,这样可以保持一致性,但代价是如果某些节点落后则可能产生延迟。异步 SGD 会在更新准备就绪后立即更新参数,但有些节点可能会收到不包含最新值的更新。
通过减少每台设备所需的计算资源,分布式训练可以加快训练时间。因为训练是计算密集型的,所以它是分布式 ML 的主要用例之一。
分布式训练的原理和优势同样适用于分布式微调。微调进一步训练预训练模型,以专注于更具体的任务。应用分布式 ML 技术可以让过程变得更快、更高效、更可扩展。
验证是评估已训练模型性能的过程。将验证数据集或大型模型分布在多个节点上,可以提供与分布式训练过程其他部分相同的优势。
推理是经过训练的 AI 模型处理新数据以识别模式并生成输出或预测的过程。将工作负载分配到多个设备上,可以运行单台机器无法运行的大型 AI 模型。分布式推理还可以提高吞吐量并降低延迟。
分布式部署管理软件应用程序在节点网络上的运行。跨工作节点的负载均衡有助于缓解瓶颈并优化资源效率,从而提高吞吐量并降低延迟。
分布式机器学习的优势包括:
高效率
可扩展性
冗余
在多个设备之间自动化和分担工作负载减轻了任何单一设备的负担。节点可以并行工作,更快地完成长期任务,然后将其输出聚合到最终结果中。
在 ImageNet(一个包含超过 1400 万张标注图像的数据集)上训练图像识别模型,在单个 GPU 上需要数周时间。借助分布式 ML,即使是小型初创公司也可以在几小时内完成此任务。
许多现实世界的系统依赖容错能力——即使单个节点发生故障也能继续运行的能力。模型提供商需要确保个体用户以及通过API连接的应用程序能够享受不间断的访问。在分布式ML中,冗余通过跨节点复制进程来保持正常运行时间,从而使得故障不会中断服务。
有效实施分布式 ML 的挑战包括:
网络瓶颈
同步开销
能源消耗
节点之间带宽不足是导致分布式 ML 网络出现瓶颈的一个常见原因。需要更多通信的方法(如张量并行)对带宽的需求最大。如果网络无法提供所需的带宽,分布式 ML 项目将面临训练时间增加和可扩展性降低的问题。
同步开销是指一个任务必须等到另一个任务完成后才能开始而产生的延迟。在同步系统中,所有工作节点必须在上传共享数据后才能进入下一阶段的训练。这个时刻被称为同步屏障,因为直到所有节点同步后,下一阶段才会开始。
拖延节点(即完成任务所需时间比其他节点更长的节点)会减慢整个过程。异步系统消除了这一障碍,但有些节点在运行时可能会采用过时的参数配置。
分布式网络可能是高能耗用户,不仅因为节点本身,还因为节点之间的通信。能耗可能因分布式 ML 系统的实现和架构而异。
计算需求:许多具有挑战性的 ML 任务所需的高性能 GPU 都是能源密集型的。
通信:节点需要高速网络来有效通信并最大限度地减少同步开销。
云或边缘计算:为领先的 AI 模型提供动力的集中式超大规模数据中心会消耗大量能源。边缘计算可以帮助降低网络成本。
算法和数据处理选择:选择正确的算法并遵循良好的数据处理实践(例如特征工程)可以提高模型效率。
分布式 ML 框架可在优化内存与计算资源使用的同时,实施机器学习。它们还可以帮助扩展 ML 实施、缩短训练时间并控制成本。
著名的分布式 ML 框架包括:
PyTorch Distributed
Apache Spark
TensorFlow Distributed
Ray Train
InstructLab
PyTorch Distributed 在流行的 PyTorch ML 框架中提供,是一组用于在多个设备上构建和扩展深度学习模型的工具。torch.distributed 包涵盖了节点内通信,例如使用 AllReduce。内置的数据并行和模型并行支持可实现一系列分布式训练方法。
Apache Spark 是一个历史悠久的 ML 框架,支持分布式训练。用户可以构建端到端的 ML 管道,与更大的 Spark 生态系统集成,包括用于数据库操作的 Spark SQL。Spark 提供两个库:原始的 MLlib 和较新的 SparkML。
TensorFlow 中的 tf.distribute.Strategy API 为分布式 ML 打开了大门,并包含对一系列方案的支持:一台机器上的多个 GPU、多台机器上的多个 GPU 等等。例如, ParameterServerStrategy 将参数存储在专用服务器上,工作节点从这些服务器访问参数。
Ray Train 是 Ray ML 分布式计算框架内的可扩展分布式训练和微调库。Ray Train 与 PyTorch 和 TensorFlow 兼容。Ray Tune 库支持跨多个设备的分布式超参数调整。
InstructLab 的分布式 ML 新方法摒弃了传统的 GPU 簇,转而采用基于社区的方法,几乎就像众包筹款一样。社区成员可以向中央存储库贡献参数更新,并可以在自己的个人设备上微调模型。
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。