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

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

使用 调试程序 Python 开发工具包配置Amazon SageMaker

要配置 调试程序,请在构造 Amazon SageMaker Python SDK 评估程序时使用 调试程序 并指定 SageMaker 特定的参数。您需要配置三个参数:profiler_configdebugger_hook_configrules

注意

默认情况下,调试程序 监控和调试 SageMaker 训练作业(未在 调试程序 估算器中配置任何特定于 SageMaker 的参数)。调试程序 每 500 毫秒收集系统指标,每 500 个步骤收集基本输出张量(例如,损失和准确性等标量输出)。它还运行 ProfilerReport 规则来分析系统指标、汇总 Studio 调试程序 Insights 控制面板和分析报告。调试程序 将输出数据保存在受保护的 S3 存储桶中。

重要

要使用新的 调试程序 功能,您需要升级 SageMaker Python 开发工具包和 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 的深度分析功能,您当前需要使用 CUDA 11 指定最新的 AWS 深度学习容器映像。例如,您必须指定特定映像 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 的深度分析功能,您当前需要使用 CUDA 11 指定最新的 AWS 深度学习容器映像。例如,您必须指定特定映像 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 参数 – 配置此参数以启用要并行运行的 调试程序 内置规则。这些规则会自动分析您的训练作业并查找训练问题。规则将 ProfilerReport 分析报告保存在受保护 S3 存储桶 URI 中。调试程序要了解如何配置 rules 参数,请参阅配置 调试程序 内置规则

注意

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

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