分布式训练库

分布式训练的速度提升高达 40%

Amazon SageMaker 提供训练大型深度学习模型和数据集最快、最简单的方法。SageMaker 的分布式训练库使用分区算法,可在 AWS GPU 实例间自动拆分大型深度学习模型和训练数据集,所需时间仅为手动操作的一小部分。SageMaker 通过两种技术实现此等效率:数据并行和模型并行。模型并行将太大且无法在单个 GPU 上运行的模型拆分成较小的部分,然后再分布在多个 GPU 上进行训练;数据并行拆分大型数据集,进行并行训练,从而提高训练速度。

图像分类和文本转语音等 ML 使用案例对计算能力和数据集的要求越来越大。例如,2018 年发布的最先进的自然语言处理 (NLP) 模型 BERT 使用了 3.4 亿个参数。现在,最先进的 NLP 模型(如 T5、GPT-3、Turing-NLG 和 Megatron)已经创造了新的精度记录,但需要数百亿到数千亿的参数。在单个 GPU 实例上训练像 T5 或 GPT-3 这样的模型可能需要几天的时间,这会减慢将最新迭代部署到生产中的能力。此外,若要手动实施您自己的数据和模型并行策略,可能需要数周的实验。

您只需额外几行代码,就可以将数据并行或模型并行添加到 PyTorch 和 TensorFlow 训练脚本中,然后 Amazon SageMaker 将应用您选择的方法。 SageMaker 将通过使用图形分区算法来确定拆分您的模型的最佳方法,以平衡每个 GPU 的计算量,同时尽量减少各 GPU 实例之间的通信。SageMaker 还可通过算法对您的分布式训练作业进行优化,这些算法旨在充分利用 AWS 计算和网络基础设施,以实现近乎线性的扩展效率,从而让您比手动实施更快地完成训练。

优势

数据并行库

缩短训练时间

Amazon SageMaker 使您可以轻松地拆分 GPU 的训练数据,从而缩短训练时间。 例如,对于在 p3dn.24xlarge 实例上训练 Mask R-CNN,与 Horovod 等开源数据并行解决方案相比,在 SageMaker 上运行速度提高了 25%。由于 SageMaker 管理并行运行的 GPU 来实现最佳同步,因此可以缩短训练时间。

已针对 AWS 优化

SageMaker 的数据并行库提供通信算法,这些算法旨在充分利用 AWS 网络和基础设施,以实现近线性扩展效率。例如,p3dn.24xlarge 实例上的 BERT 使用 SageMaker 实现 90% 的扩展效率,比使用 Horovod 的同一模型提高 26%。

使用现有的框架 API

SageMaker 通过分布式训练通用的相同 API 提供数据并行优化,因此您无需学习新库。要启用数据并行,您可以将 DistributedDataParallel (DDP) API 用于 PyTorch,将 Horovod API 用于 TensorFlow。

模型并行库

自动高效的模型分区

即使是由经验最丰富的数据科学团队来手动对大型模型进行分区,可能也需要数周的时间。Amazon SageMaker 可以分析模型,并找到在 GPU 之间进行分区最有的效方法,从而在几秒钟内拆分您的模型。

最少的代码更改

Amazon SageMaker 需要在 TensorFlow 或 PyTorch 训练脚本中更改的代码少于 10 行,即可跨多个 GPU 拆分您的模型。您可以重复使用来自 TensorFlow 和 PyTorch 的现有 API,以便快速启动和运行。

优化资源

Amazon SageMaker 通过将您的训练批次拆分为较小的微批次,最大限度地利用您的 GPU 实例。较小的微批次将在高效的管道中输送到 GPU,以保持所有 GPU 设备同时处于活动状态。

使用案例

物体周围的边界框,显示对象检测

物体检测

对于物体检测,模型训练时间通常是一个瓶颈,数据科学团队需要等待数天或数周后才能获得结果,这降低了他们的工作效率。例如,自动驾驶车辆物体检测模型需要训练多达数千 GB 的数据,来改善车辆感知性能。 SageMaker 的数据并行库可以帮助数据科学团队高效地拆分训练数据,并快速扩展到数百甚至数千个 GPU,从而将训练时间从几天缩短到几分钟。 

带有语言翻译的对话气泡,显示自然语言处理

自然语言处理

在自然语言理解方面,数据科学家通常通过增加层数和神经网络的大小来提高模型准确性,从而生成具有数十亿参数的模型,如 GPT-2、GPT-3、T5 和 Megatron。跨 GPU 拆分模型层和操作可能需要数周时间,但 SageMaker 的模型并行库会自动分析并高效拆分模型,使数据科学团队能够在几分钟内开始训练大型模型。

带数据流的眼形图标,描述计算机视觉

计算机视觉

在计算机视觉中,硬件限制通常迫使数据科学家选择比他们心仪的大小更小的批次大小或输入大小。例如,较大的输入可能会提高模型的准确性,但可能会导致内存不足错误,而且较小批次的性能较差。同样,较大的批次可提高 GPU 的利用率和性能,但可能会影响模型的准确性。SageMaker 分布式训练库提供让您可灵活地使用较小的批次来轻松高效地训练模型,或使用较大的输入进行训练。

客户

LS White SVG
“在 Latent Space,我们正在构建一个神经渲染游戏引擎,任何人都可以快速地随心创建。在语言建模方面的进步的推动下,我们正在努力结合对文本和图像的语义理解,确定要生成的内容。我们目前的重点是利用信息检索来增强大规模的模型训练,我们对此拥有复杂的机器学习管道。由于要同时训练多个数据源和模型,所以该设置为分布式训练带来了挑战。因此,我们正在利用 Amazon SageMaker 中的新分布式训练功能,高效地扩展大型生成模型的训练。”

Sarah Jane Hong,Latent Space 联合创始人兼首席科学官

turbine_logo
“Turbine 是一家模拟驱动型药物研发公司,为患者提供靶向癌症治疗。我们使用机器学习来训练我们基于专有网络架构的计算机人体细胞模型(称为“模拟细胞”)。通过准确预测分子层级上的各种干预,模拟细胞可帮助我们发现新的抗癌药物,并找到可与现有治疗方法组合使用的治疗方案。我们会持续进行模拟训练迭代,但在一台机器上,每次训练都需要几天时间,这阻碍了我们快速迭代新创意的能力。我们对 Amazon SageMaker 上的分布式训练感到非常兴奋,我们预计该方法能将我们的训练时间缩短 90%,并帮助我们专注于我们的主要任务:为细胞模型训练编写一个同类最好的代码库。SageMaker 最终使我们能够更有效地完成我们的首要任务:为患者确定和开发新型抗癌药物。”

Turbine 首席技术官 Kristóf Szalay

Amazon SageMaker 分布式训练库的资源

在 Amazon SageMaker 中使用 DataParallel 实现快速训练和近线性扩展 (23:31)
在Amazon SageMaker 上使用模型并行性训练包含数亿个参数的模型 (28:52)

开始使用 Amazon SageMaker 分布式训练库