本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SageMaker 调试器的最佳实践
使用 Debugger 运行训练作业时,请遵循以下指南。
主题
选择机器学习框架
您可以选择机器学习框架并使用 SageMaker 预先构建的训练容器或自己的容器。使用 Debugger 检测训练和性能问题,并在中 SageMaker分析训练作业的训练进度。 SageMaker 为您提供了使用为多种机器学习框架环境准备的预建容器在 Amazon EC2 上训练模型的选项。任何训练作业都可以调整为在 Dee AWS 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 SDK
根据内置规则状态采取操作
您可以将 Debugger 与 Amazon CloudWatch 事件配合使用,以及。 AWS Lambda您可以根据规则状态自动执行操作,例如提前停止训练作业以及设置通过电子邮件或短信发送通知。当调试器规则检测到问题并触发"IssuesFound"
评估状态时,Event CloudWatch s 会检测到规则状态的变化并调用 Lambda 函数来采取行动。要针对训练问题配置自动化操作,请参阅使用 Amazon 根据规则创建操作 CloudWatch 和 AWS Lambda。
使用SMDebug客户端库深入研究数据
您可以使用这些SMDebug工具来访问和分析 Debugger 收集的训练数据。TrainingJob
和 create_trial
类加载 Debugger 保存的指标和张量。这些类提供了扩展的类方法,用于实时分析数据或在训练结束后分析数据。该SMDebug库还提供可视化工具:合并框架指标的时间表以汇总不同的分析,折线图和热图以跟踪系统利用率,以及直方图以查找步长异常值。要了解有关SMDebug库工具的更多信息,请参阅使用 Debugger Python 客户端库分析数据。
监控和分析训练作业指标
Amazon CloudWatch 支持高分辨率的自定义指标,其最佳分辨率为 1 秒。但是,分辨率越高, CloudWatch指标的寿命越短。对于 1 秒频率分辨率,这些 CloudWatch 指标的可用时间为 3 小时。有关分辨率和 CloudWatch 指标寿命的更多信息,请参阅GetMetricStatistics
如果您想以更精细的分辨率来描述您的训练作业,精度低至 100 毫秒(0.1 秒),并将训练指标无限期存储在 Amazon S3 中以便随时进行自定义分析,请考虑使用 Amazon Debugger。 SageMaker SageMaker Debugger 提供内置规则来自动检测常见的训练问题;它可以检测硬件资源利用率问题(例如CPUGPU、和 I/O 瓶颈)和非收敛模型问题(例如过度拟合、梯度消失和张量爆炸)。
SageMaker 调试器还通过 Studio Classic 及其分析报告提供可视化效果。与 CloudWatch 指标不同,该指标累积CPU和GPU内核的资源利用率并对多个实例的资源利用率求平均值,而 Debugger 则跟踪每个内核的利用率。这使您能够在纵向扩展到更大的计算群集时,识别硬件资源使用不平衡的情况。要探索调试器可视化效果,请参阅 D SageMaker ebugger Insights 仪表板演练、调试器分析报告演练和使用客户端库分析数据。SMDebug
监控系统利用率和检测瓶颈
通过 Amazon SageMaker Debugger 监控,您可以衡量 Amazon EC2 实例的硬件系统资源利用率。监控适用于使用 SageMaker 框架估计器(TensorFlow PyTorch、和MXNet)和通用 SageMaker估计器(SageMaker 内置算法和您自己的自定义容器)构建的任何 SageMaker 训练作业。Debugger 内置的监控规则用于检测系统瓶颈问题,并在检测到瓶颈问题时通知您。
要了解如何启用调试器系统监控,请依次参阅使用 Amazon Deb SageMaker ugger Python 模块为估算器配置基本分析参数和配置设置以对系统资源利用率进行基本分析。
有关用于监控的可用内置规则的完整列表,请参阅用于分析硬件系统资源利用率(系统指标)的调试器内置规则。
分析框架操作
通过 Amazon SageMaker Debugger 分析,您可以分析深度学习框架的操作。您可以使用训练容器、 SageMaker PyTorch 框架容器和自己的 SageMaker TensorFlow 训练容器来分析模型训练。使用 Debugger 的分析功能,您可以深入了解为执行训练作业而执行的 Python 运算符和函数。Debugger 支持详细的分析、Python 分析、数据加载器分析和 Horovod 分布式训练分析。您可以合并分析的时间轴,以便与系统瓶颈关联起来。Debugger 内置分析规则用于监视与框架操作相关的问题,包括训练开始前下载数据导致的训练初始化时间过长,以及训练循环中的步骤持续时间异常值。
要了解如何配置 Debugger 用于框架分析,请依次参阅使用 Amazon Deb SageMaker ugger Python 模块为估算器配置基本分析参数和配置框架分析。
有关用于分析的可用内置规则的完整列表,请参阅用于分析框架指标的调试器内置规则。
调试模型输出张量
使用 Deep Learning Containers 和 SageMaker 训练容器的 AWS 深度学习框架可以进行调试。对于完全支持的框架版本(请参阅支持的框架和算法中的版本),Debugger 会自动注册钩子以收集输出张量,并且您可以直接运行训练脚本。对于带有星号的版本,您需要手动注册钩子来收集张量。Debugger 提供了采用通用名称的预配置张量集合,您可以在不同的框架中使用这些张量。如果要自定义输出张量配置,也可以使用 CollectionConfig 和 DebuggerHookConfig API操作和 Amaz SageMaker on Python SDK
要了解如何配置 Debugger 来调试输出张量,请依次参阅步骤 2:使用 SageMaker Python 启动和调试训练作业 SDK和配置 SageMaker 调试器以保存张量。
有关可用于调试的内置规则的完整列表,请参见调试模型训练数据的调试器内置规则(输出张量)。