分布式训练是机器学习(ML)中的一种技术,可显著加快模型训练过程,尤其是深度学习(DL)中常见的大型复杂模型。随着数据集变得越来越庞大,变换器或大型卷积网络等模型的规模也越来越大,在单个处理器(如 CPU甚至是强大的 GPU训练可能需要数天、数周甚至数月的时间。分布式训练通过将计算工作量分配给多个处理单元来克服这一瓶颈。这些处理单元(通常是 GPU)可以安装在一台功能强大的机器上,也可以分布在网络连接的多台机器上,通常利用云计算资源。
分布式培训如何运作
分布式训练的基本原则是并行性--分解训练任务,使多个部分同时运行。不是由一个处理器按顺序处理所有数据和计算,而是由多个处理器(通常称为 "工作者")分担工作。实现这一目标有两种主要策略:
实际应用
分布式训练对于许多尖端的人工智能(AI)应用来说是不可或缺的:
- 训练大型语言模型(LLM): OpenAI 的 GPT-4或Google 的 Gemini 等模型拥有数十亿或数万亿个参数。要对其进行训练,就需要将计算分配到可能成千上万的 GPU 上进行长时间的计算。这对于自然语言处理(NLP)、机器翻译和构建高级聊天机器人等任务至关重要。
- 先进的计算机视觉模型:训练最先进的计算机视觉模型,如 Ultralytics YOLO或用于图像 分割 的复杂模型,在ImageNet或COCO等大型数据集上进行分布式训练将受益匪浅。例如,用于自动驾驶汽车的物体检测模型的训练涉及大量图像数据,并要求高精度,因此必须在多个 GPU 上进行分布式训练,才能在合理的时间范围内取得成果。这同样适用于医学图像分析等专业领域。
- 推荐系统:Netflix 或亚马逊等公司根据用户交互数据训练复杂的模型,以生成个性化推荐。由于数据规模庞大,通常需要采用分布式方法。
- 科学计算:气候建模、物理和药物发现等领域的大规模模拟通常利用分布式计算原理,与分布式人工智能训练中使用的原理类似。
分布式培训与其他培训方法的比较
将分布式培训与相关概念区分开来非常重要:
- 联合学习:虽然两者都涉及多台设备,但联合学习是针对数据分散、出于数据隐私考虑不能(或不应)移动到中央位置的情况而设计的(例如,根据手机上的用户数据训练模型)。在联合学习中,模型更新在设备上进行本地计算,然后发回中央服务器进行汇总,但原始数据从未离开过设备。分布式训练通常假定数据可以移动到计算集群(如数据中心或云中)并在其中分布。请查看TensorFlow Federated框架示例。
- 单设备训练:这是一种传统方法,整个训练过程在单个CPU 或GPU运行。这种方法的设置比较简单(参见Ultralytics 快速入门),但由于时间和内存的限制,对于大型模型或数据集来说并不可行。
工具和实施
各种工具和平台为实施分布式培训提供了便利:
分布式训练是开发当今最强大人工智能模型的基础技术,它使大规模训练变得可行且高效。