深度学习的最新发展导致了越来越大的模型,例如 GPT-3、BLOOM 和 OPT,其中一些已经超过 100 亿个参数。 尽管较大的模型往往更强大,但训练此类模型需要大量的计算资源。 即使使用 FSDP 和 DeepSpeed 等高级分布式训练库,训练作业通常也需要数百个加速器设备一次持续数周或数月。
2022 年底,AWS 宣布正式推出 Amazon EC2 Trn1 实例 powered by AWS 培训— 一种专门构建的机器学习 (ML) 加速器,经过优化可提供高性能、经济高效且可大规模扩展的平台,用于在云中训练深度学习模型。 Trn1 实例有多种大小(见下表),每个实例最多有 16 个 Trainium 加速器。
实例大小 | 火车加速器 | 加速器内存 (GB) | 虚拟CPU | 实例内存 (GiB) | 网络带宽 (Gbps) |
trn1.2xlarge | 1 | 32 | 8 | 32 | 最高 12.5 |
trn1.32xlarge | 16 | 512 | 128 | 512 | 800 |
trn1n.32xlarge(即将推出) | 16 | 512 | 128 | 512 | 1600 |
Trn1 实例既可以部署为独立实例用于较小的训练作业,也可以部署在高度可扩展的超集群中,以支持跨数万个 Trainium 加速器的分布式训练。 所有 Trn1 实例都支持独立配置,而 Trn1 超级集群需要 trn1.32xlarge 或 trn1n.32xlarge 实例。 在 ultracluster 中,多个 Trn1 实例共同位于给定的 AWS 可用区中,并与高速、低延迟的 Elastic Fabric Adapter (EFA) 网络连接,为集体计算操作提供每个实例 800 Gbps 的非阻塞网络带宽. 1 年初推出的 trn32n.2023xlarge 实例类型会将此带宽增加到每个实例 1600 Gbps。
许多企业客户选择使用 Kubernetes 部署他们的深度学习工作负载——这是云中容器编排的事实标准。 AWS 客户经常使用 Amazon Elastic Kubernetes服务 (亚马逊 EKS)。 Amazon EKS 是一种托管 Kubernetes 服务,可简化 Kubernetes 集群的创建、配置、生命周期和监控,同时仍提供上游 Kubernetes 的全部灵活性。
今天,我们很高兴地宣布正式支持使用 Amazon EKS 和 EC2 Trn1 实例的分布式训练作业。 发布此公告后,您现在可以在 Amazon EKS 中轻松运行大规模容器化训练作业,同时充分利用 Trn1 实例提供的性价比、可扩展性和易用性。
在发布此公告的同时,我们还发布了一份详细教程,指导您完成使用 Amazon EKS 和 Trn1 实例运行多实例分布式训练作业(BERT 第一阶段预训练)所需的步骤。 在本文中,您将了解解决方案架构并回顾教程中的几个关键步骤。 请参阅 官方教程库 用于完整的端到端工作流程。
接下来,广泛熟悉核心 AWS 服务,例如 亚马逊弹性计算云 (Amazon EC2) 和 Amazon EKS 是隐含的,并且对深度学习和 PyTorch 有基本的了解会有所帮助。
解决方案架构
下图说明了解决方案体系结构。
该解决方案由以下主要组件组成:
- EKS 集群
- 由 trn1.32xlarge 实例组成的 EKS 节点组
- AWS 神经元 软件开发套件(SDK)
- Neuron 和 EFA 的 EKS 插件
- An Amazon Elastic Container注册 (亚马逊 ECR)R 存储库
- 训练容器图像
- An 适用于Lustre的Amazon FSx 文件系统
- Volcano 批处理调度程序和 etcd 服务器
- TorchX 通用作业启动器
- Trainium 的 TorchX DDP 模块
该解决方案的核心是 EKS 集群,它通过 EKS 服务端点为您提供核心 Kubernetes 管理功能。 Amazon EKS 的优势之一是该服务可根据负载主动监控和扩展控制平面,从而确保分布式训练等大型工作负载的高性能。 EKS 集群内部是一个节点组,由位于同一可用区中的两个或多个基于 trn1.32xlarge Trainium 的实例组成。
Neuron SDK 是提供驱动程序、编译器、运行时、框架集成(例如 PyTorch Neuron)和用户工具的软件堆栈,可让您获得 Trainium 加速器的优势。 Neuron 设备驱动程序直接在 EKS 节点(Trn1 实例)上运行,并提供从在节点上启动的训练容器内访问 Trainium 芯片的权限。 Neuron 和 EFA 插件安装在 EKS 集群中,以提供对分布式训练所需的 Trainium 芯片和 EFA 网络设备的访问。
ECR 存储库用于存储训练容器图像。 这些图像包含 Neuron SDK(不包括直接在 Trn1 实例上运行的 Neuron 驱动程序)、PyTorch 训练脚本和所需的依赖项。 当在 EKS 集群上启动训练作业时,容器镜像首先从 Amazon ECR 拉到 EKS 节点上,然后 PyTorch 工作容器从镜像实例化。
共享存储使用高性能 FSx for Lustre 文件系统提供,该文件系统与 trn1.32xlarge 实例位于同一可用区。 FSx for Lustre 文件系统的创建和附加到 EKS 集群由 Amazon FSx for Lustre CSI 驱动程序. 在此解决方案中,共享存储用于存储训练数据集和训练过程中创建的任何日志或工件。
该解决方案使用 TorchX 通用作业启动器 在 Amazon EKS 中启动分布式训练作业。 TorchX 有两个重要的依赖项:Volcano 批处理调度程序和 etcd 服务器。 Volcano 处理训练作业的调度和排队,而 etcd 服务器是 TorchElastic 使用的键值存储,用于作业启动期间的同步和对等发现。
当使用 TorchX 启动训练作业时,启动命令使用为 Trainium 提供的 TorchX 分布式 DDP 模块来配置整体训练作业,然后在每个 PyTorch worker pod 上运行适当的 torchrun 命令。 当作业正在运行时,可以使用标准 Kubernetes 工具(例如 kubectl)或通过标准 ML 工具集(例如 TensorBoard)对其进行监控。
解决方案概述
让我们看看这个解决方案的重要步骤。 在整个概述中,我们指的是 使用 TorchX 和 EKS 在 Trainium 上启动多节点 PyTorch 神经元训练作业 GitHub 上的教程。
创建 EKS 集群
要开始使用 Trn1 实例在 Amazon EKS 中进行分布式训练作业,您首先要创建一个 EKS 集群,如 GitHub上的教程. 集群创建可以使用标准工具来实现,例如 eksctl
和 AWS CloudFormation.
创建 EKS 节点组
接下来,我们需要在受支持的区域中创建一个包含两个或更多 trn1.32xlarge 实例的 EKS 节点组。 在教程中, AWS CloudFormation 用于创建特定于 Trainium 的 EC2 启动模板,这确保 Trn1 实例使用适当的 Amazon 机器映像 (AMI) 和支持分布式训练所需的正确 EFA 网络配置启动。 AMI 还包括为 Trainium 加速器芯片提供支持的 Neuron 设备驱动程序。 随着 eksctl
Amazon EKS 管理工具,您可以使用引用新创建的启动模板的基本 YAML 清单轻松创建 Trainium 节点组。 例如:
在前面的清单中,配置了多个属性以允许在 EKS 集群中使用 Trn1 实例。 第一的, metadata.region
设置为支持 Trn1 实例的区域之一(当前 us-east-1
和 us-west-2
). 接下来,对于 availabilityZones,Amazon EKS 要求指定两个可用区。 其中一个可用区必须支持使用 Trn1 实例,而另一个可以随机选择。 本教程展示了如何 确定哪些可用区将允许您的 AWS 账户中的 Trn1 实例. 还必须使用 availabiltyZones
与 EKS 节点组关联的属性。 efaEnabled
被设置为 true
使用分布式训练所需的适当 EFA 网络配置来配置节点。 最后, launchTemplate.id
与节点组关联的属性指向在前面的步骤中通过 AWS CloudFormation 创建的 EC2 启动模板。
假设您已经应用了 CloudFormation 模板并安装了 eksctl
管理工具,您可以通过运行以下代码来创建支持 Trainium 的 EKS 节点组:
为 Trainium 和 EFA 设备安装 Kubernetes 插件
节点组就位后,下一步是安装 Kubernetes 插件,为 Trainium 加速器(通过 Neuron 插件)和 EFA 设备(通过 EFA 插件)提供支持。 这些插件可以使用标准轻松地安装在集群上 kubectl
教程中所示的管理工具。
要使用 TorchX 通用 PyTorch 启动器启动分布式训练作业,需要两个先决条件:Volcano 批处理调度程序和 etcd 服务器。 很像 Neuron 和 EFA 插件,我们可以使用 kubectl
在 EKS 集群上安装 Volcano 和 etcd 服务器的工具。
将共享存储附加到 EKS 集群
在本教程中,FSx for Lustre 用于提供一个高性能的共享文件系统,可供各种 EKS worker pod 访问。 此共享存储用于托管训练数据集,以及在训练过程中创建的任何工件和日志。 本教程描述了如何使用创建共享存储并将其附加到集群 Amazon FSx for Lustre CSI 驱动程序.
创建训练容器镜像
接下来,我们需要创建一个训练容器镜像,其中包含 PyTorch 训练脚本以及任何依赖项。 本教程中包含一个示例 Dockerfile,其中包含 BERT 预训练脚本及其软件依赖项。 Dockerfile 用于构建训练容器映像,然后将映像推送到 ECR 存储库,当在集群上启动训练作业时,PyTorch 工作人员可以从中提取映像。
设置训练数据
在启动训练作业之前,首先将训练数据复制到 FSx for Lustre 上的共享存储卷。 本教程概述了如何创建一个可以访问共享存储卷的临时 Kubernetes pod,并展示了如何登录到 pod 以便使用标准 Linux shell 命令下载和提取训练数据集。
有了各种基础设施和软件先决条件,我们现在可以专注于解决方案的 Trainium 方面。
预编译你的模型
Neuron SDK 通过一个名为 PyTorch神经元. 默认情况下,PyTorch Neuron 使用即时编译运行,其中训练作业中的各种神经网络计算图在训练过程中遇到时进行编译。 对于较大的模型,使用提供的可以更方便 neuron_parallel_compile
提前预编译和缓存各种计算图的工具,以避免在训练时编译图。 在 EKS 集群上启动训练作业之前,本教程展示了如何使用 TorchX 首先启动预编译作业 neuron_parallel_compile
工具。 完成预编译作业后,Neuron 编译器将识别并编译所有神经网络计算图,并将它们缓存到共享存储卷中,以供以后在实际的 BERT 预训练作业中使用。
启动分布式训练作业
预编译完成后,TorchX 将用于跨两个 trn64xlarge 实例启动一个 1.32 worker 分布式训练作业,每个实例 32 个 worker。 我们每个实例使用 32 个 worker,因为每个 trn1.32xlarge 实例包含 16 个 Trainium 加速器,每个加速器提供 2 个 神经核. 每个 NeuronCore 都可以作为唯一的 PyTorch XLA 设备 在训练脚本中。 本教程中的示例 TorchX 启动命令类似于以下代码:
教程中详细描述了上述 TorchX 命令中的各种命令行参数。 但是,以下参数在配置训练作业时最为重要:
- -cfg队列=测试 – 指定用于训练作业的 Volcano 队列
- -cfg image_repo – 指定用于 TorchX 容器镜像的 ECR 存储库
- –script_args – 指定应传递给 PyTorch 训练脚本的任何参数
- –nnodes 和 –nproc_per_node – 用于训练工作的实例数和每个实例的工人数
- -脚本 – 要在训练容器中启动的 PyTorch 训练脚本的名称
- -图像 – Amazon ECR 中训练容器镜像的路径
- –bf16 – 是否启用BF16数据类型
监控训练作业
训练作业启动后,可以通过多种方式监控作业。 本教程展示了如何在命令行上使用监控基本训练脚本指标 kubectl
,如何在 TensorBoard 中直观地监控训练脚本进度(见下面的截图),以及如何使用 neuron-top
Neuron SDK 中的工具。
清理或重用环境
训练作业完成后,集群可以重新使用或重新配置以用于其他训练作业。 例如,EKS 节点组可以使用 eksctl
命令以支持需要额外 Trn1 实例的训练作业。 同样,可以轻松修改提供的 Dockerfile 和 TorchX 启动命令,以支持其他深度学习模型和分布式训练拓扑。
如果不再需要集群,本教程还包括删除 EKS 基础设施和相关资源所需的所有步骤。
结论
在本文中,我们探讨了 Trn1 实例和 Amazon EKS 如何提供一个托管平台,以实现高性能、经济高效且可大规模扩展的深度学习模型分布式训练。 我们还分享了一个综合教程,展示了如何使用 Trn1 实例在 Amazon EKS 中运行真实世界的多实例分布式训练作业,并强调了解决方案中的几个关键步骤和组件。 本教程内容可以轻松适应其他模型和工作负载,并为您提供在 AWS 中分布式训练深度学习模型的基础解决方案。
要了解有关如何开始使用 Trainium 驱动的 Trn1 实例的更多信息,请参阅 神经元文档.
作者简介
斯科特佩里 是 AWS Annapurna ML 加速器团队的解决方案架构师。 他常驻加拿大,帮助客户使用 AWS Inferentia 和 AWS Trainium 部署和优化深度学习训练和推理工作负载。 他的兴趣包括大型语言模型、深度强化学习、物联网和基因组学。
洛雷亚·阿里萨巴拉加 是英国公共部门的解决方案架构师,她帮助客户使用 Amazon SageMaker 设计 ML 解决方案。 她还是致力于硬件加速的技术领域社区的一员,并帮助测试和基准测试 AWS Inferentia 和 AWS Trainium 工作负载。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/scaling-distributed-training-with-aws-trainium-and-amazon-eks/
- 1
- 100
- 11
- 2022
- 2023
- 7
- a
- Able
- 关于
- 加速器
- 加速器
- ACCESS
- 访问
- 实现
- 横过
- 积极地
- 额外
- 推进
- 高级
- 优点
- 对齐的
- 所有类型
- 已经
- 尽管
- Amazon
- Amazon EC2
- 亚马逊SageMaker
- 和
- 宣布
- 公布
- 公告
- 应用的
- 适当
- 架构
- 参数
- 方面
- 相关
- 连接
- 属性
- 可用性
- 可使用
- AWS
- AWS CloudFormation
- AWS 推理
- 带宽
- 基于
- 基本包
- 因为
- before
- 标杆
- 好处
- 亿
- Bloom
- 广阔
- 建立
- 缓存
- 被称为
- 加拿大
- 碎屑
- 选择
- 云端技术
- 簇
- 码
- 集体
- 未来
- 即将公开信息
- 相当常见
- 社体的一部分
- 完成
- 完成
- 组件
- 全面
- 计算
- 配置
- 已联繫
- 组成
- 容器
- 集装箱
- 包含
- 内容
- 控制
- 便捷
- 核心
- 经济有效
- 创建信息图
- 创建
- 创造
- 创建
- CSI
- 目前
- 合作伙伴
- data
- DDP
- 专用
- 深
- 深入学习
- 默认
- 部署
- 部署
- 描述
- 设计
- 细节
- 详细
- 发展
- 设备
- 设备
- 直接
- 发现
- 分布
- 分布式培训
- 分布
- 下载
- 司机
- ,我们将参加
- 每
- 此前
- 早
- 使用方便
- 容易
- 或
- enable
- 端至端
- 端点
- 确保
- 企业
- 甚至
- 例子
- 兴奋
- 排除
- 存在
- 探讨
- 提取
- 布
- 熟悉
- 部分
- 文件
- (名字)
- 高度灵活
- 专注焦点
- 遵循
- 以下
- 骨架
- 止
- ,
- 功能
- 其他咨询
- 基因组学
- 得到
- GitHub上
- 特定
- 图形
- 图表
- 团队
- 指南
- 手柄
- 硬件
- 胸襟
- 有帮助
- 帮助
- 高
- 高性能
- 突出
- 高度
- 主持人
- 创新中心
- How To
- 但是
- HTML
- HTTPS
- 数百
- ID
- 确定
- 图片
- 图片
- 默示
- 重要
- in
- 包括
- 包括
- 包括
- 增加
- 日益
- 基础设施
- 安装
- 安装
- 例
- 积分
- 利益
- 物联网
- IT
- 工作
- 工作机会
- 键
- 类
- 语言
- 大
- 大规模
- 大
- 晚了
- 发射
- 推出
- 发射
- 层
- 学习用品
- 学习
- 导致
- 库
- Line
- Linux的
- 加载
- 不再
- 看
- LOOKS
- 机
- 机器学习
- 主要
- 管理
- 颠覆性技术
- 大规模
- 内存
- 元数据
- 指标
- ML
- 模型
- 改性
- 模块
- 显示器
- 监控
- 监控
- 显示器
- 个月
- 更多
- 最先进的
- 多
- 姓名
- 需求
- 网络
- 工业网络
- 神经网络
- 下页
- 节点
- 节点
- 数
- 最多线路
- 提供
- 官方
- 一
- 运营
- 运营
- 优化
- 优化
- 管弦乐编曲
- 秩序
- 其他名称
- 概述
- 大纲
- 最划算
- 简介
- 参数
- 部分
- 通过
- 径
- 窥视
- 性能
- 相
- 地方
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 插入
- 插件
- 点
- 帖子
- 供电
- 强大
- 先决条件
- 过程
- 进展
- 提供
- 提供
- 提供
- 优
- 国家
- 出版
- pytorch
- 很快
- 随机
- 真实的世界
- 引用
- 地区
- 地区
- 有关
- 去掉
- 知识库
- 要求
- 必须
- 需要
- 资源
- 检讨
- 运行
- 运行
- sagemaker
- 同
- 可扩展性
- 可扩展性
- 秤
- 缩放
- SDK
- 扇形
- 服务
- 特色服务
- 集
- 几个
- 共用的,
- 壳
- 应该
- 如图
- 作品
- 显著
- 同样
- 尺寸
- 小
- So
- 软件
- 方案,
- 解决方案
- 一些
- 指定
- 堆
- 独立
- 标准
- 开始
- 启动
- 步
- 步骤
- 仍
- 存储
- 商店
- 这样
- SUPPORT
- 支持
- 支持
- 同步
- 系统
- 表
- 服用
- 团队
- 文案
- 模板
- 临时
- 测试
- 英国
- 其
- 数千
- 通过
- 始终
- 次
- 至
- 工具
- 工具
- 产品培训
- true
- 教程
- Uk
- 独特
- 普遍
- 使用
- 用户
- 各个
- 版本
- 通过
- 体积
- 方法
- 周
- 是否
- 这
- 而
- 将
- 中
- 工人
- 工人
- 将
- 雅姆
- 完全
- 您一站式解决方案
- 和风网
- 区