使用 Amazon SageMaker Debugger Python 模块为估算器配置参数用于基本分析 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon SageMaker Debugger Python 模块为估算器配置参数用于基本分析

默认情况下,SageMaker Debugger 基本分析功能处于启用状态,并针对使用 Amazon SageMaker Python SDK 提交的所有 SageMaker 训练作业监控资源利用率指标,例如 CPU 利用率、GPU 利用率、GPU 内存利用率、网络和 I/O 等待时间。SageMaker Debugger 每 500 毫秒收集一次这些资源利用率指标。您无需对代码、训练脚本或作业启动器进行任何其他更改即可跟踪基本资源利用率。如果您想在 SageMaker Studio 中访问训练作业的资源利用率指标控制面板,可以跳到 Amazon SageMaker Studio 实验中的 Amazon SageMaker Debugger UI

如果您要更改基本分析的指标收集间隔,则可以在使用 SageMaker Python SDK、Amazon SDK for Python (Boto3) 或 Amazon Command Line Interface (CLI) 创建 SageMaker 训练作业启动器时指定 Debugger 特定的参数。在本指南中,我们将重点介绍如何使用 Amazon SageMaker Python SDK 更改分析选项。

如果您希望自动激活检测系统资源利用率问题的规则,可以在用于激活规则的估算器对象中添加 rules 参数。

重要

要使用最新的 SageMaker Debugger 功能,您需要升级 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 Python SDK 中,用于通过 SageMaker Debugger Python 模块配置 SageMaker 估算器对象的代码模板

要调整基本分析配置 (profiler_config) 或添加探查器规则 (rules),请选择选项卡之一以获取用于设置 SageMaker 估算器的模板。在后续页面中,您可以找到有关如何配置这两个参数的更多信息。

注意

以下示例代码不能直接执行。请继续阅读下一个部分,学习如何配置每个参数。

PyTorch
# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=PyTorch( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.12.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
TensorFlow
# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=TensorFlow( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.8.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_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, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=MXNet( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.7.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_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, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=XGBoost( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.5-1", # Debugger-specific parameters profiler_config=profiler_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(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] region=boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.5-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, rules=rules ) estimator.fit(wait=False)

以下是对参数的简要说明。

  • profiler_config – 配置 Debugger 以从训练作业中收集系统指标和框架指标,并保存到安全的 S3 存储桶 URI 或本地计算机中。您可以设置收集系统指标的频率松紧程度。了解如何配置 profiler_config 参数,请参阅 配置设置以对系统资源利用率进行基本分析配置框架分析

  • rules – 配置此参数以激活要并行运行的 SageMaker Debugger 内置规则。确保您的训练作业可以访问此 S3 存储桶。这些规则在处理容器上运行,并自动分析您的训练作业来发现计算和操作性能问题。ProfilerReport 规则是集成度最高的规则,它运行所有内置的分析规则,并将分析结果作为报告保存到安全的 S3 存储桶中。要了解如何配置 rules 参数,请参阅配置由 Amazon SageMaker Debugger 管理的内置探查器规则

注意

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

请参阅以下主题,查看如何配置 Debugger 特定参数的详细说明。