使用 PyTorch 20 FSDP 在 Amazon EKS 上扩展 LLM 第 2 部分
作者:Kanwaljit Khurmi、Ana Simoes、Hamid Shojanazeri、Less Wright、Alex Iankoulski发布日期:2024年4月1日类别:高阶 (300)、Amazon 弹性 Kubernetes 服务、Amazon 机器学习、容器、生成 AI永久链接 留言
大型语言模型LLMs的优化需要高效的计算资源和大规模数据集,而 PyTorch 的完全分片数据并行FSDP技术能够打破单一 GPU 的限制,使得大型模型的训练变得更为可行。如今,许多企业已经开始广泛使用此技术以提升其业务的效率与准确性。本文将指导您如何在 Amazon EKS 上利用 FSDP 实现线性扩展,进而提高大型模型的训练效率。
随著越来越多的企业在虚拟助理、翻译、内容创作等领域使用 LLM,训练或微调这些大型模型所需的数据和计算能力大幅上升,进而增加了机器学习技术栈的工程复杂性。相对于单个 GPU 的有限内存,使得可训练模型的大小受到限制,这也限制了批次的大小。
针对这些挑战,各种模型的并行技术如 DeepSpeed ZeRO 和 PyTorch FSDP 逐渐形成,透过提供碎片数据的技术,使得每个加速器仅需持有模型复制的一部分,从而显著减少了训练作业的内存占用。
在 PyTorch 的分布式数据并行DDP训练中,每个 GPU 都持有模型的完整复制,包括权重、梯度和优化器状态。每个工作者处理数据批次后,透过 allreduce 操作来同步梯度。然而,这也因此限制了可以在 DDP 工作流程中容纳的模型大小。FSDP 透过在数据并行工作者之间分片参数、优化器状态和梯度,帮助克服这项限制。
该过程的图示如以下所示,FSDP 的每个 GPU 仅保留了模型状态的一部分,这样在所有工作者之间的 GPU 内存占用大幅降低,从而使得非常大的模型或使用更大批大小的训练作业成为可能。
在本文中,我们使用 Amazon EKSElastic Kubernetes Service来设置计算集群。许多客户正逐渐采用 Amazon EKS 来运行基于 Kubernetes 的 AI/ML 工作负载,这是因为其性能、可扩展性、可靠性和可用性,以及与 AWS 的网路、安全和其他服务的整合。
我们的 FSDP 使用案例采用 Kubeflow Training Operator,这是一个 Kubernetes 原生项目,旨在促进 ML 模型的调整和可扩展的分布式训练。
Llama2 是一种经过预训练的 LLM,训练于 2 万亿个标记的文本和代码上,目前是可用的最大、最强大的 LLM。Llama2 有三种不同的模型大小选择:
Llama270b:最大的模型,拥有 700 亿个参数,适用于所有要求最严苛的任务。Llama213b:中等模型,拥有 130 亿个参数,适合大多数任务。Llama27b:最小的模型,拥有 70 亿个参数,是最具效率的选择。本文将指导您如何在 Amazon EKS 上微调这些模型并运用 FSDP 技术。
在运行之前,插入您的 Hugging Face token。请配置您的 PyTorchJob 以使用环境变数或 env 文件来设置训练作业清单。

运行 kubectl apply f /fsdpyaml 来启动 PyTorchJob,随后可使用 kubectl describe f /fsdpyaml 来查询状态。
可以重复先前创建和运行作业的步骤,同时改变工作节点的数量和实例类型,以生成扩展图表。在一般情况下,随著更多节点的添加,我们应该能看到 GPU 内存占用降低、每个训练时期的计算时间缩短以及吞吐量提高。
通过观察生成 AI 工作负载,能够提供对运行作业的可见性,并协助最大化计算资源的利用率。在此过程中,我们使用了几个 Kubernetes 原生和开源的观察工具,可以快速跟踪错误、统计数据和模型行为。
如果您使用本文中的示例创建了集群,可以使用相应命令删除集群及其相关资源。
马来西亚加速器本文介绍了 FSDP 如何减少每个 GPU 的内存负担,使更大型的模型训练更为高效,并实现近乎线性的吞吐量扩展。我们展示了如何在 Amazon EKS 上使用 P4de 和 P5 实例进行 Llama2 模型的训练,并利用 kubectl、htop、nvtop 和 dcgm 等观察工具来监控训练任务的日志、CPU 和 GPU 利用率。
我们鼓励您也将 PyTorch FSDP 应用于您自己的 LLM 训练任务。
Kanwaljit Khurmi:亚马逊网络服务AWS首席 AI/ML 解决方案架构师。Alex Iankoulski:AWS 自我管理的机器学习首席解决方案架构师。Ana Simoes:AWS 机器学习框架首席专家。Hamid Shojanazeri:PyTorch 的合作工程师,致力于开源高性能模型优化、分布式训练和推理。Less Wright:PyTorch 的 AI/Partner 工程师。
您可以访问 awsdofsdp 开始使用 PyTorch FSDP。