通过 Amazon SageMaker 数据并行库实现更快的训练 机器学习博客

加速训练:亚马逊 SageMaker 数据并行库的应用

作者:Apoorv Gupta Karan Dhiman Ruhan Prasad 和 Zhaoqi Zhu,2023年12月5日

重点摘要

大规模语言模型LLM的训练在过去一年中变得非常普遍,包含多个公开发布的模型,如 Llama2、Falcon 和 StarCoder。为提高训练速度,亚马逊 SageMaker 最近发布了一种优化的 AllGather 集体操作,这可以大幅度减轻 GPU 之间的通信瓶颈,进而加快训练速度。本文将介绍 SMDDP 如何运作、如何在 SageMaker 训练脚本中启用 SMDDP,以及您可以期待的性能提升。

通过 Amazon SageMaker 数据并行库实现更快的训练 机器学习博客

解决方案概述

传统的数据并行训练方法通过在多块 GPU 之间复制一个完整模型来处理数据集的不同数据片。后向传播过程中,各 GPU 工作节点之间会平均梯度,从而更新每个模型副本,尽管它们在不同的数据片上进行训练。尽管这一方法可以加快对庞大数据集的训练,但一些较大的模型如 Llama2 70B可能无法完全加载到 GPU 内存中,限制了传统数据并行的应用。

为了克服这一限制,分片数据并行解决方案如 DeepSpeed ZeRO 和 PyTorch FSDP 的需求日益增加。在分片数据并行中,模型参数、梯度及优化器状态被分割并在 GPU 之间分发,而不是在每个 GPU 上复制整个模型。这种方法允许 GPU 在更小的内存使用下进行并行计算。

AllGather 集体操作是分片数据并行中非常重要的功能。尽管 NCCL 通常用于此操作,但其底层实现并未针对亚马逊 EC2 实例的网络基础架构进行优化。SMDDP 是为 NVIDIA GPU 提供的集体通信库,作为 NCCL 的替代品,能更好地为分布式训练服务。

AWS 优化的 AllGather

AWS 优化的 AllGather 采用了一些技术以实现更好的性能:

通过弹性计算适配器EFA移动数据:EFA 是一种低延迟和高吞吐量的网络解决方案,适合 AWS 的网络基础架构。GDRCopy 协调本地 NVLink 和 EFA 网络流量:GDRCopy 是一个库,能够提供 CPU 进程与 GPU CUDA 内核之间的低延迟通信。减少 GPU 流处理器的使用:AWS P4d/P4de 实例配备 NVIDIA A100 GPU,而 SMDDP 集体操作仅使用少量流处理器,从而将更多计算能力留给模型内核。

使用方法

SMDDP 集体操作通过 PyTorch 的 torchdistributed 模块与进程组集成。用户可以编写通用的分布式代码,并根据所用设备选取相应的后端。

下面是如何使用 SMDDP 的示例代码:

DeepSpeed

pythonimport smdistributeddataparalleltorchtorchsmddpdeepspeedinitdistributed(distbackend=smddp) # 替换 nccl

FSDP

pythonimport smdistributeddataparalleltorchtorchsmddpdistinitprocessgroup(backend=smddp) # 替换 nccl

一元机场ink

基准测试

在没有模型训练的情况下,针对单独的 AllGather 性能进行基准测试,结果显示 SMDDP 的带宽利用率超过 NCCL。以下表格是两者在 32 个 p4d 实例上的对比结果:

配置性能模型/训练集群13B Llama264 p4d24xlarge 节点 (512 NVIDIA A100 GPUs)65B GPTNeoX64 p4d24xlarge 节点 (512 NVIDIA A100 GPUs)

结论

本文介绍了如何通过简单的两行代码更改,显著加快在亚马逊 SageMaker 上的分片数据并行训练。随着 LLM 的推广,大规模分布式训练的需求日益增长,但高昂的成本和通信瓶颈成为主要挑战。通过 SMDDP,能够在更大规模下更快地训练,同时节省计算资源。您可以在 亚马逊 SageMaker 示例的 GitHub 存储库 中找到更多 SMDDP 在分片数据并行训练中的示例。

关于作者

Apoorv Gupta 是 AWS 的软件开发工程师,专注于为 AWS 基础设施和硬件构建最佳深度学习系统。他对分布式计算和 ML 加速器非常感兴趣,业余时间喜欢旅行和打游戏。

Karan Dhiman 是位于加拿大多伦多的 AWS 软件开发工程师,热衷于机器学习并致力于加速分布式计算工作负载的解决方案构建。

Ruhan Prasad 是 AWS 的软件开发工程师,致力于使分布式深度学习训练在 SageMaker 上更快、更便宜、更易用。他的业余爱好包括打网球、旅行和烹饪。

Zhaoqi Zhu 是 AWS 的高级软件开发工程师,热衷于分布式系统和低级优化。他的爱好包括边喝(非减肥)汽水边观看足球赛。

标签: 亚马逊 SageMaker PyTorch

简化媒体工作流程:Amazon Chime SDK 的高级合成能力用于媒体管道 商务生产力
< 上一篇

评论