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

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

Amazon SageMaker 调试器的最佳实践

使用 Debugger 运行训练作业时,请遵循以下指南。

选择机器学习框架

您可以选择机器学习框架并使用 SageMaker 预先构建的训练容器或自己的容器。使用 Debugger 检测训练和性能问题,并在中 SageMaker分析训练作业的训练进度。 SageMaker 为您提供了使用为多种机器学习框架环境准备的预建容器在 Amazon EC2 上训练模型的选项。任何训练作业都可以调整为在 Dee Amazon p Learning Contain SageMaker ers、训练容器和自定义容器中运行。

使用 Studio Debugger Insights 控制面板

使用 Studio Debugger Insights 控制面板,您可以控制自己的训练作业。使用 Studio Debugger 控制面板可以控制和优化 Amazon EC2 实例上的模型性能。对于在 Amazon EC2 实例上运行的任何 SageMaker 训练作业,Debugger 都会监控资源利用率和基本模型输出数据(损失和精度值)。通过 Studio Debugger 控制面板,深入了解您的训练作业并提高模型训练性能。要了解更多信息,请参阅亚马逊 SageMaker Studio 经典实验中的亚马逊 SageMaker 调试器用户界面

下载 Debugger 报告并获取更多见解

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

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

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

使用 Debugger 内置规则集合分析数据

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

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

您可以将 Debugger 与 Amazon Ev CloudWatch ents 配合使用和。 Amazon Lambda您可以根据规则状态自动执行操作,例如提前停止训练作业以及设置通过电子邮件或短信发送通知。当调试器规则检测到问题并触发"IssuesFound"评估状态时,Event CloudWatch s 会检测到规则状态的变化并调用 Lambda 函数来采取行动。要针对训练问题配置自动化操作,请参阅使用 Amazon 根据规则创建操作 CloudWatch 和 Amazon Lambda

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

您可以使用 SMDebug 工具访问和分析 Debugger 收集的训练数据。TrainingJobcreate_trial 类加载 Debugger 保存的指标和张量。这些类提供了扩展的类方法,用于实时分析数据或在训练结束后分析数据。SMDebug 库还提供可视化工具:合并框架指标的时间轴以汇总不同的分析、折线图和热图,以便跟踪系统利用率,以及汇总直方图来查找步骤持续时间异常值。要了解有关 SMDebug 库工具的更多信息,请参阅使用 Debugger Python 客户端库分析数据

监控和分析训练作业指标

Amazon CloudWatch 支持高分辨率的自定义指标,其最佳分辨率为 1 秒。但是,分辨率越高, CloudWatch指标的寿命越短。对于 1 秒频率分辨率,这些 CloudWatch 指标的可用时间为 3 小时。有关分辨率和 CloudWatch 指标寿命的更多信息,请参阅 Amazon CloudWatch API 参考中的GetMetric统计数据

如果您想以更精细的分辨率来描述您的训练作业,精度低至 100 毫秒(0.1 秒),并将训练指标无限期存储在 Amazon S3 中以便随时进行自定义分析,请考虑使用 Amazon Debugger。 SageMaker SageMaker Debugger 提供内置规则来自动检测常见的训练问题;它可以检测硬件资源利用率问题(例如 CPU、GPU 和 I/O 瓶颈)和非收敛模型问题(例如过度拟合、梯度消失和张量爆炸等)。

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

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

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

要了解如何启用调试器系统监控,请依次参阅使用 Amazon Deb SageMaker ugger Python 模块为估算器配置基本分析参数配置设置以对系统资源利用率进行基本分析

有关可用的内置监控规则的完整列表,请参阅Debugger 内置规则,用于分析硬件系统资源利用率(系统指标)

分析框架操作

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

要了解如何配置 Debugger 用于框架分析,请依次参阅使用 Amazon Deb SageMaker ugger Python 模块为估算器配置基本分析参数配置框架分析

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

调试模型输出张量

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

要了解如何配置 Debugger 来调试输出张量,请依次参阅第 2 步:使用 SageMaker Python SDK 启动和调试训练作业配置 SageMaker 调试器以保存张量

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