使用 Amazon SageMaker 进行训练

Amazon SageMaker 可提供调优和调试模型以及执行训练实验所需的一切,从而简化了机器学习 (ML) 模型训练过程。

功能

实验管理和跟踪

机器学习是一个基于连续实验的迭代流程,例如尝试新的学习算法或调整算法的超参数,同时观察这些增量变化对模型性能和准确性的影响。随着时间的推移,这种数据爆炸将难以跟踪在实验过程中获得的最佳模型、观察结果和经验教训,以及最初创建这些模型所用的确切成分和配方。

Amazon SageMaker Experiments 可帮助您以一种简单且可扩展的方式跟踪、评估和整理训练实验。SageMaker Experiments 包含在 Amazon SageMaker Studio 以及与 Jupyter 深度集成的 Python 开发工具包中。

使用 Amazon SageMaker Experiments,您可以整理数千个训练实验,记录数据集、超参数和指标等实验构件,并重现实验。由于 SageMaker Experiments 与 SageMaker Studio 相集成,因此您可以可视化模型并快速、轻松地评估最佳模型。您还可以在实验过程中记录和维护持续运行的备注和注释日志,并在团队成员之间轻松地单击共享他们的实验。SageMaker Experiments 还保留了完整的实验沿袭,因此,如果模型开始偏离其预期结果,您可以按时间追溯,检查它的构件。

Experiments

分析和调试并提供完整见解

全面了解 ML 训练过程以及从中获得完整的见解极具挑战性。要确保您的模型逐步学习其参数的正确值,无捷径可循。例如,在使用卷积神经网络训练计算机视觉模型时,您可能需要运行训练作业数小时。在此期间,无法了解不同的 ML 模型参数对模型训练的影响,以及训练过程是否产生所需的结果。

Amazon SageMaker Debugger 可帮助您全面了解训练过程。SageMaker Debugger 提供可视界面,供开发人员用于分析调试数据,还提供关于训练过程中潜在异常的可视指示器,从而简化了检查过程。

SageMaker Debugger 会自动检测常见错误并向您发出警报,例如梯度值变得太大或太小。您还可以使用 Debugger 开发工具包自动检测模型特定错误的新种类,或者以交互方式分析在 SageMaker 笔记本中运行的训练。因此,机器学习模型的调试工作可从数天缩短到数分钟。SageMaker Debugger 收集的数据保留在您自己的账户中,这使其能够用于大多数隐私敏感型应用程序。

SageMaker Debugger 生成模型的实时性能指标。这些指标包括训练和验证损失(表示模型的误差,应尽可能低)、混淆矩阵(针对分类模型,表示假正和假负预测以及它们在训练期间的变化)和学习梯度(在训练期间查看模型的学习曲线,以诊断学习问题,例如欠拟合或过拟合模型,以及训练和验证数据集是否具有适当的代表性)。 这些指标可以在 Amazon SageMaker Studio 的笔记本中查看和直观呈现。

在检测到常见的训练问题时,SageMaker Debugger 还会生成警告并提供修复建议。例如,如果您的模型已经从数据中学习了所能学到的一切,不再改进,但是仍在训练(这会花费时间和费用),SageMaker Debugger 将帮助尽早发现这一情况,以便您可以终止训练。它还可以发现常见的数据验证问题,例如您的网络权重始终设置为零的情况,以及识别您的模型是否开始过拟合数据。

Debugger

一键式训练

Amazon SageMaker 有助于简化训练模型的过程。当您准备好在 SageMaker 中训练时,只需指定数据在 Amazon S3 中的位置,注明所需的 SageMaker ML 实例类型和数量,然后单击一下即可开始。SageMaker 设置分布式计算集群、执行训练、将结果输出至 Amazon S3,然后在完成后销毁集群。 

当您指定数据在 Amazon S3 中的位置时,SageMaker 将采用您的算法并在训练集群(在集群本身的软件定义的网络中被隔离,按照您的需求进行了配置)上运行该算法。当您选择包括 Amazon EC2 P3dn(云中基于 GPU 的最强大实例)在内的实例类型时,SageMaker 会在 auto-scaling 组中创建您的集群。SageMaker 还会将 EBS 卷附加到每个节点,设置数据管道,并开始使用 TensorFlow、MXNet、Pytorch、Chainer 或框架脚本、内置或自定义算法进行训练。完成后,结果将存储在 S3 中,集群将自动销毁。

为轻松进行大规模训练,我们优化了 Amazon S3 数据流的训练方式。通过 API,您可以指定要将所有数据发送到集群中的每个节点,还是让 SageMaker 根据您的算法需求管理各个节点的数据分布。通过结合使用内置算法,Amazon SageMaker 所能提供的训练扩展性可大幅减少运行训练的时间和成本。

自动模型优化

Amazon SageMaker 可以通过调整数千个不同的算法参数组合来自动优化您的模型,从而达到模型能够实现的最精准预测。

当您要优化模型以提高准确度时,您需要执行两项重要操作:修改您为模型输入的数据(如采用一个数的对数),以及调整定义模型行为的参数。这些参数称为超参数,很难找到正确的值。一般来说,您可以先随机选择一个值,然后在您开始注意到变化产生的影响后进行调整,一直重复便可。这一周期可能很长,具体取决于您的模型拥有多少超参数。

SageMaker 在训练期间提供自动模型优化选项,从而简化了这一周期。自动模型优化使用机器学习快速优化您的模型,使其尽可能准确。利用此功能,您可以跳过冗长的手动调整超参数的试错过程。自动模型优化通过发现数据中有趣的特性并了解这些特性如何交互影响准确性来执行超级参数优化。您可以节省数天甚至数周的时间,从而最大限度提高受训模型的质量。

您只需通过 API 或控制台指定训练作业的数量即可,SageMaker 会使用机器学习来优化模型,替您完成剩下的工作。工作原理如下:学习不同类型的数据对模型有何影响,然后在多个模型副本中应用该知识以快速找出最佳的可能结果。作为开发人员或数据科学家,这意味着您确实只需关注自己希望对模型中数据所做的调整,因此训练期间所需关注的问题便大大减少了。

托管型 Spot 训练

您可以使用托管型 Spot 训练将训练机器学习模型的成本降低多达 90%。托管型 Spot 训练使用 Amazon EC2 Spot 实例,这种实例是 EC2 的备用容量,因此与使用 Amazon EC2 按需实例相比,您的训练作业的运行成本要低得多。Amazon SageMaker 管理训练作业,以便它们在计算容量可用时运行。这样一来,您就不必连续轮询容量,而托管型 Spot 训练让您无需构建额外工具来管理中断。托管型 Spot 训练可与 Amazon SageMaker 随附的内置算法和框架“自动模型优化”以及自定义算法配合使用。

Amazon SageMaker 的自动模型优化功能

通过 GitHub 上的这些自动模型优化练习获得实践经验。

在 Amazon SageMaker 上使用 TensorFlow 来训练机器学习模型

学习训练基于 TensorFlow 的机器学习模型。