术语表

分布式培训

利用分布式训练加速人工智能训练!了解如何为复杂的人工智能项目缩短训练时间、扩展模型并优化资源。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

分布式训练是机器学习(ML)中的一种技术,可显著加快模型训练过程,尤其是深度学习(DL)中常见的大型复杂模型。随着数据集变得越来越庞大,变换器或大型卷积网络等模型的规模也越来越大,在单个处理器(如 CPU甚至是强大的 GPU训练可能需要数天、数周甚至数月的时间。分布式训练通过将计算工作量分配给多个处理单元来克服这一瓶颈。这些处理单元(通常是 GPU)可以安装在一台功能强大的机器上,也可以分布在网络连接的多台机器上,通常利用云计算资源。

分布式培训如何运作

分布式训练的基本原则是并行性--分解训练任务,使多个部分同时运行。不是由一个处理器按顺序处理所有数据和计算,而是由多个处理器(通常称为 "工作者")分担工作。实现这一目标有两种主要策略:

  • 数据并行:这是最常见的方法。每个 Worker 上都有一个完整的模型副本。训练数据集被分割成较小的块,每个工作站使用其本地的模型副本处理分配给它的块。工作者根据自己的数据子集计算模型权重的更新。然后将这些更新(梯度)汇总到所有工作站(通常是平均值),并用于更新主模型或同步所有模型副本。这样就能有效处理更大的批量数据PyTorch 等框架提供了分布式数据并行(DDP),而TensorFlow 提供了各种实现数据并行的分布式训练策略。工作站之间的高效通信至关重要,通常NVIDIA 集体通信库(NCCL)等库进行管理。
  • 模型并行:当模型过大,无法容纳进单个GPU 的内存时,通常会采用这种策略。这种策略不是复制整个模型,而是将模型的不同部分(如层)放在不同的工作站上。在前向和后向传递过程中,数据会依次流经这些部分。这种方法的实现比数据并行更复杂,但对于训练真正庞大的模型却是必要的。一些框架提供了辅助工具,如TensorFlow 的模型并行方法,而管道并行等技术也经常被使用。

实际应用

分布式训练对于许多尖端的人工智能(AI)应用来说是不可或缺的:

  • 训练大型语言模型(LLM): OpenAI 的 GPT-4或Google 的 Gemini 等模型拥有数十亿或数万亿个参数。要对其进行训练,就需要将计算分配到可能成千上万的 GPU 上进行长时间的计算。这对于自然语言处理(NLP)机器翻译和构建高级聊天机器人等任务至关重要。
  • 先进的计算机视觉模型:训练最先进的计算机视觉模型,如 Ultralytics YOLO或用于图像 分割 复杂模型,在ImageNetCOCO等大型数据集上进行分布式训练将受益匪浅。例如,用于自动驾驶汽车的物体检测模型的训练涉及大量图像数据,并要求高精度,因此必须在多个 GPU 上进行分布式训练,才能在合理的时间范围内取得成果。这同样适用于医学图像分析等专业领域。
  • 推荐系统:Netflix 或亚马逊等公司根据用户交互数据训练复杂的模型,以生成个性化推荐。由于数据规模庞大,通常需要采用分布式方法。
  • 科学计算:气候建模、物理和药物发现等领域的大规模模拟通常利用分布式计算原理,与分布式人工智能训练中使用的原理类似。

分布式培训与其他培训方法的比较

将分布式培训与相关概念区分开来非常重要:

  • 联合学习:虽然两者都涉及多台设备,但联合学习是针对数据分散、出于数据隐私考虑不能(或不应)移动到中央位置的情况而设计的(例如,根据手机上的用户数据训练模型)。在联合学习中,模型更新在设备上进行本地计算,然后发回中央服务器进行汇总,但原始数据从未离开过设备。分布式训练通常假定数据可以移动到计算集群(如数据中心或云中)并在其中分布。请查看TensorFlow Federated框架示例。
  • 单设备训练:这是一种传统方法,整个训练过程在单个CPU 或GPU运行。这种方法的设置比较简单(参见Ultralytics 快速入门),但由于时间和内存的限制,对于大型模型或数据集来说并不可行。

工具和实施

各种工具和平台为实施分布式培训提供了便利:

  • ML 框架:核心框架,如 PyTorchTensorFlow等核心框架为分布式训练 API 提供内置支持。
  • 专业库:由 Uber 开发的Horovod 等库为分布式深度学习提供了一种与框架无关的方法。
  • 云平台: AWSGoogle CloudMicrosoft Azure等主要云提供商都提供可管理的 ML 服务和基础设施,并针对大规模分布式培训进行了优化。
  • MLOps 平台: Ultralytics HUB等平台提供了管理数据集、选择模型和启动培训工作的界面,包括处理底层分布式基础设施的云培训选项,从而简化了流程。良好的MLOps实践是有效管理分布式培训的关键。

分布式训练是开发当今最强大人工智能模型的基础技术,它使大规模训练变得可行且高效。

阅读全部