Amazon SageMaker 调试器的最佳实践 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SageMaker 调试器的最佳实践

使用调试器运行训练作业时,请使用以下指导方针。

选择 Machine Learning 框架

您可以选择机器学习框架,并使用 SageMaker 预构建的培训容器或您自己的容器。使用调试器检测训练和性能问题,并在 SageMaker 中分析训练工作的培训进度。SageMaker 为您提供了使用为多种机器学习框架环境准备的预构建容器的选项,以便在 Amazon EC2 上训练您的模型。任何训练作业都可以适应在AmazonDeep Learning Containers、SageMaker 培训容器和自定义容器。要了解更多信息,请参阅使用 Amazon SageMaker Python 软件开发工具包配置调试器将调试器与自定义训练容器一起使用

使用 Studio 调试器见解仪表板

借助 Studio 调试器见解仪表板,您可以控制您的培训工作。使用 Studio 调试器仪表板控制并优化您在 Amazon EC2 实例上的模型性能。对于在 Amazon EC2 实例上运行的任何 SageMaker 培训作业,调试器会监控资源利用率和基本模型输出数据(丢失和准确度值)。通过 Studio 调试器仪表板,深入了解您的培训工作并提高模型培训绩效。要了解更多信息,请参阅“工作室上的 SageMaker 调试器”。

下载调试器报告并获得更多见解

您可以在调试器报告中查看聚合结果并获得见解。调试器将从内置规则分析中收集的训练和性能分析结果聚合到每个培训作业的报告中。您可以通过调试程序报告找到有关训练结果的更多详细信息。要了解更多信息,请参阅“SageMaker 调试器交互式报表”。

从您的培训 Job 中捕获数据并将数据保存到 Amazon S3

您可以使用调试器钩子来保存输出张量。选择适合训练脚本的容器和框架后,使用调试程序挂钩配置要保存的张量以及将其保存到的目录,例如 Amazon S3 存储桶。调试程序挂钩可以帮助您构建配置并将其保留在您的帐户中,以便在以后的分析中使用,在这些分析中,该配置可以安全地用于对隐私最敏感的应用程序。要了解更多信息,请参阅“配置调试程序挂钩保存张量”。

使用调试器内置规则来分析数据

您可以使用调试程序内置规则来检查张量与训练作业并行。为了分析训练性能数据,调试器提供了监视异常训练过程行为的内置规则。例如,调试程序规则将检测到在训练过程发生系统瓶颈问题或训练问题(例如消失梯度、爆炸张量、过度拟合或过度训练)时的问题。如有必要,您还可以通过使用自己的条件创建规则定义来构建自定义规则,以定义训练问题。若要了解有关调试器规则的详细信息,请参阅配置调试器内置规则,了解使用Amazon SageMaker 开发工具包. 有关调试程序内置规则的完整列表,请参阅调试器内置规则列表. 如果您要创建自定义规则,请参阅为训练 Job 分析创建调试器自定义规则.

根据内置规则状态采取操作

您可以将调试程序与 Amazon CloudWatch Events 和Amazon Lambda. 您可以根据规则状态自动执行操作,例如提前停止培训作业以及通过电子邮件或文本设置通知。当调试器规则检测到问题并触发"IssuesFound"评估状态时,CloudWatch 事件会检测规则状态更改并调用 Lambda 函数来执行操作。要配置针对您的培训问题的自动操作,请参阅使用 Amazon CloudWatch 和Amazon Lambda.

使用 SMDebug 客户端库深入了解数据

您可以使用 SMDebug 工具访问和分析调试器收集的训练数据。这些区域有:TrainingJobcreate_trial类加载调试器保存的量度和张量。这些类提供了扩展的类方法,用于实时或训练完成后分析数据。SMDebug 库还提供可视化工具:合并框架度量的时间表以聚合不同的分析、折线图和热图以跟踪系统利用率,以及直方图以查找步长持续时间异常值。要了解有关 SMDebug 库工具的详细信息,请参阅使用 SMDebug 客户端库分析数据.

监控和分析训练 Job 指标

