本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Deb SageMaker ugger Python 模块为估算器配置基本分析参数
默认情况下,D SageMaker ebugger 基本分析处于开启状态,用于监控使用 Amaz SageMaker on Python SDK 提交的所有 SageMaker 训练作业的资源利用率指标,例如 CPU 利用率、GPU 利用率、GPU 内存利用率、网络和 I/O 等待时间。 SageMaker 调试器每 500 毫秒收集一次这些资源利用率指标。您无需对代码、训练脚本或作业启动器进行任何其他更改即可跟踪基本资源利用率。如果您想在 SageMaker Studio 中访问训练作业的资源利用率指标控制面板,可以跳至亚马逊 SageMaker Studio 经典实验中的亚马逊 SageMaker 调试器用户界面。
如果要更改基本分析的指标收集间隔,则可以在使用 Pyth SageMaker on SDK、、 AWS SDK for Python (Boto3)或 ( AWS Command Line Interface CLI) 创建 SageMaker 训练作业启动器时指定特定于调试器的参数。在本指南中,我们将重点介绍如何使用 Amaz SageMaker on Python 软件开发工具包更改分析选项。
如果您希望自动激活检测系统资源利用率问题的规则,可以在用于激活规则的估算器对象中添加 rules
参数。
要使用最新的 SageMaker 调试器功能,你需要升级 SageMaker Python SDK 和SMDebug
客户端库。在你的 IPython 内核、Jupyter Notebook JupyterLab 或环境中,运行以下代码来安装最新版本的库并重新启动内核。
import sys
import IPython
!{sys.executable} -m pip install -U sagemaker smdebug
IPython.Application.instance().kernel.do_shutdown(True)
用于在 Python SDK 中使用 SageMaker 调试器 Python 模块配置 SageMaker 估算器对象的 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 调试器内置规则。确保您的训练作业可以访问此 S3 存储桶。这些规则在处理容器上运行,并自动分析您的训练作业来发现计算和操作性能问题。ProfilerReport 规则是集成度最高的规则,它运行所有内置的分析规则,并将分析结果作为报告保存到安全的 S3 存储桶中。要了解如何配置 rules
参数,请参阅配置由 Amazon SageMaker 调试器管理的内置分析器规则。
Debugger 将输出数据安全地保存在默认 S3 存储桶的子文件夹中。例如,默认 S3 存储桶 URI 的格式为 s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/
。Debugger 创建三个子文件夹:debug-output
、profiler-output
和 rule-output
。您还可以使用SageMaker 估算器类方法检索默认的 S3 存储桶 URI。
请参阅以下主题,查看如何配置 Debugger 特定参数的详细说明。