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 培训容器和自定义容器。要了解更多信息,请参阅使用亚马逊配置调试器SageMakerPython 开发工具包将调试器用于自定义训练容器

使用 Studio 调试器见解仪表板

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

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

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

从训练 Job 中捕获数据并将数据保存到 Amazon S3

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

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

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

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

您可以将调试器与 Amazon CloudWatch Events 结合使用,Amazon Lambda. 您可以根据规则状态自动执行操作,例如提前停止培训作业和通过电子邮件或短信设置通知。当调试器规则检测到问题并触发"IssuesFound"评估状态,CloudWatch Event 会检测规则状态更改并调用 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 参考.

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

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

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

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

要了解如何启用调试器系统监控,请参阅使用亚马逊配置调试器SageMakerPython 开发工具包然后配置调试器监视硬件系统资源利用率.

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

分析框架操作

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

要了解如何配置调试器以进行框架分析,请参阅使用亚马逊配置调试器SageMakerPython 开发工具包然后配置调试器框架分析.

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

调试模型输出张量

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

要了解如何配置调试器以调试输出张量,请参阅使用亚马逊配置调试器SageMakerPython 开发工具包然后配置调试程序挂钩以保存张量.

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