使用 Amazon SageMaker Python 软件开发工具包配置调试器 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon SageMaker Python 软件开发工具包配置调试器

要配置调试器,请使用Amazon SageMaker 开发工具包并在构建 SageMaker 估计值时指定特定于调试器的参数。您需要配置三个参数:profiler_configdebugger_hook_config, 和rules.

注意

默认情况下,调试器会监视和调试 SageMaker 培训作业,而不会在 SageMaker 估计器中配置任何特定于调试器的参数。调试器每 500 毫秒收集一次系统指标,每 500 个步骤收集一次基本输出张量(标量输出,如丢失和准确度)。它还运行ProfilerReport规则来分析系统衡量指标并聚合 Studio 调试器见解仪表板和性能分析报告。调试器将输出数据保存在安全的 S3 存储桶中。

重要

要使用新的调试器功能,您需要升级 SageMaker Python SDK 和SMDebug客户端库。在 IPython 内核、Jupyter 笔记本或 JupyterLab 环境中,运行以下代码以安装最新版本的库并重新启动内核。

import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)

使用调试器构建一个 SageMaker 估计器

以下示例代码演示了如何根据您选择的框架,使用特定于调试器的参数构建 SageMaker 估计器。在以下主题中的整个文档中,您可以找到有关如何配置可以根据需要混合和匹配的调试器特定参数的详细信息。

注意

以下示例代码不是直接执行的。您需要继续下一节并配置调试器特定的参数。

TensorFlow

要访问 TensorFlow 的深度分析功能,当前需要指定最新的Amazon深度学习容器图像与 CUDA 11. 例如,您必须指定特定镜像 URI,如以下示例代码所示:

# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=TensorFlow( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", image_uri=f"763104351884.dkr.ecr.{region}.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04" # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
PyTorch

要访问 PyTorch 的深度分析功能,当前需要指定最新的Amazon深度学习容器图像与 CUDA 11. 例如,您必须指定特定镜像 URI,如以下示例代码所示:

# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=PyTorch( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", image_uri=f"763104351884.dkr.ecr.{region}.amazonaws.com/pytorch-training:1.6.0-gpu-py36-cu110-ubuntu18.04", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
MXNet
# An example of constructing a SageMaker MXNet estimator import sagemaker from sagemaker.mxnet import MXNet from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=MXNet( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.7.0", py_version="py37", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
注意

对于 MxNet,在配置profiler_config参数,则只能对系统监视进行配置。MxNet 不支持性能分析框架度量。

XGBoost
# An example of constructing a SageMaker XGBoost estimator import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=XGBoost( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.2-1", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
注意

对于 XGBoost,在配置profiler_config参数,则只能对系统监视进行配置。XGBoost 不支持性能分析框架度量。

Generic estimator
# An example of constructing a SageMaker generic estimator using the XGBoost algorithm base image import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker import image_uris from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] region=boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") estimator=Estimator( role=sagemaker.get_execution_role() image_uri=xgboost_container, base_job_name="debugger-demo", instance_count=1, instance_type="ml.m5.2xlarge", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)

您可以在其中配置以下参数:

  • profiler_config参数 — 将调试器配置为从培训作业中收集系统指标和框架指标,并保存到安全的 S3 存储桶 URI 或本地计算机中。要了解如何配置profiler_config参数,请参阅配置调试器监视硬件系统资源利用率配置调试器框架分析.

  • debugger_hook_config参数 — 配置调试器以从训练作业中收集输出张量并保存到安全的 S3 存储桶 URI 或本地计算机中。要了解如何配置debugger_hook_config参数,请参阅配置调试程序挂钩保存张量.

  • rules参数 — 将此参数配置为启用要并行运行的调试器内置规则。这些规则会自动分析您的培训工作并查找培训问题。概要文件报告规则将调试器分析报告保存在安全的 S3 存储桶 URI 中。要了解如何配置rules参数,请参阅配置调试器内置规则.

注意

调试器将输出数据安全地保存在默认 S3 存储桶的子文件夹中。例如,默认 S3 存储桶 URI 的格式为s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/. 调试器创建了三个子文件夹:debug-outputprofiler-output, 和rule-output. 您还可以使用SageMaker 估计器类方法.

请参阅以下主题,了解如何详细配置调试器特定的参数。