基础模型是在大量数据上大规模训练的大型深度学习模型。 它们可以进一步微调以执行各种下游任务,并形成支持多个 AI 应用程序的核心骨干。 最突出的类别是大型语言模型 (LLM),包括自回归模型,例如经过训练以完成自然文本的 GPT 变体。 LLM 通常包含数十亿个参数,这使得它们很少适合单个加速器,并且需要模型并行技术。 另一类是扩散模型,特别是 稳定扩散,这将 AI 图像生成推向了一个前所未有的里程碑,可以从简单的文本描述中生成非凡的视觉效果。 扩散模型通常比 LLM 小得多,分布式训练仍然在促进开发方面发挥关键作用。
SageMaker 模型并行 (SMP) 库 是一种大型模型训练解决方案,可用于 亚马逊 SageMaker 平台. 它可以与 PyTorch 模型集成,轻松应用一系列最先进的大型模型分布式训练技术进行大规模训练。 今年早些时候,SMP 推出 分片数据并行性,一种由亚马逊内部支持的分布式训练技术 麦克风 引擎盖下的技术。 跨数据并行工作者的分片数据并行分片模型参数、梯度和优化器状态。 MiCS 执行多项优化,包括规模感知分区以提供近线性可扩展性。 在 使用分片数据并行性训练具有近线性缩放的巨大模型,我们分享了在序列长度为 39.7 的 3B 参数 GPT-30 模型上,与 DeepSpeed ZeRO-2 相比,SMP 中的分片数据并行实现了 2048% 的加速。
为了帮助我们的客户进一步降低培训成本并加快上市时间,我们很高兴在 SageMaker 模型中并行引入两项新的性能改进—— SMDDP集体 和 闪光灯. SMDDP Collectives 是 AWS 基础设施上性能最高的集体库,用于由 SageMaker分布式数据并行库. FlashAttention 介绍于 道等人。,它以 IO 感知的方式重新实现了注意力机制,降低了内存带宽需求,节省了注意力速度和内存占用。 在 30.58 个 p100d.32xlarge 实例上训练 4B 参数 GPT-NeoX 模型时,这两个组件共同推动我们的分片数据并行技术快 24%。 对于已经在支持的模型上并行使用分片数据的客户,无需更改代码即可从这些最新功能提供的性能提升中获益。 稳定人工智能, 的发明者 稳定扩散 显示出无与伦比的图像生成能力的模型系列选择使用 SMP 来构建基础模型。 借助 SMP,Stability AI 在 163 个 p13d.32xlarge 实例上为 4B 参数 GPT-NeoX 实现了每个 GPU 24 TFLOPs,与 DeepSpeed 相比速度提高了 58%。 您可以在 AWS re:Invent 2022 上 Stability AI CEO 的演讲中或在这个 博客文章.
“我们在 Stability AI 的使命是建立基础,通过人工智能激活人类的潜力。 为了实现这一使命,我们需要在数百个加速计算实例上高效地训练开源基础模型。 我们依靠 SageMaker 及其分布式训练库来优化性能并实施最先进的策略,以在我们的训练集群中分割模型和数据。 这些优化降低了我们的培训成本,帮助我们更快地满足客户需求,并加快新模型的开发。”
- Stability AI 创始人兼首席执行官 Emad Mostaque。
在这篇博文中,我们将首先介绍 SageMaker 模型并行库中的最新性能改进。 然后,我们将重新讨论如何使用并行分片数据训练基础模型。 最后,我们将对 13B、50B 和 100B 参数自回归模型的性能进行基准测试,并总结未来的工作。
SageMaker 模型并行库中的新性能改进
起点 AWS深度学习容器 (DLC) PyTorch 1.12.1,SageMaker 模型并行库 v1.13 附带以下两个对提高训练性能至关重要的新组件。 它们目前在 ml.p4d.24xlarge 实例上可用 弹性织物适配器 (EFA) 启用:
1. 来自 SMDDP Collectives 的 AWS 优化的 AllGather
在并行分片数据中,由于 GPU 上只存在模型状态的一个分片,因此需要一个 AllGather 集合体在前向或反向传递计算期间从分片组中的所有 GPU 收集全套参数。 在之前版本的 SageMaker 模型并行中,我们使用 NVIDIA Collective Communications Library (NCCL) 来处理这些集合体。 但是,NCCL 是一个通用的集体通信库,不是为 AWS 基础设施设计的,即使启用了 EFA,也会导致性能不佳。
此前,我们开发了 SMDDP集体 库提供了 AWS 优化的 All-Reduce 集合实现,以加速纯数据并行训练的性能。 为了提高具有分片数据并行性的大型模型训练的性能,我们扩展了 SMDDP Collectives 库以包括 AllGather 集体的优化实现。 SMDDP Collectives AllGather 的关键优势在于它采用 all-to-all 类型的通信模式进行节点间通信,使我们的 collective 具有高吞吐量和较低的延迟敏感度。 此外,我们的 AllGather 集体将与通信相关的处理卸载到 CPU,从而释放宝贵的 GPU 周期用于梯度计算,从而显着提高性能,尤其是在大型模型上。
2. 闪光注意力
在现代变压器架构中,内存消耗的最大来源之一是自注意力层中的激活足迹。 这是因为每个注意力头都会为每个输入计算一个 SxS 的注意力矩阵,其中 S 是序列长度,这个矩阵会经过 dropout、softmax 和矩阵乘法等多个操作,每个中间输出都需要内存空间以供在反向传播。
闪光灯(道等人。) 是斯坦福大学 HazyResearch 最近的一项创新,它以 I/O 感知的方式重新实现了自注意力机制。 FlashAttention 背后的主要见解是自注意力机制受到进出 GPU 高带宽内存 (HBM) 的内存带宽的瓶颈。 这意味着自注意力层可以在序列维度上按块计算,每个块一次通过整个自注意力管道。 块的中间结果存储在高带宽 SRAM 中,避免了每次迭代到 HBM 的昂贵往返。 尽管天真的实现会遇到 softmax 层的跨块依赖问题,但 FlashAttention 引入了一个巧妙的实现来回避这种依赖。 由于避免了 HBM 往返和 SxS 矩阵的存储,FlashAttention 结合向后传递中的重新计算,可以节省大量内存并提高性能(GPT-NeoX 25B 在 13 个 p16d 节点上的训练速度提高 4%)。 您可以在 HazyResearch 中找到视觉效果和更多解释 FlashAttention 存储库.
使用 SageMaker 模型并行训练基础模型
要使用由 SMDDP Collectives 提供支持的 SMP 训练基础模型,您的分片数据并行训练作业不需要进行额外更改。 如果您不熟悉并行使用分片数据,请按照此操作 完整的教程笔记本 和 博客文章 这将引导您完成整个过程,从数据处理、定义和提交训练作业,到监控训练日志。 可以在以下位置找到 GPT-2 模型的即用型训练脚本 train_gpt_simple.py
. 要训练不同的模型类型,您可以按照 API文件 了解如何应用 SMP API。
我们强调了关键的超参数 PyTorch 估计器 如下所示的分片数据并行训练作业。 超参数 ddp_dist_backend
in smp_options
现在有一个新的选择, "auto"
, 作为其默认值。 和 "auto"
, SMP 将使用 AWS 优化的 AllGather 进行分片数据并行作业,否则回退到 NCCL。 你可以参考 这个文件 支持的配置。 如果你想在 SMP 中并行运行分片数据,特别是将 NCCL 作为选择的通信后端,你可以设置“ddp_dist_backend"
至 "nccl"
in smp_options
.
在最新的 SMPv1.13 版本中,分片数据并行训练技术支持开箱即用的流行模型的 FlashAttention,包括 BERT、RoBERTa、GPT-2、GPT-J、GPT-Neo 和 GPT-NeoX。 这是通过传递启用的 tensor_parallelism=True
,我们将参加 模型创建 无需设置 tensor_parallel_degree
. 你可以在同一个训练脚本中找到一个例子 train_gpt_simple.py
.
基准性能
我们在三种不同规模的模型上对 SageMaker 模型并行库中的分片数据并行性进行了基准测试,以了解 FlashAttention 和 AWS 优化的 AllGather 这两个新功能如何有助于提高性能。 放置组不需要在 SageMaker 上重现这些基准。
13B参数 GPT-NeoX
在此设置中,我们专注于了解 FlashAttention 带来的性能提升,而将 AWS 优化的 AllGather 排除在外。 使用 flash attention 可以节省大量的 GPU 内存,这有助于我们增加批处理大小或降低分片度,从而提高性能。 如下图所示,我们在 20.4-13 个 p16d 节点的各种配置上观察到 64B 参数 GPT-NeoX 模型的 flash attention 在 SMP 中平均提速约 4%。 随着序列长度的增加,标准注意力计算期间的内存使用量以二次方式扩展,但 FlashAttention 的内存使用量与序列长度呈线性关系。 因此,随着序列长度的增加,FlashAttention 会更有帮助,并且可以使用更大的序列长度。 在不牺牲模型质量的情况下提高内存效率,FlashAttention 在过去几个月中在大型模型训练社区中迅速获得关注,包括与 拥抱面扩散器 和 马赛克机器语言.
配置 | 性能 | ||||
模型/培训 | 簇 | SMP | 没有 FlashAttention (TFLOPs/GPU) |
使用 FlashAttention (TFLOPs/GPU) |
% 加速 |
13B GPT-NeoX 序列长度:2048 全局批量大小:1024 FP16 |
16 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:64 梯度累积:1 |
130 | 159 | 22.31 |
13B GPT-NeoX 序列长度:2048 全局批量大小:2048 FP16 |
32 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:64 梯度累积:1 |
131 | 157 | 19.85 |
13B GPT-NeoX 序列长度:2048 全局批量大小:4096 FP16 |
64 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:64 梯度累积:1 |
131 | 156 | 19.08 |
50B参数绽放
现在,我们看看来自 SMDDP Collectives 的 AWS 优化的 AllGather 如何使用 SMP 加速大型模型训练。 我们对一个 50B 参数的 Bloom 模型进行了基准测试,并比较了使用和不使用 AWS 优化的 AllGather 集合的性能。 我们观察到 SMDDP 集体在 40 个节点到 32 个节点的训练作业中将模型训练速度提高了 64%。 由于更好地利用 p400d.4xlarge 实例可用的 24 Gbps 网络带宽,SMDDP 集合有助于实现更好的性能。 这与将通信相关处理卸载到 CPU 的设计选择相结合,有助于实现良好的计算与网络重叠,从而优化性能。 计算到网络的重叠在大型模型中尤为重要,因为跨节点通信的数据大小会随着模型大小的增加而线性扩展。
配置 | 性能 | ||||
模型/培训 | 簇 | SMP | 没有 AWS 优化的 AllGather (TFLOPs/GPU) |
使用 AWS 优化的 AllGather (TFLOPs/GPU) |
% 加速 |
50B 绽放 序列长度:2048 全局批量大小:2048 BF16 |
32 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:128 梯度累积:1 |
102 | 143 | 40.20 |
50B 绽放 序列长度:2048 全局批量大小:4096 BF16 |
64 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:128 梯度累积:1 |
101 | 140 | 38.61 |
100B参数 GPT-NeoX
最后,我们在启用两个最新功能的情况下对 SMP 进行基准测试。 它表明这个新版本的 SMP v1.13 在 30B 参数的 GPT-NeoX 模型上比以前的版本快 100%。
配置 | 性能 | ||||
模型/培训 | 簇 | SMP | 没有 FlashAttention 和 AWS 优化的 AllGather (TFLOPs/GPU) |
使用 FlashAttention + AWS 优化的 AllGather (TFLOPs/GPU) |
% 加速 |
100B GPT-NeoX 序列长度:2048 全局批量大小:2048 FP16 |
32 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:256 卸载激活
|
121 | 158 | 30.58 |
100B GPT-NeoX 序列长度:2048 全局批量大小:4096 FP16 |
64 个 p4d.24xlarge 节点 | 激活检查点 分片数据并行度:256 卸载激活
|
122 | 158 | 29.51 |
对于未来的工作,我们将致力于在 SMDDP 集体中支持 AWS 优化的 Reduce-Scatter。 Reduce-Scatter 集体对于在反向传递中计算的平均和分片梯度至关重要。 我们希望这能在未来的版本中进一步加速 SMP 库。
结论
在本文中,我们讨论了 SageMaker 模型并行库中分片数据并行技术的两项最新性能改进。 LLM 在提高 ML 模型的质量和可重用性方面显示出巨大的希望。 AWS 团队正在与客户密切合作,以不断降低他们的培训成本和上市时间。 您可以在中找到更多 SageMaker 模型并行示例 Amazon SageMaker 示例 GitHub 存储库 或参加我们的下一个 分布式培训研讨会. 如果您有兴趣加快大型模型训练,请查看这些功能并让我们知道您构建了什么!
关于作者
Arjun Balasubramanian 先生 是 AWS 的一名高级软件工程师,专注于为分布式深度学习构建高性能、硬件加速的集体通信算法。 他对大规模机器学习和网络系统很感兴趣。 工作之余,他喜欢旅游和参加各种运动。
朱兆琪 是 AWS 的一名软件开发工程师,专门研究分布式深度学习系统并致力于 SageMaker 分布式数据并行库。 工作之余,赵棋对足球充满热情,希望在即将到来的新赛季不吃到红牌。
坎卡拉库斯 是 AWS 的高级应用科学家,负责优化 AWS 上的大规模分布式深度学习。 他的研究兴趣包括深度学习、分布式优化、分布式系统和信息论。 工作之余,他喜欢骑自行车、旅行、阅读和学习。
拉胡尔·惠尔戈尔 是 AWS 的高级软件工程师。 他致力于分布式深度学习系统,旨在使在云中训练大型深度学习模型变得容易和高效。 在业余时间,他喜欢摄影、骑自行车和园艺。
苏希特·科古勒 是 AWS 人工智能团队的一名软件开发工程师,致力于深度学习框架。 业余时间,他喜欢远足、旅游和烹饪。
吴飞 是 AWS 的一名软件工程师。 他致力于云上大规模深度学习模型的分布式训练。 工作之余,他喜欢篮球、游戏和烹饪。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/new-performance-improvements-in-amazon-sagemaker-model-parallel-library/
- 1
- 100
- 39
- a
- 能力
- 关于
- 加快
- 加速
- 加速器
- 积累
- 实现
- 横过
- 活化
- 增加
- 额外
- 优点
- AI
- 算法
- 所有类型
- 已经
- 尽管
- Amazon
- 亚马逊SageMaker
- 和
- 另一个
- APIs
- 应用领域
- 应用的
- 使用
- 架构
- 人造的
- 人工智能
- 出席
- 关注我们
- 汽车
- 可使用
- 避免
- AWS
- AWS re:Invent
- 背部
- 骨干
- 后端
- 带宽
- 篮球
- 因为
- 成为
- 背后
- 作为
- 如下。
- 基准
- 标杆
- 基准
- 得益
- 更好
- 十亿美元
- 博客
- Bloom
- 促进
- 宽广地
- 建立
- 建筑物
- 卡
- 产品类别
- CEO
- 更改
- 查
- 选择
- 密切
- 云端技术
- 簇
- 码
- 集体
- 统
- 结合
- 沟通
- 通信
- 社体的一部分
- 比较
- 相比
- 完成
- 组件
- 计算
- 计算
- 计算
- 消费
- 贡献
- 贡献
- 核心
- 成本
- 再加
- 外壳
- 危急
- 目前
- 顾客
- 合作伙伴
- 周期
- data
- 数据处理
- DDP
- 深
- 深入学习
- 默认
- 定义
- 学位
- 依赖
- 描述
- 设计
- 设计
- 发达
- 研发支持
- 不同
- 尺寸
- 讨论
- 分布
- 分布式系统
- 分布式培训
- ,我们将参加
- 每
- 此前
- 容易
- 有效
- enable
- 使
- 工程师
- 整个
- 特别
- 醚(ETH)
- 甚至
- 例子
- 例子
- 扩大
- 期望
- 昂贵
- 布
- 面部彩妆
- 促进
- 秋季
- 家庭
- 快
- 特征
- 终于
- 找到最适合您的地方
- 姓氏:
- 适合
- Flash
- 专注焦点
- 重点
- 遵循
- 以下
- Footprint
- 申请
- 向前
- 发现
- 基金会
- 创办人
- 框架
- 止
- ,
- 进一步
- 未来
- Gain增益
- 赌博
- 其他咨询
- 产生
- 代
- GitHub上
- GOES
- 去
- 非常好
- GPU
- 图形处理器
- 渐变
- 大
- 团队
- 硬件
- 头
- 帮助
- 有帮助
- 帮助
- 此处
- 高
- 高性能
- 近期亮点
- 兜帽
- 希望
- 创新中心
- How To
- 但是
- HTML
- HTTPS
- 数百
- 图片
- 实施
- 履行
- 进口
- 重要
- 改善
- 改进
- 改善
- 改善
- in
- 包括
- 包含
- 增加
- 增加
- 信息
- 基础设施
- 創新
- 输入
- 洞察
- 例
- 集成
- 积分
- 房源搜索
- 有兴趣
- 利益
- 介绍
- 介绍
- 推出
- 问题
- IT
- 迭代
- 工作
- 工作机会
- 保持
- 键
- 知道
- 大
- 大规模
- 大
- 最大
- 最新
- 推出
- 层
- 领导
- 信息
- 学习用品
- 学习
- 离开
- 长度
- 库
- 自学资料库
- 看
- 机
- 机器学习
- 主要
- 制作
- 制作
- 方式
- 矩阵
- 手段
- 机制
- 满足
- 内存
- 里程碑
- 使命
- ML
- 模型
- 模型
- 现代
- 监控
- 个月
- 更多
- 最先进的
- 自然
- 必要
- 需求
- 需要
- 网络
- 工业网络
- 全新
- 新功能
- 下页
- 节点
- 数
- Nvidia公司
- 观察
- 最多线路
- 一
- 开放源码
- 运营
- 优化
- 优化
- 优化
- 追求项目的积极优化
- 附加选项
- 除此以外
- 学校以外
- 并行
- 参数
- 参数
- 合作伙伴
- 通过
- 多情
- 过去
- 模式
- 演出
- 性能
- 施行
- 摄影
- 图片
- 管道
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 播放
- 热门
- 可能
- 帖子
- 潜力
- 供电
- 当下
- 以前
- 过程
- 处理
- 突出
- 承诺
- 提供
- 提供
- 目的
- 推
- pytorch
- 质量
- 数量
- 很快
- 范围
- RE
- 阅读
- 接收
- 最近
- 红色
- 减少
- 减少
- 释放
- 发布
- 遗迹
- 卓越
- 必须
- 需求
- 研究
- 成果
- 角色
- 运行
- sagemaker
- 同
- 保存
- 储
- 可扩展性
- 鳞片
- 秤
- 缩放
- 科学家
- 季节
- 序列
- 集
- 设置
- 几个
- 分片
- 分片
- 共用的,
- 显示
- 作品
- 显著
- 简易
- 自
- 单
- 尺寸
- 小
- 足球
- 软件
- 软件开发
- 软件工程师
- 方案,
- 来源
- 太空
- 专业
- 特别是
- 速度
- 速度
- 运动
- 稳定性
- 稳定
- 标准
- 州/领地
- 国家的最先进的
- 州
- 步骤
- 存储
- 存储
- 策略
- 大量
- 这样
- 支持
- 支持
- 支持
- 产品
- 谈论
- 任务
- 队
- 技术
- 专业技术
- 其
- 从而
- 今年
- 三
- 高兴
- 通过
- 次
- 至
- 火炬
- 向
- 牵引
- 交易
- 培训
- 熟练
- 产品培训
- 旅游
- true
- 教程
- 一般
- 下
- 理解
- 理解
- 空前的
- 史无前例
- 即将上市
- us
- 用法
- 使用
- 有价值
- 折扣值
- 各种
- 各个
- 广阔
- 版本
- 什么是
- 这
- WHO
- 将
- 也完全不需要
- 工作
- 工人
- 加工
- 合作
- 将
- 包装
- wu
- 年
- 您一站式解决方案
- 和风网