在过去的十年里,我们看到了 AWS 客户以惊人的速度采用深度学习 (DL) 科学。深度学习模型的丰富且联合训练的参数具有强大的表征能力,为众多客户用例带来了改进,包括图像和语音分析、自然语言处理 (NLP)、时间序列处理等。在这篇文章中,我们重点介绍了深度学习训练中常见的挑战,以及开源库如何应对 MosaicML 作曲家 帮助解决它们。
深度学习训练面临的挑战
深度学习模型在嵌套的 for 循环中进行迭代训练。循环逐块迭代训练数据集,如有必要,该循环会在整个数据集上重复多次。从事深度学习训练的机器学习从业者面临着几个挑战:
- 训练持续时间随着数据大小的增加而增长。随着数据集的永久增长,训练时间和成本也会增加,科学发现的节奏也会减慢。
- 深度学习脚本通常需要样板代码,特别是前面提到的双 for 循环结构,它将数据集分割成小批量,并将训练分割成纪元。
- 选择的悖论:发表了几篇训练优化论文和库,但尚不清楚首先测试哪一个,以及如何结合它们的效果。
在过去的几年里,一些开源库如 Keras, PyTorch闪电, 拥抱脸变形金刚及 雷火车 我们一直在尝试让深度学习训练变得更容易进行,特别是通过减少代码冗长,从而简化神经网络的编程方式。这些库中的大多数都专注于开发人员体验和代码紧凑性。
在这篇文章中,我们提出了一个新的开源库,它对深度学习训练采取了不同的立场: MosaicML 作曲家 是一个以速度为中心的库,其主要目标是通过算法创新使神经网络训练脚本更快。在云 DL 世界中,明智的做法是关注速度,因为计算基础设施通常按使用付费,甚至可以精确到秒数。 亚马逊 SageMaker 培训——速度的提高可以转化为节省资金。
从历史上看,加速深度学习训练主要是通过增加并行计算模型迭代的机器数量来完成的,这种技术称为 数据并行。尽管数据并行有时会加速训练(不能保证,因为它会干扰收敛,如 戈亚尔等人。),它不会降低总体工作成本。在实践中,由于机器间通信开销和更高的机器单位成本,它往往会增加它,因为分布式深度学习机器配备了高端网络和服务器内 GPU 互连。
尽管MosaicML Composer支持数据并行,但其核心理念与数据并行运动不同。其目标是通过科学实施层面的创新来加速训练,而无需更多机器。因此,它的目标是节省时间,从而通过 AWS 按使用付费的收费结构节省成本。
介绍开源库 MosaicML Composer
MosaicML Composer 是一个开源深度学习训练库,旨在简化引入最新算法并将其组合成新颖的配方,从而加速模型训练并帮助提高模型质量。在撰写本文时,它支持 PyTorch 并包含 25 种技术——称为 方法 MosaicML 世界中的标准模型、数据集和基准
作曲家是 通过点子可用:
pip install mosaicml
Composer 中实现的加速技术可以通过其功能 API 访问。例如,以下代码片段应用了 模糊池 TorchVision ResNet 的技术:
import logging
from composer import functional as CF
import torchvision.models as models
logging.basicConfig(level=logging.INFO)
model = models.resnet50()
CF.apply_blurpool(model)
或者,您还可以使用 训练者 构建您自己的技术组合:
from composer import Trainer
from composer.algorithms import LabelSmoothing, CutMix, ChannelsLast
trainer = Trainer(
model=.. # must be a composer.ComposerModel
train_dataloader=...,
max_duration="2ep", # can be a time, a number of epochs or batches
algorithms=[
LabelSmoothing(smoothing=0.1),
CutMix(alpha=1.0),
ChannelsLast(),
]
)
trainer.fit()
Composer 中实现的方法示例
Composer 中可用的一些方法特定于计算机视觉,例如图像增强技术 列输出, 剪下或 渐进式图像大小调整。其他特定于序列建模,例如 序列长度热身 or 铝锂。有趣的是,其中一些与用例无关,并且可以应用于计算机视觉和 NLP 之外的各种 PyTorch 神经网络。这些通用的神经网络训练加速方法包括 标签平滑, 选择性反向传播, 随机权重平均, 层冷冻及 清晰度感知最小化 (SAM).
让我们深入研究 MosaicML 团队发现特别有效的一些方法:
- 清晰度感知最小化 (SAM) 是一个优化器,通过为每个优化步骤计算两次梯度来最小化模型损失函数及其锐度。为了限制额外的计算而影响吞吐量,可以定期运行 SAM。
- 具有线性偏差的注意力 (ALiBi),灵感来自 出版社等人。,特定于变形金刚模型。它消除了对位置嵌入的需要,用注意力权重的非学习偏差取而代之。
- 选择性反向传播,灵感来自 江等人。,允许您仅在具有高损失函数的记录上运行反向传播(通过遵循误差斜率来改进模型权重的算法)。此方法可帮助您避免不必要的计算并有助于提高吞吐量。
在一个紧凑的训练框架中使用这些技术对于机器学习从业者来说是一个重要的附加值。同样有价值的是 MosaicML 团队为每种技术提供的、经过测试和评级的可操作的现场反馈。然而,有了如此丰富的工具箱,你可能会想:我该用什么方法呢?结合使用多种方法是否安全?输入 MosaicML 资源管理器。
MosaicML 资源管理器
为了量化深度学习训练方法的价值和兼容性,MosaicML 团队坚持 浏览器,这是第一个实时仪表板,描绘了五个数据集和七个模型上的数十个深度学习训练实验。仪表板描绘了 帕累托最优边界 在成本/时间/质量权衡中,并允许您浏览和查找得分最高的方法组合 - 称为 食谱 在 MosaicML 世界中——对于给定的模型和数据集。例如,下图显示,对于 125M 参数的 GPT2 训练,通过结合 AliBi、Sequence Length Warmup 和 Scale Schedule 获得保持困惑度为 24.11 的最便宜的训练,在 AWS 云中达到约 145.83 美元的成本!但是,请注意,此成本计算以及本文中后续的成本计算仅基于 EC2 按需计算,其他成本考虑因素可能适用,具体取决于您的环境和业务需求。
AWS 上的 Composer 取得的显著成就
通过在 AWS 上运行 Composer 库,MosaicML 团队取得了许多令人印象深刻的成果。请注意,MosaicML 团队报告的成本估算仅包含按需计算费用。
结论
您可以在任何兼容平台上开始使用 Composer,从笔记本电脑到配备 GPU 的大型云服务器。该库具有直观的特点 欢迎参观 和 入门 文档页面。在 AWS 中使用 Composer,您可以通过 AWS 成本优化服务和计划(包括 Spot 计算)来积累 Composer 成本优化科学(Amazon EC2, 亚马逊SageMaker), 储蓄计划, SageMaker自动模型调整, 和更多。 MosaicML 团队维护着 教程 AWS 上的 Composer。它分步演示了如何在短短 50 分钟内重现 MLPerf 结果并在 AWS 上训练 ResNet-76.6 达到标准的 1% top-27 准确度。
如果您正在努力应对训练速度太慢的神经网络,或者如果您希望控制 DL 训练成本,请尝试 AWS 上的 MosaicML,并让我们知道您构建的内容!
关于作者
班迪什·沙阿 是 MosaicML 的工程经理,致力于将高效的深度学习与大规模分布式系统和性能计算联系起来。 Bandish 拥有十多年构建机器学习和企业应用系统的经验。他喜欢与朋友和家人共度时光、烹饪并观看重复播放的《星际迷航》以获取灵感。
奥利维尔·克鲁尚 是 AWS 的机器学习专家解决方案架构师,常驻法国。 Olivier 帮助 AWS 客户(从小型初创公司到大型企业)开发和部署生产级机器学习应用程序。 在业余时间,他喜欢阅读研究论文并与朋友和家人一起探索荒野。