Amazon CloudWatch 支持高分辨率自定义指标,其最好的分辨率为 1 秒。但是,分辨率越细,CloudWatch 指标的使用寿命就越短。对于 1 秒钟的频率分辨率,CloudWatch 指标可在 3 小时内使用。有关 CloudWatch 指标的分辨率和生命周期的更多信息,请参阅。GetMetricStatistics中的Amazon CloudWatch API 参考.

如果您希望以更精细的分辨率分析您的培训工作,并将培训指标无限期存储在 Amazon S3 中,以便随时进行自定义分析,请考虑使用Amazon SageMaker 调试程序. SageMaker 调试器提供了自动检测常见训练问题的内置规则;它可检测硬件资源利用率问题(如 CPU、GPU 和 I/O 瓶颈)和非聚合模型问题(如过度拟合、渐变消失和张量爆炸)。

SageMaker 调试器还通过 Studio 及其分析报告提供可视化效果。与 CloudWatch 指标(累积 CPU 和 GPU 核心的资源利用率并在多个实例中平均使用率)不同,调试器会跟踪每个核心的利用率。这使您能够在向上扩展到更大的计算群集时识别硬件资源的不平衡使用情况。若要浏览调试器可视化效果,请参阅SageMaker 调试器见解仪表板演练调试器性能分析报告演练, 和使用 SMDebug 客户端库分析数据.

监控系统利用率并检测瓶颈

通过 Amazon SageMaker 调试器监控,您可以衡量 Amazon EC2 实例的硬件系统资源利用率。任何使用 SageMaker 框架估计器(TensorFlow、PyTorch 和 MxNet)和通用的 SageMaker 估计器(SageMaker 内置算法和您自己的自定义容器)构建的 SageMaker 培训作业都可以进行监控。用于监视的调试器内置规则检测系统瓶颈问题,并在检测到瓶颈问题时通知您。

要了解如何启用调试程序系统监视,请参阅使用 Amazon SageMaker Python 软件开发工具包配置调试器然后配置调试器监视硬件系统资源利用率.

有关监控的可用内置规则的完整列表,请参阅调试器用于监视硬件系统资源利用率的内置规则(系统度量).

分析框架操作

借助 Amazon SageMaker 调试器分析,您可以分析深度学习框架操作。您可以使用 SageMaker TensorFlow 训练容器、SageMaker PyTorch 框架容器和您自己的训练容器来分析您的模型训练。使用调试器的性能分析功能,您可以深入查看为执行培训作业而执行的 Python 运算符和函数。调试器支持详细的分析、Python 分析、数据加载器分析和 Horovod 分布式训练分析。您可以合并分析的时间线,以便与系统瓶颈相关联。调试器内置规则用于分析监视框架操作相关问题,包括训练开始前下载数据导致的训练初始化时间过长,训练循环中的步长持续时间异常值。

要了解如何为框架分析配置调试程序,请参阅使用 Amazon SageMaker Python 软件开发工具包配置调试器然后配置调试器框架分析.

有关用于分析的可用内置规则的完整列表,请参阅调试程序内置规则,用于分析框架指标.

调试模型输出张量

调试可用于深度学习框架使用AmazonDeep Learning Containers 和 SageMaker 培训容器。有关完全支持的框架版本(请参阅支持的框架和算法),调试器会自动注册钩子以收集输出张量,并且您可以直接运行训练脚本。对于带有一个星号的版本,您需要手动注册挂钩以收集张量。调试器提供预配置的张量集合,具有广义名称,您可以在不同的框架中使用这些名称。如果您想自定义输出张量配置,还可以使用集合配置和调试挂钩配置 API 操作和Amazon SageMaker 开发工具包来配置您自己的张量集合。调试器内置调试规则可分析输出张量并识别阻止模型最小化损失函数的模型优化问题。例如,这些规则可识别过度拟合、过度训练、损耗不减、爆炸张量和消失梯度。

要了解如何配置调试器以调试输出张量,请参阅使用 Amazon SageMaker Python 软件开发工具包配置调试器然后配置调试程序挂钩保存张量.

有关用于调试的可用内置规则的完整列表,请参阅调试器内置规则用于调试模型训练数据(输出张量).